Commit 405f6584 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull spi updates from Mark Brown:
 "A busy release for SPI, almost all of it in a couple of larger fix and
  cleanup series for patterns that affected many drivers. We do have a
  couple of core API additions as well, relatively application specific
  but they enable some new use cases.

   - A packed command operation for spi-mem devices

   - Improvements to the ancillary device support to enable some IIO use
     cases from Antoniu Miclaus

   - Fixes for a registration ordering issue pattern caused by the
     handover between allocation and registration of controllers in
     concert with devm from Johan Hovold

   - Improvements to handling of clock allocation from Pei Xiao

   - Cleanups in the fsl-lpspi driver from Marc Kleine-Budde

   - Support for Renesas RZ/G3E and RZ/G3L"

* tag 'spi-v7.1' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (115 commits)
  spi: sn-f-ospi: fix incorrect return code for invalid num-cs
  spi: spi-mem: Add a packed command operation
  spi: cadence-qspi: Revert the filtering of certain opcodes in ODTR
  spi: mtk-snfi: unregister ECC engine on probe failure and remove() callback
  spi: s3c64xx: fix NULL-deref on driver unbind
  spi: zynq-qspi: fix controller deregistration
  spi: zynqmp-gqspi: fix controller deregistration
  spi: uniphier: fix controller deregistration
  spi: ti-qspi: fix controller deregistration
  spi: tegra20-sflash: fix controller deregistration
  spi: tegra114: fix controller deregistration
  spi: syncuacer: fix controller deregistration
  spi: sun6i: fix controller deregistration
  spi: sun4i: fix controller deregistration
  spi: st-ssc4: fix controller deregistration
  spi: sprd: fix controller deregistration
  spi: slave-mt27xx: fix controller deregistration
  spi: sifive: fix controller deregistration
  spi: sh-msiof: fix controller deregistration
  spi: sh-hspi: fix controller deregistration
  ...
parents 44f7a379 c4c3fc87
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -35,10 +35,10 @@ properties:
  interrupts:
    maxItems: 1

  clock-names:
  clocks:
    maxItems: 1

  clocks:
  resets:
    maxItems: 1

  microchip,apb-datawidth:
+48 −4
Original line number Diff line number Diff line
@@ -13,10 +13,13 @@ properties:
  compatible:
    oneOf:
      - enum:
          - renesas,r9a08g046-rspi # RZ/G3L
          - renesas,r9a09g057-rspi # RZ/V2H(P)
          - renesas,r9a09g077-rspi # RZ/T2H
      - items:
          - const: renesas,r9a09g056-rspi # RZ/V2N
          - enum:
              - renesas,r9a09g047-rspi # RZ/G3E
              - renesas,r9a09g056-rspi # RZ/V2N
          - const: renesas,r9a09g057-rspi
      - items:
          - const: renesas,r9a09g087-rspi # RZ/N2H
@@ -58,12 +61,19 @@ properties:
      - const: tresetn

  dmas:
    maxItems: 2
    minItems: 2
    maxItems: 10
    description:
      Must contain a list of pairs of references to DMA specifiers, one for
      transmission, and one for reception.

  dma-names:
    minItems: 2
    maxItems: 10
    items:
      - const: rx
      - const: tx
      enum:
        - rx
        - tx

  power-domains:
    maxItems: 1
@@ -81,6 +91,34 @@ required:

allOf:
  - $ref: spi-controller.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - renesas,r9a08g046-rspi
    then:
      properties:
        clocks:
          maxItems: 2

        clock-names:
          items:
            - const: pclk
            - const: tclk

        dmas:
          maxItems: 2

        dma-names:
          items:
            - const: rx
            - const: tx

      required:
        - resets
        - reset-names

  - if:
      properties:
        compatible:
@@ -121,6 +159,12 @@ allOf:
        resets: false
        reset-names: false

        dmas:
          maxItems: 6

        dma-names:
          maxItems: 6

unevaluatedProperties: false

examples:
+2 −2
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ config SPI_AR934X

