Commit 78f2a78e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull spi fixes from Mark Brown:
 "A small collection of fixes for various SPI drivers, plus a relaxation
  of constraints in the DT for the DesignWare controller to reflect
  hardware that's been seen.

  There's several fixes for the Cadence QuadSPI driver since a fix
  during the last release made some existing issues with error handling
  during probe more readily visible"

* tag 'spi-fix-v6.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
  spi: mt65xx: Use IRQF_ONESHOT with threaded IRQ
  spi: dt-bindings: snps,dw-abp-ssi: Allow up to 16 chip-selects
  spi: cadence-quadspi: Fix clock disable on probe failure path
  spi: cadence-quadspi: Add error logging for DMA request failure
  spi: fsl-cpm: Check length parity before switching to 16 bit mode
  spi: mpfs: Fix an error handling path in mpfs_spi_probe()
parents 91ff28ae 9d651a6c
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -121,7 +121,7 @@ properties:
  num-cs:
    default: 4
    minimum: 1
    maximum: 4
    maximum: 16

  dmas:
    items:
@@ -153,14 +153,14 @@ properties:
      provides an interface to override the native DWC SSI CS control.

patternProperties:
  "@[0-9a-f]+$":
  "@[0-9a-f]$":
    type: object
    additionalProperties: true

    properties:
      reg:
        minimum: 0
        maximum: 3
        maximum: 0xf

unevaluatedProperties: false

+6 −2
Original line number Diff line number Diff line
@@ -2001,9 +2001,11 @@ static int cqspi_probe(struct platform_device *pdev)

	if (cqspi->use_direct_mode) {
		ret = cqspi_request_mmap_dma(cqspi);
		if (ret == -EPROBE_DEFER)
		if (ret == -EPROBE_DEFER) {
			dev_err_probe(&pdev->dev, ret, "Failed to request mmap DMA\n");
			goto probe_setup_failed;
		}
	}

	ret = spi_register_controller(host);
	if (ret) {
@@ -2024,6 +2026,8 @@ static int cqspi_probe(struct platform_device *pdev)
probe_reset_failed:
	if (cqspi->is_jh7110)
		cqspi_jh7110_disable_clk(pdev, cqspi);

	if (pm_runtime_get_sync(&pdev->dev) >= 0)
		clk_disable_unprepare(cqspi->clk);
probe_clk_failed:
	return ret;
+1 −1
Original line number Diff line number Diff line
@@ -335,7 +335,7 @@ static int fsl_spi_prepare_message(struct spi_controller *ctlr,
			if (t->bits_per_word == 16 || t->bits_per_word == 32)
				t->bits_per_word = 8; /* pretend its 8 bits */
			if (t->bits_per_word == 8 && t->len >= 256 &&
			    (mpc8xxx_spi->flags & SPI_CPM1))
			    !(t->len & 1) && (mpc8xxx_spi->flags & SPI_CPM1))
				t->bits_per_word = 16;
		}
	}
+1 −0
Original line number Diff line number Diff line
@@ -577,6 +577,7 @@ static int mpfs_spi_probe(struct platform_device *pdev)

	ret = devm_spi_register_controller(&pdev->dev, host);
	if (ret) {
		mpfs_spi_disable_ints(spi);
		mpfs_spi_disable(spi);
		return dev_err_probe(&pdev->dev, ret,
				     "unable to register host for SPI controller\n");
+1 −1
Original line number Diff line number Diff line
@@ -1320,7 +1320,7 @@ static int mtk_spi_probe(struct platform_device *pdev)

	ret = devm_request_threaded_irq(dev, irq, mtk_spi_interrupt,
					mtk_spi_interrupt_thread,
					IRQF_TRIGGER_NONE, dev_name(dev), host);
					IRQF_ONESHOT, dev_name(dev), host);
	if (ret)
		return dev_err_probe(dev, ret, "failed to register irq\n");