config SPI_ATCSPI200
	tristate "Andes ATCSPI200 SPI controller"
	depends on ARCH_ANDES
	depends on ARCH_ANDES || COMPILE_TEST
	help
	  SPI driver for Andes ATCSPI200 SPI controller.
	  ATCSPI200 controller supports DMA and PIO modes. When DMA
@@ -866,7 +866,7 @@ config SPI_PIC32_SQI

config SPI_PL022
	tristate "ARM AMBA PL022 SSP controller"
	depends on ARM_AMBA
	depends on ARM_AMBA || COMPILE_TEST
	default y if ARCH_REALVIEW
	default y if INTEGRATOR_IMPD1
	default y if ARCH_VERSATILE
+6 −4
Original line number Diff line number Diff line
@@ -647,13 +647,13 @@ static int aml_spisg_clk_init(struct spisg_device *spisg, void __iomem *base)
	int ret, i;

	spisg->core = devm_clk_get_enabled(dev, "core");
	if (IS_ERR_OR_NULL(spisg->core)) {
	if (IS_ERR(spisg->core)) {
		dev_err(dev, "core clock request failed\n");
		return PTR_ERR(spisg->core);
	}

	spisg->pclk = devm_clk_get_enabled(dev, "pclk");
	if (IS_ERR_OR_NULL(spisg->pclk)) {
	if (IS_ERR(spisg->pclk)) {
		dev_err(dev, "pclk clock request failed\n");
		return PTR_ERR(spisg->pclk);
	}
@@ -703,7 +703,7 @@ static int aml_spisg_clk_init(struct spisg_device *spisg, void __iomem *base)
	}

	spisg->sclk = devm_clk_hw_get_clk(dev, &div->hw, NULL);
	if (IS_ERR_OR_NULL(spisg->sclk)) {
	if (IS_ERR(spisg->sclk)) {
		dev_err(dev, "get clock failed\n");
		return PTR_ERR(spisg->sclk);
	}
@@ -800,7 +800,7 @@ static int aml_spisg_probe(struct platform_device *pdev)
		goto out_clk;
	}

	ret = devm_spi_register_controller(dev, ctlr);
	ret = spi_register_controller(ctlr);
	if (ret) {
		dev_err(&pdev->dev, "spi controller registration failed\n");
		goto out_clk;
@@ -823,6 +823,8 @@ static void aml_spisg_remove(struct platform_device *pdev)
{
	struct spisg_device *spisg = platform_get_drvdata(pdev);

	spi_unregister_controller(spisg->controller);

	if (!pm_runtime_suspended(&pdev->dev)) {
		pinctrl_pm_select_sleep_state(&spisg->pdev->dev);
		clk_disable_unprepare(spisg->core);
+6 −3
Original line number Diff line number Diff line
@@ -972,7 +972,7 @@ static int aspeed_spi_probe(struct platform_device *pdev)
		return -ENOMEM;

	aspi = spi_controller_get_devdata(ctlr);
	platform_set_drvdata(pdev, aspi);
	platform_set_drvdata(pdev, ctlr);
	aspi->data = data;
	aspi->dev = dev;

@@ -1021,7 +1021,7 @@ static int aspeed_spi_probe(struct platform_device *pdev)
		return ret;
	}

	ret = devm_spi_register_controller(dev, ctlr);
	ret = spi_register_controller(ctlr);
	if (ret)
		dev_err(&pdev->dev, "spi_register_controller failed\n");

@@ -1030,7 +1030,10 @@ static int aspeed_spi_probe(struct platform_device *pdev)

static void aspeed_spi_remove(struct platform_device *pdev)
{
	struct aspeed_spi *aspi = platform_get_drvdata(pdev);
	struct spi_controller *ctlr = platform_get_drvdata(pdev);
	struct aspeed_spi *aspi = spi_controller_get_devdata(ctlr);

	spi_unregister_controller(ctlr);

	aspeed_spi_enable(aspi, false);
}
Loading