Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'spi-v6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi

Pull spi updates from Mark Brown:
"This is a very quiet release for SPI, we've got cleanups and minor
fixes but only a few new driver specific features. The bulk of the
changes in terms of diffstat are the cleanups, plus one bit of
performance work for McSPI.

- Conversions to use devm_clk_get_enabled() and to remove outdated
terms for controller and device

- Device mode support for the Renesas CSI

- Cleanups and improvements to the device tree bindings aimed at
making validation better

- PIO FIFO usage for the OMAP2 McSPI, improving performance"

* tag 'spi-v6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (75 commits)
spi: omap2-mcspi: Add FIFO support without DMA
spi: stm32: Explicitly include correct DT includes
spi: Export acpi_spi_find_controller_by_adev()
spi: nxp-fspi: use the correct ioremap function
spi: Don't use flexible array in struct spi_message definition
spi: bcm2835: add a sentinel at the end of the lookup array
spi: spi-geni-qcom: Rename the label unmap_if_dma
spi: rzv2m-csi: Add target mode support
spi: renesas,rzv2m-csi: Add CSI (SPI) target related property
spi: spidev: make spidev_class constant
spi: mpc52xx-psc: Make mpc52xx_psc_spi_transfer_one_message() static
spi: spi-cadence-quadspi: Fix missing unwind goto warnings
spi: omap2-mcspi: Fix hardcoded reference clock
spi: dt-bindings: Make "additionalProperties: true" explicit
spi: at91-usart: Remove some dead code
spi: dt-bindings: st,stm32-spi: Move "st,spi-midi-ns" to spi-peripheral-props.yaml
spi: qup: Vote for interconnect bandwidth to DRAM
spi: dt-bindings: qup: Document interconnects
spi: qup: Parse OPP table for DVFS support
spi: dt-bindings: qup: Document power-domains and OPP
...

+1211 -1274
+2
Documentation/devicetree/bindings/spi/allwinner,sun4i-a10-spi.yaml
··· 46 46 patternProperties: 47 47 "^.*@[0-9a-f]+": 48 48 type: object 49 + additionalProperties: true 50 + 49 51 properties: 50 52 reg: 51 53 items:
+2
Documentation/devicetree/bindings/spi/allwinner,sun6i-a31-spi.yaml
··· 68 68 patternProperties: 69 69 "^.*@[0-9a-f]+": 70 70 type: object 71 + additionalProperties: true 72 + 71 73 properties: 72 74 reg: 73 75 items:
+61
Documentation/devicetree/bindings/spi/arm,pl022-peripheral-props.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/spi/arm,pl022-peripheral-props.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Peripheral-specific properties for Arm PL022 SPI controller 8 + 9 + maintainers: 10 + - Linus Walleij <linus.walleij@linaro.org> 11 + 12 + select: false 13 + 14 + properties: 15 + pl022,interface: 16 + description: SPI interface type 17 + $ref: /schemas/types.yaml#/definitions/uint32 18 + enum: 19 + - 0 # SPI 20 + - 1 # Texas Instruments Synchronous Serial Frame Format 21 + - 2 # Microwire (Half Duplex) 22 + 23 + pl022,com-mode: 24 + description: Specifies the transfer mode 25 + $ref: /schemas/types.yaml#/definitions/uint32 26 + enum: 27 + - 0 # interrupt mode 28 + - 1 # polling mode 29 + - 2 # DMA mode 30 + default: 1 31 + 32 + pl022,rx-level-trig: 33 + description: Rx FIFO watermark level 34 + $ref: /schemas/types.yaml#/definitions/uint32 35 + minimum: 0 36 + maximum: 4 37 + 38 + pl022,tx-level-trig: 39 + description: Tx FIFO watermark level 40 + $ref: /schemas/types.yaml#/definitions/uint32 41 + minimum: 0 42 + maximum: 4 43 + 44 + pl022,ctrl-len: 45 + description: Microwire interface - Control length 46 + $ref: /schemas/types.yaml#/definitions/uint32 47 + minimum: 0x03 48 + maximum: 0x1f 49 + 50 + pl022,wait-state: 51 + description: Microwire interface - Wait state 52 + $ref: /schemas/types.yaml#/definitions/uint32 53 + enum: [0, 1] 54 + 55 + pl022,duplex: 56 + description: Microwire interface - Full/Half duplex 57 + $ref: /schemas/types.yaml#/definitions/uint32 58 + enum: [0, 1] 59 + 60 + additionalProperties: true 61 + ...
+1
Documentation/devicetree/bindings/spi/nvidia,tegra210-quad.yaml
··· 50 50 patternProperties: 51 51 "@[0-9a-f]+$": 52 52 type: object 53 + additionalProperties: true 53 54 54 55 properties: 55 56 spi-rx-bus-width:
+13
Documentation/devicetree/bindings/spi/qcom,spi-qup.yaml
··· 44 44 - const: tx 45 45 - const: rx 46 46 47 + interconnects: 48 + maxItems: 1 49 + 47 50 interrupts: 51 + maxItems: 1 52 + 53 + operating-points-v2: true 54 + 55 + power-domains: 48 56 maxItems: 1 49 57 50 58 reg: ··· 70 62 examples: 71 63 - | 72 64 #include <dt-bindings/clock/qcom,gcc-msm8996.h> 65 + #include <dt-bindings/interconnect/qcom,msm8996.h> 73 66 #include <dt-bindings/interrupt-controller/arm-gic.h> 67 + #include <dt-bindings/power/qcom-rpmpd.h> 74 68 75 69 spi@7575000 { 76 70 compatible = "qcom,spi-qup-v2.2.1"; ··· 86 76 pinctrl-1 = <&blsp1_spi1_sleep>; 87 77 dmas = <&blsp1_dma 12>, <&blsp1_dma 13>; 88 78 dma-names = "tx", "rx"; 79 + power-domains = <&rpmpd MSM8996_VDDCX>; 80 + operating-points-v2 = <&spi_opp_table>; 81 + interconnects = <&pnoc MASTER_BLSP_1 &bimc SLAVE_EBI_CH0>; 89 82 #address-cells = <1>; 90 83 #size-cells = <0>; 91 84 };
+9
Documentation/devicetree/bindings/spi/renesas,rzv2m-csi.yaml
··· 39 39 power-domains: 40 40 maxItems: 1 41 41 42 + renesas,csi-no-ss: 43 + type: boolean 44 + description: 45 + The CSI Slave Selection (SS) pin won't be used to enable transmission and 46 + reception. Only available when in target mode. 47 + 42 48 required: 43 49 - compatible 44 50 - reg ··· 55 49 - power-domains 56 50 - '#address-cells' 57 51 - '#size-cells' 52 + 53 + dependencies: 54 + renesas,csi-no-ss: [ spi-slave ] 58 55 59 56 unevaluatedProperties: false 60 57
+2
Documentation/devicetree/bindings/spi/rockchip-sfc.yaml
··· 47 47 patternProperties: 48 48 "^flash@[0-3]$": 49 49 type: object 50 + additionalProperties: true 51 + 50 52 properties: 51 53 reg: 52 54 minimum: 0
+2
Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml
··· 160 160 patternProperties: 161 161 "^.*@[0-9a-f]+$": 162 162 type: object 163 + additionalProperties: true 164 + 163 165 properties: 164 166 reg: 165 167 minimum: 0
+6
Documentation/devicetree/bindings/spi/spi-peripheral-props.yaml
··· 113 113 minItems: 2 114 114 maxItems: 4 115 115 116 + st,spi-midi-ns: 117 + description: | 118 + Only for STM32H7, (Master Inter-Data Idleness) minimum time 119 + delay in nanoseconds inserted between two consecutive data frames. 120 + 116 121 # The controller specific properties go here. 117 122 allOf: 123 + - $ref: arm,pl022-peripheral-props.yaml# 118 124 - $ref: cdns,qspi-nor-peripheral-props.yaml# 119 125 - $ref: samsung,spi-peripheral-props.yaml# 120 126 - $ref: nvidia,tegra210-quad-peripheral-props.yaml#
-51
Documentation/devicetree/bindings/spi/spi-pl022.yaml
··· 74 74 resets: 75 75 maxItems: 1 76 76 77 - patternProperties: 78 - "^[a-zA-Z][a-zA-Z0-9,+\\-._]{0,63}@[0-9a-f]+$": 79 - type: object 80 - # SPI slave nodes must be children of the SPI master node and can 81 - # contain the following properties. 82 - properties: 83 - pl022,interface: 84 - description: SPI interface type 85 - $ref: /schemas/types.yaml#/definitions/uint32 86 - enum: 87 - - 0 # SPI 88 - - 1 # Texas Instruments Synchronous Serial Frame Format 89 - - 2 # Microwire (Half Duplex) 90 - 91 - pl022,com-mode: 92 - description: Specifies the transfer mode 93 - $ref: /schemas/types.yaml#/definitions/uint32 94 - enum: 95 - - 0 # interrupt mode 96 - - 1 # polling mode 97 - - 2 # DMA mode 98 - default: 1 99 - 100 - pl022,rx-level-trig: 101 - description: Rx FIFO watermark level 102 - $ref: /schemas/types.yaml#/definitions/uint32 103 - minimum: 0 104 - maximum: 4 105 - 106 - pl022,tx-level-trig: 107 - description: Tx FIFO watermark level 108 - $ref: /schemas/types.yaml#/definitions/uint32 109 - minimum: 0 110 - maximum: 4 111 - 112 - pl022,ctrl-len: 113 - description: Microwire interface - Control length 114 - $ref: /schemas/types.yaml#/definitions/uint32 115 - minimum: 0x03 116 - maximum: 0x1f 117 - 118 - pl022,wait-state: 119 - description: Microwire interface - Wait state 120 - $ref: /schemas/types.yaml#/definitions/uint32 121 - enum: [0, 1] 122 - 123 - pl022,duplex: 124 - description: Microwire interface - Full/Half duplex 125 - $ref: /schemas/types.yaml#/definitions/uint32 126 - enum: [0, 1] 127 - 128 77 required: 129 78 - compatible 130 79 - reg
-20
Documentation/devicetree/bindings/spi/st,stm32-spi.yaml
··· 18 18 19 19 allOf: 20 20 - $ref: spi-controller.yaml# 21 - - if: 22 - properties: 23 - compatible: 24 - contains: 25 - const: st,stm32f4-spi 26 - 27 - then: 28 - properties: 29 - st,spi-midi-ns: false 30 21 31 22 properties: 32 23 compatible: ··· 49 58 items: 50 59 - const: rx 51 60 - const: tx 52 - 53 - patternProperties: 54 - "^[a-zA-Z][a-zA-Z0-9,+\\-._]{0,63}@[0-9a-f]+$": 55 - type: object 56 - # SPI slave nodes must be children of the SPI master node and can 57 - # contain the following properties. 58 - properties: 59 - st,spi-midi-ns: 60 - description: | 61 - Only for STM32H7, (Master Inter-Data Idleness) minimum time 62 - delay in nanoseconds inserted between two consecutive data frames. 63 61 64 62 required: 65 63 - compatible
+2 -1
drivers/spi/Kconfig
··· 862 862 tristate "Renesas RZ/V2M CSI controller" 863 863 depends on ARCH_RENESAS || COMPILE_TEST 864 864 help 865 - SPI driver for Renesas RZ/V2M Clocked Serial Interface (CSI) 865 + SPI driver for Renesas RZ/V2M Clocked Serial Interface (CSI). 866 + CSI supports both SPI host and SPI target roles. 866 867 867 868 config SPI_QCOM_QSPI 868 869 tristate "QTI QSPI controller"
+3 -19
drivers/spi/spi-ar934x.c
··· 168 168 struct ar934x_spi *sp; 169 169 void __iomem *base; 170 170 struct clk *clk; 171 - int ret; 172 171 173 172 base = devm_platform_ioremap_resource(pdev, 0); 174 173 if (IS_ERR(base)) 175 174 return PTR_ERR(base); 176 175 177 - clk = devm_clk_get(&pdev->dev, NULL); 176 + clk = devm_clk_get_enabled(&pdev->dev, NULL); 178 177 if (IS_ERR(clk)) { 179 178 dev_err(&pdev->dev, "failed to get clock\n"); 180 179 return PTR_ERR(clk); 181 180 } 182 181 183 - ret = clk_prepare_enable(clk); 184 - if (ret) 185 - return ret; 186 - 187 182 ctlr = devm_spi_alloc_host(&pdev->dev, sizeof(*sp)); 188 183 if (!ctlr) { 189 184 dev_info(&pdev->dev, "failed to allocate spi controller\n"); 190 - ret = -ENOMEM; 191 - goto err_clk_disable; 185 + return -ENOMEM; 192 186 } 193 187 194 188 /* disable flash mapping and expose spi controller registers */ ··· 206 212 sp->clk_freq = clk_get_rate(clk); 207 213 sp->ctlr = ctlr; 208 214 209 - ret = spi_register_controller(ctlr); 210 - if (!ret) 211 - return 0; 212 - 213 - err_clk_disable: 214 - clk_disable_unprepare(clk); 215 - return ret; 215 + return spi_register_controller(ctlr); 216 216 } 217 217 218 218 static void ar934x_spi_remove(struct platform_device *pdev) 219 219 { 220 220 struct spi_controller *ctlr; 221 - struct ar934x_spi *sp; 222 221 223 222 ctlr = dev_get_drvdata(&pdev->dev); 224 - sp = spi_controller_get_devdata(ctlr); 225 - 226 223 spi_unregister_controller(ctlr); 227 - clk_disable_unprepare(sp->clk); 228 224 } 229 225 230 226 static struct platform_driver ar934x_spi_driver = {
+3 -20
drivers/spi/spi-armada-3700.c
··· 865 865 866 866 init_completion(&spi->done); 867 867 868 - spi->clk = devm_clk_get(dev, NULL); 868 + spi->clk = devm_clk_get_prepared(dev, NULL); 869 869 if (IS_ERR(spi->clk)) { 870 870 dev_err(dev, "could not find clk: %ld\n", PTR_ERR(spi->clk)); 871 - goto error; 872 - } 873 - 874 - ret = clk_prepare(spi->clk); 875 - if (ret) { 876 - dev_err(dev, "could not prepare clk: %d\n", ret); 877 871 goto error; 878 872 } 879 873 ··· 882 888 dev_name(dev), host); 883 889 if (ret) { 884 890 dev_err(dev, "could not request IRQ: %d\n", ret); 885 - goto error_clk; 891 + goto error; 886 892 } 887 893 888 894 ret = devm_spi_register_controller(dev, host); 889 895 if (ret) { 890 896 dev_err(dev, "Failed to register host\n"); 891 - goto error_clk; 897 + goto error; 892 898 } 893 899 894 900 return 0; 895 901 896 - error_clk: 897 - clk_unprepare(spi->clk); 898 902 error: 899 903 spi_controller_put(host); 900 904 out: 901 905 return ret; 902 - } 903 - 904 - static void a3700_spi_remove(struct platform_device *pdev) 905 - { 906 - struct spi_controller *host = platform_get_drvdata(pdev); 907 - struct a3700_spi *spi = spi_controller_get_devdata(host); 908 - 909 - clk_unprepare(spi->clk); 910 906 } 911 907 912 908 static struct platform_driver a3700_spi_driver = { ··· 905 921 .of_match_table = of_match_ptr(a3700_spi_dt_ids), 906 922 }, 907 923 .probe = a3700_spi_probe, 908 - .remove_new = a3700_spi_remove, 909 924 }; 910 925 911 926 module_platform_driver(a3700_spi_driver);
+2 -14
drivers/spi/spi-aspeed-smc.c
··· 748 748 aspi->ahb_window_size = resource_size(res); 749 749 aspi->ahb_base_phy = res->start; 750 750 751 - aspi->clk = devm_clk_get(&pdev->dev, NULL); 751 + aspi->clk = devm_clk_get_enabled(&pdev->dev, NULL); 752 752 if (IS_ERR(aspi->clk)) { 753 753 dev_err(dev, "missing clock\n"); 754 754 return PTR_ERR(aspi->clk); ··· 758 758 if (!aspi->clk_freq) { 759 759 dev_err(dev, "invalid clock\n"); 760 760 return -EINVAL; 761 - } 762 - 763 - ret = clk_prepare_enable(aspi->clk); 764 - if (ret) { 765 - dev_err(dev, "can not enable the clock\n"); 766 - return ret; 767 761 } 768 762 769 763 /* IRQ is for DMA, which the driver doesn't support yet */ ··· 771 777 ctlr->dev.of_node = dev->of_node; 772 778 773 779 ret = devm_spi_register_controller(dev, ctlr); 774 - if (ret) { 780 + if (ret) 775 781 dev_err(&pdev->dev, "spi_register_controller failed\n"); 776 - goto disable_clk; 777 - } 778 - return 0; 779 782 780 - disable_clk: 781 - clk_disable_unprepare(aspi->clk); 782 783 return ret; 783 784 } 784 785 ··· 782 793 struct aspeed_spi *aspi = platform_get_drvdata(pdev); 783 794 784 795 aspeed_spi_enable(aspi, false); 785 - clk_disable_unprepare(aspi->clk); 786 796 } 787 797 788 798 /*
+4 -18
drivers/spi/spi-at91-usart.c
··· 132 132 dma_cap_set(DMA_SLAVE, mask); 133 133 134 134 ctlr->dma_tx = dma_request_chan(dev, "tx"); 135 - if (IS_ERR_OR_NULL(ctlr->dma_tx)) { 136 - if (IS_ERR(ctlr->dma_tx)) { 137 - err = PTR_ERR(ctlr->dma_tx); 138 - goto at91_usart_spi_error_clear; 139 - } 140 - 141 - dev_dbg(dev, 142 - "DMA TX channel not available, SPI unable to use DMA\n"); 143 - err = -EBUSY; 135 + if (IS_ERR(ctlr->dma_tx)) { 136 + err = PTR_ERR(ctlr->dma_tx); 144 137 goto at91_usart_spi_error_clear; 145 138 } 146 139 147 140 ctlr->dma_rx = dma_request_chan(dev, "rx"); 148 - if (IS_ERR_OR_NULL(ctlr->dma_rx)) { 149 - if (IS_ERR(ctlr->dma_rx)) { 150 - err = PTR_ERR(ctlr->dma_rx); 151 - goto at91_usart_spi_error; 152 - } 153 - 154 - dev_dbg(dev, 155 - "DMA RX channel not available, SPI unable to use DMA\n"); 156 - err = -EBUSY; 141 + if (IS_ERR(ctlr->dma_rx)) { 142 + err = PTR_ERR(ctlr->dma_rx); 157 143 goto at91_usart_spi_error; 158 144 } 159 145
+2 -9
drivers/spi/spi-ath79.c
··· 200 200 goto err_put_host; 201 201 } 202 202 203 - sp->clk = devm_clk_get(&pdev->dev, "ahb"); 203 + sp->clk = devm_clk_get_enabled(&pdev->dev, "ahb"); 204 204 if (IS_ERR(sp->clk)) { 205 205 ret = PTR_ERR(sp->clk); 206 206 goto err_put_host; 207 207 } 208 208 209 - ret = clk_prepare_enable(sp->clk); 210 - if (ret) 211 - goto err_put_host; 212 - 213 209 rate = DIV_ROUND_UP(clk_get_rate(sp->clk), MHZ); 214 210 if (!rate) { 215 211 ret = -EINVAL; 216 - goto err_clk_disable; 212 + goto err_put_host; 217 213 } 218 214 219 215 sp->rrw_delay = ATH79_SPI_RRW_DELAY_FACTOR / rate; ··· 225 229 226 230 err_disable: 227 231 ath79_spi_disable(sp); 228 - err_clk_disable: 229 - clk_disable_unprepare(sp->clk); 230 232 err_put_host: 231 233 spi_controller_put(host); 232 234 ··· 237 243 238 244 spi_bitbang_stop(&sp->bitbang); 239 245 ath79_spi_disable(sp); 240 - clk_disable_unprepare(sp->clk); 241 246 spi_controller_put(sp->bitbang.master); 242 247 } 243 248
+5 -20
drivers/spi/spi-axi-spi-engine.c
··· 485 485 486 486 spin_lock_init(&spi_engine->lock); 487 487 488 - spi_engine->clk = devm_clk_get(&pdev->dev, "s_axi_aclk"); 488 + spi_engine->clk = devm_clk_get_enabled(&pdev->dev, "s_axi_aclk"); 489 489 if (IS_ERR(spi_engine->clk)) { 490 490 ret = PTR_ERR(spi_engine->clk); 491 491 goto err_put_host; 492 492 } 493 493 494 - spi_engine->ref_clk = devm_clk_get(&pdev->dev, "spi_clk"); 494 + spi_engine->ref_clk = devm_clk_get_enabled(&pdev->dev, "spi_clk"); 495 495 if (IS_ERR(spi_engine->ref_clk)) { 496 496 ret = PTR_ERR(spi_engine->ref_clk); 497 497 goto err_put_host; 498 498 } 499 499 500 - ret = clk_prepare_enable(spi_engine->clk); 501 - if (ret) 502 - goto err_put_host; 503 - 504 - ret = clk_prepare_enable(spi_engine->ref_clk); 505 - if (ret) 506 - goto err_clk_disable; 507 - 508 500 spi_engine->base = devm_platform_ioremap_resource(pdev, 0); 509 501 if (IS_ERR(spi_engine->base)) { 510 502 ret = PTR_ERR(spi_engine->base); 511 - goto err_ref_clk_disable; 503 + goto err_put_host; 512 504 } 513 505 514 506 version = readl(spi_engine->base + SPI_ENGINE_REG_VERSION); ··· 510 518 SPI_ENGINE_VERSION_MINOR(version), 511 519 SPI_ENGINE_VERSION_PATCH(version)); 512 520 ret = -ENODEV; 513 - goto err_ref_clk_disable; 521 + goto err_put_host; 514 522 } 515 523 516 524 writel_relaxed(0x00, spi_engine->base + SPI_ENGINE_REG_RESET); ··· 519 527 520 528 ret = request_irq(irq, spi_engine_irq, 0, pdev->name, host); 521 529 if (ret) 522 - goto err_ref_clk_disable; 530 + goto err_put_host; 523 531 524 532 host->dev.of_node = pdev->dev.of_node; 525 533 host->mode_bits = SPI_CPOL | SPI_CPHA | SPI_3WIRE; ··· 537 545 return 0; 538 546 err_free_irq: 539 547 free_irq(irq, host); 540 - err_ref_clk_disable: 541 - clk_disable_unprepare(spi_engine->ref_clk); 542 - err_clk_disable: 543 - clk_disable_unprepare(spi_engine->clk); 544 548 err_put_host: 545 549 spi_controller_put(host); 546 550 return ret; ··· 557 569 writel_relaxed(0xff, spi_engine->base + SPI_ENGINE_REG_INT_PENDING); 558 570 writel_relaxed(0x00, spi_engine->base + SPI_ENGINE_REG_INT_ENABLE); 559 571 writel_relaxed(0x01, spi_engine->base + SPI_ENGINE_REG_RESET); 560 - 561 - clk_disable_unprepare(spi_engine->ref_clk); 562 - clk_disable_unprepare(spi_engine->clk); 563 572 } 564 573 565 574 static const struct of_device_id spi_engine_match_table[] = {
+38 -35
drivers/spi/spi-bcm2835.c
··· 11 11 * spi-atmel.c, Copyright (C) 2006 Atmel Corporation 12 12 */ 13 13 14 + #include <linux/cleanup.h> 14 15 #include <linux/clk.h> 15 16 #include <linux/completion.h> 16 17 #include <linux/debugfs.h> ··· 27 26 #include <linux/of_address.h> 28 27 #include <linux/platform_device.h> 29 28 #include <linux/gpio/consumer.h> 30 - #include <linux/gpio/machine.h> /* FIXME: using chip internals */ 31 - #include <linux/gpio/driver.h> /* FIXME: using chip internals */ 29 + #include <linux/gpio/machine.h> /* FIXME: using GPIO lookup tables */ 32 30 #include <linux/of_irq.h> 31 + #include <linux/overflow.h> 32 + #include <linux/slab.h> 33 33 #include <linux/spi/spi.h> 34 34 35 35 /* SPI register offsets */ ··· 85 83 * struct bcm2835_spi - BCM2835 SPI controller 86 84 * @regs: base address of register map 87 85 * @clk: core clock, divided to calculate serial clock 86 + * @cs_gpio: chip-select GPIO descriptor 88 87 * @clk_hz: core clock cached speed 89 88 * @irq: interrupt, signals TX FIFO empty or RX FIFO ¾ full 90 89 * @tfr: SPI transfer currently processed ··· 120 117 struct bcm2835_spi { 121 118 void __iomem *regs; 122 119 struct clk *clk; 120 + struct gpio_desc *cs_gpio; 123 121 unsigned long clk_hz; 124 122 int irq; 125 123 struct spi_transfer *tfr; ··· 1160 1156 bcm2835_spi_reset_hw(bs); 1161 1157 } 1162 1158 1163 - static int chip_match_name(struct gpio_chip *chip, void *data) 1164 - { 1165 - return !strcmp(chip->label, data); 1166 - } 1167 - 1168 1159 static void bcm2835_spi_cleanup(struct spi_device *spi) 1169 1160 { 1170 1161 struct bcm2835_spidev *target = spi_get_ctldata(spi); 1171 1162 struct spi_controller *ctlr = spi->controller; 1163 + struct bcm2835_spi *bs = spi_controller_get_devdata(ctlr); 1172 1164 1173 1165 if (target->clear_rx_desc) 1174 1166 dmaengine_desc_free(target->clear_rx_desc); ··· 1174 1174 target->clear_rx_addr, 1175 1175 sizeof(u32), 1176 1176 DMA_TO_DEVICE); 1177 + 1178 + gpiod_put(bs->cs_gpio); 1179 + spi_set_csgpiod(spi, 0, NULL); 1177 1180 1178 1181 kfree(target); 1179 1182 } ··· 1224 1221 struct spi_controller *ctlr = spi->controller; 1225 1222 struct bcm2835_spi *bs = spi_controller_get_devdata(ctlr); 1226 1223 struct bcm2835_spidev *target = spi_get_ctldata(spi); 1227 - struct gpio_chip *chip; 1224 + struct gpiod_lookup_table *lookup __free(kfree) = NULL; 1228 1225 int ret; 1229 1226 u32 cs; 1230 1227 ··· 1291 1288 } 1292 1289 1293 1290 /* 1294 - * Translate native CS to GPIO 1291 + * TODO: The code below is a slightly better alternative to the utter 1292 + * abuse of the GPIO API that I found here before. It creates a 1293 + * temporary lookup table, assigns it to the SPI device, gets the GPIO 1294 + * descriptor and then releases the lookup table. 1295 1295 * 1296 - * FIXME: poking around in the gpiolib internals like this is 1297 - * not very good practice. Find a way to locate the real problem 1298 - * and fix it. Why is the GPIO descriptor in spi->cs_gpiod 1299 - * sometimes not assigned correctly? Erroneous device trees? 1296 + * More on the problem that it addresses: 1297 + * https://www.spinics.net/lists/linux-gpio/msg36218.html 1300 1298 */ 1301 - 1302 - /* get the gpio chip for the base */ 1303 - chip = gpiochip_find("pinctrl-bcm2835", chip_match_name); 1304 - if (!chip) 1305 - return 0; 1306 - 1307 - spi_set_csgpiod(spi, 0, gpiochip_request_own_desc(chip, 1308 - 8 - (spi_get_chipselect(spi, 0)), 1309 - DRV_NAME, 1310 - GPIO_LOOKUP_FLAGS_DEFAULT, 1311 - GPIOD_OUT_LOW)); 1312 - if (IS_ERR(spi_get_csgpiod(spi, 0))) { 1313 - ret = PTR_ERR(spi_get_csgpiod(spi, 0)); 1299 + lookup = kzalloc(struct_size(lookup, table, 2), GFP_KERNEL); 1300 + if (!lookup) { 1301 + ret = -ENOMEM; 1314 1302 goto err_cleanup; 1315 1303 } 1304 + 1305 + lookup->dev_id = dev_name(&spi->dev); 1306 + lookup->table[0] = GPIO_LOOKUP("pinctrl-bcm2835", 1307 + 8 - (spi_get_chipselect(spi, 0)), 1308 + "cs", GPIO_LOOKUP_FLAGS_DEFAULT); 1309 + 1310 + gpiod_add_lookup_table(lookup); 1311 + 1312 + bs->cs_gpio = gpiod_get(&spi->dev, "cs", GPIOD_OUT_LOW); 1313 + gpiod_remove_lookup_table(lookup); 1314 + if (IS_ERR(bs->cs_gpio)) { 1315 + ret = PTR_ERR(bs->cs_gpio); 1316 + goto err_cleanup; 1317 + } 1318 + 1319 + spi_set_csgpiod(spi, 0, bs->cs_gpio); 1316 1320 1317 1321 /* and set up the "mode" and level */ 1318 1322 dev_info(&spi->dev, "setting up native-CS%i to use GPIO\n", ··· 1362 1352 if (IS_ERR(bs->regs)) 1363 1353 return PTR_ERR(bs->regs); 1364 1354 1365 - bs->clk = devm_clk_get(&pdev->dev, NULL); 1355 + bs->clk = devm_clk_get_enabled(&pdev->dev, NULL); 1366 1356 if (IS_ERR(bs->clk)) 1367 1357 return dev_err_probe(&pdev->dev, PTR_ERR(bs->clk), 1368 1358 "could not get clk\n"); ··· 1373 1363 if (bs->irq < 0) 1374 1364 return bs->irq; 1375 1365 1376 - err = clk_prepare_enable(bs->clk); 1377 - if (err) 1378 - return err; 1379 1366 bs->clk_hz = clk_get_rate(bs->clk); 1380 1367 1381 1368 err = bcm2835_dma_init(ctlr, &pdev->dev, bs); 1382 1369 if (err) 1383 - goto out_clk_disable; 1370 + return err; 1384 1371 1385 1372 /* initialise the hardware with the default polarities */ 1386 1373 bcm2835_wr(bs, BCM2835_SPI_CS, ··· 1403 1396 1404 1397 out_dma_release: 1405 1398 bcm2835_dma_release(ctlr, bs); 1406 - out_clk_disable: 1407 - clk_disable_unprepare(bs->clk); 1408 1399 return err; 1409 1400 } 1410 1401 ··· 1420 1415 /* Clear FIFOs, and disable the HW block */ 1421 1416 bcm2835_wr(bs, BCM2835_SPI_CS, 1422 1417 BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX); 1423 - 1424 - clk_disable_unprepare(bs->clk); 1425 1418 } 1426 1419 1427 1420 static const struct of_device_id bcm2835_spi_match[] = {
+4 -19
drivers/spi/spi-bcm2835aux.c
··· 512 512 if (IS_ERR(bs->regs)) 513 513 return PTR_ERR(bs->regs); 514 514 515 - bs->clk = devm_clk_get(&pdev->dev, NULL); 515 + bs->clk = devm_clk_get_enabled(&pdev->dev, NULL); 516 516 if (IS_ERR(bs->clk)) { 517 517 err = PTR_ERR(bs->clk); 518 518 dev_err(&pdev->dev, "could not get clk: %d\n", err); ··· 523 523 if (bs->irq < 0) 524 524 return bs->irq; 525 525 526 - /* this also enables the HW block */ 527 - err = clk_prepare_enable(bs->clk); 528 - if (err) { 529 - dev_err(&pdev->dev, "could not prepare clock: %d\n", err); 530 - return err; 531 - } 532 - 533 526 /* just checking if the clock returns a sane value */ 534 527 clk_hz = clk_get_rate(bs->clk); 535 528 if (!clk_hz) { 536 529 dev_err(&pdev->dev, "clock returns 0 Hz\n"); 537 - err = -ENODEV; 538 - goto out_clk_disable; 530 + return -ENODEV; 539 531 } 540 532 541 533 /* reset SPI-HW block */ ··· 539 547 dev_name(&pdev->dev), host); 540 548 if (err) { 541 549 dev_err(&pdev->dev, "could not request IRQ: %d\n", err); 542 - goto out_clk_disable; 550 + return err; 543 551 } 544 552 545 553 err = spi_register_controller(host); 546 554 if (err) { 547 555 dev_err(&pdev->dev, "could not register SPI host: %d\n", err); 548 - goto out_clk_disable; 556 + return err; 549 557 } 550 558 551 559 bcm2835aux_debugfs_create(bs, dev_name(&pdev->dev)); 552 560 553 561 return 0; 554 - 555 - out_clk_disable: 556 - clk_disable_unprepare(bs->clk); 557 - return err; 558 562 } 559 563 560 564 static void bcm2835aux_spi_remove(struct platform_device *pdev) ··· 563 575 spi_unregister_controller(host); 564 576 565 577 bcm2835aux_spi_reset_hw(bs); 566 - 567 - /* disable the HW block by releasing the clock */ 568 - clk_disable_unprepare(bs->clk); 569 578 } 570 579 571 580 static const struct of_device_id bcm2835aux_spi_match[] = {
+36 -9
drivers/spi/spi-cadence-quadspi.c
··· 116 116 #define CQSPI_TIMEOUT_MS 500 117 117 #define CQSPI_READ_TIMEOUT_MS 10 118 118 119 + /* Runtime_pm autosuspend delay */ 120 + #define CQSPI_AUTOSUSPEND_TIMEOUT 2000 121 + 119 122 #define CQSPI_DUMMY_CLKS_PER_BYTE 8 120 123 #define CQSPI_DUMMY_BYTES_MAX 4 121 124 #define CQSPI_DUMMY_CLKS_MAX 31 ··· 1410 1407 static int cqspi_exec_mem_op(struct spi_mem *mem, const struct spi_mem_op *op) 1411 1408 { 1412 1409 int ret; 1410 + struct cqspi_st *cqspi = spi_master_get_devdata(mem->spi->master); 1411 + struct device *dev = &cqspi->pdev->dev; 1412 + 1413 + ret = pm_runtime_resume_and_get(dev); 1414 + if (ret) { 1415 + dev_err(&mem->spi->dev, "resume failed with %d\n", ret); 1416 + return ret; 1417 + } 1413 1418 1414 1419 ret = cqspi_mem_process(mem, op); 1420 + 1421 + pm_runtime_mark_last_busy(dev); 1422 + pm_runtime_put_autosuspend(dev); 1423 + 1415 1424 if (ret) 1416 1425 dev_err(&mem->spi->dev, "operation failed with %d\n", ret); 1417 1426 ··· 1768 1753 if (irq < 0) 1769 1754 return -ENXIO; 1770 1755 1771 - pm_runtime_enable(dev); 1772 - ret = pm_runtime_resume_and_get(dev); 1773 - if (ret < 0) 1774 - goto probe_pm_failed; 1756 + ret = pm_runtime_set_active(dev); 1757 + if (ret) 1758 + return ret; 1759 + 1775 1760 1776 1761 ret = clk_prepare_enable(cqspi->clk); 1777 1762 if (ret) { ··· 1877 1862 goto probe_setup_failed; 1878 1863 } 1879 1864 1865 + ret = devm_pm_runtime_enable(dev); 1866 + if (ret) { 1867 + if (cqspi->rx_chan) 1868 + dma_release_channel(cqspi->rx_chan); 1869 + goto probe_setup_failed; 1870 + } 1871 + 1872 + pm_runtime_set_autosuspend_delay(dev, CQSPI_AUTOSUSPEND_TIMEOUT); 1873 + pm_runtime_use_autosuspend(dev); 1874 + pm_runtime_get_noresume(dev); 1875 + 1880 1876 ret = spi_register_controller(host); 1881 1877 if (ret) { 1882 1878 dev_err(&pdev->dev, "failed to register SPI ctlr %d\n", ret); 1883 1879 goto probe_setup_failed; 1884 1880 } 1881 + 1882 + pm_runtime_mark_last_busy(dev); 1883 + pm_runtime_put_autosuspend(dev); 1885 1884 1886 1885 return 0; 1887 1886 probe_setup_failed: ··· 1903 1874 probe_reset_failed: 1904 1875 clk_disable_unprepare(cqspi->clk); 1905 1876 probe_clk_failed: 1906 - pm_runtime_put_sync(dev); 1907 - probe_pm_failed: 1908 - pm_runtime_disable(dev); 1909 1877 return ret; 1910 1878 } 1911 1879 ··· 1954 1928 return spi_controller_resume(host); 1955 1929 } 1956 1930 1957 - static DEFINE_SIMPLE_DEV_PM_OPS(cqspi_dev_pm_ops, cqspi_suspend, cqspi_resume); 1931 + static DEFINE_RUNTIME_DEV_PM_OPS(cqspi_dev_pm_ops, cqspi_suspend, 1932 + cqspi_resume, NULL); 1958 1933 1959 1934 static const struct cqspi_driver_platdata cdns_qspi = { 1960 1935 .quirks = CQSPI_DISABLE_DAC_MODE, ··· 2039 2012 .remove_new = cqspi_remove, 2040 2013 .driver = { 2041 2014 .name = CQSPI_NAME, 2042 - .pm = &cqspi_dev_pm_ops, 2015 + .pm = pm_ptr(&cqspi_dev_pm_ops), 2043 2016 .of_match_table = cqspi_dt_ids, 2044 2017 }, 2045 2018 };
+3 -20
drivers/spi/spi-cadence.c
··· 581 581 goto remove_ctlr; 582 582 } 583 583 584 - xspi->pclk = devm_clk_get(&pdev->dev, "pclk"); 584 + xspi->pclk = devm_clk_get_enabled(&pdev->dev, "pclk"); 585 585 if (IS_ERR(xspi->pclk)) { 586 586 dev_err(&pdev->dev, "pclk clock not found.\n"); 587 587 ret = PTR_ERR(xspi->pclk); 588 588 goto remove_ctlr; 589 589 } 590 590 591 - ret = clk_prepare_enable(xspi->pclk); 592 - if (ret) { 593 - dev_err(&pdev->dev, "Unable to enable APB clock.\n"); 594 - goto remove_ctlr; 595 - } 596 - 597 591 if (!spi_controller_is_target(ctlr)) { 598 - xspi->ref_clk = devm_clk_get(&pdev->dev, "ref_clk"); 592 + xspi->ref_clk = devm_clk_get_enabled(&pdev->dev, "ref_clk"); 599 593 if (IS_ERR(xspi->ref_clk)) { 600 594 dev_err(&pdev->dev, "ref_clk clock not found.\n"); 601 595 ret = PTR_ERR(xspi->ref_clk); 602 - goto clk_dis_apb; 603 - } 604 - 605 - ret = clk_prepare_enable(xspi->ref_clk); 606 - if (ret) { 607 - dev_err(&pdev->dev, "Unable to enable device clock.\n"); 608 - goto clk_dis_apb; 596 + goto remove_ctlr; 609 597 } 610 598 611 599 pm_runtime_use_autosuspend(&pdev->dev); ··· 667 679 if (!spi_controller_is_target(ctlr)) { 668 680 pm_runtime_set_suspended(&pdev->dev); 669 681 pm_runtime_disable(&pdev->dev); 670 - clk_disable_unprepare(xspi->ref_clk); 671 682 } 672 - clk_dis_apb: 673 - clk_disable_unprepare(xspi->pclk); 674 683 remove_ctlr: 675 684 spi_controller_put(ctlr); 676 685 return ret; ··· 688 703 689 704 cdns_spi_write(xspi, CDNS_SPI_ER, CDNS_SPI_ER_DISABLE); 690 705 691 - clk_disable_unprepare(xspi->ref_clk); 692 - clk_disable_unprepare(xspi->pclk); 693 706 pm_runtime_set_suspended(&pdev->dev); 694 707 pm_runtime_disable(&pdev->dev); 695 708
+1 -7
drivers/spi/spi-cavium-thunderx.c
··· 49 49 p->regs.tx = 0x1010; 50 50 p->regs.data = 0x1080; 51 51 52 - p->clk = devm_clk_get(dev, NULL); 52 + p->clk = devm_clk_get_enabled(dev, NULL); 53 53 if (IS_ERR(p->clk)) { 54 54 ret = PTR_ERR(p->clk); 55 55 goto error; 56 56 } 57 - 58 - ret = clk_prepare_enable(p->clk); 59 - if (ret) 60 - goto error; 61 57 62 58 p->sys_freq = clk_get_rate(p->clk); 63 59 if (!p->sys_freq) ··· 78 82 return 0; 79 83 80 84 error: 81 - clk_disable_unprepare(p->clk); 82 85 pci_release_regions(pdev); 83 86 spi_controller_put(host); 84 87 return ret; ··· 92 97 if (!p) 93 98 return; 94 99 95 - clk_disable_unprepare(p->clk); 96 100 pci_release_regions(pdev); 97 101 /* Put everything in a known state. */ 98 102 writeq(0, p->register_base + OCTEON_SPI_CFG(p));
+2 -9
drivers/spi/spi-davinci.c
··· 915 915 916 916 dspi->bitbang.master = host; 917 917 918 - dspi->clk = devm_clk_get(&pdev->dev, NULL); 918 + dspi->clk = devm_clk_get_enabled(&pdev->dev, NULL); 919 919 if (IS_ERR(dspi->clk)) { 920 920 ret = -ENODEV; 921 921 goto free_host; 922 922 } 923 - ret = clk_prepare_enable(dspi->clk); 924 - if (ret) 925 - goto free_host; 926 923 927 924 host->use_gpio_descriptors = true; 928 925 host->dev.of_node = pdev->dev.of_node; ··· 944 947 945 948 ret = davinci_spi_request_dma(dspi); 946 949 if (ret == -EPROBE_DEFER) { 947 - goto free_clk; 950 + goto free_host; 948 951 } else if (ret) { 949 952 dev_info(&pdev->dev, "DMA is not supported (%d)\n", ret); 950 953 dspi->dma_rx = NULL; ··· 988 991 dma_release_channel(dspi->dma_rx); 989 992 dma_release_channel(dspi->dma_tx); 990 993 } 991 - free_clk: 992 - clk_disable_unprepare(dspi->clk); 993 994 free_host: 994 995 spi_controller_put(host); 995 996 err: ··· 1012 1017 dspi = spi_controller_get_devdata(host); 1013 1018 1014 1019 spi_bitbang_stop(&dspi->bitbang); 1015 - 1016 - clk_disable_unprepare(dspi->clk); 1017 1020 1018 1021 if (dspi->dma_rx) { 1019 1022 dma_release_channel(dspi->dma_rx);
+5 -18
drivers/spi/spi-dw-bt1.c
··· 269 269 270 270 dws->paddr = mem->start; 271 271 272 - dwsbt1->clk = devm_clk_get(&pdev->dev, NULL); 272 + dwsbt1->clk = devm_clk_get_enabled(&pdev->dev, NULL); 273 273 if (IS_ERR(dwsbt1->clk)) 274 274 return PTR_ERR(dwsbt1->clk); 275 - 276 - ret = clk_prepare_enable(dwsbt1->clk); 277 - if (ret) 278 - return ret; 279 275 280 276 dws->bus_num = pdev->id; 281 277 dws->reg_io_width = 4; 282 278 dws->max_freq = clk_get_rate(dwsbt1->clk); 283 - if (!dws->max_freq) { 284 - ret = -EINVAL; 285 - goto err_disable_clk; 286 - } 279 + if (!dws->max_freq) 280 + return -EINVAL; 287 281 288 282 init_func = device_get_match_data(&pdev->dev); 289 283 ret = init_func(pdev, dwsbt1); 290 284 if (ret) 291 - goto err_disable_clk; 285 + return ret; 292 286 293 287 pm_runtime_enable(&pdev->dev); 294 288 295 289 ret = dw_spi_add_host(&pdev->dev, dws); 296 290 if (ret) { 297 291 pm_runtime_disable(&pdev->dev); 298 - goto err_disable_clk; 292 + return ret; 299 293 } 300 294 301 295 platform_set_drvdata(pdev, dwsbt1); 302 296 303 297 return 0; 304 - 305 - err_disable_clk: 306 - clk_disable_unprepare(dwsbt1->clk); 307 - 308 - return ret; 309 298 } 310 299 311 300 static void dw_spi_bt1_remove(struct platform_device *pdev) ··· 304 315 dw_spi_remove_host(&dwsbt1->dws); 305 316 306 317 pm_runtime_disable(&pdev->dev); 307 - 308 - clk_disable_unprepare(dwsbt1->clk); 309 318 } 310 319 311 320 static const struct of_device_id dw_spi_bt1_of_match[] = {
+9 -22
drivers/spi/spi-dw-mmio.c
··· 340 340 if (dws->irq < 0) 341 341 return dws->irq; /* -ENXIO */ 342 342 343 - dwsmmio->clk = devm_clk_get(&pdev->dev, NULL); 343 + dwsmmio->clk = devm_clk_get_enabled(&pdev->dev, NULL); 344 344 if (IS_ERR(dwsmmio->clk)) 345 345 return PTR_ERR(dwsmmio->clk); 346 - ret = clk_prepare_enable(dwsmmio->clk); 347 - if (ret) 348 - return ret; 349 346 350 347 /* Optional clock needed to access the registers */ 351 - dwsmmio->pclk = devm_clk_get_optional(&pdev->dev, "pclk"); 352 - if (IS_ERR(dwsmmio->pclk)) { 353 - ret = PTR_ERR(dwsmmio->pclk); 354 - goto out_clk; 355 - } 356 - ret = clk_prepare_enable(dwsmmio->pclk); 357 - if (ret) 358 - goto out_clk; 348 + dwsmmio->pclk = devm_clk_get_optional_enabled(&pdev->dev, "pclk"); 349 + if (IS_ERR(dwsmmio->pclk)) 350 + return PTR_ERR(dwsmmio->pclk); 359 351 360 352 /* find an optional reset controller */ 361 353 dwsmmio->rstc = devm_reset_control_get_optional_exclusive(&pdev->dev, "spi"); 362 - if (IS_ERR(dwsmmio->rstc)) { 363 - ret = PTR_ERR(dwsmmio->rstc); 364 - goto out_clk; 365 - } 354 + if (IS_ERR(dwsmmio->rstc)) 355 + return PTR_ERR(dwsmmio->rstc); 356 + 366 357 reset_control_deassert(dwsmmio->rstc); 367 358 368 359 dws->bus_num = pdev->id; ··· 374 383 if (init_func) { 375 384 ret = init_func(pdev, dwsmmio); 376 385 if (ret) 377 - goto out; 386 + goto out_reset; 378 387 } 379 388 380 389 pm_runtime_enable(&pdev->dev); ··· 388 397 389 398 out: 390 399 pm_runtime_disable(&pdev->dev); 391 - clk_disable_unprepare(dwsmmio->pclk); 392 - out_clk: 393 - clk_disable_unprepare(dwsmmio->clk); 400 + out_reset: 394 401 reset_control_assert(dwsmmio->rstc); 395 402 396 403 return ret; ··· 400 411 401 412 dw_spi_remove_host(&dwsmmio->dws); 402 413 pm_runtime_disable(&pdev->dev); 403 - clk_disable_unprepare(dwsmmio->pclk); 404 - clk_disable_unprepare(dwsmmio->clk); 405 414 reset_control_assert(dwsmmio->rstc); 406 415 } 407 416
+3 -9
drivers/spi/spi-fsl-dspi.c
··· 1372 1372 } 1373 1373 } 1374 1374 1375 - dspi->clk = devm_clk_get(&pdev->dev, "dspi"); 1375 + dspi->clk = devm_clk_get_enabled(&pdev->dev, "dspi"); 1376 1376 if (IS_ERR(dspi->clk)) { 1377 1377 ret = PTR_ERR(dspi->clk); 1378 1378 dev_err(&pdev->dev, "unable to get clock\n"); 1379 1379 goto out_ctlr_put; 1380 1380 } 1381 - ret = clk_prepare_enable(dspi->clk); 1382 - if (ret) 1383 - goto out_ctlr_put; 1384 1381 1385 1382 ret = dspi_init(dspi); 1386 1383 if (ret) 1387 - goto out_clk_put; 1384 + goto out_ctlr_put; 1388 1385 1389 1386 dspi->irq = platform_get_irq(pdev, 0); 1390 1387 if (dspi->irq <= 0) { ··· 1397 1400 IRQF_SHARED, pdev->name, dspi); 1398 1401 if (ret < 0) { 1399 1402 dev_err(&pdev->dev, "Unable to attach DSPI interrupt\n"); 1400 - goto out_clk_put; 1403 + goto out_ctlr_put; 1401 1404 } 1402 1405 1403 1406 poll_mode: ··· 1429 1432 out_free_irq: 1430 1433 if (dspi->irq) 1431 1434 free_irq(dspi->irq, dspi); 1432 - out_clk_put: 1433 - clk_disable_unprepare(dspi->clk); 1434 1435 out_ctlr_put: 1435 1436 spi_controller_put(ctlr); 1436 1437 ··· 1453 1458 dspi_release_dma(dspi); 1454 1459 if (dspi->irq) 1455 1460 free_irq(dspi->irq, dspi); 1456 - clk_disable_unprepare(dspi->clk); 1457 1461 } 1458 1462 1459 1463 static void dspi_shutdown(struct platform_device *pdev)
+3 -3
drivers/spi/spi-geni-qcom.c
··· 166 166 * doesn`t support CMD Cancel sequnece 167 167 */ 168 168 spin_unlock_irq(&mas->lock); 169 - goto unmap_if_dma; 169 + goto reset_if_dma; 170 170 } 171 171 172 172 reinit_completion(&mas->cancel_done); ··· 175 175 176 176 time_left = wait_for_completion_timeout(&mas->cancel_done, HZ); 177 177 if (time_left) 178 - goto unmap_if_dma; 178 + goto reset_if_dma; 179 179 180 180 spin_lock_irq(&mas->lock); 181 181 reinit_completion(&mas->abort_done); ··· 193 193 mas->abort_failed = true; 194 194 } 195 195 196 - unmap_if_dma: 196 + reset_if_dma: 197 197 if (mas->cur_xfer_mode == GENI_SE_DMA) { 198 198 if (xfer) { 199 199 if (xfer->tx_buf) {
+2 -8
drivers/spi/spi-lantiq-ssc.c
··· 932 932 if (err) 933 933 goto err_host_put; 934 934 935 - spi->spi_clk = devm_clk_get(dev, "gate"); 935 + spi->spi_clk = devm_clk_get_enabled(dev, "gate"); 936 936 if (IS_ERR(spi->spi_clk)) { 937 937 err = PTR_ERR(spi->spi_clk); 938 938 goto err_host_put; 939 939 } 940 - err = clk_prepare_enable(spi->spi_clk); 941 - if (err) 942 - goto err_host_put; 943 940 944 941 /* 945 942 * Use the old clk_get_fpi() function on Lantiq platform, till it ··· 949 952 #endif 950 953 if (IS_ERR(spi->fpi_clk)) { 951 954 err = PTR_ERR(spi->fpi_clk); 952 - goto err_clk_disable; 955 + goto err_host_put; 953 956 } 954 957 955 958 num_cs = 8; ··· 1007 1010 destroy_workqueue(spi->wq); 1008 1011 err_clk_put: 1009 1012 clk_put(spi->fpi_clk); 1010 - err_clk_disable: 1011 - clk_disable_unprepare(spi->spi_clk); 1012 1013 err_host_put: 1013 1014 spi_controller_put(host); 1014 1015 ··· 1024 1029 hw_enter_config_mode(spi); 1025 1030 1026 1031 destroy_workqueue(spi->wq); 1027 - clk_disable_unprepare(spi->spi_clk); 1028 1032 clk_put(spi->fpi_clk); 1029 1033 } 1030 1034
+10 -10
drivers/spi/spi-lm70llp.c
··· 24 24 * the SPI/Microwire bus interface. This driver specifically supports an 25 25 * NS LM70 LLP Evaluation Board, interfacing to a PC using its parallel 26 26 * port to bitbang an SPI-parport bridge. Accordingly, this is an SPI 27 - * master controller driver. The hwmon/lm70 driver is a "SPI protocol 27 + * host controller driver. The hwmon/lm70 driver is a "SPI protocol 28 28 * driver", layered on top of this one and usable without the lm70llp. 29 29 * 30 30 * Datasheet and Schematic: ··· 189 189 { 190 190 struct pardevice *pd; 191 191 struct spi_lm70llp *pp; 192 - struct spi_master *master; 192 + struct spi_controller *host; 193 193 int status; 194 194 struct pardev_cb lm70llp_cb; 195 195 ··· 202 202 * the lm70 driver could verify it, reading the manf ID. 203 203 */ 204 204 205 - master = spi_alloc_master(p->physport->dev, sizeof(*pp)); 206 - if (!master) { 205 + host = spi_alloc_host(p->physport->dev, sizeof(*pp)); 206 + if (!host) { 207 207 status = -ENOMEM; 208 208 goto out_fail; 209 209 } 210 - pp = spi_master_get_devdata(master); 210 + pp = spi_controller_get_devdata(host); 211 211 212 212 /* 213 213 * SPI and bitbang hookup. 214 214 */ 215 - pp->bitbang.master = master; 215 + pp->bitbang.master = host; 216 216 pp->bitbang.chipselect = lm70_chipselect; 217 217 pp->bitbang.txrx_word[SPI_MODE_0] = lm70_txrx; 218 218 pp->bitbang.flags = SPI_3WIRE; ··· 228 228 229 229 if (!pd) { 230 230 status = -ENOMEM; 231 - goto out_free_master; 231 + goto out_free_host; 232 232 } 233 233 pp->pd = pd; 234 234 ··· 287 287 parport_release(pp->pd); 288 288 out_parport_unreg: 289 289 parport_unregister_device(pd); 290 - out_free_master: 291 - spi_master_put(master); 290 + out_free_host: 291 + spi_controller_put(host); 292 292 out_fail: 293 293 pr_info("spi_lm70llp probe fail, status %d\n", status); 294 294 } ··· 309 309 parport_release(pp->pd); 310 310 parport_unregister_device(pp->pd); 311 311 312 - spi_master_put(pp->bitbang.master); 312 + spi_controller_put(pp->bitbang.master); 313 313 314 314 lm70llp = NULL; 315 315 }
+28 -28
drivers/spi/spi-lp8841-rtc.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-or-later 2 2 /* 3 - * SPI master driver for ICP DAS LP-8841 RTC 3 + * SPI host driver for ICP DAS LP-8841 RTC 4 4 * 5 5 * Copyright (C) 2016 Sergei Ianovich 6 6 * ··· 73 73 /* clock starts at inactive polarity */ 74 74 for (; likely(bits); bits--) { 75 75 76 - /* setup LSB (to slave) on leading edge */ 76 + /* setup LSB (to target) on leading edge */ 77 77 if ((flags & SPI_CONTROLLER_NO_TX) == 0) 78 78 setmosi(data, (word & 1)); 79 79 80 80 usleep_range(usecs, usecs + 1); /* T(setup) */ 81 81 82 - /* sample LSB (from slave) on trailing edge */ 82 + /* sample LSB (from target) on trailing edge */ 83 83 word >>= 1; 84 84 if ((flags & SPI_CONTROLLER_NO_RX) == 0) 85 85 word |= (getmiso(data) << 31); ··· 95 95 } 96 96 97 97 static int 98 - spi_lp8841_rtc_transfer_one(struct spi_master *master, 98 + spi_lp8841_rtc_transfer_one(struct spi_controller *host, 99 99 struct spi_device *spi, 100 100 struct spi_transfer *t) 101 101 { 102 - struct spi_lp8841_rtc *data = spi_master_get_devdata(master); 102 + struct spi_lp8841_rtc *data = spi_controller_get_devdata(host); 103 103 unsigned count = t->len; 104 104 const u8 *tx = t->tx_buf; 105 105 u8 *rx = t->rx_buf; ··· 128 128 ret = -EINVAL; 129 129 } 130 130 131 - spi_finalize_current_transfer(master); 131 + spi_finalize_current_transfer(host); 132 132 133 133 return ret; 134 134 } ··· 136 136 static void 137 137 spi_lp8841_rtc_set_cs(struct spi_device *spi, bool enable) 138 138 { 139 - struct spi_lp8841_rtc *data = spi_master_get_devdata(spi->master); 139 + struct spi_lp8841_rtc *data = spi_controller_get_devdata(spi->controller); 140 140 141 141 data->state = 0; 142 142 writeb(data->state, data->iomem); ··· 182 182 spi_lp8841_rtc_probe(struct platform_device *pdev) 183 183 { 184 184 int ret; 185 - struct spi_master *master; 185 + struct spi_controller *host; 186 186 struct spi_lp8841_rtc *data; 187 187 188 - master = spi_alloc_master(&pdev->dev, sizeof(*data)); 189 - if (!master) 188 + host = spi_alloc_host(&pdev->dev, sizeof(*data)); 189 + if (!host) 190 190 return -ENOMEM; 191 - platform_set_drvdata(pdev, master); 191 + platform_set_drvdata(pdev, host); 192 192 193 - master->flags = SPI_CONTROLLER_HALF_DUPLEX; 194 - master->mode_bits = SPI_CS_HIGH | SPI_3WIRE | SPI_LSB_FIRST; 193 + host->flags = SPI_CONTROLLER_HALF_DUPLEX; 194 + host->mode_bits = SPI_CS_HIGH | SPI_3WIRE | SPI_LSB_FIRST; 195 195 196 - master->bus_num = pdev->id; 197 - master->num_chipselect = 1; 198 - master->setup = spi_lp8841_rtc_setup; 199 - master->set_cs = spi_lp8841_rtc_set_cs; 200 - master->transfer_one = spi_lp8841_rtc_transfer_one; 201 - master->bits_per_word_mask = SPI_BPW_MASK(8); 196 + host->bus_num = pdev->id; 197 + host->num_chipselect = 1; 198 + host->setup = spi_lp8841_rtc_setup; 199 + host->set_cs = spi_lp8841_rtc_set_cs; 200 + host->transfer_one = spi_lp8841_rtc_transfer_one; 201 + host->bits_per_word_mask = SPI_BPW_MASK(8); 202 202 #ifdef CONFIG_OF 203 - master->dev.of_node = pdev->dev.of_node; 203 + host->dev.of_node = pdev->dev.of_node; 204 204 #endif 205 205 206 - data = spi_master_get_devdata(master); 206 + data = spi_controller_get_devdata(host); 207 207 208 208 data->iomem = devm_platform_ioremap_resource(pdev, 0); 209 209 ret = PTR_ERR_OR_ZERO(data->iomem); 210 210 if (ret) { 211 211 dev_err(&pdev->dev, "failed to get IO address\n"); 212 - goto err_put_master; 212 + goto err_put_host; 213 213 } 214 214 215 215 /* register with the SPI framework */ 216 - ret = devm_spi_register_master(&pdev->dev, master); 216 + ret = devm_spi_register_controller(&pdev->dev, host); 217 217 if (ret) { 218 - dev_err(&pdev->dev, "cannot register spi master\n"); 219 - goto err_put_master; 218 + dev_err(&pdev->dev, "cannot register spi host\n"); 219 + goto err_put_host; 220 220 } 221 221 222 222 return ret; 223 223 224 224 225 - err_put_master: 226 - spi_master_put(master); 225 + err_put_host: 226 + spi_controller_put(host); 227 227 228 228 return ret; 229 229 } ··· 239 239 }; 240 240 module_platform_driver(spi_lp8841_rtc_driver); 241 241 242 - MODULE_DESCRIPTION("SPI master driver for ICP DAS LP-8841 RTC"); 242 + MODULE_DESCRIPTION("SPI host driver for ICP DAS LP-8841 RTC"); 243 243 MODULE_AUTHOR("Sergei Ianovich"); 244 244 MODULE_LICENSE("GPL");
+50 -71
drivers/spi/spi-meson-spicc.c
··· 151 151 }; 152 152 153 153 struct meson_spicc_device { 154 - struct spi_master *master; 154 + struct spi_controller *host; 155 155 struct platform_device *pdev; 156 156 void __iomem *base; 157 157 struct clk *core; ··· 399 399 spicc->base + SPICC_ENH_CTL0); 400 400 } 401 401 402 - static int meson_spicc_transfer_one(struct spi_master *master, 402 + static int meson_spicc_transfer_one(struct spi_controller *host, 403 403 struct spi_device *spi, 404 404 struct spi_transfer *xfer) 405 405 { 406 - struct meson_spicc_device *spicc = spi_master_get_devdata(master); 406 + struct meson_spicc_device *spicc = spi_controller_get_devdata(host); 407 407 uint64_t timeout; 408 408 409 409 /* Store current transfer */ ··· 454 454 return 0; 455 455 } 456 456 457 - static int meson_spicc_prepare_message(struct spi_master *master, 457 + static int meson_spicc_prepare_message(struct spi_controller *host, 458 458 struct spi_message *message) 459 459 { 460 - struct meson_spicc_device *spicc = spi_master_get_devdata(master); 460 + struct meson_spicc_device *spicc = spi_controller_get_devdata(host); 461 461 struct spi_device *spi = message->spi; 462 462 u32 conf = readl_relaxed(spicc->base + SPICC_CONREG) & SPICC_DATARATE_MASK; 463 463 ··· 519 519 return 0; 520 520 } 521 521 522 - static int meson_spicc_unprepare_transfer(struct spi_master *master) 522 + static int meson_spicc_unprepare_transfer(struct spi_controller *host) 523 523 { 524 - struct meson_spicc_device *spicc = spi_master_get_devdata(master); 524 + struct meson_spicc_device *spicc = spi_controller_get_devdata(host); 525 525 u32 conf = readl_relaxed(spicc->base + SPICC_CONREG) & SPICC_DATARATE_MASK; 526 526 527 527 /* Disable all IRQs */ ··· 541 541 static int meson_spicc_setup(struct spi_device *spi) 542 542 { 543 543 if (!spi->controller_state) 544 - spi->controller_state = spi_master_get_devdata(spi->master); 544 + spi->controller_state = spi_controller_get_devdata(spi->controller); 545 545 546 546 return 0; 547 547 } ··· 585 585 struct clk_divider *divider = to_clk_divider(hw); 586 586 struct meson_spicc_device *spicc = pow2_clk_to_spicc(divider); 587 587 588 - if (!spicc->master->cur_msg) 588 + if (!spicc->host->cur_msg) 589 589 return 0; 590 590 591 591 return clk_divider_ops.recalc_rate(hw, parent_rate); ··· 597 597 struct clk_divider *divider = to_clk_divider(hw); 598 598 struct meson_spicc_device *spicc = pow2_clk_to_spicc(divider); 599 599 600 - if (!spicc->master->cur_msg) 600 + if (!spicc->host->cur_msg) 601 601 return -EINVAL; 602 602 603 603 return clk_divider_ops.determine_rate(hw, req); ··· 609 609 struct clk_divider *divider = to_clk_divider(hw); 610 610 struct meson_spicc_device *spicc = pow2_clk_to_spicc(divider); 611 611 612 - if (!spicc->master->cur_msg) 612 + if (!spicc->host->cur_msg) 613 613 return -EINVAL; 614 614 615 615 return clk_divider_ops.set_rate(hw, rate, parent_rate); ··· 769 769 770 770 static int meson_spicc_probe(struct platform_device *pdev) 771 771 { 772 - struct spi_master *master; 772 + struct spi_controller *host; 773 773 struct meson_spicc_device *spicc; 774 774 int ret, irq; 775 775 776 - master = spi_alloc_master(&pdev->dev, sizeof(*spicc)); 777 - if (!master) { 778 - dev_err(&pdev->dev, "master allocation failed\n"); 776 + host = spi_alloc_host(&pdev->dev, sizeof(*spicc)); 777 + if (!host) { 778 + dev_err(&pdev->dev, "host allocation failed\n"); 779 779 return -ENOMEM; 780 780 } 781 - spicc = spi_master_get_devdata(master); 782 - spicc->master = master; 781 + spicc = spi_controller_get_devdata(host); 782 + spicc->host = host; 783 783 784 784 spicc->data = of_device_get_match_data(&pdev->dev); 785 785 if (!spicc->data) { 786 786 dev_err(&pdev->dev, "failed to get match data\n"); 787 787 ret = -EINVAL; 788 - goto out_master; 788 + goto out_host; 789 789 } 790 790 791 791 spicc->pdev = pdev; ··· 797 797 if (IS_ERR(spicc->base)) { 798 798 dev_err(&pdev->dev, "io resource mapping failed\n"); 799 799 ret = PTR_ERR(spicc->base); 800 - goto out_master; 800 + goto out_host; 801 801 } 802 802 803 803 /* Set master mode and enable controller */ ··· 810 810 irq = platform_get_irq(pdev, 0); 811 811 if (irq < 0) { 812 812 ret = irq; 813 - goto out_master; 813 + goto out_host; 814 814 } 815 815 816 816 ret = devm_request_irq(&pdev->dev, irq, meson_spicc_irq, 817 817 0, NULL, spicc); 818 818 if (ret) { 819 819 dev_err(&pdev->dev, "irq request failed\n"); 820 - goto out_master; 820 + goto out_host; 821 821 } 822 822 823 - spicc->core = devm_clk_get(&pdev->dev, "core"); 823 + spicc->core = devm_clk_get_enabled(&pdev->dev, "core"); 824 824 if (IS_ERR(spicc->core)) { 825 825 dev_err(&pdev->dev, "core clock request failed\n"); 826 826 ret = PTR_ERR(spicc->core); 827 - goto out_master; 827 + goto out_host; 828 828 } 829 829 830 830 if (spicc->data->has_pclk) { 831 - spicc->pclk = devm_clk_get(&pdev->dev, "pclk"); 831 + spicc->pclk = devm_clk_get_enabled(&pdev->dev, "pclk"); 832 832 if (IS_ERR(spicc->pclk)) { 833 833 dev_err(&pdev->dev, "pclk clock request failed\n"); 834 834 ret = PTR_ERR(spicc->pclk); 835 - goto out_master; 835 + goto out_host; 836 836 } 837 - } 838 - 839 - ret = clk_prepare_enable(spicc->core); 840 - if (ret) { 841 - dev_err(&pdev->dev, "core clock enable failed\n"); 842 - goto out_master; 843 - } 844 - 845 - ret = clk_prepare_enable(spicc->pclk); 846 - if (ret) { 847 - dev_err(&pdev->dev, "pclk clock enable failed\n"); 848 - goto out_core_clk; 849 837 } 850 838 851 839 spicc->pinctrl = devm_pinctrl_get(&pdev->dev); 852 840 if (IS_ERR(spicc->pinctrl)) { 853 841 ret = PTR_ERR(spicc->pinctrl); 854 - goto out_clk; 842 + goto out_host; 855 843 } 856 844 857 845 device_reset_optional(&pdev->dev); 858 846 859 - master->num_chipselect = 4; 860 - master->dev.of_node = pdev->dev.of_node; 861 - master->mode_bits = SPI_CPHA | SPI_CPOL | SPI_CS_HIGH; 862 - master->bits_per_word_mask = SPI_BPW_MASK(32) | 863 - SPI_BPW_MASK(24) | 864 - SPI_BPW_MASK(16) | 865 - SPI_BPW_MASK(8); 866 - master->flags = (SPI_CONTROLLER_MUST_RX | SPI_CONTROLLER_MUST_TX); 867 - master->min_speed_hz = spicc->data->min_speed_hz; 868 - master->max_speed_hz = spicc->data->max_speed_hz; 869 - master->setup = meson_spicc_setup; 870 - master->cleanup = meson_spicc_cleanup; 871 - master->prepare_message = meson_spicc_prepare_message; 872 - master->unprepare_transfer_hardware = meson_spicc_unprepare_transfer; 873 - master->transfer_one = meson_spicc_transfer_one; 874 - master->use_gpio_descriptors = true; 847 + host->num_chipselect = 4; 848 + host->dev.of_node = pdev->dev.of_node; 849 + host->mode_bits = SPI_CPHA | SPI_CPOL | SPI_CS_HIGH; 850 + host->bits_per_word_mask = SPI_BPW_MASK(32) | 851 + SPI_BPW_MASK(24) | 852 + SPI_BPW_MASK(16) | 853 + SPI_BPW_MASK(8); 854 + host->flags = (SPI_CONTROLLER_MUST_RX | SPI_CONTROLLER_MUST_TX); 855 + host->min_speed_hz = spicc->data->min_speed_hz; 856 + host->max_speed_hz = spicc->data->max_speed_hz; 857 + host->setup = meson_spicc_setup; 858 + host->cleanup = meson_spicc_cleanup; 859 + host->prepare_message = meson_spicc_prepare_message; 860 + host->unprepare_transfer_hardware = meson_spicc_unprepare_transfer; 861 + host->transfer_one = meson_spicc_transfer_one; 862 + host->use_gpio_descriptors = true; 875 863 876 864 meson_spicc_oen_enable(spicc); 877 865 878 866 ret = meson_spicc_pow2_clk_init(spicc); 879 867 if (ret) { 880 868 dev_err(&pdev->dev, "pow2 clock registration failed\n"); 881 - goto out_clk; 869 + goto out_host; 882 870 } 883 871 884 872 if (spicc->data->has_enhance_clk_div) { 885 873 ret = meson_spicc_enh_clk_init(spicc); 886 874 if (ret) { 887 875 dev_err(&pdev->dev, "clock registration failed\n"); 888 - goto out_clk; 876 + goto out_host; 889 877 } 890 878 } 891 879 892 - ret = devm_spi_register_master(&pdev->dev, master); 880 + ret = devm_spi_register_controller(&pdev->dev, host); 893 881 if (ret) { 894 - dev_err(&pdev->dev, "spi master registration failed\n"); 895 - goto out_clk; 882 + dev_err(&pdev->dev, "spi registration failed\n"); 883 + goto out_host; 896 884 } 897 885 898 886 return 0; 899 887 900 - out_clk: 901 - clk_disable_unprepare(spicc->pclk); 902 - 903 - out_core_clk: 904 - clk_disable_unprepare(spicc->core); 905 - 906 - out_master: 907 - spi_master_put(master); 888 + out_host: 889 + spi_controller_put(host); 908 890 909 891 return ret; 910 892 } ··· 898 916 /* Disable SPI */ 899 917 writel(0, spicc->base + SPICC_CONREG); 900 918 901 - clk_disable_unprepare(spicc->core); 902 - clk_disable_unprepare(spicc->pclk); 903 - 904 - spi_master_put(spicc->master); 919 + spi_controller_put(spicc->host); 905 920 } 906 921 907 922 static const struct meson_spicc_data meson_spicc_gx_data = {
+34 -45
drivers/spi/spi-meson-spifc.c
··· 67 67 68 68 /** 69 69 * struct meson_spifc 70 - * @master: the SPI master 70 + * @host: the SPI host 71 71 * @regmap: regmap for device registers 72 72 * @clk: input clock of the built-in baud rate generator 73 73 * @dev: the device structure 74 74 */ 75 75 struct meson_spifc { 76 - struct spi_master *master; 76 + struct spi_controller *host; 77 77 struct regmap *regmap; 78 78 struct clk *clk; 79 79 struct device *dev; ··· 237 237 238 238 /** 239 239 * meson_spifc_transfer_one() - perform a single transfer 240 - * @master: the SPI master 240 + * @host: the SPI host 241 241 * @spi: the SPI device 242 242 * @xfer: the current SPI transfer 243 243 * Return: 0 on success, a negative value on error 244 244 */ 245 - static int meson_spifc_transfer_one(struct spi_master *master, 245 + static int meson_spifc_transfer_one(struct spi_controller *host, 246 246 struct spi_device *spi, 247 247 struct spi_transfer *xfer) 248 248 { 249 - struct meson_spifc *spifc = spi_master_get_devdata(master); 249 + struct meson_spifc *spifc = spi_controller_get_devdata(host); 250 250 int len, done = 0, ret = 0; 251 251 252 252 meson_spifc_setup_speed(spifc, xfer->speed_hz); ··· 256 256 while (done < xfer->len && !ret) { 257 257 len = min_t(int, xfer->len - done, SPIFC_BUFFER_SIZE); 258 258 ret = meson_spifc_txrx(spifc, xfer, done, len, 259 - spi_transfer_is_last(master, xfer), 259 + spi_transfer_is_last(host, xfer), 260 260 done + len >= xfer->len); 261 261 done += len; 262 262 } ··· 284 284 285 285 static int meson_spifc_probe(struct platform_device *pdev) 286 286 { 287 - struct spi_master *master; 287 + struct spi_controller *host; 288 288 struct meson_spifc *spifc; 289 289 void __iomem *base; 290 290 unsigned int rate; 291 291 int ret = 0; 292 292 293 - master = spi_alloc_master(&pdev->dev, sizeof(struct meson_spifc)); 294 - if (!master) 293 + host = spi_alloc_host(&pdev->dev, sizeof(struct meson_spifc)); 294 + if (!host) 295 295 return -ENOMEM; 296 296 297 - platform_set_drvdata(pdev, master); 297 + platform_set_drvdata(pdev, host); 298 298 299 - spifc = spi_master_get_devdata(master); 299 + spifc = spi_controller_get_devdata(host); 300 300 spifc->dev = &pdev->dev; 301 301 302 302 base = devm_platform_ioremap_resource(pdev, 0); ··· 312 312 goto out_err; 313 313 } 314 314 315 - spifc->clk = devm_clk_get(spifc->dev, NULL); 315 + spifc->clk = devm_clk_get_enabled(spifc->dev, NULL); 316 316 if (IS_ERR(spifc->clk)) { 317 317 dev_err(spifc->dev, "missing clock\n"); 318 318 ret = PTR_ERR(spifc->clk); 319 319 goto out_err; 320 320 } 321 321 322 - ret = clk_prepare_enable(spifc->clk); 323 - if (ret) { 324 - dev_err(spifc->dev, "can't prepare clock\n"); 325 - goto out_err; 326 - } 327 - 328 322 rate = clk_get_rate(spifc->clk); 329 323 330 - master->num_chipselect = 1; 331 - master->dev.of_node = pdev->dev.of_node; 332 - master->bits_per_word_mask = SPI_BPW_MASK(8); 333 - master->auto_runtime_pm = true; 334 - master->transfer_one = meson_spifc_transfer_one; 335 - master->min_speed_hz = rate >> 6; 336 - master->max_speed_hz = rate >> 1; 324 + host->num_chipselect = 1; 325 + host->dev.of_node = pdev->dev.of_node; 326 + host->bits_per_word_mask = SPI_BPW_MASK(8); 327 + host->auto_runtime_pm = true; 328 + host->transfer_one = meson_spifc_transfer_one; 329 + host->min_speed_hz = rate >> 6; 330 + host->max_speed_hz = rate >> 1; 337 331 338 332 meson_spifc_hw_init(spifc); 339 333 340 334 pm_runtime_set_active(spifc->dev); 341 335 pm_runtime_enable(spifc->dev); 342 336 343 - ret = devm_spi_register_master(spifc->dev, master); 337 + ret = devm_spi_register_controller(spifc->dev, host); 344 338 if (ret) { 345 - dev_err(spifc->dev, "failed to register spi master\n"); 346 - goto out_clk; 339 + dev_err(spifc->dev, "failed to register spi host\n"); 340 + goto out_pm; 347 341 } 348 342 349 343 return 0; 350 - out_clk: 351 - clk_disable_unprepare(spifc->clk); 344 + out_pm: 352 345 pm_runtime_disable(spifc->dev); 353 346 out_err: 354 - spi_master_put(master); 347 + spi_controller_put(host); 355 348 return ret; 356 349 } 357 350 358 351 static void meson_spifc_remove(struct platform_device *pdev) 359 352 { 360 - struct spi_master *master = platform_get_drvdata(pdev); 361 - struct meson_spifc *spifc = spi_master_get_devdata(master); 362 - 363 353 pm_runtime_get_sync(&pdev->dev); 364 - clk_disable_unprepare(spifc->clk); 365 354 pm_runtime_disable(&pdev->dev); 366 355 } 367 356 368 357 #ifdef CONFIG_PM_SLEEP 369 358 static int meson_spifc_suspend(struct device *dev) 370 359 { 371 - struct spi_master *master = dev_get_drvdata(dev); 372 - struct meson_spifc *spifc = spi_master_get_devdata(master); 360 + struct spi_controller *host = dev_get_drvdata(dev); 361 + struct meson_spifc *spifc = spi_controller_get_devdata(host); 373 362 int ret; 374 363 375 - ret = spi_master_suspend(master); 364 + ret = spi_controller_suspend(host); 376 365 if (ret) 377 366 return ret; 378 367 ··· 373 384 374 385 static int meson_spifc_resume(struct device *dev) 375 386 { 376 - struct spi_master *master = dev_get_drvdata(dev); 377 - struct meson_spifc *spifc = spi_master_get_devdata(master); 387 + struct spi_controller *host = dev_get_drvdata(dev); 388 + struct meson_spifc *spifc = spi_controller_get_devdata(host); 378 389 int ret; 379 390 380 391 if (!pm_runtime_suspended(dev)) { ··· 385 396 386 397 meson_spifc_hw_init(spifc); 387 398 388 - ret = spi_master_resume(master); 399 + ret = spi_controller_resume(host); 389 400 if (ret) 390 401 clk_disable_unprepare(spifc->clk); 391 402 ··· 396 407 #ifdef CONFIG_PM 397 408 static int meson_spifc_runtime_suspend(struct device *dev) 398 409 { 399 - struct spi_master *master = dev_get_drvdata(dev); 400 - struct meson_spifc *spifc = spi_master_get_devdata(master); 410 + struct spi_controller *host = dev_get_drvdata(dev); 411 + struct meson_spifc *spifc = spi_controller_get_devdata(host); 401 412 402 413 clk_disable_unprepare(spifc->clk); 403 414 ··· 406 417 407 418 static int meson_spifc_runtime_resume(struct device *dev) 408 419 { 409 - struct spi_master *master = dev_get_drvdata(dev); 410 - struct meson_spifc *spifc = spi_master_get_devdata(master); 420 + struct spi_controller *host = dev_get_drvdata(dev); 421 + struct meson_spifc *spifc = spi_controller_get_devdata(host); 411 422 412 423 return clk_prepare_enable(spifc->clk); 413 424 }
+12 -27
drivers/spi/spi-microchip-core-qspi.c
··· 299 299 300 300 static int mchp_coreqspi_setup_op(struct spi_device *spi_dev) 301 301 { 302 - struct spi_controller *ctlr = spi_dev->master; 302 + struct spi_controller *ctlr = spi_dev->controller; 303 303 struct mchp_coreqspi *qspi = spi_controller_get_devdata(ctlr); 304 304 u32 control = readl_relaxed(qspi->regs + REG_CONTROL); 305 305 ··· 368 368 static int mchp_qspi_wait_for_ready(struct spi_mem *mem) 369 369 { 370 370 struct mchp_coreqspi *qspi = spi_controller_get_devdata 371 - (mem->spi->master); 371 + (mem->spi->controller); 372 372 u32 status; 373 373 int ret; 374 374 ··· 387 387 static int mchp_coreqspi_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) 388 388 { 389 389 struct mchp_coreqspi *qspi = spi_controller_get_devdata 390 - (mem->spi->master); 390 + (mem->spi->controller); 391 391 u32 address = op->addr.val; 392 392 u8 opcode = op->cmd.opcode; 393 393 u8 opaddr[5]; ··· 505 505 struct device_node *np = dev->of_node; 506 506 int ret; 507 507 508 - ctlr = devm_spi_alloc_master(&pdev->dev, sizeof(*qspi)); 508 + ctlr = devm_spi_alloc_host(&pdev->dev, sizeof(*qspi)); 509 509 if (!ctlr) 510 510 return dev_err_probe(&pdev->dev, -ENOMEM, 511 - "unable to allocate master for QSPI controller\n"); 511 + "unable to allocate host for QSPI controller\n"); 512 512 513 513 qspi = spi_controller_get_devdata(ctlr); 514 514 platform_set_drvdata(pdev, qspi); ··· 518 518 return dev_err_probe(&pdev->dev, PTR_ERR(qspi->regs), 519 519 "failed to map registers\n"); 520 520 521 - qspi->clk = devm_clk_get(&pdev->dev, NULL); 521 + qspi->clk = devm_clk_get_enabled(&pdev->dev, NULL); 522 522 if (IS_ERR(qspi->clk)) 523 523 return dev_err_probe(&pdev->dev, PTR_ERR(qspi->clk), 524 524 "could not get clock\n"); 525 - 526 - ret = clk_prepare_enable(qspi->clk); 527 - if (ret) 528 - return dev_err_probe(&pdev->dev, ret, 529 - "failed to enable clock\n"); 530 525 531 526 init_completion(&qspi->data_completion); 532 527 mutex_init(&qspi->op_lock); 533 528 534 529 qspi->irq = platform_get_irq(pdev, 0); 535 - if (qspi->irq < 0) { 536 - ret = qspi->irq; 537 - goto out; 538 - } 530 + if (qspi->irq < 0) 531 + return qspi->irq; 539 532 540 533 ret = devm_request_irq(&pdev->dev, qspi->irq, mchp_coreqspi_isr, 541 534 IRQF_SHARED, pdev->name, qspi); 542 535 if (ret) { 543 536 dev_err(&pdev->dev, "request_irq failed %d\n", ret); 544 - goto out; 537 + return ret; 545 538 } 546 539 547 540 ctlr->bits_per_word_mask = SPI_BPW_MASK(8); ··· 545 552 ctlr->dev.of_node = np; 546 553 547 554 ret = devm_spi_register_controller(&pdev->dev, ctlr); 548 - if (ret) { 549 - dev_err_probe(&pdev->dev, ret, 550 - "spi_register_controller failed\n"); 551 - goto out; 552 - } 555 + if (ret) 556 + return dev_err_probe(&pdev->dev, ret, 557 + "spi_register_controller failed\n"); 553 558 554 559 return 0; 555 - 556 - out: 557 - clk_disable_unprepare(qspi->clk); 558 - 559 - return ret; 560 560 } 561 561 562 562 static void mchp_coreqspi_remove(struct platform_device *pdev) ··· 560 574 mchp_coreqspi_disable_ints(qspi); 561 575 control &= ~CONTROL_ENABLE; 562 576 writel_relaxed(control, qspi->regs + REG_CONTROL); 563 - clk_disable_unprepare(qspi->clk); 564 577 } 565 578 566 579 static const struct of_device_id mchp_coreqspi_of_match[] = {
+38 -45
drivers/spi/spi-microchip-core.c
··· 244 244 static void mchp_corespi_set_cs(struct spi_device *spi, bool disable) 245 245 { 246 246 u32 reg; 247 - struct mchp_corespi *corespi = spi_master_get_devdata(spi->master); 247 + struct mchp_corespi *corespi = spi_controller_get_devdata(spi->controller); 248 248 249 249 reg = mchp_corespi_read(corespi, REG_SLAVE_SELECT); 250 250 reg &= ~BIT(spi_get_chipselect(spi, 0)); ··· 255 255 256 256 static int mchp_corespi_setup(struct spi_device *spi) 257 257 { 258 - struct mchp_corespi *corespi = spi_master_get_devdata(spi->master); 258 + struct mchp_corespi *corespi = spi_controller_get_devdata(spi->controller); 259 259 u32 reg; 260 260 261 261 /* 262 - * Active high slaves need to be specifically set to their inactive 262 + * Active high targets need to be specifically set to their inactive 263 263 * states during probe by adding them to the "control group" & thus 264 264 * driving their select line low. 265 265 */ ··· 271 271 return 0; 272 272 } 273 273 274 - static void mchp_corespi_init(struct spi_master *master, struct mchp_corespi *spi) 274 + static void mchp_corespi_init(struct spi_controller *host, struct mchp_corespi *spi) 275 275 { 276 276 unsigned long clk_hz; 277 277 u32 control = mchp_corespi_read(spi, REG_CONTROL); ··· 285 285 286 286 /* max. possible spi clock rate is the apb clock rate */ 287 287 clk_hz = clk_get_rate(spi->clk); 288 - master->max_speed_hz = clk_hz; 288 + host->max_speed_hz = clk_hz; 289 289 290 290 /* 291 291 * The controller must be configured so that it doesn't remove Chip ··· 305 305 /* 306 306 * It is required to enable direct mode, otherwise control over the chip 307 307 * select is relinquished to the hardware. SSELOUT is enabled too so we 308 - * can deal with active high slaves. 308 + * can deal with active high targets. 309 309 */ 310 310 mchp_corespi_write(spi, REG_SLAVE_SELECT, SSELOUT | SSEL_DIRECT); 311 311 ··· 371 371 372 372 static irqreturn_t mchp_corespi_interrupt(int irq, void *dev_id) 373 373 { 374 - struct spi_master *master = dev_id; 375 - struct mchp_corespi *spi = spi_master_get_devdata(master); 374 + struct spi_controller *host = dev_id; 375 + struct mchp_corespi *spi = spi_controller_get_devdata(host); 376 376 u32 intfield = mchp_corespi_read(spi, REG_MIS) & 0xf; 377 377 bool finalise = false; 378 378 ··· 399 399 if (intfield & INT_RX_CHANNEL_OVERFLOW) { 400 400 mchp_corespi_write(spi, REG_INT_CLEAR, INT_RX_CHANNEL_OVERFLOW); 401 401 finalise = true; 402 - dev_err(&master->dev, 402 + dev_err(&host->dev, 403 403 "%s: RX OVERFLOW: rxlen: %d, txlen: %d\n", __func__, 404 404 spi->rx_len, spi->tx_len); 405 405 } ··· 407 407 if (intfield & INT_TX_CHANNEL_UNDERRUN) { 408 408 mchp_corespi_write(spi, REG_INT_CLEAR, INT_TX_CHANNEL_UNDERRUN); 409 409 finalise = true; 410 - dev_err(&master->dev, 410 + dev_err(&host->dev, 411 411 "%s: TX UNDERFLOW: rxlen: %d, txlen: %d\n", __func__, 412 412 spi->rx_len, spi->tx_len); 413 413 } 414 414 415 415 if (finalise) 416 - spi_finalize_current_transfer(master); 416 + spi_finalize_current_transfer(host); 417 417 418 418 return IRQ_HANDLED; 419 419 } ··· 455 455 return 0; 456 456 } 457 457 458 - static int mchp_corespi_transfer_one(struct spi_master *master, 458 + static int mchp_corespi_transfer_one(struct spi_controller *host, 459 459 struct spi_device *spi_dev, 460 460 struct spi_transfer *xfer) 461 461 { 462 - struct mchp_corespi *spi = spi_master_get_devdata(master); 462 + struct mchp_corespi *spi = spi_controller_get_devdata(host); 463 463 int ret; 464 464 465 465 ret = mchp_corespi_calculate_clkgen(spi, (unsigned long)xfer->speed_hz); 466 466 if (ret) { 467 - dev_err(&master->dev, "failed to set clk_gen for target %u Hz\n", xfer->speed_hz); 467 + dev_err(&host->dev, "failed to set clk_gen for target %u Hz\n", xfer->speed_hz); 468 468 return ret; 469 469 } 470 470 ··· 484 484 return 1; 485 485 } 486 486 487 - static int mchp_corespi_prepare_message(struct spi_master *master, 487 + static int mchp_corespi_prepare_message(struct spi_controller *host, 488 488 struct spi_message *msg) 489 489 { 490 490 struct spi_device *spi_dev = msg->spi; 491 - struct mchp_corespi *spi = spi_master_get_devdata(master); 491 + struct mchp_corespi *spi = spi_controller_get_devdata(host); 492 492 493 493 mchp_corespi_set_framesize(spi, DEFAULT_FRAMESIZE); 494 494 mchp_corespi_set_mode(spi, spi_dev->mode); ··· 498 498 499 499 static int mchp_corespi_probe(struct platform_device *pdev) 500 500 { 501 - struct spi_master *master; 501 + struct spi_controller *host; 502 502 struct mchp_corespi *spi; 503 503 struct resource *res; 504 504 u32 num_cs; 505 505 int ret = 0; 506 506 507 - master = devm_spi_alloc_master(&pdev->dev, sizeof(*spi)); 508 - if (!master) 507 + host = devm_spi_alloc_host(&pdev->dev, sizeof(*spi)); 508 + if (!host) 509 509 return dev_err_probe(&pdev->dev, -ENOMEM, 510 - "unable to allocate master for SPI controller\n"); 510 + "unable to allocate host for SPI controller\n"); 511 511 512 - platform_set_drvdata(pdev, master); 512 + platform_set_drvdata(pdev, host); 513 513 514 514 if (of_property_read_u32(pdev->dev.of_node, "num-cs", &num_cs)) 515 515 num_cs = MAX_CS; 516 516 517 - master->num_chipselect = num_cs; 518 - master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; 519 - master->setup = mchp_corespi_setup; 520 - master->bits_per_word_mask = SPI_BPW_MASK(8); 521 - master->transfer_one = mchp_corespi_transfer_one; 522 - master->prepare_message = mchp_corespi_prepare_message; 523 - master->set_cs = mchp_corespi_set_cs; 524 - master->dev.of_node = pdev->dev.of_node; 517 + host->num_chipselect = num_cs; 518 + host->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; 519 + host->setup = mchp_corespi_setup; 520 + host->bits_per_word_mask = SPI_BPW_MASK(8); 521 + host->transfer_one = mchp_corespi_transfer_one; 522 + host->prepare_message = mchp_corespi_prepare_message; 523 + host->set_cs = mchp_corespi_set_cs; 524 + host->dev.of_node = pdev->dev.of_node; 525 525 526 - spi = spi_master_get_devdata(master); 526 + spi = spi_controller_get_devdata(host); 527 527 528 528 spi->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res); 529 529 if (IS_ERR(spi->regs)) ··· 534 534 return spi->irq; 535 535 536 536 ret = devm_request_irq(&pdev->dev, spi->irq, mchp_corespi_interrupt, 537 - IRQF_SHARED, dev_name(&pdev->dev), master); 537 + IRQF_SHARED, dev_name(&pdev->dev), host); 538 538 if (ret) 539 539 return dev_err_probe(&pdev->dev, ret, 540 540 "could not request irq\n"); 541 541 542 - spi->clk = devm_clk_get(&pdev->dev, NULL); 542 + spi->clk = devm_clk_get_enabled(&pdev->dev, NULL); 543 543 if (IS_ERR(spi->clk)) 544 544 return dev_err_probe(&pdev->dev, PTR_ERR(spi->clk), 545 545 "could not get clk\n"); 546 546 547 - ret = clk_prepare_enable(spi->clk); 548 - if (ret) 549 - return dev_err_probe(&pdev->dev, ret, 550 - "failed to enable clock\n"); 547 + mchp_corespi_init(host, spi); 551 548 552 - mchp_corespi_init(master, spi); 553 - 554 - ret = devm_spi_register_master(&pdev->dev, master); 549 + ret = devm_spi_register_controller(&pdev->dev, host); 555 550 if (ret) { 556 551 mchp_corespi_disable(spi); 557 - clk_disable_unprepare(spi->clk); 558 552 return dev_err_probe(&pdev->dev, ret, 559 - "unable to register master for SPI controller\n"); 553 + "unable to register host for SPI controller\n"); 560 554 } 561 555 562 - dev_info(&pdev->dev, "Registered SPI controller %d\n", master->bus_num); 556 + dev_info(&pdev->dev, "Registered SPI controller %d\n", host->bus_num); 563 557 564 558 return 0; 565 559 } 566 560 567 561 static void mchp_corespi_remove(struct platform_device *pdev) 568 562 { 569 - struct spi_master *master = platform_get_drvdata(pdev); 570 - struct mchp_corespi *spi = spi_master_get_devdata(master); 563 + struct spi_controller *host = platform_get_drvdata(pdev); 564 + struct mchp_corespi *spi = spi_controller_get_devdata(host); 571 565 572 566 mchp_corespi_disable_ints(spi); 573 - clk_disable_unprepare(spi->clk); 574 567 mchp_corespi_disable(spi); 575 568 } 576 569
+27 -27
drivers/spi/spi-mpc512x-psc.c
··· 85 85 static void mpc512x_psc_spi_activate_cs(struct spi_device *spi) 86 86 { 87 87 struct mpc512x_psc_spi_cs *cs = spi->controller_state; 88 - struct mpc512x_psc_spi *mps = spi_master_get_devdata(spi->master); 88 + struct mpc512x_psc_spi *mps = spi_controller_get_devdata(spi->controller); 89 89 u32 sicr; 90 90 u32 ccr; 91 91 int speed; ··· 143 143 static int mpc512x_psc_spi_transfer_rxtx(struct spi_device *spi, 144 144 struct spi_transfer *t) 145 145 { 146 - struct mpc512x_psc_spi *mps = spi_master_get_devdata(spi->master); 146 + struct mpc512x_psc_spi *mps = spi_controller_get_devdata(spi->controller); 147 147 struct mpc512x_psc_fifo __iomem *fifo = mps->fifo; 148 148 size_t tx_len = t->len; 149 149 size_t rx_len = t->len; ··· 280 280 return 0; 281 281 } 282 282 283 - static int mpc512x_psc_spi_msg_xfer(struct spi_master *master, 283 + static int mpc512x_psc_spi_msg_xfer(struct spi_controller *host, 284 284 struct spi_message *m) 285 285 { 286 286 struct spi_device *spi; ··· 320 320 321 321 mpc512x_psc_spi_transfer_setup(spi, NULL); 322 322 323 - spi_finalize_current_message(master); 323 + spi_finalize_current_message(host); 324 324 return status; 325 325 } 326 326 327 - static int mpc512x_psc_spi_prep_xfer_hw(struct spi_master *master) 327 + static int mpc512x_psc_spi_prep_xfer_hw(struct spi_controller *host) 328 328 { 329 - struct mpc512x_psc_spi *mps = spi_master_get_devdata(master); 329 + struct mpc512x_psc_spi *mps = spi_controller_get_devdata(host); 330 330 331 - dev_dbg(&master->dev, "%s()\n", __func__); 331 + dev_dbg(&host->dev, "%s()\n", __func__); 332 332 333 333 /* Zero MR2 */ 334 334 in_8(psc_addr(mps, mr2)); ··· 340 340 return 0; 341 341 } 342 342 343 - static int mpc512x_psc_spi_unprep_xfer_hw(struct spi_master *master) 343 + static int mpc512x_psc_spi_unprep_xfer_hw(struct spi_controller *host) 344 344 { 345 - struct mpc512x_psc_spi *mps = spi_master_get_devdata(master); 345 + struct mpc512x_psc_spi *mps = spi_controller_get_devdata(host); 346 346 struct mpc512x_psc_fifo __iomem *fifo = mps->fifo; 347 347 348 - dev_dbg(&master->dev, "%s()\n", __func__); 348 + dev_dbg(&host->dev, "%s()\n", __func__); 349 349 350 350 /* disable transmitter/receiver and fifo interrupt */ 351 351 out_8(psc_addr(mps, command), MPC52xx_PSC_TX_DISABLE | MPC52xx_PSC_RX_DISABLE); ··· 380 380 kfree(spi->controller_state); 381 381 } 382 382 383 - static int mpc512x_psc_spi_port_config(struct spi_master *master, 383 + static int mpc512x_psc_spi_port_config(struct spi_controller *host, 384 384 struct mpc512x_psc_spi *mps) 385 385 { 386 386 struct mpc512x_psc_fifo __iomem *fifo = mps->fifo; ··· 408 408 sicr = 0x01000000 | /* SIM = 0001 -- 8 bit */ 409 409 0x00800000 | /* GenClk = 1 -- internal clk */ 410 410 0x00008000 | /* SPI = 1 */ 411 - 0x00004000 | /* MSTR = 1 -- SPI master */ 411 + 0x00004000 | /* MSTR = 1 -- SPI host */ 412 412 0x00000800; /* UseEOF = 1 -- SS low until EOF */ 413 413 414 414 out_be32(psc_addr(mps, sicr), sicr); ··· 459 459 { 460 460 struct device *dev = &pdev->dev; 461 461 struct mpc512x_psc_spi *mps; 462 - struct spi_master *master; 462 + struct spi_controller *host; 463 463 int ret; 464 464 void *tempp; 465 465 struct clk *clk; 466 466 467 - master = devm_spi_alloc_master(dev, sizeof(*mps)); 468 - if (master == NULL) 467 + host = devm_spi_alloc_host(dev, sizeof(*mps)); 468 + if (host == NULL) 469 469 return -ENOMEM; 470 470 471 - dev_set_drvdata(dev, master); 472 - mps = spi_master_get_devdata(master); 471 + dev_set_drvdata(dev, host); 472 + mps = spi_controller_get_devdata(host); 473 473 mps->type = (int)device_get_match_data(dev); 474 474 475 - master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LSB_FIRST; 476 - master->setup = mpc512x_psc_spi_setup; 477 - master->prepare_transfer_hardware = mpc512x_psc_spi_prep_xfer_hw; 478 - master->transfer_one_message = mpc512x_psc_spi_msg_xfer; 479 - master->unprepare_transfer_hardware = mpc512x_psc_spi_unprep_xfer_hw; 480 - master->use_gpio_descriptors = true; 481 - master->cleanup = mpc512x_psc_spi_cleanup; 475 + host->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LSB_FIRST; 476 + host->setup = mpc512x_psc_spi_setup; 477 + host->prepare_transfer_hardware = mpc512x_psc_spi_prep_xfer_hw; 478 + host->transfer_one_message = mpc512x_psc_spi_msg_xfer; 479 + host->unprepare_transfer_hardware = mpc512x_psc_spi_unprep_xfer_hw; 480 + host->use_gpio_descriptors = true; 481 + host->cleanup = mpc512x_psc_spi_cleanup; 482 482 483 - device_set_node(&master->dev, dev_fwnode(dev)); 483 + device_set_node(&host->dev, dev_fwnode(dev)); 484 484 485 485 tempp = devm_platform_get_and_ioremap_resource(pdev, 0, NULL); 486 486 if (IS_ERR(tempp)) ··· 509 509 if (IS_ERR(clk)) 510 510 return PTR_ERR(clk); 511 511 512 - ret = mpc512x_psc_spi_port_config(master, mps); 512 + ret = mpc512x_psc_spi_port_config(host, mps); 513 513 if (ret < 0) 514 514 return ret; 515 515 516 - return devm_spi_register_master(dev, master); 516 + return devm_spi_register_controller(dev, host); 517 517 } 518 518 519 519 static const struct of_device_id mpc512x_psc_spi_of_match[] = {
+19 -19
drivers/spi/spi-mpc52xx-psc.c
··· 60 60 static void mpc52xx_psc_spi_activate_cs(struct spi_device *spi) 61 61 { 62 62 struct mpc52xx_psc_spi_cs *cs = spi->controller_state; 63 - struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); 63 + struct mpc52xx_psc_spi *mps = spi_controller_get_devdata(spi->controller); 64 64 struct mpc52xx_psc __iomem *psc = mps->psc; 65 65 u32 sicr; 66 66 u16 ccr; ··· 104 104 static int mpc52xx_psc_spi_transfer_rxtx(struct spi_device *spi, 105 105 struct spi_transfer *t) 106 106 { 107 - struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); 107 + struct mpc52xx_psc_spi *mps = spi_controller_get_devdata(spi->controller); 108 108 struct mpc52xx_psc __iomem *psc = mps->psc; 109 109 struct mpc52xx_psc_fifo __iomem *fifo = mps->fifo; 110 110 unsigned rb = 0; /* number of bytes receieved */ ··· 175 175 return 0; 176 176 } 177 177 178 - int mpc52xx_psc_spi_transfer_one_message(struct spi_controller *ctlr, 179 - struct spi_message *m) 178 + static int mpc52xx_psc_spi_transfer_one_message(struct spi_controller *ctlr, 179 + struct spi_message *m) 180 180 { 181 181 struct spi_device *spi; 182 182 struct spi_transfer *t = NULL; ··· 263 263 out_8(&fifo->rfcntl, 0); 264 264 out_8(&psc->mode, MPC52xx_PSC_MODE_FFULL); 265 265 266 - /* Configure 8bit codec mode as a SPI master and use EOF flags */ 266 + /* Configure 8bit codec mode as a SPI host and use EOF flags */ 267 267 /* SICR_SIM_CODEC8|SICR_GENCLK|SICR_SPI|SICR_MSTR|SICR_USEEOF */ 268 268 out_be32(&psc->sicr, 0x0180C800); 269 269 out_be16((u16 __iomem *)&psc->ccr, 0x070F); /* default SPI Clk 1MHz */ ··· 295 295 { 296 296 struct device *dev = &pdev->dev; 297 297 struct mpc52xx_psc_spi *mps; 298 - struct spi_master *master; 298 + struct spi_controller *host; 299 299 u32 bus_num; 300 300 int ret; 301 301 302 - master = devm_spi_alloc_master(dev, sizeof(*mps)); 303 - if (master == NULL) 302 + host = devm_spi_alloc_host(dev, sizeof(*mps)); 303 + if (host == NULL) 304 304 return -ENOMEM; 305 305 306 - dev_set_drvdata(dev, master); 307 - mps = spi_master_get_devdata(master); 306 + dev_set_drvdata(dev, host); 307 + mps = spi_controller_get_devdata(host); 308 308 309 309 /* the spi->mode bits understood by this driver: */ 310 - master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LSB_FIRST; 310 + host->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LSB_FIRST; 311 311 312 312 ret = device_property_read_u32(dev, "cell-index", &bus_num); 313 313 if (ret || bus_num > 5) 314 314 return dev_err_probe(dev, ret ? : -EINVAL, "Invalid cell-index property\n"); 315 - master->bus_num = bus_num + 1; 315 + host->bus_num = bus_num + 1; 316 316 317 - master->num_chipselect = 255; 318 - master->setup = mpc52xx_psc_spi_setup; 319 - master->transfer_one_message = mpc52xx_psc_spi_transfer_one_message; 320 - master->cleanup = mpc52xx_psc_spi_cleanup; 317 + host->num_chipselect = 255; 318 + host->setup = mpc52xx_psc_spi_setup; 319 + host->transfer_one_message = mpc52xx_psc_spi_transfer_one_message; 320 + host->cleanup = mpc52xx_psc_spi_cleanup; 321 321 322 - device_set_node(&master->dev, dev_fwnode(dev)); 322 + device_set_node(&host->dev, dev_fwnode(dev)); 323 323 324 324 mps->psc = devm_platform_get_and_ioremap_resource(pdev, 0, NULL); 325 325 if (IS_ERR(mps->psc)) ··· 337 337 if (ret) 338 338 return ret; 339 339 340 - ret = mpc52xx_psc_spi_port_config(master->bus_num, mps); 340 + ret = mpc52xx_psc_spi_port_config(host->bus_num, mps); 341 341 if (ret < 0) 342 342 return dev_err_probe(dev, ret, "can't configure PSC! Is it capable of SPI?\n"); 343 343 344 344 init_completion(&mps->done); 345 345 346 - return devm_spi_register_master(dev, master); 346 + return devm_spi_register_controller(dev, host); 347 347 } 348 348 349 349 static const struct of_device_id mpc52xx_psc_spi_of_match[] = {
+28 -28
drivers/spi/spi-mpc52xx.c
··· 62 62 63 63 /* Driver internal data */ 64 64 struct mpc52xx_spi { 65 - struct spi_master *master; 65 + struct spi_controller *host; 66 66 void __iomem *regs; 67 67 int irq0; /* MODF irq */ 68 68 int irq1; /* SPIF irq */ ··· 152 152 u8 ctrl1; 153 153 154 154 if (status && irq) 155 - dev_err(&ms->master->dev, "spurious irq, status=0x%.2x\n", 155 + dev_err(&ms->host->dev, "spurious irq, status=0x%.2x\n", 156 156 status); 157 157 158 158 /* Check if there is another transfer waiting. */ ··· 235 235 return FSM_CONTINUE; 236 236 } else if (status & SPI_STATUS_MODF) { 237 237 ms->modf_count++; 238 - dev_err(&ms->master->dev, "mode fault\n"); 238 + dev_err(&ms->host->dev, "mode fault\n"); 239 239 mpc52xx_spi_chipsel(ms, 0); 240 240 ms->message->status = -EIO; 241 241 if (ms->message->complete) ··· 280 280 mpc52xx_spi_fsmstate_wait(int irq, struct mpc52xx_spi *ms, u8 status, u8 data) 281 281 { 282 282 if (status && irq) 283 - dev_err(&ms->master->dev, "spurious irq, status=0x%.2x\n", 283 + dev_err(&ms->host->dev, "spurious irq, status=0x%.2x\n", 284 284 status); 285 285 286 286 if (((int)mftb()) - ms->timestamp < 0) ··· 361 361 } 362 362 363 363 /* 364 - * spi_master ops 364 + * spi_controller ops 365 365 */ 366 366 367 367 static int mpc52xx_spi_transfer(struct spi_device *spi, struct spi_message *m) 368 368 { 369 - struct mpc52xx_spi *ms = spi_master_get_devdata(spi->master); 369 + struct mpc52xx_spi *ms = spi_controller_get_devdata(spi->controller); 370 370 unsigned long flags; 371 371 372 372 m->actual_length = 0; ··· 385 385 */ 386 386 static int mpc52xx_spi_probe(struct platform_device *op) 387 387 { 388 - struct spi_master *master; 388 + struct spi_controller *host; 389 389 struct mpc52xx_spi *ms; 390 390 struct gpio_desc *gpio_cs; 391 391 void __iomem *regs; ··· 406 406 out_8(regs + SPI_PORTDATA, 0x8); /* Deassert /SS signal */ 407 407 408 408 /* Clear the status register and re-read it to check for a MODF 409 - * failure. This driver cannot currently handle multiple masters 409 + * failure. This driver cannot currently handle multiple hosts 410 410 * on the SPI bus. This fault will also occur if the SPI signals 411 411 * are not connected to any pins (port_config setting) */ 412 412 in_8(regs + SPI_STATUS); ··· 419 419 goto err_init; 420 420 } 421 421 422 - dev_dbg(&op->dev, "allocating spi_master struct\n"); 423 - master = spi_alloc_master(&op->dev, sizeof(*ms)); 424 - if (!master) { 422 + dev_dbg(&op->dev, "allocating spi_controller struct\n"); 423 + host = spi_alloc_host(&op->dev, sizeof(*ms)); 424 + if (!host) { 425 425 rc = -ENOMEM; 426 426 goto err_alloc; 427 427 } 428 428 429 - master->transfer = mpc52xx_spi_transfer; 430 - master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST; 431 - master->bits_per_word_mask = SPI_BPW_MASK(8); 432 - master->dev.of_node = op->dev.of_node; 429 + host->transfer = mpc52xx_spi_transfer; 430 + host->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST; 431 + host->bits_per_word_mask = SPI_BPW_MASK(8); 432 + host->dev.of_node = op->dev.of_node; 433 433 434 - platform_set_drvdata(op, master); 434 + platform_set_drvdata(op, host); 435 435 436 - ms = spi_master_get_devdata(master); 437 - ms->master = master; 436 + ms = spi_controller_get_devdata(host); 437 + ms->host = host; 438 438 ms->regs = regs; 439 439 ms->irq0 = irq_of_parse_and_map(op->dev.of_node, 0); 440 440 ms->irq1 = irq_of_parse_and_map(op->dev.of_node, 1); ··· 442 442 ms->ipb_freq = mpc5xxx_get_bus_frequency(&op->dev); 443 443 ms->gpio_cs_count = gpiod_count(&op->dev, NULL); 444 444 if (ms->gpio_cs_count > 0) { 445 - master->num_chipselect = ms->gpio_cs_count; 445 + host->num_chipselect = ms->gpio_cs_count; 446 446 ms->gpio_cs = kmalloc_array(ms->gpio_cs_count, 447 447 sizeof(*ms->gpio_cs), 448 448 GFP_KERNEL); ··· 489 489 if (!ms->irq0) 490 490 dev_info(&op->dev, "using polled mode\n"); 491 491 492 - dev_dbg(&op->dev, "registering spi_master struct\n"); 493 - rc = spi_register_master(master); 492 + dev_dbg(&op->dev, "registering spi_controller struct\n"); 493 + rc = spi_register_controller(host); 494 494 if (rc) 495 495 goto err_register; 496 496 497 - dev_info(&ms->master->dev, "registered MPC5200 SPI bus\n"); 497 + dev_info(&ms->host->dev, "registered MPC5200 SPI bus\n"); 498 498 499 499 return rc; 500 500 501 501 err_register: 502 - dev_err(&ms->master->dev, "initialization failed\n"); 502 + dev_err(&ms->host->dev, "initialization failed\n"); 503 503 err_gpio: 504 504 while (i-- > 0) 505 505 gpiod_put(ms->gpio_cs[i]); 506 506 507 507 kfree(ms->gpio_cs); 508 508 err_alloc_gpio: 509 - spi_master_put(master); 509 + spi_controller_put(host); 510 510 err_alloc: 511 511 err_init: 512 512 iounmap(regs); ··· 515 515 516 516 static void mpc52xx_spi_remove(struct platform_device *op) 517 517 { 518 - struct spi_master *master = spi_master_get(platform_get_drvdata(op)); 519 - struct mpc52xx_spi *ms = spi_master_get_devdata(master); 518 + struct spi_controller *host = spi_controller_get(platform_get_drvdata(op)); 519 + struct mpc52xx_spi *ms = spi_controller_get_devdata(host); 520 520 int i; 521 521 522 522 free_irq(ms->irq0, ms); ··· 526 526 gpiod_put(ms->gpio_cs[i]); 527 527 528 528 kfree(ms->gpio_cs); 529 - spi_unregister_master(master); 529 + spi_unregister_controller(host); 530 530 iounmap(ms->regs); 531 - spi_master_put(master); 531 + spi_controller_put(host); 532 532 } 533 533 534 534 static const struct of_device_id mpc52xx_spi_match[] = {
+95 -95
drivers/spi/spi-mt65xx.c
··· 135 135 * @pad_num: Number of pad_sel entries 136 136 * @pad_sel: Groups of pins to select 137 137 * @parent_clk: Parent of sel_clk 138 - * @sel_clk: SPI master mux clock 138 + * @sel_clk: SPI host mux clock 139 139 * @spi_clk: Peripheral clock 140 140 * @spi_hclk: AHB bus clock 141 141 * @cur_transfer: Currently processed SPI transfer ··· 282 282 283 283 static int mtk_spi_set_hw_cs_timing(struct spi_device *spi) 284 284 { 285 - struct mtk_spi *mdata = spi_master_get_devdata(spi->master); 285 + struct mtk_spi *mdata = spi_controller_get_devdata(spi->controller); 286 286 struct spi_delay *cs_setup = &spi->cs_setup; 287 287 struct spi_delay *cs_hold = &spi->cs_hold; 288 288 struct spi_delay *cs_inactive = &spi->cs_inactive; ··· 347 347 return 0; 348 348 } 349 349 350 - static int mtk_spi_hw_init(struct spi_master *master, 350 + static int mtk_spi_hw_init(struct spi_controller *host, 351 351 struct spi_device *spi) 352 352 { 353 353 u16 cpha, cpol; 354 354 u32 reg_val; 355 355 struct mtk_chip_config *chip_config = spi->controller_data; 356 - struct mtk_spi *mdata = spi_master_get_devdata(master); 356 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 357 357 358 358 cpha = spi->mode & SPI_CPHA ? 1 : 0; 359 359 cpol = spi->mode & SPI_CPOL ? 1 : 0; ··· 452 452 return 0; 453 453 } 454 454 455 - static int mtk_spi_prepare_message(struct spi_master *master, 455 + static int mtk_spi_prepare_message(struct spi_controller *host, 456 456 struct spi_message *msg) 457 457 { 458 - return mtk_spi_hw_init(master, msg->spi); 458 + return mtk_spi_hw_init(host, msg->spi); 459 459 } 460 460 461 461 static void mtk_spi_set_cs(struct spi_device *spi, bool enable) 462 462 { 463 463 u32 reg_val; 464 - struct mtk_spi *mdata = spi_master_get_devdata(spi->master); 464 + struct mtk_spi *mdata = spi_controller_get_devdata(spi->controller); 465 465 466 466 if (spi->mode & SPI_CS_HIGH) 467 467 enable = !enable; ··· 478 478 } 479 479 } 480 480 481 - static void mtk_spi_prepare_transfer(struct spi_master *master, 481 + static void mtk_spi_prepare_transfer(struct spi_controller *host, 482 482 u32 speed_hz) 483 483 { 484 484 u32 div, sck_time, reg_val; 485 - struct mtk_spi *mdata = spi_master_get_devdata(master); 485 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 486 486 487 487 if (speed_hz < mdata->spi_clk_hz / 2) 488 488 div = DIV_ROUND_UP(mdata->spi_clk_hz, speed_hz); ··· 511 511 } 512 512 } 513 513 514 - static void mtk_spi_setup_packet(struct spi_master *master) 514 + static void mtk_spi_setup_packet(struct spi_controller *host) 515 515 { 516 516 u32 packet_size, packet_loop, reg_val; 517 - struct mtk_spi *mdata = spi_master_get_devdata(master); 517 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 518 518 519 519 if (mdata->dev_comp->ipm_design) 520 520 packet_size = min_t(u32, ··· 538 538 writel(reg_val, mdata->base + SPI_CFG1_REG); 539 539 } 540 540 541 - static void mtk_spi_enable_transfer(struct spi_master *master) 541 + static void mtk_spi_enable_transfer(struct spi_controller *host) 542 542 { 543 543 u32 cmd; 544 - struct mtk_spi *mdata = spi_master_get_devdata(master); 544 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 545 545 546 546 cmd = readl(mdata->base + SPI_CMD_REG); 547 547 if (mdata->state == MTK_SPI_IDLE) ··· 566 566 return mult_delta; 567 567 } 568 568 569 - static void mtk_spi_update_mdata_len(struct spi_master *master) 569 + static void mtk_spi_update_mdata_len(struct spi_controller *host) 570 570 { 571 571 int mult_delta; 572 - struct mtk_spi *mdata = spi_master_get_devdata(master); 572 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 573 573 574 574 if (mdata->tx_sgl_len && mdata->rx_sgl_len) { 575 575 if (mdata->tx_sgl_len > mdata->rx_sgl_len) { ··· 594 594 } 595 595 } 596 596 597 - static void mtk_spi_setup_dma_addr(struct spi_master *master, 597 + static void mtk_spi_setup_dma_addr(struct spi_controller *host, 598 598 struct spi_transfer *xfer) 599 599 { 600 - struct mtk_spi *mdata = spi_master_get_devdata(master); 600 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 601 601 602 602 if (mdata->tx_sgl) { 603 603 writel((u32)(xfer->tx_dma & MTK_SPI_32BITS_MASK), ··· 620 620 } 621 621 } 622 622 623 - static int mtk_spi_fifo_transfer(struct spi_master *master, 623 + static int mtk_spi_fifo_transfer(struct spi_controller *host, 624 624 struct spi_device *spi, 625 625 struct spi_transfer *xfer) 626 626 { 627 627 int cnt, remainder; 628 628 u32 reg_val; 629 - struct mtk_spi *mdata = spi_master_get_devdata(master); 629 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 630 630 631 631 mdata->cur_transfer = xfer; 632 632 mdata->xfer_len = min(MTK_SPI_MAX_FIFO_SIZE, xfer->len); 633 633 mdata->num_xfered = 0; 634 - mtk_spi_prepare_transfer(master, xfer->speed_hz); 635 - mtk_spi_setup_packet(master); 634 + mtk_spi_prepare_transfer(host, xfer->speed_hz); 635 + mtk_spi_setup_packet(host); 636 636 637 637 if (xfer->tx_buf) { 638 638 cnt = xfer->len / 4; ··· 645 645 } 646 646 } 647 647 648 - mtk_spi_enable_transfer(master); 648 + mtk_spi_enable_transfer(host); 649 649 650 650 return 1; 651 651 } 652 652 653 - static int mtk_spi_dma_transfer(struct spi_master *master, 653 + static int mtk_spi_dma_transfer(struct spi_controller *host, 654 654 struct spi_device *spi, 655 655 struct spi_transfer *xfer) 656 656 { 657 657 int cmd; 658 - struct mtk_spi *mdata = spi_master_get_devdata(master); 658 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 659 659 660 660 mdata->tx_sgl = NULL; 661 661 mdata->rx_sgl = NULL; ··· 664 664 mdata->cur_transfer = xfer; 665 665 mdata->num_xfered = 0; 666 666 667 - mtk_spi_prepare_transfer(master, xfer->speed_hz); 667 + mtk_spi_prepare_transfer(host, xfer->speed_hz); 668 668 669 669 cmd = readl(mdata->base + SPI_CMD_REG); 670 670 if (xfer->tx_buf) ··· 687 687 mdata->rx_sgl_len = sg_dma_len(mdata->rx_sgl); 688 688 } 689 689 690 - mtk_spi_update_mdata_len(master); 691 - mtk_spi_setup_packet(master); 692 - mtk_spi_setup_dma_addr(master, xfer); 693 - mtk_spi_enable_transfer(master); 690 + mtk_spi_update_mdata_len(host); 691 + mtk_spi_setup_packet(host); 692 + mtk_spi_setup_dma_addr(host, xfer); 693 + mtk_spi_enable_transfer(host); 694 694 695 695 return 1; 696 696 } 697 697 698 - static int mtk_spi_transfer_one(struct spi_master *master, 698 + static int mtk_spi_transfer_one(struct spi_controller *host, 699 699 struct spi_device *spi, 700 700 struct spi_transfer *xfer) 701 701 { 702 - struct mtk_spi *mdata = spi_master_get_devdata(spi->master); 702 + struct mtk_spi *mdata = spi_controller_get_devdata(spi->controller); 703 703 u32 reg_val = 0; 704 704 705 705 /* prepare xfer direction and duplex mode */ ··· 712 712 writel(reg_val, mdata->base + SPI_CFG3_IPM_REG); 713 713 } 714 714 715 - if (master->can_dma(master, spi, xfer)) 716 - return mtk_spi_dma_transfer(master, spi, xfer); 715 + if (host->can_dma(host, spi, xfer)) 716 + return mtk_spi_dma_transfer(host, spi, xfer); 717 717 else 718 - return mtk_spi_fifo_transfer(master, spi, xfer); 718 + return mtk_spi_fifo_transfer(host, spi, xfer); 719 719 } 720 720 721 - static bool mtk_spi_can_dma(struct spi_master *master, 721 + static bool mtk_spi_can_dma(struct spi_controller *host, 722 722 struct spi_device *spi, 723 723 struct spi_transfer *xfer) 724 724 { ··· 730 730 731 731 static int mtk_spi_setup(struct spi_device *spi) 732 732 { 733 - struct mtk_spi *mdata = spi_master_get_devdata(spi->master); 733 + struct mtk_spi *mdata = spi_controller_get_devdata(spi->controller); 734 734 735 735 if (!spi->controller_data) 736 736 spi->controller_data = (void *)&mtk_default_chip_info; ··· 745 745 static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id) 746 746 { 747 747 u32 cmd, reg_val, cnt, remainder, len; 748 - struct spi_master *master = dev_id; 749 - struct mtk_spi *mdata = spi_master_get_devdata(master); 748 + struct spi_controller *host = dev_id; 749 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 750 750 struct spi_transfer *trans = mdata->cur_transfer; 751 751 752 752 reg_val = readl(mdata->base + SPI_STATUS0_REG); ··· 761 761 return IRQ_HANDLED; 762 762 } 763 763 764 - if (!master->can_dma(master, NULL, trans)) { 764 + if (!host->can_dma(host, NULL, trans)) { 765 765 if (trans->rx_buf) { 766 766 cnt = mdata->xfer_len / 4; 767 767 ioread32_rep(mdata->base + SPI_RX_DATA_REG, ··· 779 779 780 780 mdata->num_xfered += mdata->xfer_len; 781 781 if (mdata->num_xfered == trans->len) { 782 - spi_finalize_current_transfer(master); 782 + spi_finalize_current_transfer(host); 783 783 return IRQ_HANDLED; 784 784 } 785 785 786 786 len = trans->len - mdata->num_xfered; 787 787 mdata->xfer_len = min(MTK_SPI_MAX_FIFO_SIZE, len); 788 - mtk_spi_setup_packet(master); 788 + mtk_spi_setup_packet(host); 789 789 790 790 cnt = mdata->xfer_len / 4; 791 791 iowrite32_rep(mdata->base + SPI_TX_DATA_REG, ··· 800 800 writel(reg_val, mdata->base + SPI_TX_DATA_REG); 801 801 } 802 802 803 - mtk_spi_enable_transfer(master); 803 + mtk_spi_enable_transfer(host); 804 804 805 805 return IRQ_HANDLED; 806 806 } ··· 832 832 cmd &= ~SPI_CMD_RX_DMA; 833 833 writel(cmd, mdata->base + SPI_CMD_REG); 834 834 835 - spi_finalize_current_transfer(master); 835 + spi_finalize_current_transfer(host); 836 836 return IRQ_HANDLED; 837 837 } 838 838 839 - mtk_spi_update_mdata_len(master); 840 - mtk_spi_setup_packet(master); 841 - mtk_spi_setup_dma_addr(master, trans); 842 - mtk_spi_enable_transfer(master); 839 + mtk_spi_update_mdata_len(host); 840 + mtk_spi_setup_packet(host); 841 + mtk_spi_setup_dma_addr(host, trans); 842 + mtk_spi_enable_transfer(host); 843 843 844 844 return IRQ_HANDLED; 845 845 } ··· 884 884 return true; 885 885 } 886 886 887 - static void mtk_spi_mem_setup_dma_xfer(struct spi_master *master, 887 + static void mtk_spi_mem_setup_dma_xfer(struct spi_controller *host, 888 888 const struct spi_mem_op *op) 889 889 { 890 - struct mtk_spi *mdata = spi_master_get_devdata(master); 890 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 891 891 892 892 writel((u32)(mdata->tx_dma & MTK_SPI_32BITS_MASK), 893 893 mdata->base + SPI_TX_SRC_REG); ··· 911 911 static int mtk_spi_transfer_wait(struct spi_mem *mem, 912 912 const struct spi_mem_op *op) 913 913 { 914 - struct mtk_spi *mdata = spi_master_get_devdata(mem->spi->master); 914 + struct mtk_spi *mdata = spi_controller_get_devdata(mem->spi->controller); 915 915 /* 916 916 * For each byte we wait for 8 cycles of the SPI clock. 917 917 * Since speed is defined in Hz and we want milliseconds, ··· 941 941 static int mtk_spi_mem_exec_op(struct spi_mem *mem, 942 942 const struct spi_mem_op *op) 943 943 { 944 - struct mtk_spi *mdata = spi_master_get_devdata(mem->spi->master); 944 + struct mtk_spi *mdata = spi_controller_get_devdata(mem->spi->controller); 945 945 u32 reg_val, nio, tx_size; 946 946 char *tx_tmp_buf, *rx_tmp_buf; 947 947 int ret = 0; ··· 950 950 reinit_completion(&mdata->spimem_done); 951 951 952 952 mtk_spi_reset(mdata); 953 - mtk_spi_hw_init(mem->spi->master, mem->spi); 954 - mtk_spi_prepare_transfer(mem->spi->master, mem->spi->max_speed_hz); 953 + mtk_spi_hw_init(mem->spi->controller, mem->spi); 954 + mtk_spi_prepare_transfer(mem->spi->controller, mem->spi->max_speed_hz); 955 955 956 956 reg_val = readl(mdata->base + SPI_CFG3_IPM_REG); 957 957 /* opcode byte len */ ··· 971 971 } else { 972 972 reg_val &= ~SPI_CFG3_IPM_NODATA_FLAG; 973 973 mdata->xfer_len = op->data.nbytes; 974 - mtk_spi_setup_packet(mem->spi->master); 974 + mtk_spi_setup_packet(mem->spi->controller); 975 975 } 976 976 977 977 if (op->addr.nbytes || op->dummy.nbytes) { ··· 1069 1069 reg_val |= SPI_CMD_RX_DMA; 1070 1070 writel(reg_val, mdata->base + SPI_CMD_REG); 1071 1071 1072 - mtk_spi_mem_setup_dma_xfer(mem->spi->master, op); 1072 + mtk_spi_mem_setup_dma_xfer(mem->spi->controller, op); 1073 1073 1074 - mtk_spi_enable_transfer(mem->spi->master); 1074 + mtk_spi_enable_transfer(mem->spi->controller); 1075 1075 1076 1076 /* Wait for the interrupt. */ 1077 1077 ret = mtk_spi_transfer_wait(mem, op); ··· 1115 1115 static int mtk_spi_probe(struct platform_device *pdev) 1116 1116 { 1117 1117 struct device *dev = &pdev->dev; 1118 - struct spi_master *master; 1118 + struct spi_controller *host; 1119 1119 struct mtk_spi *mdata; 1120 1120 int i, irq, ret, addr_bits; 1121 1121 1122 - master = devm_spi_alloc_master(dev, sizeof(*mdata)); 1123 - if (!master) 1124 - return dev_err_probe(dev, -ENOMEM, "failed to alloc spi master\n"); 1122 + host = devm_spi_alloc_host(dev, sizeof(*mdata)); 1123 + if (!host) 1124 + return dev_err_probe(dev, -ENOMEM, "failed to alloc spi host\n"); 1125 1125 1126 - master->auto_runtime_pm = true; 1127 - master->dev.of_node = dev->of_node; 1128 - master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST; 1126 + host->auto_runtime_pm = true; 1127 + host->dev.of_node = dev->of_node; 1128 + host->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST; 1129 1129 1130 - master->set_cs = mtk_spi_set_cs; 1131 - master->prepare_message = mtk_spi_prepare_message; 1132 - master->transfer_one = mtk_spi_transfer_one; 1133 - master->can_dma = mtk_spi_can_dma; 1134 - master->setup = mtk_spi_setup; 1135 - master->set_cs_timing = mtk_spi_set_hw_cs_timing; 1136 - master->use_gpio_descriptors = true; 1130 + host->set_cs = mtk_spi_set_cs; 1131 + host->prepare_message = mtk_spi_prepare_message; 1132 + host->transfer_one = mtk_spi_transfer_one; 1133 + host->can_dma = mtk_spi_can_dma; 1134 + host->setup = mtk_spi_setup; 1135 + host->set_cs_timing = mtk_spi_set_hw_cs_timing; 1136 + host->use_gpio_descriptors = true; 1137 1137 1138 - mdata = spi_master_get_devdata(master); 1138 + mdata = spi_controller_get_devdata(host); 1139 1139 mdata->dev_comp = device_get_match_data(dev); 1140 1140 1141 1141 if (mdata->dev_comp->enhance_timing) 1142 - master->mode_bits |= SPI_CS_HIGH; 1142 + host->mode_bits |= SPI_CS_HIGH; 1143 1143 1144 1144 if (mdata->dev_comp->must_tx) 1145 - master->flags = SPI_CONTROLLER_MUST_TX; 1145 + host->flags = SPI_CONTROLLER_MUST_TX; 1146 1146 if (mdata->dev_comp->ipm_design) 1147 - master->mode_bits |= SPI_LOOP | SPI_RX_DUAL | SPI_TX_DUAL | 1148 - SPI_RX_QUAD | SPI_TX_QUAD; 1147 + host->mode_bits |= SPI_LOOP | SPI_RX_DUAL | SPI_TX_DUAL | 1148 + SPI_RX_QUAD | SPI_TX_QUAD; 1149 1149 1150 1150 if (mdata->dev_comp->ipm_design) { 1151 1151 mdata->dev = dev; 1152 - master->mem_ops = &mtk_spi_mem_ops; 1152 + host->mem_ops = &mtk_spi_mem_ops; 1153 1153 init_completion(&mdata->spimem_done); 1154 1154 } 1155 1155 ··· 1176 1176 } 1177 1177 } 1178 1178 1179 - platform_set_drvdata(pdev, master); 1179 + platform_set_drvdata(pdev, host); 1180 1180 mdata->base = devm_platform_ioremap_resource(pdev, 0); 1181 1181 if (IS_ERR(mdata->base)) 1182 1182 return PTR_ERR(mdata->base); ··· 1235 1235 } 1236 1236 1237 1237 if (mdata->dev_comp->need_pad_sel) { 1238 - if (mdata->pad_num != master->num_chipselect) 1238 + if (mdata->pad_num != host->num_chipselect) 1239 1239 return dev_err_probe(dev, -EINVAL, 1240 1240 "pad_num does not match num_chipselect(%d != %d)\n", 1241 - mdata->pad_num, master->num_chipselect); 1241 + mdata->pad_num, host->num_chipselect); 1242 1242 1243 - if (!master->cs_gpiods && master->num_chipselect > 1) 1243 + if (!host->cs_gpiods && host->num_chipselect > 1) 1244 1244 return dev_err_probe(dev, -EINVAL, 1245 1245 "cs_gpios not specified and num_chipselect > 1\n"); 1246 1246 } ··· 1255 1255 addr_bits, ret); 1256 1256 1257 1257 ret = devm_request_irq(dev, irq, mtk_spi_interrupt, 1258 - IRQF_TRIGGER_NONE, dev_name(dev), master); 1258 + IRQF_TRIGGER_NONE, dev_name(dev), host); 1259 1259 if (ret) 1260 1260 return dev_err_probe(dev, ret, "failed to register irq\n"); 1261 1261 1262 1262 pm_runtime_enable(dev); 1263 1263 1264 - ret = devm_spi_register_master(dev, master); 1264 + ret = devm_spi_register_controller(dev, host); 1265 1265 if (ret) { 1266 1266 pm_runtime_disable(dev); 1267 - return dev_err_probe(dev, ret, "failed to register master\n"); 1267 + return dev_err_probe(dev, ret, "failed to register host\n"); 1268 1268 } 1269 1269 1270 1270 return 0; ··· 1272 1272 1273 1273 static void mtk_spi_remove(struct platform_device *pdev) 1274 1274 { 1275 - struct spi_master *master = platform_get_drvdata(pdev); 1276 - struct mtk_spi *mdata = spi_master_get_devdata(master); 1275 + struct spi_controller *host = platform_get_drvdata(pdev); 1276 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 1277 1277 int ret; 1278 1278 1279 1279 if (mdata->use_spimem && !completion_done(&mdata->spimem_done)) ··· 1304 1304 static int mtk_spi_suspend(struct device *dev) 1305 1305 { 1306 1306 int ret; 1307 - struct spi_master *master = dev_get_drvdata(dev); 1308 - struct mtk_spi *mdata = spi_master_get_devdata(master); 1307 + struct spi_controller *host = dev_get_drvdata(dev); 1308 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 1309 1309 1310 - ret = spi_master_suspend(master); 1310 + ret = spi_controller_suspend(host); 1311 1311 if (ret) 1312 1312 return ret; 1313 1313 ··· 1322 1322 static int mtk_spi_resume(struct device *dev) 1323 1323 { 1324 1324 int ret; 1325 - struct spi_master *master = dev_get_drvdata(dev); 1326 - struct mtk_spi *mdata = spi_master_get_devdata(master); 1325 + struct spi_controller *host = dev_get_drvdata(dev); 1326 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 1327 1327 1328 1328 if (!pm_runtime_suspended(dev)) { 1329 1329 ret = clk_prepare_enable(mdata->spi_clk); ··· 1340 1340 } 1341 1341 } 1342 1342 1343 - ret = spi_master_resume(master); 1343 + ret = spi_controller_resume(host); 1344 1344 if (ret < 0) { 1345 1345 clk_disable_unprepare(mdata->spi_clk); 1346 1346 clk_disable_unprepare(mdata->spi_hclk); ··· 1353 1353 #ifdef CONFIG_PM 1354 1354 static int mtk_spi_runtime_suspend(struct device *dev) 1355 1355 { 1356 - struct spi_master *master = dev_get_drvdata(dev); 1357 - struct mtk_spi *mdata = spi_master_get_devdata(master); 1356 + struct spi_controller *host = dev_get_drvdata(dev); 1357 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 1358 1358 1359 1359 if (mdata->dev_comp->no_need_unprepare) { 1360 1360 clk_disable(mdata->spi_clk); ··· 1369 1369 1370 1370 static int mtk_spi_runtime_resume(struct device *dev) 1371 1371 { 1372 - struct spi_master *master = dev_get_drvdata(dev); 1373 - struct mtk_spi *mdata = spi_master_get_devdata(master); 1372 + struct spi_controller *host = dev_get_drvdata(dev); 1373 + struct mtk_spi *mdata = spi_controller_get_devdata(host); 1374 1374 int ret; 1375 1375 1376 1376 if (mdata->dev_comp->no_need_unprepare) {
+25 -25
drivers/spi/spi-mt7621.c
··· 53 53 #define MT7621_LSB_FIRST BIT(3) 54 54 55 55 struct mt7621_spi { 56 - struct spi_controller *master; 56 + struct spi_controller *host; 57 57 void __iomem *base; 58 58 unsigned int sys_freq; 59 59 unsigned int speed; ··· 62 62 63 63 static inline struct mt7621_spi *spidev_to_mt7621_spi(struct spi_device *spi) 64 64 { 65 - return spi_controller_get_devdata(spi->master); 65 + return spi_controller_get_devdata(spi->controller); 66 66 } 67 67 68 68 static inline u32 mt7621_spi_read(struct mt7621_spi *rs, u32 reg) ··· 80 80 struct mt7621_spi *rs = spidev_to_mt7621_spi(spi); 81 81 int cs = spi_get_chipselect(spi, 0); 82 82 u32 polar = 0; 83 - u32 master; 83 + u32 host; 84 84 85 85 /* 86 86 * Select SPI device 7, enable "more buffer mode" and disable 87 87 * full-duplex (only half-duplex really works on this chip 88 88 * reliably) 89 89 */ 90 - master = mt7621_spi_read(rs, MT7621_SPI_MASTER); 91 - master |= MASTER_RS_SLAVE_SEL | MASTER_MORE_BUFMODE; 92 - master &= ~MASTER_FULL_DUPLEX; 93 - mt7621_spi_write(rs, MT7621_SPI_MASTER, master); 90 + host = mt7621_spi_read(rs, MT7621_SPI_MASTER); 91 + host |= MASTER_RS_SLAVE_SEL | MASTER_MORE_BUFMODE; 92 + host &= ~MASTER_FULL_DUPLEX; 93 + mt7621_spi_write(rs, MT7621_SPI_MASTER, host); 94 94 95 95 rs->pending_write = 0; 96 96 ··· 245 245 rs->pending_write = len; 246 246 } 247 247 248 - static int mt7621_spi_transfer_one_message(struct spi_controller *master, 248 + static int mt7621_spi_transfer_one_message(struct spi_controller *host, 249 249 struct spi_message *m) 250 250 { 251 - struct mt7621_spi *rs = spi_controller_get_devdata(master); 251 + struct mt7621_spi *rs = spi_controller_get_devdata(host); 252 252 struct spi_device *spi = m->spi; 253 253 unsigned int speed = spi->max_speed_hz; 254 254 struct spi_transfer *t = NULL; ··· 294 294 295 295 msg_done: 296 296 m->status = status; 297 - spi_finalize_current_message(master); 297 + spi_finalize_current_message(host); 298 298 299 299 return 0; 300 300 } ··· 325 325 static int mt7621_spi_probe(struct platform_device *pdev) 326 326 { 327 327 const struct of_device_id *match; 328 - struct spi_controller *master; 328 + struct spi_controller *host; 329 329 struct mt7621_spi *rs; 330 330 void __iomem *base; 331 331 struct clk *clk; ··· 344 344 return dev_err_probe(&pdev->dev, PTR_ERR(clk), 345 345 "unable to get SYS clock\n"); 346 346 347 - master = devm_spi_alloc_master(&pdev->dev, sizeof(*rs)); 348 - if (!master) { 349 - dev_info(&pdev->dev, "master allocation failed\n"); 347 + host = devm_spi_alloc_host(&pdev->dev, sizeof(*rs)); 348 + if (!host) { 349 + dev_info(&pdev->dev, "host allocation failed\n"); 350 350 return -ENOMEM; 351 351 } 352 352 353 - master->mode_bits = SPI_LSB_FIRST; 354 - master->flags = SPI_CONTROLLER_HALF_DUPLEX; 355 - master->setup = mt7621_spi_setup; 356 - master->transfer_one_message = mt7621_spi_transfer_one_message; 357 - master->bits_per_word_mask = SPI_BPW_MASK(8); 358 - master->dev.of_node = pdev->dev.of_node; 359 - master->num_chipselect = 2; 353 + host->mode_bits = SPI_LSB_FIRST; 354 + host->flags = SPI_CONTROLLER_HALF_DUPLEX; 355 + host->setup = mt7621_spi_setup; 356 + host->transfer_one_message = mt7621_spi_transfer_one_message; 357 + host->bits_per_word_mask = SPI_BPW_MASK(8); 358 + host->dev.of_node = pdev->dev.of_node; 359 + host->num_chipselect = 2; 360 360 361 - dev_set_drvdata(&pdev->dev, master); 361 + dev_set_drvdata(&pdev->dev, host); 362 362 363 - rs = spi_controller_get_devdata(master); 363 + rs = spi_controller_get_devdata(host); 364 364 rs->base = base; 365 - rs->master = master; 365 + rs->host = host; 366 366 rs->sys_freq = clk_get_rate(clk); 367 367 rs->pending_write = 0; 368 368 dev_info(&pdev->dev, "sys_freq: %u\n", rs->sys_freq); ··· 373 373 return ret; 374 374 } 375 375 376 - return devm_spi_register_controller(&pdev->dev, master); 376 + return devm_spi_register_controller(&pdev->dev, host); 377 377 } 378 378 379 379 MODULE_ALIAS("platform:" DRIVER_NAME);
+7 -7
drivers/spi/spi-mtk-nor.c
··· 275 275 276 276 static int mtk_nor_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op) 277 277 { 278 - struct mtk_nor *sp = spi_controller_get_devdata(mem->spi->master); 278 + struct mtk_nor *sp = spi_controller_get_devdata(mem->spi->controller); 279 279 280 280 if (!op->data.nbytes) 281 281 return 0; ··· 598 598 599 599 static int mtk_nor_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) 600 600 { 601 - struct mtk_nor *sp = spi_controller_get_devdata(mem->spi->master); 601 + struct mtk_nor *sp = spi_controller_get_devdata(mem->spi->controller); 602 602 int ret; 603 603 604 604 if ((op->data.nbytes == 0) || ··· 639 639 640 640 static int mtk_nor_setup(struct spi_device *spi) 641 641 { 642 - struct mtk_nor *sp = spi_controller_get_devdata(spi->master); 642 + struct mtk_nor *sp = spi_controller_get_devdata(spi->controller); 643 643 644 644 if (spi->max_speed_hz && (spi->max_speed_hz < sp->spi_freq)) { 645 645 dev_err(&spi->dev, "spi clock should be %u Hz.\n", ··· 651 651 return 0; 652 652 } 653 653 654 - static int mtk_nor_transfer_one_message(struct spi_controller *master, 654 + static int mtk_nor_transfer_one_message(struct spi_controller *host, 655 655 struct spi_message *m) 656 656 { 657 - struct mtk_nor *sp = spi_controller_get_devdata(master); 657 + struct mtk_nor *sp = spi_controller_get_devdata(host); 658 658 struct spi_transfer *t = NULL; 659 659 unsigned long trx_len = 0; 660 660 int stat = 0; ··· 696 696 m->actual_length = trx_len; 697 697 msg_done: 698 698 m->status = stat; 699 - spi_finalize_current_message(master); 699 + spi_finalize_current_message(host); 700 700 701 701 return 0; 702 702 } ··· 844 844 return ret; 845 845 } 846 846 847 - ctlr = devm_spi_alloc_master(&pdev->dev, sizeof(*sp)); 847 + ctlr = devm_spi_alloc_host(&pdev->dev, sizeof(*sp)); 848 848 if (!ctlr) { 849 849 dev_err(&pdev->dev, "failed to allocate spi controller\n"); 850 850 return -ENOMEM;
+12 -55
drivers/spi/spi-mtk-snfi.c
··· 1255 1255 1256 1256 static int mtk_snand_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op) 1257 1257 { 1258 - struct mtk_snand *ms = spi_controller_get_devdata(mem->spi->master); 1258 + struct mtk_snand *ms = spi_controller_get_devdata(mem->spi->controller); 1259 1259 // page ops transfer size must be exactly ((sector_size + spare_size) * 1260 1260 // nsectors). Limit the op size if the caller requests more than that. 1261 1261 // exec_op will read more than needed and discard the leftover if the ··· 1282 1282 1283 1283 static int mtk_snand_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) 1284 1284 { 1285 - struct mtk_snand *ms = spi_controller_get_devdata(mem->spi->master); 1285 + struct mtk_snand *ms = spi_controller_get_devdata(mem->spi->controller); 1286 1286 1287 1287 dev_dbg(ms->dev, "OP %02x ADDR %08llX@%d:%u DATA %d:%u", op->cmd.opcode, 1288 1288 op->addr.val, op->addr.buswidth, op->addr.nbytes, ··· 1332 1332 1333 1333 MODULE_DEVICE_TABLE(of, mtk_snand_ids); 1334 1334 1335 - static int mtk_snand_enable_clk(struct mtk_snand *ms) 1336 - { 1337 - int ret; 1338 - 1339 - ret = clk_prepare_enable(ms->nfi_clk); 1340 - if (ret) { 1341 - dev_err(ms->dev, "unable to enable nfi clk\n"); 1342 - return ret; 1343 - } 1344 - ret = clk_prepare_enable(ms->pad_clk); 1345 - if (ret) { 1346 - dev_err(ms->dev, "unable to enable pad clk\n"); 1347 - goto err1; 1348 - } 1349 - ret = clk_prepare_enable(ms->nfi_hclk); 1350 - if (ret) { 1351 - dev_err(ms->dev, "unable to enable nfi hclk\n"); 1352 - goto err2; 1353 - } 1354 - 1355 - return 0; 1356 - 1357 - err2: 1358 - clk_disable_unprepare(ms->pad_clk); 1359 - err1: 1360 - clk_disable_unprepare(ms->nfi_clk); 1361 - return ret; 1362 - } 1363 - 1364 - static void mtk_snand_disable_clk(struct mtk_snand *ms) 1365 - { 1366 - clk_disable_unprepare(ms->nfi_hclk); 1367 - clk_disable_unprepare(ms->pad_clk); 1368 - clk_disable_unprepare(ms->nfi_clk); 1369 - } 1370 - 1371 1335 static int mtk_snand_probe(struct platform_device *pdev) 1372 1336 { 1373 1337 struct device_node *np = pdev->dev.of_node; ··· 1346 1382 if (!dev_id) 1347 1383 return -EINVAL; 1348 1384 1349 - ctlr = devm_spi_alloc_master(&pdev->dev, sizeof(*ms)); 1385 + ctlr = devm_spi_alloc_host(&pdev->dev, sizeof(*ms)); 1350 1386 if (!ctlr) 1351 1387 return -ENOMEM; 1352 1388 platform_set_drvdata(pdev, ctlr); ··· 1370 1406 1371 1407 ms->dev = &pdev->dev; 1372 1408 1373 - ms->nfi_clk = devm_clk_get(&pdev->dev, "nfi_clk"); 1409 + ms->nfi_clk = devm_clk_get_enabled(&pdev->dev, "nfi_clk"); 1374 1410 if (IS_ERR(ms->nfi_clk)) { 1375 1411 ret = PTR_ERR(ms->nfi_clk); 1376 1412 dev_err(&pdev->dev, "unable to get nfi_clk, err = %d\n", ret); 1377 1413 goto release_ecc; 1378 1414 } 1379 1415 1380 - ms->pad_clk = devm_clk_get(&pdev->dev, "pad_clk"); 1416 + ms->pad_clk = devm_clk_get_enabled(&pdev->dev, "pad_clk"); 1381 1417 if (IS_ERR(ms->pad_clk)) { 1382 1418 ret = PTR_ERR(ms->pad_clk); 1383 1419 dev_err(&pdev->dev, "unable to get pad_clk, err = %d\n", ret); 1384 1420 goto release_ecc; 1385 1421 } 1386 1422 1387 - ms->nfi_hclk = devm_clk_get_optional(&pdev->dev, "nfi_hclk"); 1423 + ms->nfi_hclk = devm_clk_get_optional_enabled(&pdev->dev, "nfi_hclk"); 1388 1424 if (IS_ERR(ms->nfi_hclk)) { 1389 1425 ret = PTR_ERR(ms->nfi_hclk); 1390 1426 dev_err(&pdev->dev, "unable to get nfi_hclk, err = %d\n", ret); 1391 1427 goto release_ecc; 1392 1428 } 1393 1429 1394 - ret = mtk_snand_enable_clk(ms); 1395 - if (ret) 1396 - goto release_ecc; 1397 - 1398 1430 init_completion(&ms->op_done); 1399 1431 1400 1432 ms->irq = platform_get_irq(pdev, 0); 1401 1433 if (ms->irq < 0) { 1402 1434 ret = ms->irq; 1403 - goto disable_clk; 1435 + goto release_ecc; 1404 1436 } 1405 1437 ret = devm_request_irq(ms->dev, ms->irq, mtk_snand_irq, 0x0, 1406 1438 "mtk-snand", ms); 1407 1439 if (ret) { 1408 1440 dev_err(ms->dev, "failed to request snfi irq\n"); 1409 - goto disable_clk; 1441 + goto release_ecc; 1410 1442 } 1411 1443 1412 1444 ret = dma_set_mask(ms->dev, DMA_BIT_MASK(32)); 1413 1445 if (ret) { 1414 1446 dev_err(ms->dev, "failed to set dma mask\n"); 1415 - goto disable_clk; 1447 + goto release_ecc; 1416 1448 } 1417 1449 1418 1450 // switch to SNFI mode ··· 1432 1472 ret = mtk_snand_setup_pagefmt(ms, SZ_2K, SZ_64); 1433 1473 if (ret) { 1434 1474 dev_err(ms->dev, "failed to set initial page format\n"); 1435 - goto disable_clk; 1475 + goto release_ecc; 1436 1476 } 1437 1477 1438 1478 // setup ECC engine ··· 1444 1484 ret = nand_ecc_register_on_host_hw_engine(&ms->ecc_eng); 1445 1485 if (ret) { 1446 1486 dev_err(&pdev->dev, "failed to register ecc engine.\n"); 1447 - goto disable_clk; 1487 + goto release_ecc; 1448 1488 } 1449 1489 1450 1490 ctlr->num_chipselect = 1; ··· 1456 1496 ret = spi_register_controller(ctlr); 1457 1497 if (ret) { 1458 1498 dev_err(&pdev->dev, "spi_register_controller failed.\n"); 1459 - goto disable_clk; 1499 + goto release_ecc; 1460 1500 } 1461 1501 1462 1502 return 0; 1463 - disable_clk: 1464 - mtk_snand_disable_clk(ms); 1465 1503 release_ecc: 1466 1504 mtk_ecc_release(ms->ecc); 1467 1505 return ret; ··· 1471 1513 struct mtk_snand *ms = spi_controller_get_devdata(ctlr); 1472 1514 1473 1515 spi_unregister_controller(ctlr); 1474 - mtk_snand_disable_clk(ms); 1475 1516 mtk_ecc_release(ms->ecc); 1476 1517 kfree(ms->buf); 1477 1518 }
+1 -1
drivers/spi/spi-mux.c
··· 129 129 struct spi_mux_priv *priv; 130 130 int ret; 131 131 132 - ctlr = spi_alloc_master(&spi->dev, sizeof(*priv)); 132 + ctlr = spi_alloc_host(&spi->dev, sizeof(*priv)); 133 133 if (!ctlr) 134 134 return -ENOMEM; 135 135
+34 -34
drivers/spi/spi-mxic.c
··· 390 390 static ssize_t mxic_spi_mem_dirmap_read(struct spi_mem_dirmap_desc *desc, 391 391 u64 offs, size_t len, void *buf) 392 392 { 393 - struct mxic_spi *mxic = spi_master_get_devdata(desc->mem->spi->master); 393 + struct mxic_spi *mxic = spi_controller_get_devdata(desc->mem->spi->controller); 394 394 int ret; 395 395 u32 sts; 396 396 ··· 434 434 u64 offs, size_t len, 435 435 const void *buf) 436 436 { 437 - struct mxic_spi *mxic = spi_master_get_devdata(desc->mem->spi->master); 437 + struct mxic_spi *mxic = spi_controller_get_devdata(desc->mem->spi->controller); 438 438 u32 sts; 439 439 int ret; 440 440 ··· 493 493 494 494 static int mxic_spi_mem_dirmap_create(struct spi_mem_dirmap_desc *desc) 495 495 { 496 - struct mxic_spi *mxic = spi_master_get_devdata(desc->mem->spi->master); 496 + struct mxic_spi *mxic = spi_controller_get_devdata(desc->mem->spi->controller); 497 497 498 498 if (!mxic->linear.map) 499 499 return -EINVAL; ··· 510 510 static int mxic_spi_mem_exec_op(struct spi_mem *mem, 511 511 const struct spi_mem_op *op) 512 512 { 513 - struct mxic_spi *mxic = spi_master_get_devdata(mem->spi->master); 513 + struct mxic_spi *mxic = spi_controller_get_devdata(mem->spi->controller); 514 514 int i, ret; 515 515 u8 addr[8], cmd[2]; 516 516 ··· 577 577 578 578 static void mxic_spi_set_cs(struct spi_device *spi, bool lvl) 579 579 { 580 - struct mxic_spi *mxic = spi_master_get_devdata(spi->master); 580 + struct mxic_spi *mxic = spi_controller_get_devdata(spi->controller); 581 581 582 582 if (!lvl) { 583 583 writel(readl(mxic->regs + HC_CFG) | HC_CFG_MAN_CS_EN, ··· 592 592 } 593 593 } 594 594 595 - static int mxic_spi_transfer_one(struct spi_master *master, 595 + static int mxic_spi_transfer_one(struct spi_controller *host, 596 596 struct spi_device *spi, 597 597 struct spi_transfer *t) 598 598 { 599 - struct mxic_spi *mxic = spi_master_get_devdata(master); 599 + struct mxic_spi *mxic = spi_controller_get_devdata(host); 600 600 unsigned int busw = OP_BUSW_1; 601 601 int ret; 602 602 ··· 632 632 if (ret) 633 633 return ret; 634 634 635 - spi_finalize_current_transfer(master); 635 + spi_finalize_current_transfer(host); 636 636 637 637 return 0; 638 638 } ··· 713 713 714 714 static int __maybe_unused mxic_spi_runtime_suspend(struct device *dev) 715 715 { 716 - struct spi_master *master = dev_get_drvdata(dev); 717 - struct mxic_spi *mxic = spi_master_get_devdata(master); 716 + struct spi_controller *host = dev_get_drvdata(dev); 717 + struct mxic_spi *mxic = spi_controller_get_devdata(host); 718 718 719 719 mxic_spi_clk_disable(mxic); 720 720 clk_disable_unprepare(mxic->ps_clk); ··· 724 724 725 725 static int __maybe_unused mxic_spi_runtime_resume(struct device *dev) 726 726 { 727 - struct spi_master *master = dev_get_drvdata(dev); 728 - struct mxic_spi *mxic = spi_master_get_devdata(master); 727 + struct spi_controller *host = dev_get_drvdata(dev); 728 + struct mxic_spi *mxic = spi_controller_get_devdata(host); 729 729 int ret; 730 730 731 731 ret = clk_prepare_enable(mxic->ps_clk); ··· 744 744 745 745 static int mxic_spi_probe(struct platform_device *pdev) 746 746 { 747 - struct spi_master *master; 747 + struct spi_controller *host; 748 748 struct resource *res; 749 749 struct mxic_spi *mxic; 750 750 int ret; 751 751 752 - master = devm_spi_alloc_master(&pdev->dev, sizeof(struct mxic_spi)); 753 - if (!master) 752 + host = devm_spi_alloc_host(&pdev->dev, sizeof(struct mxic_spi)); 753 + if (!host) 754 754 return -ENOMEM; 755 755 756 - platform_set_drvdata(pdev, master); 756 + platform_set_drvdata(pdev, host); 757 757 758 - mxic = spi_master_get_devdata(master); 758 + mxic = spi_controller_get_devdata(host); 759 759 mxic->dev = &pdev->dev; 760 760 761 - master->dev.of_node = pdev->dev.of_node; 761 + host->dev.of_node = pdev->dev.of_node; 762 762 763 763 mxic->ps_clk = devm_clk_get(&pdev->dev, "ps_clk"); 764 764 if (IS_ERR(mxic->ps_clk)) ··· 786 786 } 787 787 788 788 pm_runtime_enable(&pdev->dev); 789 - master->auto_runtime_pm = true; 789 + host->auto_runtime_pm = true; 790 790 791 - master->num_chipselect = 1; 792 - master->mem_ops = &mxic_spi_mem_ops; 793 - master->mem_caps = &mxic_spi_mem_caps; 791 + host->num_chipselect = 1; 792 + host->mem_ops = &mxic_spi_mem_ops; 793 + host->mem_caps = &mxic_spi_mem_caps; 794 794 795 - master->set_cs = mxic_spi_set_cs; 796 - master->transfer_one = mxic_spi_transfer_one; 797 - master->bits_per_word_mask = SPI_BPW_MASK(8); 798 - master->mode_bits = SPI_CPOL | SPI_CPHA | 799 - SPI_RX_DUAL | SPI_TX_DUAL | 800 - SPI_RX_QUAD | SPI_TX_QUAD | 801 - SPI_RX_OCTAL | SPI_TX_OCTAL; 795 + host->set_cs = mxic_spi_set_cs; 796 + host->transfer_one = mxic_spi_transfer_one; 797 + host->bits_per_word_mask = SPI_BPW_MASK(8); 798 + host->mode_bits = SPI_CPOL | SPI_CPHA | 799 + SPI_RX_DUAL | SPI_TX_DUAL | 800 + SPI_RX_QUAD | SPI_TX_QUAD | 801 + SPI_RX_OCTAL | SPI_TX_OCTAL; 802 802 803 803 mxic_spi_hw_init(mxic); 804 804 ··· 808 808 return ret; 809 809 } 810 810 811 - ret = spi_register_master(master); 811 + ret = spi_register_controller(host); 812 812 if (ret) { 813 - dev_err(&pdev->dev, "spi_register_master failed\n"); 813 + dev_err(&pdev->dev, "spi_register_controller failed\n"); 814 814 pm_runtime_disable(&pdev->dev); 815 815 mxic_spi_mem_ecc_remove(mxic); 816 816 } ··· 820 820 821 821 static void mxic_spi_remove(struct platform_device *pdev) 822 822 { 823 - struct spi_master *master = platform_get_drvdata(pdev); 824 - struct mxic_spi *mxic = spi_master_get_devdata(master); 823 + struct spi_controller *host = platform_get_drvdata(pdev); 824 + struct mxic_spi *mxic = spi_controller_get_devdata(host); 825 825 826 826 pm_runtime_disable(&pdev->dev); 827 827 mxic_spi_mem_ecc_remove(mxic); 828 - spi_unregister_master(master); 828 + spi_unregister_controller(host); 829 829 } 830 830 831 831 static const struct of_device_id mxic_spi_of_ids[] = {
+35 -35
drivers/spi/spi-mxs.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0+ 2 2 // 3 - // Freescale MXS SPI master driver 3 + // Freescale MXS SPI host driver 4 4 // 5 5 // Copyright 2012 DENX Software Engineering, GmbH. 6 6 // Copyright 2012 Freescale Semiconductor, Inc. ··· 63 63 static int mxs_spi_setup_transfer(struct spi_device *dev, 64 64 const struct spi_transfer *t) 65 65 { 66 - struct mxs_spi *spi = spi_master_get_devdata(dev->master); 66 + struct mxs_spi *spi = spi_controller_get_devdata(dev->controller); 67 67 struct mxs_ssp *ssp = &spi->ssp; 68 68 const unsigned int hz = min(dev->max_speed_hz, t->speed_hz); 69 69 ··· 357 357 return -ETIMEDOUT; 358 358 } 359 359 360 - static int mxs_spi_transfer_one(struct spi_master *master, 360 + static int mxs_spi_transfer_one(struct spi_controller *host, 361 361 struct spi_message *m) 362 362 { 363 - struct mxs_spi *spi = spi_master_get_devdata(master); 363 + struct mxs_spi *spi = spi_controller_get_devdata(host); 364 364 struct mxs_ssp *ssp = &spi->ssp; 365 365 struct spi_transfer *t; 366 366 unsigned int flag; ··· 432 432 } 433 433 434 434 m->status = status; 435 - spi_finalize_current_message(master); 435 + spi_finalize_current_message(host); 436 436 437 437 return status; 438 438 } 439 439 440 440 static int mxs_spi_runtime_suspend(struct device *dev) 441 441 { 442 - struct spi_master *master = dev_get_drvdata(dev); 443 - struct mxs_spi *spi = spi_master_get_devdata(master); 442 + struct spi_controller *host = dev_get_drvdata(dev); 443 + struct mxs_spi *spi = spi_controller_get_devdata(host); 444 444 struct mxs_ssp *ssp = &spi->ssp; 445 445 int ret; 446 446 ··· 460 460 461 461 static int mxs_spi_runtime_resume(struct device *dev) 462 462 { 463 - struct spi_master *master = dev_get_drvdata(dev); 464 - struct mxs_spi *spi = spi_master_get_devdata(master); 463 + struct spi_controller *host = dev_get_drvdata(dev); 464 + struct mxs_spi *spi = spi_controller_get_devdata(host); 465 465 struct mxs_ssp *ssp = &spi->ssp; 466 466 int ret; 467 467 ··· 478 478 479 479 static int __maybe_unused mxs_spi_suspend(struct device *dev) 480 480 { 481 - struct spi_master *master = dev_get_drvdata(dev); 481 + struct spi_controller *host = dev_get_drvdata(dev); 482 482 int ret; 483 483 484 - ret = spi_master_suspend(master); 484 + ret = spi_controller_suspend(host); 485 485 if (ret) 486 486 return ret; 487 487 ··· 493 493 494 494 static int __maybe_unused mxs_spi_resume(struct device *dev) 495 495 { 496 - struct spi_master *master = dev_get_drvdata(dev); 496 + struct spi_controller *host = dev_get_drvdata(dev); 497 497 int ret; 498 498 499 499 if (!pm_runtime_suspended(dev)) ··· 503 503 if (ret) 504 504 return ret; 505 505 506 - ret = spi_master_resume(master); 506 + ret = spi_controller_resume(host); 507 507 if (ret < 0 && !pm_runtime_suspended(dev)) 508 508 mxs_spi_runtime_suspend(dev); 509 509 ··· 528 528 const struct of_device_id *of_id = 529 529 of_match_device(mxs_spi_dt_ids, &pdev->dev); 530 530 struct device_node *np = pdev->dev.of_node; 531 - struct spi_master *master; 531 + struct spi_controller *host; 532 532 struct mxs_spi *spi; 533 533 struct mxs_ssp *ssp; 534 534 struct clk *clk; ··· 561 561 if (ret) 562 562 clk_freq = clk_freq_default; 563 563 564 - master = spi_alloc_master(&pdev->dev, sizeof(*spi)); 565 - if (!master) 564 + host = spi_alloc_host(&pdev->dev, sizeof(*spi)); 565 + if (!host) 566 566 return -ENOMEM; 567 567 568 - platform_set_drvdata(pdev, master); 568 + platform_set_drvdata(pdev, host); 569 569 570 - master->transfer_one_message = mxs_spi_transfer_one; 571 - master->bits_per_word_mask = SPI_BPW_MASK(8); 572 - master->mode_bits = SPI_CPOL | SPI_CPHA; 573 - master->num_chipselect = 3; 574 - master->dev.of_node = np; 575 - master->flags = SPI_CONTROLLER_HALF_DUPLEX; 576 - master->auto_runtime_pm = true; 570 + host->transfer_one_message = mxs_spi_transfer_one; 571 + host->bits_per_word_mask = SPI_BPW_MASK(8); 572 + host->mode_bits = SPI_CPOL | SPI_CPHA; 573 + host->num_chipselect = 3; 574 + host->dev.of_node = np; 575 + host->flags = SPI_CONTROLLER_HALF_DUPLEX; 576 + host->auto_runtime_pm = true; 577 577 578 - spi = spi_master_get_devdata(master); 578 + spi = spi_controller_get_devdata(host); 579 579 ssp = &spi->ssp; 580 580 ssp->dev = &pdev->dev; 581 581 ssp->clk = clk; ··· 587 587 ret = devm_request_irq(&pdev->dev, irq_err, mxs_ssp_irq_handler, 0, 588 588 dev_name(&pdev->dev), ssp); 589 589 if (ret) 590 - goto out_master_free; 590 + goto out_host_free; 591 591 592 592 ssp->dmach = dma_request_chan(&pdev->dev, "rx-tx"); 593 593 if (IS_ERR(ssp->dmach)) { 594 594 dev_err(ssp->dev, "Failed to request DMA\n"); 595 595 ret = PTR_ERR(ssp->dmach); 596 - goto out_master_free; 596 + goto out_host_free; 597 597 } 598 598 599 599 pm_runtime_enable(ssp->dev); ··· 617 617 if (ret) 618 618 goto out_pm_runtime_put; 619 619 620 - ret = devm_spi_register_master(&pdev->dev, master); 620 + ret = devm_spi_register_controller(&pdev->dev, host); 621 621 if (ret) { 622 - dev_err(&pdev->dev, "Cannot register SPI master, %d\n", ret); 622 + dev_err(&pdev->dev, "Cannot register SPI host, %d\n", ret); 623 623 goto out_pm_runtime_put; 624 624 } 625 625 ··· 633 633 pm_runtime_disable(ssp->dev); 634 634 out_dma_release: 635 635 dma_release_channel(ssp->dmach); 636 - out_master_free: 637 - spi_master_put(master); 636 + out_host_free: 637 + spi_controller_put(host); 638 638 return ret; 639 639 } 640 640 641 641 static void mxs_spi_remove(struct platform_device *pdev) 642 642 { 643 - struct spi_master *master; 643 + struct spi_controller *host; 644 644 struct mxs_spi *spi; 645 645 struct mxs_ssp *ssp; 646 646 647 - master = platform_get_drvdata(pdev); 648 - spi = spi_master_get_devdata(master); 647 + host = platform_get_drvdata(pdev); 648 + spi = spi_controller_get_devdata(host); 649 649 ssp = &spi->ssp; 650 650 651 651 pm_runtime_disable(&pdev->dev); ··· 668 668 module_platform_driver(mxs_spi_driver); 669 669 670 670 MODULE_AUTHOR("Marek Vasut <marex@denx.de>"); 671 - MODULE_DESCRIPTION("MXS SPI master driver"); 671 + MODULE_DESCRIPTION("MXS SPI host driver"); 672 672 MODULE_LICENSE("GPL"); 673 673 MODULE_ALIAS("platform:mxs-spi");
+3 -11
drivers/spi/spi-npcm-fiu.c
··· 700 700 struct spi_controller *ctrl; 701 701 struct npcm_fiu_spi *fiu; 702 702 void __iomem *regbase; 703 - int id, ret; 703 + int id; 704 704 705 705 ctrl = devm_spi_alloc_host(dev, sizeof(*fiu)); 706 706 if (!ctrl) ··· 738 738 739 739 fiu->res_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, 740 740 "memory"); 741 - fiu->clk = devm_clk_get(dev, NULL); 741 + fiu->clk = devm_clk_get_enabled(dev, NULL); 742 742 if (IS_ERR(fiu->clk)) 743 743 return PTR_ERR(fiu->clk); 744 744 ··· 746 746 "nuvoton,spix-mode"); 747 747 748 748 platform_set_drvdata(pdev, fiu); 749 - clk_prepare_enable(fiu->clk); 750 749 751 750 ctrl->mode_bits = SPI_RX_DUAL | SPI_RX_QUAD 752 751 | SPI_TX_DUAL | SPI_TX_QUAD; ··· 755 756 ctrl->num_chipselect = fiu->info->max_cs; 756 757 ctrl->dev.of_node = dev->of_node; 757 758 758 - ret = devm_spi_register_controller(dev, ctrl); 759 - if (ret) 760 - clk_disable_unprepare(fiu->clk); 761 - 762 - return ret; 759 + return devm_spi_register_controller(dev, ctrl); 763 760 } 764 761 765 762 static void npcm_fiu_remove(struct platform_device *pdev) 766 763 { 767 - struct npcm_fiu_spi *fiu = platform_get_drvdata(pdev); 768 - 769 - clk_disable_unprepare(fiu->clk); 770 764 } 771 765 772 766 MODULE_DEVICE_TABLE(of, npcm_fiu_dt_ids);
+34 -34
drivers/spi/spi-npcm-pspi.c
··· 20 20 struct npcm_pspi { 21 21 struct completion xfer_done; 22 22 struct reset_control *reset; 23 - struct spi_master *master; 23 + struct spi_controller *host; 24 24 unsigned int tx_bytes; 25 25 unsigned int rx_bytes; 26 26 void __iomem *base; ··· 101 101 102 102 static void npcm_pspi_set_mode(struct spi_device *spi) 103 103 { 104 - struct npcm_pspi *priv = spi_master_get_devdata(spi->master); 104 + struct npcm_pspi *priv = spi_controller_get_devdata(spi->controller); 105 105 u16 regtemp; 106 106 u16 mode_val; 107 107 ··· 159 159 static void npcm_pspi_setup_transfer(struct spi_device *spi, 160 160 struct spi_transfer *t) 161 161 { 162 - struct npcm_pspi *priv = spi_master_get_devdata(spi->master); 162 + struct npcm_pspi *priv = spi_controller_get_devdata(spi->controller); 163 163 164 164 priv->tx_buf = t->tx_buf; 165 165 priv->rx_buf = t->rx_buf; ··· 245 245 } 246 246 } 247 247 248 - static int npcm_pspi_transfer_one(struct spi_master *master, 248 + static int npcm_pspi_transfer_one(struct spi_controller *host, 249 249 struct spi_device *spi, 250 250 struct spi_transfer *t) 251 251 { 252 - struct npcm_pspi *priv = spi_master_get_devdata(master); 252 + struct npcm_pspi *priv = spi_controller_get_devdata(host); 253 253 int status; 254 254 255 255 npcm_pspi_setup_transfer(spi, t); ··· 266 266 return 0; 267 267 } 268 268 269 - static int npcm_pspi_prepare_transfer_hardware(struct spi_master *master) 269 + static int npcm_pspi_prepare_transfer_hardware(struct spi_controller *host) 270 270 { 271 - struct npcm_pspi *priv = spi_master_get_devdata(master); 271 + struct npcm_pspi *priv = spi_controller_get_devdata(host); 272 272 273 273 npcm_pspi_irq_enable(priv, NPCM_PSPI_CTL1_EIR | NPCM_PSPI_CTL1_EIW); 274 274 275 275 return 0; 276 276 } 277 277 278 - static int npcm_pspi_unprepare_transfer_hardware(struct spi_master *master) 278 + static int npcm_pspi_unprepare_transfer_hardware(struct spi_controller *host) 279 279 { 280 - struct npcm_pspi *priv = spi_master_get_devdata(master); 280 + struct npcm_pspi *priv = spi_controller_get_devdata(host); 281 281 282 282 npcm_pspi_irq_disable(priv, NPCM_PSPI_CTL1_EIR | NPCM_PSPI_CTL1_EIW); 283 283 ··· 340 340 static int npcm_pspi_probe(struct platform_device *pdev) 341 341 { 342 342 struct npcm_pspi *priv; 343 - struct spi_master *master; 343 + struct spi_controller *host; 344 344 unsigned long clk_hz; 345 345 int irq; 346 346 int ret; 347 347 348 - master = spi_alloc_master(&pdev->dev, sizeof(*priv)); 349 - if (!master) 348 + host = spi_alloc_host(&pdev->dev, sizeof(*priv)); 349 + if (!host) 350 350 return -ENOMEM; 351 351 352 - platform_set_drvdata(pdev, master); 352 + platform_set_drvdata(pdev, host); 353 353 354 - priv = spi_master_get_devdata(master); 355 - priv->master = master; 354 + priv = spi_controller_get_devdata(host); 355 + priv->host = host; 356 356 priv->is_save_param = false; 357 357 358 358 priv->base = devm_platform_ioremap_resource(pdev, 0); 359 359 if (IS_ERR(priv->base)) { 360 360 ret = PTR_ERR(priv->base); 361 - goto out_master_put; 361 + goto out_host_put; 362 362 } 363 363 364 364 priv->clk = devm_clk_get(&pdev->dev, NULL); 365 365 if (IS_ERR(priv->clk)) { 366 366 dev_err(&pdev->dev, "failed to get clock\n"); 367 367 ret = PTR_ERR(priv->clk); 368 - goto out_master_put; 368 + goto out_host_put; 369 369 } 370 370 371 371 ret = clk_prepare_enable(priv->clk); 372 372 if (ret) 373 - goto out_master_put; 373 + goto out_host_put; 374 374 375 375 irq = platform_get_irq(pdev, 0); 376 376 if (irq < 0) { ··· 398 398 399 399 clk_hz = clk_get_rate(priv->clk); 400 400 401 - master->max_speed_hz = DIV_ROUND_UP(clk_hz, NPCM_PSPI_MIN_CLK_DIVIDER); 402 - master->min_speed_hz = DIV_ROUND_UP(clk_hz, NPCM_PSPI_MAX_CLK_DIVIDER); 403 - master->mode_bits = SPI_CPHA | SPI_CPOL; 404 - master->dev.of_node = pdev->dev.of_node; 405 - master->bus_num = -1; 406 - master->bits_per_word_mask = SPI_BPW_MASK(8) | SPI_BPW_MASK(16); 407 - master->transfer_one = npcm_pspi_transfer_one; 408 - master->prepare_transfer_hardware = 401 + host->max_speed_hz = DIV_ROUND_UP(clk_hz, NPCM_PSPI_MIN_CLK_DIVIDER); 402 + host->min_speed_hz = DIV_ROUND_UP(clk_hz, NPCM_PSPI_MAX_CLK_DIVIDER); 403 + host->mode_bits = SPI_CPHA | SPI_CPOL; 404 + host->dev.of_node = pdev->dev.of_node; 405 + host->bus_num = -1; 406 + host->bits_per_word_mask = SPI_BPW_MASK(8) | SPI_BPW_MASK(16); 407 + host->transfer_one = npcm_pspi_transfer_one; 408 + host->prepare_transfer_hardware = 409 409 npcm_pspi_prepare_transfer_hardware; 410 - master->unprepare_transfer_hardware = 410 + host->unprepare_transfer_hardware = 411 411 npcm_pspi_unprepare_transfer_hardware; 412 - master->use_gpio_descriptors = true; 412 + host->use_gpio_descriptors = true; 413 413 414 414 /* set to default clock rate */ 415 415 npcm_pspi_set_baudrate(priv, NPCM_PSPI_DEFAULT_CLK); 416 416 417 - ret = devm_spi_register_master(&pdev->dev, master); 417 + ret = devm_spi_register_controller(&pdev->dev, host); 418 418 if (ret) 419 419 goto out_disable_clk; 420 420 421 - pr_info("NPCM Peripheral SPI %d probed\n", master->bus_num); 421 + pr_info("NPCM Peripheral SPI %d probed\n", host->bus_num); 422 422 423 423 return 0; 424 424 425 425 out_disable_clk: 426 426 clk_disable_unprepare(priv->clk); 427 427 428 - out_master_put: 429 - spi_master_put(master); 428 + out_host_put: 429 + spi_controller_put(host); 430 430 return ret; 431 431 } 432 432 433 433 static void npcm_pspi_remove(struct platform_device *pdev) 434 434 { 435 - struct spi_master *master = platform_get_drvdata(pdev); 436 - struct npcm_pspi *priv = spi_master_get_devdata(master); 435 + struct spi_controller *host = platform_get_drvdata(pdev); 436 + struct npcm_pspi *priv = spi_controller_get_devdata(host); 437 437 438 438 npcm_pspi_reset_hw(priv); 439 439 clk_disable_unprepare(priv->clk);
+16 -16
drivers/spi/spi-nxp-fspi.c
··· 451 451 static bool nxp_fspi_supports_op(struct spi_mem *mem, 452 452 const struct spi_mem_op *op) 453 453 { 454 - struct nxp_fspi *f = spi_controller_get_devdata(mem->spi->master); 454 + struct nxp_fspi *f = spi_controller_get_devdata(mem->spi->controller); 455 455 int ret; 456 456 457 457 ret = nxp_fspi_check_buswidth(f, op->cmd.buswidth); ··· 520 520 } 521 521 522 522 /* 523 - * If the slave device content being changed by Write/Erase, need to 523 + * If the target device content being changed by Write/Erase, need to 524 524 * invalidate the AHB buffer. This can be achieved by doing the reset 525 525 * of controller after setting MCR0[SWRESET] bit. 526 526 */ ··· 661 661 662 662 /* 663 663 * In FlexSPI controller, flash access is based on value of FSPI_FLSHXXCR0 664 - * register and start base address of the slave device. 664 + * register and start base address of the target device. 665 665 * 666 666 * (Higher address) 667 667 * -------- <-- FLSHB2CR0 ··· 680 680 * 681 681 * 682 682 * Start base address defines the starting address range for given CS and 683 - * FSPI_FLSHXXCR0 defines the size of the slave device connected at given CS. 683 + * FSPI_FLSHXXCR0 defines the size of the target device connected at given CS. 684 684 * 685 685 * But, different targets are having different combinations of number of CS, 686 686 * some targets only have single CS or two CS covering controller's full 687 687 * memory mapped space area. 688 688 * Thus, implementation is being done as independent of the size and number 689 - * of the connected slave device. 689 + * of the connected target device. 690 690 * Assign controller memory mapped space size as the size to the connected 691 - * slave device. 691 + * target device. 692 692 * Mark FLSHxxCR0 as zero initially and then assign value only to the selected 693 693 * chip-select Flash configuration register. 694 694 * ··· 704 704 uint64_t size_kb; 705 705 706 706 /* 707 - * Return, if previously selected slave device is same as current 708 - * requested slave device. 707 + * Return, if previously selected target device is same as current 708 + * requested target device. 709 709 */ 710 710 if (f->selected == spi_get_chipselect(spi, 0)) 711 711 return; ··· 722 722 fspi_writel(f, size_kb, f->iobase + FSPI_FLSHA1CR0 + 723 723 4 * spi_get_chipselect(spi, 0)); 724 724 725 - dev_dbg(f->dev, "Slave device [CS:%x] selected\n", spi_get_chipselect(spi, 0)); 725 + dev_dbg(f->dev, "Target device [CS:%x] selected\n", spi_get_chipselect(spi, 0)); 726 726 727 727 nxp_fspi_clk_disable_unprep(f); 728 728 ··· 759 759 f->memmap_len = len > NXP_FSPI_MIN_IOMAP ? 760 760 len : NXP_FSPI_MIN_IOMAP; 761 761 762 - f->ahb_addr = ioremap_wc(f->memmap_phy + f->memmap_start, 762 + f->ahb_addr = ioremap(f->memmap_phy + f->memmap_start, 763 763 f->memmap_len); 764 764 765 765 if (!f->ahb_addr) { ··· 912 912 913 913 static int nxp_fspi_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) 914 914 { 915 - struct nxp_fspi *f = spi_controller_get_devdata(mem->spi->master); 915 + struct nxp_fspi *f = spi_controller_get_devdata(mem->spi->controller); 916 916 int err = 0; 917 917 918 918 mutex_lock(&f->lock); ··· 952 952 953 953 static int nxp_fspi_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op) 954 954 { 955 - struct nxp_fspi *f = spi_controller_get_devdata(mem->spi->master); 955 + struct nxp_fspi *f = spi_controller_get_devdata(mem->spi->controller); 956 956 957 957 if (op->data.dir == SPI_MEM_DATA_OUT) { 958 958 if (op->data.nbytes > f->devtype_data->txfifo) ··· 1049 1049 fspi_writel(f, FSPI_MCR0_MDIS, base + FSPI_MCR0); 1050 1050 1051 1051 /* 1052 - * Config the DLL register to default value, enable the slave clock delay 1052 + * Config the DLL register to default value, enable the target clock delay 1053 1053 * line delay cell override mode, and use 1 fixed delay cell in DLL delay 1054 1054 * chain, this is the suggested setting when clock rate < 100MHz. 1055 1055 */ ··· 1062 1062 base + FSPI_MCR0); 1063 1063 1064 1064 /* 1065 - * Disable same device enable bit and configure all slave devices 1065 + * Disable same device enable bit and configure all target devices 1066 1066 * independently. 1067 1067 */ 1068 1068 reg = fspi_readl(f, f->iobase + FSPI_MCR2); ··· 1107 1107 1108 1108 static const char *nxp_fspi_get_name(struct spi_mem *mem) 1109 1109 { 1110 - struct nxp_fspi *f = spi_controller_get_devdata(mem->spi->master); 1110 + struct nxp_fspi *f = spi_controller_get_devdata(mem->spi->controller); 1111 1111 struct device *dev = &mem->spi->dev; 1112 1112 const char *name; 1113 1113 ··· 1144 1144 int ret; 1145 1145 u32 reg; 1146 1146 1147 - ctlr = spi_alloc_master(&pdev->dev, sizeof(*f)); 1147 + ctlr = spi_alloc_host(&pdev->dev, sizeof(*f)); 1148 1148 if (!ctlr) 1149 1149 return -ENOMEM; 1150 1150
+15 -15
drivers/spi/spi-oc-tiny.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-only 2 2 /* 3 - * OpenCores tiny SPI master driver 3 + * OpenCores tiny SPI host driver 4 4 * 5 5 * https://opencores.org/project,tiny_spi 6 6 * ··· 53 53 54 54 static inline struct tiny_spi *tiny_spi_to_hw(struct spi_device *sdev) 55 55 { 56 - return spi_master_get_devdata(sdev->master); 56 + return spi_controller_get_devdata(sdev->controller); 57 57 } 58 58 59 59 static unsigned int tiny_spi_baud(struct spi_device *spi, unsigned int hz) ··· 212 212 { 213 213 struct tiny_spi_platform_data *platp = dev_get_platdata(&pdev->dev); 214 214 struct tiny_spi *hw; 215 - struct spi_master *master; 215 + struct spi_controller *host; 216 216 int err = -ENODEV; 217 217 218 - master = spi_alloc_master(&pdev->dev, sizeof(struct tiny_spi)); 219 - if (!master) 218 + host = spi_alloc_host(&pdev->dev, sizeof(struct tiny_spi)); 219 + if (!host) 220 220 return err; 221 221 222 - /* setup the master state. */ 223 - master->bus_num = pdev->id; 224 - master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; 225 - master->setup = tiny_spi_setup; 226 - master->use_gpio_descriptors = true; 222 + /* setup the host state. */ 223 + host->bus_num = pdev->id; 224 + host->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; 225 + host->setup = tiny_spi_setup; 226 + host->use_gpio_descriptors = true; 227 227 228 - hw = spi_master_get_devdata(master); 228 + hw = spi_controller_get_devdata(host); 229 229 platform_set_drvdata(pdev, hw); 230 230 231 231 /* setup the state for the bitbang driver */ 232 - hw->bitbang.master = master; 232 + hw->bitbang.master = host; 233 233 hw->bitbang.setup_transfer = tiny_spi_setup_transfer; 234 234 hw->bitbang.txrx_bufs = tiny_spi_txrx_bufs; 235 235 ··· 267 267 return 0; 268 268 269 269 exit: 270 - spi_master_put(master); 270 + spi_controller_put(host); 271 271 return err; 272 272 } 273 273 274 274 static void tiny_spi_remove(struct platform_device *pdev) 275 275 { 276 276 struct tiny_spi *hw = platform_get_drvdata(pdev); 277 - struct spi_master *master = hw->bitbang.master; 277 + struct spi_controller *host = hw->bitbang.master; 278 278 279 279 spi_bitbang_stop(&hw->bitbang); 280 - spi_master_put(master); 280 + spi_controller_put(host); 281 281 } 282 282 283 283 #ifdef CONFIG_OF
+16 -16
drivers/spi/spi-omap-uwire.c
··· 315 315 int div2; 316 316 int status; 317 317 318 - uwire = spi_master_get_devdata(spi->master); 318 + uwire = spi_controller_get_devdata(spi->controller); 319 319 320 320 /* mode 0..3, clock inverted separately; 321 321 * standard nCS signaling; ··· 448 448 { 449 449 uwire_write_reg(UWIRE_SR3, 0); 450 450 clk_disable_unprepare(uwire->ck); 451 - spi_master_put(uwire->bitbang.master); 451 + spi_controller_put(uwire->bitbang.master); 452 452 } 453 453 454 454 static int uwire_probe(struct platform_device *pdev) 455 455 { 456 - struct spi_master *master; 456 + struct spi_controller *host; 457 457 struct uwire_spi *uwire; 458 458 int status; 459 459 460 - master = spi_alloc_master(&pdev->dev, sizeof(*uwire)); 461 - if (!master) 460 + host = spi_alloc_host(&pdev->dev, sizeof(*uwire)); 461 + if (!host) 462 462 return -ENODEV; 463 463 464 - uwire = spi_master_get_devdata(master); 464 + uwire = spi_controller_get_devdata(host); 465 465 466 466 uwire_base = devm_ioremap(&pdev->dev, UWIRE_BASE_PHYS, UWIRE_IO_SIZE); 467 467 if (!uwire_base) { 468 468 dev_dbg(&pdev->dev, "can't ioremap UWIRE\n"); 469 - spi_master_put(master); 469 + spi_controller_put(host); 470 470 return -ENOMEM; 471 471 } 472 472 ··· 476 476 if (IS_ERR(uwire->ck)) { 477 477 status = PTR_ERR(uwire->ck); 478 478 dev_dbg(&pdev->dev, "no functional clock?\n"); 479 - spi_master_put(master); 479 + spi_controller_put(host); 480 480 return status; 481 481 } 482 482 clk_prepare_enable(uwire->ck); ··· 484 484 uwire_write_reg(UWIRE_SR3, 1); 485 485 486 486 /* the spi->mode bits understood by this driver: */ 487 - master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; 488 - master->bits_per_word_mask = SPI_BPW_RANGE_MASK(1, 16); 489 - master->flags = SPI_CONTROLLER_HALF_DUPLEX; 487 + host->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; 488 + host->bits_per_word_mask = SPI_BPW_RANGE_MASK(1, 16); 489 + host->flags = SPI_CONTROLLER_HALF_DUPLEX; 490 490 491 - master->bus_num = 2; /* "official" */ 492 - master->num_chipselect = 4; 493 - master->setup = uwire_setup; 494 - master->cleanup = uwire_cleanup; 491 + host->bus_num = 2; /* "official" */ 492 + host->num_chipselect = 4; 493 + host->setup = uwire_setup; 494 + host->cleanup = uwire_cleanup; 495 495 496 - uwire->bitbang.master = master; 496 + uwire->bitbang.master = host; 497 497 uwire->bitbang.chipselect = uwire_chipselect; 498 498 uwire->bitbang.setup_transfer = uwire_setup_transfer; 499 499 uwire->bitbang.txrx_bufs = uwire_txrx;
+263 -133
drivers/spi/spi-omap2-mcspi.c
··· 53 53 54 54 /* per-register bitmasks: */ 55 55 #define OMAP2_MCSPI_IRQSTATUS_EOW BIT(17) 56 + #define OMAP2_MCSPI_IRQSTATUS_TX0_EMPTY BIT(0) 57 + #define OMAP2_MCSPI_IRQSTATUS_RX0_FULL BIT(2) 56 58 57 59 #define OMAP2_MCSPI_MODULCTRL_SINGLE BIT(0) 58 60 #define OMAP2_MCSPI_MODULCTRL_MS BIT(2) ··· 119 117 120 118 struct omap2_mcspi { 121 119 struct completion txdone; 122 - struct spi_master *master; 120 + struct spi_controller *ctlr; 123 121 /* Virtual base address of the controller */ 124 122 void __iomem *base; 125 123 unsigned long phys; ··· 127 125 struct omap2_mcspi_dma *dma_channels; 128 126 struct device *dev; 129 127 struct omap2_mcspi_regs ctx; 128 + struct clk *ref_clk; 130 129 int fifo_depth; 131 - bool slave_aborted; 130 + bool target_aborted; 132 131 unsigned int pin_dir:1; 133 132 size_t max_xfer_len; 133 + u32 ref_clk_hz; 134 134 }; 135 135 136 136 struct omap2_mcspi_cs { ··· 145 141 u32 chconf0, chctrl0; 146 142 }; 147 143 148 - static inline void mcspi_write_reg(struct spi_master *master, 144 + static inline void mcspi_write_reg(struct spi_controller *ctlr, 149 145 int idx, u32 val) 150 146 { 151 - struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 147 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(ctlr); 152 148 153 149 writel_relaxed(val, mcspi->base + idx); 154 150 } 155 151 156 - static inline u32 mcspi_read_reg(struct spi_master *master, int idx) 152 + static inline u32 mcspi_read_reg(struct spi_controller *ctlr, int idx) 157 153 { 158 - struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 154 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(ctlr); 159 155 160 156 return readl_relaxed(mcspi->base + idx); 161 157 } ··· 239 235 240 236 static void omap2_mcspi_set_cs(struct spi_device *spi, bool enable) 241 237 { 242 - struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); 238 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(spi->controller); 243 239 u32 l; 244 240 245 241 /* The controller handles the inverted chip selects ··· 270 266 } 271 267 } 272 268 273 - static void omap2_mcspi_set_mode(struct spi_master *master) 269 + static void omap2_mcspi_set_mode(struct spi_controller *ctlr) 274 270 { 275 - struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 271 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(ctlr); 276 272 struct omap2_mcspi_regs *ctx = &mcspi->ctx; 277 273 u32 l; 278 274 279 275 /* 280 - * Choose master or slave mode 276 + * Choose host or target mode 281 277 */ 282 - l = mcspi_read_reg(master, OMAP2_MCSPI_MODULCTRL); 278 + l = mcspi_read_reg(ctlr, OMAP2_MCSPI_MODULCTRL); 283 279 l &= ~(OMAP2_MCSPI_MODULCTRL_STEST); 284 - if (spi_controller_is_slave(master)) { 280 + if (spi_controller_is_target(ctlr)) { 285 281 l |= (OMAP2_MCSPI_MODULCTRL_MS); 286 282 } else { 287 283 l &= ~(OMAP2_MCSPI_MODULCTRL_MS); 288 284 l |= OMAP2_MCSPI_MODULCTRL_SINGLE; 289 285 } 290 - mcspi_write_reg(master, OMAP2_MCSPI_MODULCTRL, l); 286 + mcspi_write_reg(ctlr, OMAP2_MCSPI_MODULCTRL, l); 291 287 292 288 ctx->modulctrl = l; 293 289 } 294 290 295 291 static void omap2_mcspi_set_fifo(const struct spi_device *spi, 296 - struct spi_transfer *t, int enable) 292 + struct spi_transfer *t, int enable, int dma_enabled) 297 293 { 298 - struct spi_master *master = spi->master; 294 + struct spi_controller *ctlr = spi->controller; 299 295 struct omap2_mcspi_cs *cs = spi->controller_state; 300 296 struct omap2_mcspi *mcspi; 301 297 unsigned int wcnt; 302 298 int max_fifo_depth, bytes_per_word; 303 299 u32 chconf, xferlevel; 304 300 305 - mcspi = spi_master_get_devdata(master); 301 + mcspi = spi_controller_get_devdata(ctlr); 306 302 307 303 chconf = mcspi_cached_chconf0(spi); 308 304 if (enable) { ··· 314 310 max_fifo_depth = OMAP2_MCSPI_MAX_FIFODEPTH / 2; 315 311 else 316 312 max_fifo_depth = OMAP2_MCSPI_MAX_FIFODEPTH; 317 - 318 - wcnt = t->len / bytes_per_word; 313 + if (dma_enabled) 314 + wcnt = t->len / bytes_per_word; 315 + else 316 + wcnt = 0; 319 317 if (wcnt > OMAP2_MCSPI_MAX_FIFOWCNT) 320 318 goto disable_fifo; 321 319 322 320 xferlevel = wcnt << 16; 323 321 if (t->rx_buf != NULL) { 324 322 chconf |= OMAP2_MCSPI_CHCONF_FFER; 325 - xferlevel |= (bytes_per_word - 1) << 8; 323 + if (dma_enabled) 324 + xferlevel |= (bytes_per_word - 1) << 8; 325 + else 326 + xferlevel |= (max_fifo_depth - 1) << 8; 326 327 } 327 328 328 329 if (t->tx_buf != NULL) { 329 330 chconf |= OMAP2_MCSPI_CHCONF_FFET; 330 - xferlevel |= bytes_per_word - 1; 331 + if (dma_enabled) 332 + xferlevel |= bytes_per_word - 1; 333 + else 334 + xferlevel |= (max_fifo_depth - 1); 331 335 } 332 336 333 - mcspi_write_reg(master, OMAP2_MCSPI_XFERLEVEL, xferlevel); 337 + mcspi_write_reg(ctlr, OMAP2_MCSPI_XFERLEVEL, xferlevel); 334 338 mcspi_write_chconf0(spi, chconf); 335 339 mcspi->fifo_depth = max_fifo_depth; 336 340 ··· 376 364 static int mcspi_wait_for_completion(struct omap2_mcspi *mcspi, 377 365 struct completion *x) 378 366 { 379 - if (spi_controller_is_slave(mcspi->master)) { 367 + if (spi_controller_is_target(mcspi->ctlr)) { 380 368 if (wait_for_completion_interruptible(x) || 381 - mcspi->slave_aborted) 369 + mcspi->target_aborted) 382 370 return -EINTR; 383 371 } else { 384 372 wait_for_completion(x); ··· 390 378 static void omap2_mcspi_rx_callback(void *data) 391 379 { 392 380 struct spi_device *spi = data; 393 - struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); 381 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(spi->controller); 394 382 struct omap2_mcspi_dma *mcspi_dma = &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; 395 383 396 384 /* We must disable the DMA RX request */ ··· 402 390 static void omap2_mcspi_tx_callback(void *data) 403 391 { 404 392 struct spi_device *spi = data; 405 - struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); 393 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(spi->controller); 406 394 struct omap2_mcspi_dma *mcspi_dma = &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; 407 395 408 396 /* We must disable the DMA TX request */ ··· 419 407 struct omap2_mcspi_dma *mcspi_dma; 420 408 struct dma_async_tx_descriptor *tx; 421 409 422 - mcspi = spi_master_get_devdata(spi->master); 410 + mcspi = spi_controller_get_devdata(spi->controller); 423 411 mcspi_dma = &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; 424 412 425 413 dmaengine_slave_config(mcspi_dma->dma_tx, &cfg); ··· 457 445 void __iomem *chstat_reg = cs->base + OMAP2_MCSPI_CHSTAT0; 458 446 struct dma_async_tx_descriptor *tx; 459 447 460 - mcspi = spi_master_get_devdata(spi->master); 448 + mcspi = spi_controller_get_devdata(spi->controller); 461 449 mcspi_dma = &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; 462 450 count = xfer->len; 463 451 464 452 /* 465 453 * In the "End-of-Transfer Procedure" section for DMA RX in OMAP35x TRM 466 - * it mentions reducing DMA transfer length by one element in master 454 + * it mentions reducing DMA transfer length by one element in host 467 455 * normal mode. 468 456 */ 469 457 if (mcspi->fifo_depth == 0) ··· 526 514 omap2_mcspi_set_dma_req(spi, 1, 1); 527 515 528 516 ret = mcspi_wait_for_completion(mcspi, &mcspi_dma->dma_rx_completion); 529 - if (ret || mcspi->slave_aborted) { 517 + if (ret || mcspi->target_aborted) { 530 518 dmaengine_terminate_sync(mcspi_dma->dma_rx); 531 519 omap2_mcspi_set_dma_req(spi, 1, 0); 532 520 return 0; ··· 602 590 void __iomem *irqstat_reg; 603 591 int wait_res; 604 592 605 - mcspi = spi_master_get_devdata(spi->master); 593 + mcspi = spi_controller_get_devdata(spi->controller); 606 594 mcspi_dma = &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; 607 595 608 596 if (cs->word_len <= 8) { ··· 629 617 rx = xfer->rx_buf; 630 618 tx = xfer->tx_buf; 631 619 632 - mcspi->slave_aborted = false; 620 + mcspi->target_aborted = false; 633 621 reinit_completion(&mcspi_dma->dma_tx_completion); 634 622 reinit_completion(&mcspi_dma->dma_rx_completion); 635 623 reinit_completion(&mcspi->txdone); 636 624 if (tx) { 637 - /* Enable EOW IRQ to know end of tx in slave mode */ 638 - if (spi_controller_is_slave(spi->master)) 639 - mcspi_write_reg(spi->master, 625 + /* Enable EOW IRQ to know end of tx in target mode */ 626 + if (spi_controller_is_target(spi->controller)) 627 + mcspi_write_reg(spi->controller, 640 628 OMAP2_MCSPI_IRQENABLE, 641 629 OMAP2_MCSPI_IRQSTATUS_EOW); 642 630 omap2_mcspi_tx_dma(spi, xfer, cfg); ··· 649 637 int ret; 650 638 651 639 ret = mcspi_wait_for_completion(mcspi, &mcspi_dma->dma_tx_completion); 652 - if (ret || mcspi->slave_aborted) { 640 + if (ret || mcspi->target_aborted) { 653 641 dmaengine_terminate_sync(mcspi_dma->dma_tx); 654 642 omap2_mcspi_set_dma_req(spi, 0, 0); 655 643 return 0; 656 644 } 657 645 658 - if (spi_controller_is_slave(mcspi->master)) { 646 + if (spi_controller_is_target(mcspi->ctlr)) { 659 647 ret = mcspi_wait_for_completion(mcspi, &mcspi->txdone); 660 - if (ret || mcspi->slave_aborted) 648 + if (ret || mcspi->target_aborted) 661 649 return 0; 662 650 } 663 651 ··· 668 656 OMAP2_MCSPI_IRQSTATUS_EOW) < 0) 669 657 dev_err(&spi->dev, "EOW timed out\n"); 670 658 671 - mcspi_write_reg(mcspi->master, OMAP2_MCSPI_IRQSTATUS, 659 + mcspi_write_reg(mcspi->ctlr, OMAP2_MCSPI_IRQSTATUS, 672 660 OMAP2_MCSPI_IRQSTATUS_EOW); 673 661 } 674 662 ··· 892 880 return count - c; 893 881 } 894 882 895 - static u32 omap2_mcspi_calc_divisor(u32 speed_hz) 883 + static unsigned 884 + omap2_mcspi_txrx_piofifo(struct spi_device *spi, struct spi_transfer *xfer) 885 + { 886 + struct omap2_mcspi_cs *cs = spi->controller_state; 887 + struct omap2_mcspi *mcspi; 888 + unsigned int count, c; 889 + unsigned int iter, cwc; 890 + int last_request; 891 + void __iomem *base = cs->base; 892 + void __iomem *tx_reg; 893 + void __iomem *rx_reg; 894 + void __iomem *chstat_reg; 895 + void __iomem *irqstat_reg; 896 + int word_len, bytes_per_word; 897 + u8 *rx; 898 + const u8 *tx; 899 + 900 + mcspi = spi_controller_get_devdata(spi->controller); 901 + count = xfer->len; 902 + c = count; 903 + word_len = cs->word_len; 904 + bytes_per_word = mcspi_bytes_per_word(word_len); 905 + 906 + /* 907 + * We store the pre-calculated register addresses on stack to speed 908 + * up the transfer loop. 909 + */ 910 + tx_reg = base + OMAP2_MCSPI_TX0; 911 + rx_reg = base + OMAP2_MCSPI_RX0; 912 + chstat_reg = base + OMAP2_MCSPI_CHSTAT0; 913 + irqstat_reg = base + OMAP2_MCSPI_IRQSTATUS; 914 + 915 + if (c < (word_len >> 3)) 916 + return 0; 917 + 918 + rx = xfer->rx_buf; 919 + tx = xfer->tx_buf; 920 + 921 + do { 922 + /* calculate number of words in current iteration */ 923 + cwc = min((unsigned int)mcspi->fifo_depth / bytes_per_word, 924 + c / bytes_per_word); 925 + last_request = cwc != (mcspi->fifo_depth / bytes_per_word); 926 + if (tx) { 927 + if (mcspi_wait_for_reg_bit(irqstat_reg, 928 + OMAP2_MCSPI_IRQSTATUS_TX0_EMPTY) < 0) { 929 + dev_err(&spi->dev, "TX Empty timed out\n"); 930 + goto out; 931 + } 932 + writel_relaxed(OMAP2_MCSPI_IRQSTATUS_TX0_EMPTY, irqstat_reg); 933 + 934 + for (iter = 0; iter < cwc; iter++, tx += bytes_per_word) { 935 + if (bytes_per_word == 1) 936 + writel_relaxed(*tx, tx_reg); 937 + else if (bytes_per_word == 2) 938 + writel_relaxed(*((u16 *)tx), tx_reg); 939 + else if (bytes_per_word == 4) 940 + writel_relaxed(*((u32 *)tx), tx_reg); 941 + } 942 + } 943 + 944 + if (rx) { 945 + if (!last_request && 946 + mcspi_wait_for_reg_bit(irqstat_reg, 947 + OMAP2_MCSPI_IRQSTATUS_RX0_FULL) < 0) { 948 + dev_err(&spi->dev, "RX_FULL timed out\n"); 949 + goto out; 950 + } 951 + writel_relaxed(OMAP2_MCSPI_IRQSTATUS_RX0_FULL, irqstat_reg); 952 + 953 + for (iter = 0; iter < cwc; iter++, rx += bytes_per_word) { 954 + if (last_request && 955 + mcspi_wait_for_reg_bit(chstat_reg, 956 + OMAP2_MCSPI_CHSTAT_RXS) < 0) { 957 + dev_err(&spi->dev, "RXS timed out\n"); 958 + goto out; 959 + } 960 + if (bytes_per_word == 1) 961 + *rx = readl_relaxed(rx_reg); 962 + else if (bytes_per_word == 2) 963 + *((u16 *)rx) = readl_relaxed(rx_reg); 964 + else if (bytes_per_word == 4) 965 + *((u32 *)rx) = readl_relaxed(rx_reg); 966 + } 967 + } 968 + 969 + if (last_request) { 970 + if (mcspi_wait_for_reg_bit(chstat_reg, 971 + OMAP2_MCSPI_CHSTAT_EOT) < 0) { 972 + dev_err(&spi->dev, "EOT timed out\n"); 973 + goto out; 974 + } 975 + if (mcspi_wait_for_reg_bit(chstat_reg, 976 + OMAP2_MCSPI_CHSTAT_TXFFE) < 0) { 977 + dev_err(&spi->dev, "TXFFE timed out\n"); 978 + goto out; 979 + } 980 + omap2_mcspi_set_enable(spi, 0); 981 + } 982 + c -= cwc * bytes_per_word; 983 + } while (c >= bytes_per_word); 984 + 985 + out: 986 + omap2_mcspi_set_enable(spi, 1); 987 + return count - c; 988 + } 989 + 990 + static u32 omap2_mcspi_calc_divisor(u32 speed_hz, u32 ref_clk_hz) 896 991 { 897 992 u32 div; 898 993 899 994 for (div = 0; div < 15; div++) 900 - if (speed_hz >= (OMAP2_MCSPI_MAX_FREQ >> div)) 995 + if (speed_hz >= (ref_clk_hz >> div)) 901 996 return div; 902 997 903 998 return 15; ··· 1016 897 { 1017 898 struct omap2_mcspi_cs *cs = spi->controller_state; 1018 899 struct omap2_mcspi *mcspi; 1019 - u32 l = 0, clkd = 0, div, extclk = 0, clkg = 0; 900 + u32 ref_clk_hz, l = 0, clkd = 0, div, extclk = 0, clkg = 0; 1020 901 u8 word_len = spi->bits_per_word; 1021 902 u32 speed_hz = spi->max_speed_hz; 1022 903 1023 - mcspi = spi_master_get_devdata(spi->master); 904 + mcspi = spi_controller_get_devdata(spi->controller); 1024 905 1025 906 if (t != NULL && t->bits_per_word) 1026 907 word_len = t->bits_per_word; ··· 1030 911 if (t && t->speed_hz) 1031 912 speed_hz = t->speed_hz; 1032 913 1033 - speed_hz = min_t(u32, speed_hz, OMAP2_MCSPI_MAX_FREQ); 1034 - if (speed_hz < (OMAP2_MCSPI_MAX_FREQ / OMAP2_MCSPI_MAX_DIVIDER)) { 1035 - clkd = omap2_mcspi_calc_divisor(speed_hz); 1036 - speed_hz = OMAP2_MCSPI_MAX_FREQ >> clkd; 914 + ref_clk_hz = mcspi->ref_clk_hz; 915 + speed_hz = min_t(u32, speed_hz, ref_clk_hz); 916 + if (speed_hz < (ref_clk_hz / OMAP2_MCSPI_MAX_DIVIDER)) { 917 + clkd = omap2_mcspi_calc_divisor(speed_hz, ref_clk_hz); 918 + speed_hz = ref_clk_hz >> clkd; 1037 919 clkg = 0; 1038 920 } else { 1039 - div = (OMAP2_MCSPI_MAX_FREQ + speed_hz - 1) / speed_hz; 1040 - speed_hz = OMAP2_MCSPI_MAX_FREQ / div; 921 + div = (ref_clk_hz + speed_hz - 1) / speed_hz; 922 + speed_hz = ref_clk_hz / div; 1041 923 clkd = (div - 1) & 0xf; 1042 924 extclk = (div - 1) >> 4; 1043 925 clkg = OMAP2_MCSPI_CHCONF_CLKG; ··· 1046 926 1047 927 l = mcspi_cached_chconf0(spi); 1048 928 1049 - /* standard 4-wire master mode: SCK, MOSI/out, MISO/in, nCS 929 + /* standard 4-wire host mode: SCK, MOSI/out, MISO/in, nCS 1050 930 * REVISIT: this controller could support SPI_3WIRE mode. 1051 931 */ 1052 932 if (mcspi->pin_dir == MCSPI_PINDIR_D0_IN_D1_OUT) { ··· 1137 1017 return ret; 1138 1018 } 1139 1019 1140 - static void omap2_mcspi_release_dma(struct spi_master *master) 1020 + static void omap2_mcspi_release_dma(struct spi_controller *ctlr) 1141 1021 { 1142 - struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 1022 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(ctlr); 1143 1023 struct omap2_mcspi_dma *mcspi_dma; 1144 1024 int i; 1145 1025 1146 - for (i = 0; i < master->num_chipselect; i++) { 1026 + for (i = 0; i < ctlr->num_chipselect; i++) { 1147 1027 mcspi_dma = &mcspi->dma_channels[i]; 1148 1028 1149 1029 if (mcspi_dma->dma_rx) { ··· 1174 1054 { 1175 1055 bool initial_setup = false; 1176 1056 int ret; 1177 - struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); 1057 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(spi->controller); 1178 1058 struct omap2_mcspi_regs *ctx = &mcspi->ctx; 1179 1059 struct omap2_mcspi_cs *cs = spi->controller_state; 1180 1060 ··· 1216 1096 struct omap2_mcspi *mcspi = data; 1217 1097 u32 irqstat; 1218 1098 1219 - irqstat = mcspi_read_reg(mcspi->master, OMAP2_MCSPI_IRQSTATUS); 1099 + irqstat = mcspi_read_reg(mcspi->ctlr, OMAP2_MCSPI_IRQSTATUS); 1220 1100 if (!irqstat) 1221 1101 return IRQ_NONE; 1222 1102 1223 - /* Disable IRQ and wakeup slave xfer task */ 1224 - mcspi_write_reg(mcspi->master, OMAP2_MCSPI_IRQENABLE, 0); 1103 + /* Disable IRQ and wakeup target xfer task */ 1104 + mcspi_write_reg(mcspi->ctlr, OMAP2_MCSPI_IRQENABLE, 0); 1225 1105 if (irqstat & OMAP2_MCSPI_IRQSTATUS_EOW) 1226 1106 complete(&mcspi->txdone); 1227 1107 1228 1108 return IRQ_HANDLED; 1229 1109 } 1230 1110 1231 - static int omap2_mcspi_slave_abort(struct spi_master *master) 1111 + static int omap2_mcspi_target_abort(struct spi_controller *ctlr) 1232 1112 { 1233 - struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 1113 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(ctlr); 1234 1114 struct omap2_mcspi_dma *mcspi_dma = mcspi->dma_channels; 1235 1115 1236 - mcspi->slave_aborted = true; 1116 + mcspi->target_aborted = true; 1237 1117 complete(&mcspi_dma->dma_rx_completion); 1238 1118 complete(&mcspi_dma->dma_tx_completion); 1239 1119 complete(&mcspi->txdone); ··· 1241 1121 return 0; 1242 1122 } 1243 1123 1244 - static int omap2_mcspi_transfer_one(struct spi_master *master, 1124 + static int omap2_mcspi_transfer_one(struct spi_controller *ctlr, 1245 1125 struct spi_device *spi, 1246 1126 struct spi_transfer *t) 1247 1127 { ··· 1249 1129 /* We only enable one channel at a time -- the one whose message is 1250 1130 * -- although this controller would gladly 1251 1131 * arbitrate among multiple channels. This corresponds to "single 1252 - * channel" master mode. As a side effect, we need to manage the 1132 + * channel" host mode. As a side effect, we need to manage the 1253 1133 * chipselect with the FORCE bit ... CS != channel enable. 1254 1134 */ 1255 1135 ··· 1261 1141 int status = 0; 1262 1142 u32 chconf; 1263 1143 1264 - mcspi = spi_master_get_devdata(master); 1144 + mcspi = spi_controller_get_devdata(ctlr); 1265 1145 mcspi_dma = mcspi->dma_channels + spi_get_chipselect(spi, 0); 1266 1146 cs = spi->controller_state; 1267 1147 cd = spi->controller_data; 1268 1148 1269 1149 /* 1270 - * The slave driver could have changed spi->mode in which case 1150 + * The target driver could have changed spi->mode in which case 1271 1151 * it will be different from cs->mode (the current hardware setup). 1272 1152 * If so, set par_override (even though its not a parity issue) so 1273 1153 * omap2_mcspi_setup_transfer will be called to configure the hardware ··· 1295 1175 if (cd && cd->cs_per_word) { 1296 1176 chconf = mcspi->ctx.modulctrl; 1297 1177 chconf &= ~OMAP2_MCSPI_MODULCTRL_SINGLE; 1298 - mcspi_write_reg(master, OMAP2_MCSPI_MODULCTRL, chconf); 1178 + mcspi_write_reg(ctlr, OMAP2_MCSPI_MODULCTRL, chconf); 1299 1179 mcspi->ctx.modulctrl = 1300 1180 mcspi_read_cs_reg(spi, OMAP2_MCSPI_MODULCTRL); 1301 1181 } ··· 1321 1201 unsigned count; 1322 1202 1323 1203 if ((mcspi_dma->dma_rx && mcspi_dma->dma_tx) && 1324 - master->cur_msg_mapped && 1325 - master->can_dma(master, spi, t)) 1326 - omap2_mcspi_set_fifo(spi, t, 1); 1204 + ctlr->cur_msg_mapped && 1205 + ctlr->can_dma(ctlr, spi, t)) 1206 + omap2_mcspi_set_fifo(spi, t, 1, 1); 1207 + else if (t->len > OMAP2_MCSPI_MAX_FIFODEPTH) 1208 + omap2_mcspi_set_fifo(spi, t, 1, 0); 1327 1209 1328 1210 omap2_mcspi_set_enable(spi, 1); 1329 1211 ··· 1335 1213 + OMAP2_MCSPI_TX0); 1336 1214 1337 1215 if ((mcspi_dma->dma_rx && mcspi_dma->dma_tx) && 1338 - master->cur_msg_mapped && 1339 - master->can_dma(master, spi, t)) 1216 + ctlr->cur_msg_mapped && 1217 + ctlr->can_dma(ctlr, spi, t)) 1340 1218 count = omap2_mcspi_txrx_dma(spi, t); 1219 + else if (mcspi->fifo_depth > 0) 1220 + count = omap2_mcspi_txrx_piofifo(spi, t); 1341 1221 else 1342 1222 count = omap2_mcspi_txrx_pio(spi, t); 1343 1223 ··· 1352 1228 omap2_mcspi_set_enable(spi, 0); 1353 1229 1354 1230 if (mcspi->fifo_depth > 0) 1355 - omap2_mcspi_set_fifo(spi, t, 0); 1231 + omap2_mcspi_set_fifo(spi, t, 0, 0); 1356 1232 1357 1233 out: 1358 1234 /* Restore defaults if they were overriden */ ··· 1364 1240 if (cd && cd->cs_per_word) { 1365 1241 chconf = mcspi->ctx.modulctrl; 1366 1242 chconf |= OMAP2_MCSPI_MODULCTRL_SINGLE; 1367 - mcspi_write_reg(master, OMAP2_MCSPI_MODULCTRL, chconf); 1243 + mcspi_write_reg(ctlr, OMAP2_MCSPI_MODULCTRL, chconf); 1368 1244 mcspi->ctx.modulctrl = 1369 1245 mcspi_read_cs_reg(spi, OMAP2_MCSPI_MODULCTRL); 1370 1246 } ··· 1375 1251 omap2_mcspi_set_cs(spi, !(spi->mode & SPI_CS_HIGH)); 1376 1252 1377 1253 if (mcspi->fifo_depth > 0 && t) 1378 - omap2_mcspi_set_fifo(spi, t, 0); 1254 + omap2_mcspi_set_fifo(spi, t, 0, 0); 1379 1255 1380 1256 return status; 1381 1257 } 1382 1258 1383 - static int omap2_mcspi_prepare_message(struct spi_master *master, 1259 + static int omap2_mcspi_prepare_message(struct spi_controller *ctlr, 1384 1260 struct spi_message *msg) 1385 1261 { 1386 - struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 1262 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(ctlr); 1387 1263 struct omap2_mcspi_regs *ctx = &mcspi->ctx; 1388 1264 struct omap2_mcspi_cs *cs; 1389 1265 ··· 1407 1283 return 0; 1408 1284 } 1409 1285 1410 - static bool omap2_mcspi_can_dma(struct spi_master *master, 1286 + static bool omap2_mcspi_can_dma(struct spi_controller *ctlr, 1411 1287 struct spi_device *spi, 1412 1288 struct spi_transfer *xfer) 1413 1289 { 1414 - struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); 1290 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(spi->controller); 1415 1291 struct omap2_mcspi_dma *mcspi_dma = 1416 1292 &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; 1417 1293 1418 1294 if (!mcspi_dma->dma_rx || !mcspi_dma->dma_tx) 1419 1295 return false; 1420 1296 1421 - if (spi_controller_is_slave(master)) 1297 + if (spi_controller_is_target(ctlr)) 1422 1298 return true; 1423 1299 1424 - master->dma_rx = mcspi_dma->dma_rx; 1425 - master->dma_tx = mcspi_dma->dma_tx; 1300 + ctlr->dma_rx = mcspi_dma->dma_rx; 1301 + ctlr->dma_tx = mcspi_dma->dma_tx; 1426 1302 1427 1303 return (xfer->len >= DMA_MIN_BYTES); 1428 1304 } 1429 1305 1430 1306 static size_t omap2_mcspi_max_xfer_size(struct spi_device *spi) 1431 1307 { 1432 - struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); 1308 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(spi->controller); 1433 1309 struct omap2_mcspi_dma *mcspi_dma = 1434 1310 &mcspi->dma_channels[spi_get_chipselect(spi, 0)]; 1435 1311 ··· 1441 1317 1442 1318 static int omap2_mcspi_controller_setup(struct omap2_mcspi *mcspi) 1443 1319 { 1444 - struct spi_master *master = mcspi->master; 1320 + struct spi_controller *ctlr = mcspi->ctlr; 1445 1321 struct omap2_mcspi_regs *ctx = &mcspi->ctx; 1446 1322 int ret = 0; 1447 1323 ··· 1449 1325 if (ret < 0) 1450 1326 return ret; 1451 1327 1452 - mcspi_write_reg(master, OMAP2_MCSPI_WAKEUPENABLE, 1328 + mcspi_write_reg(ctlr, OMAP2_MCSPI_WAKEUPENABLE, 1453 1329 OMAP2_MCSPI_WAKEUPENABLE_WKEN); 1454 1330 ctx->wakeupenable = OMAP2_MCSPI_WAKEUPENABLE_WKEN; 1455 1331 1456 - omap2_mcspi_set_mode(master); 1332 + omap2_mcspi_set_mode(ctlr); 1457 1333 pm_runtime_mark_last_busy(mcspi->dev); 1458 1334 pm_runtime_put_autosuspend(mcspi->dev); 1459 1335 return 0; ··· 1477 1353 */ 1478 1354 static int omap_mcspi_runtime_resume(struct device *dev) 1479 1355 { 1480 - struct spi_master *master = dev_get_drvdata(dev); 1481 - struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 1356 + struct spi_controller *ctlr = dev_get_drvdata(dev); 1357 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(ctlr); 1482 1358 struct omap2_mcspi_regs *ctx = &mcspi->ctx; 1483 1359 struct omap2_mcspi_cs *cs; 1484 1360 int error; ··· 1488 1364 dev_warn(dev, "%s: failed to set pins: %i\n", __func__, error); 1489 1365 1490 1366 /* McSPI: context restore */ 1491 - mcspi_write_reg(master, OMAP2_MCSPI_MODULCTRL, ctx->modulctrl); 1492 - mcspi_write_reg(master, OMAP2_MCSPI_WAKEUPENABLE, ctx->wakeupenable); 1367 + mcspi_write_reg(ctlr, OMAP2_MCSPI_MODULCTRL, ctx->modulctrl); 1368 + mcspi_write_reg(ctlr, OMAP2_MCSPI_WAKEUPENABLE, ctx->wakeupenable); 1493 1369 1494 1370 list_for_each_entry(cs, &ctx->cs, node) { 1495 1371 /* ··· 1544 1420 1545 1421 static int omap2_mcspi_probe(struct platform_device *pdev) 1546 1422 { 1547 - struct spi_master *master; 1423 + struct spi_controller *ctlr; 1548 1424 const struct omap2_mcspi_platform_config *pdata; 1549 1425 struct omap2_mcspi *mcspi; 1550 1426 struct resource *r; ··· 1554 1430 const struct of_device_id *match; 1555 1431 1556 1432 if (of_property_read_bool(node, "spi-slave")) 1557 - master = spi_alloc_slave(&pdev->dev, sizeof(*mcspi)); 1433 + ctlr = spi_alloc_target(&pdev->dev, sizeof(*mcspi)); 1558 1434 else 1559 - master = spi_alloc_master(&pdev->dev, sizeof(*mcspi)); 1560 - if (!master) 1435 + ctlr = spi_alloc_host(&pdev->dev, sizeof(*mcspi)); 1436 + if (!ctlr) 1561 1437 return -ENOMEM; 1562 1438 1563 1439 /* the spi->mode bits understood by this driver: */ 1564 - master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; 1565 - master->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 32); 1566 - master->setup = omap2_mcspi_setup; 1567 - master->auto_runtime_pm = true; 1568 - master->prepare_message = omap2_mcspi_prepare_message; 1569 - master->can_dma = omap2_mcspi_can_dma; 1570 - master->transfer_one = omap2_mcspi_transfer_one; 1571 - master->set_cs = omap2_mcspi_set_cs; 1572 - master->cleanup = omap2_mcspi_cleanup; 1573 - master->slave_abort = omap2_mcspi_slave_abort; 1574 - master->dev.of_node = node; 1575 - master->max_speed_hz = OMAP2_MCSPI_MAX_FREQ; 1576 - master->min_speed_hz = OMAP2_MCSPI_MAX_FREQ >> 15; 1577 - master->use_gpio_descriptors = true; 1440 + ctlr->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; 1441 + ctlr->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 32); 1442 + ctlr->setup = omap2_mcspi_setup; 1443 + ctlr->auto_runtime_pm = true; 1444 + ctlr->prepare_message = omap2_mcspi_prepare_message; 1445 + ctlr->can_dma = omap2_mcspi_can_dma; 1446 + ctlr->transfer_one = omap2_mcspi_transfer_one; 1447 + ctlr->set_cs = omap2_mcspi_set_cs; 1448 + ctlr->cleanup = omap2_mcspi_cleanup; 1449 + ctlr->target_abort = omap2_mcspi_target_abort; 1450 + ctlr->dev.of_node = node; 1451 + ctlr->use_gpio_descriptors = true; 1578 1452 1579 - platform_set_drvdata(pdev, master); 1453 + platform_set_drvdata(pdev, ctlr); 1580 1454 1581 - mcspi = spi_master_get_devdata(master); 1582 - mcspi->master = master; 1455 + mcspi = spi_controller_get_devdata(ctlr); 1456 + mcspi->ctlr = ctlr; 1583 1457 1584 1458 match = of_match_device(omap_mcspi_of_match, &pdev->dev); 1585 1459 if (match) { ··· 1585 1463 pdata = match->data; 1586 1464 1587 1465 of_property_read_u32(node, "ti,spi-num-cs", &num_cs); 1588 - master->num_chipselect = num_cs; 1466 + ctlr->num_chipselect = num_cs; 1589 1467 if (of_property_read_bool(node, "ti,pindir-d0-out-d1-in")) 1590 1468 mcspi->pin_dir = MCSPI_PINDIR_D0_OUT_D1_IN; 1591 1469 } else { 1592 1470 pdata = dev_get_platdata(&pdev->dev); 1593 - master->num_chipselect = pdata->num_cs; 1471 + ctlr->num_chipselect = pdata->num_cs; 1594 1472 mcspi->pin_dir = pdata->pin_dir; 1595 1473 } 1596 1474 regs_offset = pdata->regs_offset; 1597 1475 if (pdata->max_xfer_len) { 1598 1476 mcspi->max_xfer_len = pdata->max_xfer_len; 1599 - master->max_transfer_size = omap2_mcspi_max_xfer_size; 1477 + ctlr->max_transfer_size = omap2_mcspi_max_xfer_size; 1600 1478 } 1601 1479 1602 1480 mcspi->base = devm_platform_get_and_ioremap_resource(pdev, 0, &r); 1603 1481 if (IS_ERR(mcspi->base)) { 1604 1482 status = PTR_ERR(mcspi->base); 1605 - goto free_master; 1483 + goto free_ctlr; 1606 1484 } 1607 1485 mcspi->phys = r->start + regs_offset; 1608 1486 mcspi->base += regs_offset; ··· 1611 1489 1612 1490 INIT_LIST_HEAD(&mcspi->ctx.cs); 1613 1491 1614 - mcspi->dma_channels = devm_kcalloc(&pdev->dev, master->num_chipselect, 1492 + mcspi->dma_channels = devm_kcalloc(&pdev->dev, ctlr->num_chipselect, 1615 1493 sizeof(struct omap2_mcspi_dma), 1616 1494 GFP_KERNEL); 1617 1495 if (mcspi->dma_channels == NULL) { 1618 1496 status = -ENOMEM; 1619 - goto free_master; 1497 + goto free_ctlr; 1620 1498 } 1621 1499 1622 - for (i = 0; i < master->num_chipselect; i++) { 1500 + for (i = 0; i < ctlr->num_chipselect; i++) { 1623 1501 sprintf(mcspi->dma_channels[i].dma_rx_ch_name, "rx%d", i); 1624 1502 sprintf(mcspi->dma_channels[i].dma_tx_ch_name, "tx%d", i); 1625 1503 1626 1504 status = omap2_mcspi_request_dma(mcspi, 1627 1505 &mcspi->dma_channels[i]); 1628 1506 if (status == -EPROBE_DEFER) 1629 - goto free_master; 1507 + goto free_ctlr; 1630 1508 } 1631 1509 1632 1510 status = platform_get_irq(pdev, 0); 1633 1511 if (status < 0) 1634 - goto free_master; 1512 + goto free_ctlr; 1635 1513 init_completion(&mcspi->txdone); 1636 1514 status = devm_request_irq(&pdev->dev, status, 1637 1515 omap2_mcspi_irq_handler, 0, pdev->name, 1638 1516 mcspi); 1639 1517 if (status) { 1640 1518 dev_err(&pdev->dev, "Cannot request IRQ"); 1641 - goto free_master; 1519 + goto free_ctlr; 1642 1520 } 1521 + 1522 + mcspi->ref_clk = devm_clk_get_optional_enabled(&pdev->dev, NULL); 1523 + if (mcspi->ref_clk) 1524 + mcspi->ref_clk_hz = clk_get_rate(mcspi->ref_clk); 1525 + else 1526 + mcspi->ref_clk_hz = OMAP2_MCSPI_MAX_FREQ; 1527 + ctlr->max_speed_hz = mcspi->ref_clk_hz; 1528 + ctlr->min_speed_hz = mcspi->ref_clk_hz >> 15; 1643 1529 1644 1530 pm_runtime_use_autosuspend(&pdev->dev); 1645 1531 pm_runtime_set_autosuspend_delay(&pdev->dev, SPI_AUTOSUSPEND_TIMEOUT); ··· 1657 1527 if (status < 0) 1658 1528 goto disable_pm; 1659 1529 1660 - status = devm_spi_register_controller(&pdev->dev, master); 1530 + status = devm_spi_register_controller(&pdev->dev, ctlr); 1661 1531 if (status < 0) 1662 1532 goto disable_pm; 1663 1533 ··· 1667 1537 pm_runtime_dont_use_autosuspend(&pdev->dev); 1668 1538 pm_runtime_put_sync(&pdev->dev); 1669 1539 pm_runtime_disable(&pdev->dev); 1670 - free_master: 1671 - omap2_mcspi_release_dma(master); 1672 - spi_master_put(master); 1540 + free_ctlr: 1541 + omap2_mcspi_release_dma(ctlr); 1542 + spi_controller_put(ctlr); 1673 1543 return status; 1674 1544 } 1675 1545 1676 1546 static void omap2_mcspi_remove(struct platform_device *pdev) 1677 1547 { 1678 - struct spi_master *master = platform_get_drvdata(pdev); 1679 - struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 1548 + struct spi_controller *ctlr = platform_get_drvdata(pdev); 1549 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(ctlr); 1680 1550 1681 - omap2_mcspi_release_dma(master); 1551 + omap2_mcspi_release_dma(ctlr); 1682 1552 1683 1553 pm_runtime_dont_use_autosuspend(mcspi->dev); 1684 1554 pm_runtime_put_sync(mcspi->dev); ··· 1690 1560 1691 1561 static int __maybe_unused omap2_mcspi_suspend(struct device *dev) 1692 1562 { 1693 - struct spi_master *master = dev_get_drvdata(dev); 1694 - struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 1563 + struct spi_controller *ctlr = dev_get_drvdata(dev); 1564 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(ctlr); 1695 1565 int error; 1696 1566 1697 1567 error = pinctrl_pm_select_sleep_state(dev); ··· 1699 1569 dev_warn(mcspi->dev, "%s: failed to set pins: %i\n", 1700 1570 __func__, error); 1701 1571 1702 - error = spi_master_suspend(master); 1572 + error = spi_controller_suspend(ctlr); 1703 1573 if (error) 1704 - dev_warn(mcspi->dev, "%s: master suspend failed: %i\n", 1574 + dev_warn(mcspi->dev, "%s: controller suspend failed: %i\n", 1705 1575 __func__, error); 1706 1576 1707 1577 return pm_runtime_force_suspend(dev); ··· 1709 1579 1710 1580 static int __maybe_unused omap2_mcspi_resume(struct device *dev) 1711 1581 { 1712 - struct spi_master *master = dev_get_drvdata(dev); 1713 - struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 1582 + struct spi_controller *ctlr = dev_get_drvdata(dev); 1583 + struct omap2_mcspi *mcspi = spi_controller_get_devdata(ctlr); 1714 1584 int error; 1715 1585 1716 - error = spi_master_resume(master); 1586 + error = spi_controller_resume(ctlr); 1717 1587 if (error) 1718 - dev_warn(mcspi->dev, "%s: master resume failed: %i\n", 1588 + dev_warn(mcspi->dev, "%s: controller resume failed: %i\n", 1719 1589 __func__, error); 1720 1590 1721 1591 return pm_runtime_force_resume(dev);
+2 -9
drivers/spi/spi-orion.c
··· 688 688 devdata = devdata ? devdata : &orion_spi_dev_data; 689 689 spi->devdata = devdata; 690 690 691 - spi->clk = devm_clk_get(&pdev->dev, NULL); 691 + spi->clk = devm_clk_get_enabled(&pdev->dev, NULL); 692 692 if (IS_ERR(spi->clk)) { 693 693 status = PTR_ERR(spi->clk); 694 694 goto out; 695 695 } 696 696 697 - status = clk_prepare_enable(spi->clk); 698 - if (status) 699 - goto out; 700 - 701 697 /* The following clock is only used by some SoCs */ 702 698 spi->axi_clk = devm_clk_get(&pdev->dev, "axi"); 703 699 if (PTR_ERR(spi->axi_clk) == -EPROBE_DEFER) { 704 700 status = -EPROBE_DEFER; 705 - goto out_rel_clk; 701 + goto out; 706 702 } 707 703 if (!IS_ERR(spi->axi_clk)) 708 704 clk_prepare_enable(spi->axi_clk); ··· 791 795 pm_runtime_disable(&pdev->dev); 792 796 out_rel_axi_clk: 793 797 clk_disable_unprepare(spi->axi_clk); 794 - out_rel_clk: 795 - clk_disable_unprepare(spi->clk); 796 798 out: 797 799 spi_controller_put(host); 798 800 return status; ··· 804 810 805 811 pm_runtime_get_sync(&pdev->dev); 806 812 clk_disable_unprepare(spi->axi_clk); 807 - clk_disable_unprepare(spi->clk); 808 813 809 814 spi_unregister_controller(host); 810 815 pm_runtime_disable(&pdev->dev);
+1 -1
drivers/spi/spi-pci1xxxx.c
··· 77 77 struct pci_dev *dev; 78 78 u8 total_hw_instances; 79 79 void __iomem *reg_base; 80 - struct pci1xxxx_spi_internal *spi_int[]; 80 + struct pci1xxxx_spi_internal *spi_int[] __counted_by(total_hw_instances); 81 81 }; 82 82 83 83 static const struct pci_device_id pci1xxxx_spi_pci_id_table[] = {
+3 -24
drivers/spi/spi-pic32-sqi.c
··· 593 593 } 594 594 595 595 /* clocks */ 596 - sqi->sys_clk = devm_clk_get(&pdev->dev, "reg_ck"); 596 + sqi->sys_clk = devm_clk_get_enabled(&pdev->dev, "reg_ck"); 597 597 if (IS_ERR(sqi->sys_clk)) { 598 598 ret = PTR_ERR(sqi->sys_clk); 599 599 dev_err(&pdev->dev, "no sys_clk ?\n"); 600 600 goto err_free_host; 601 601 } 602 602 603 - sqi->base_clk = devm_clk_get(&pdev->dev, "spi_ck"); 603 + sqi->base_clk = devm_clk_get_enabled(&pdev->dev, "spi_ck"); 604 604 if (IS_ERR(sqi->base_clk)) { 605 605 ret = PTR_ERR(sqi->base_clk); 606 606 dev_err(&pdev->dev, "no base clk ?\n"); 607 - goto err_free_host; 608 - } 609 - 610 - ret = clk_prepare_enable(sqi->sys_clk); 611 - if (ret) { 612 - dev_err(&pdev->dev, "sys clk enable failed\n"); 613 - goto err_free_host; 614 - } 615 - 616 - ret = clk_prepare_enable(sqi->base_clk); 617 - if (ret) { 618 - dev_err(&pdev->dev, "base clk enable failed\n"); 619 - clk_disable_unprepare(sqi->sys_clk); 620 607 goto err_free_host; 621 608 } 622 609 ··· 616 629 ret = ring_desc_ring_alloc(sqi); 617 630 if (ret) { 618 631 dev_err(&pdev->dev, "ring alloc failed\n"); 619 - goto err_disable_clk; 632 + goto err_free_host; 620 633 } 621 634 622 635 /* install irq handlers */ ··· 656 669 err_free_ring: 657 670 ring_desc_ring_free(sqi); 658 671 659 - err_disable_clk: 660 - clk_disable_unprepare(sqi->base_clk); 661 - clk_disable_unprepare(sqi->sys_clk); 662 - 663 672 err_free_host: 664 673 spi_controller_put(host); 665 674 return ret; ··· 668 685 /* release resources */ 669 686 free_irq(sqi->irq, sqi); 670 687 ring_desc_ring_free(sqi); 671 - 672 - /* disable clk */ 673 - clk_disable_unprepare(sqi->base_clk); 674 - clk_disable_unprepare(sqi->sys_clk); 675 688 } 676 689 677 690 static const struct of_device_id pic32_sqi_of_ids[] = {
+1 -7
drivers/spi/spi-pic32.c
··· 730 730 return pic32s->tx_irq; 731 731 732 732 /* get clock */ 733 - pic32s->clk = devm_clk_get(&pdev->dev, "mck0"); 733 + pic32s->clk = devm_clk_get_enabled(&pdev->dev, "mck0"); 734 734 if (IS_ERR(pic32s->clk)) { 735 735 dev_err(&pdev->dev, "clk not found\n"); 736 736 ret = PTR_ERR(pic32s->clk); 737 737 goto err_unmap_mem; 738 738 } 739 - 740 - ret = clk_prepare_enable(pic32s->clk); 741 - if (ret) 742 - goto err_unmap_mem; 743 739 744 740 pic32_spi_hw_init(pic32s); 745 741 ··· 833 837 834 838 err_bailout: 835 839 pic32_spi_dma_unprep(pic32s); 836 - clk_disable_unprepare(pic32s->clk); 837 840 err_host: 838 841 spi_controller_put(host); 839 842 return ret; ··· 844 849 845 850 pic32s = platform_get_drvdata(pdev); 846 851 pic32_spi_disable(pic32s); 847 - clk_disable_unprepare(pic32s->clk); 848 852 pic32_spi_dma_unprep(pic32s); 849 853 } 850 854
+1 -10
drivers/spi/spi-pl022.c
··· 2168 2168 dev_info(&adev->dev, "mapped registers from %pa to %p\n", 2169 2169 &adev->res.start, pl022->virtbase); 2170 2170 2171 - pl022->clk = devm_clk_get(&adev->dev, NULL); 2171 + pl022->clk = devm_clk_get_enabled(&adev->dev, NULL); 2172 2172 if (IS_ERR(pl022->clk)) { 2173 2173 status = PTR_ERR(pl022->clk); 2174 2174 dev_err(&adev->dev, "could not retrieve SSP/SPI bus clock\n"); 2175 2175 goto err_no_clk; 2176 - } 2177 - 2178 - status = clk_prepare_enable(pl022->clk); 2179 - if (status) { 2180 - dev_err(&adev->dev, "could not enable SSP/SPI bus clock\n"); 2181 - goto err_no_clk_en; 2182 2176 } 2183 2177 2184 2178 /* Initialize transfer pump */ ··· 2234 2240 if (platform_info->enable_dma) 2235 2241 pl022_dma_remove(pl022); 2236 2242 err_no_irq: 2237 - clk_disable_unprepare(pl022->clk); 2238 - err_no_clk_en: 2239 2243 err_no_clk: 2240 2244 err_no_ioremap: 2241 2245 amba_release_regions(adev); ··· 2260 2268 if (pl022->host_info->enable_dma) 2261 2269 pl022_dma_remove(pl022); 2262 2270 2263 - clk_disable_unprepare(pl022->clk); 2264 2271 amba_release_regions(adev); 2265 2272 tasklet_disable(&pl022->pump_transfers); 2266 2273 }
+49 -1
drivers/spi/spi-qup.c
··· 6 6 #include <linux/clk.h> 7 7 #include <linux/delay.h> 8 8 #include <linux/err.h> 9 + #include <linux/interconnect.h> 9 10 #include <linux/interrupt.h> 10 11 #include <linux/io.h> 11 12 #include <linux/list.h> 12 13 #include <linux/module.h> 13 14 #include <linux/of.h> 14 15 #include <linux/platform_device.h> 16 + #include <linux/pm_opp.h> 15 17 #include <linux/pm_runtime.h> 16 18 #include <linux/spi/spi.h> 17 19 #include <linux/dmaengine.h> ··· 123 121 #define SPI_DELAY_THRESHOLD 1 124 122 #define SPI_DELAY_RETRY 10 125 123 124 + #define SPI_BUS_WIDTH 8 125 + 126 126 struct spi_qup { 127 127 void __iomem *base; 128 128 struct device *dev; 129 129 struct clk *cclk; /* core clock */ 130 130 struct clk *iclk; /* interface clock */ 131 + struct icc_path *icc_path; /* interconnect to RAM */ 131 132 int irq; 132 133 spinlock_t lock; 133 134 ··· 153 148 int mode; 154 149 struct dma_slave_config rx_conf; 155 150 struct dma_slave_config tx_conf; 151 + 152 + u32 bw_speed_hz; 156 153 }; 157 154 158 155 static int spi_qup_io_config(struct spi_device *spi, struct spi_transfer *xfer); ··· 185 178 u32 opstate = readl_relaxed(controller->base + QUP_STATE); 186 179 187 180 return opstate & QUP_STATE_VALID; 181 + } 182 + 183 + static int spi_qup_vote_bw(struct spi_qup *controller, u32 speed_hz) 184 + { 185 + u32 needed_peak_bw; 186 + int ret; 187 + 188 + if (controller->bw_speed_hz == speed_hz) 189 + return 0; 190 + 191 + needed_peak_bw = Bps_to_icc(speed_hz * SPI_BUS_WIDTH); 192 + ret = icc_set_bw(controller->icc_path, 0, needed_peak_bw); 193 + if (ret) 194 + return ret; 195 + 196 + controller->bw_speed_hz = speed_hz; 197 + return 0; 188 198 } 189 199 190 200 static int spi_qup_set_state(struct spi_qup *controller, u32 state) ··· 474 450 struct scatterlist *tx_sgl, *rx_sgl; 475 451 int ret; 476 452 453 + ret = spi_qup_vote_bw(qup, xfer->speed_hz); 454 + if (ret) { 455 + dev_err(qup->dev, "fail to vote for ICC bandwidth: %d\n", ret); 456 + return -EIO; 457 + } 458 + 477 459 if (xfer->rx_buf) 478 460 rx_done = spi_qup_dma_done; 479 461 else if (xfer->tx_buf) ··· 697 667 return -EIO; 698 668 } 699 669 700 - ret = clk_set_rate(controller->cclk, xfer->speed_hz); 670 + ret = dev_pm_opp_set_rate(controller->dev, xfer->speed_hz); 701 671 if (ret) { 702 672 dev_err(controller->dev, "fail to set frequency %d", 703 673 xfer->speed_hz); ··· 1023 993 static int spi_qup_probe(struct platform_device *pdev) 1024 994 { 1025 995 struct spi_controller *host; 996 + struct icc_path *icc_path; 1026 997 struct clk *iclk, *cclk; 1027 998 struct spi_qup *controller; 1028 999 struct resource *res; ··· 1049 1018 if (IS_ERR(iclk)) 1050 1019 return PTR_ERR(iclk); 1051 1020 1021 + icc_path = devm_of_icc_get(dev, NULL); 1022 + if (IS_ERR(icc_path)) 1023 + return dev_err_probe(dev, PTR_ERR(icc_path), 1024 + "failed to get interconnect path\n"); 1025 + 1052 1026 /* This is optional parameter */ 1053 1027 if (of_property_read_u32(dev->of_node, "spi-max-frequency", &max_freq)) 1054 1028 max_freq = SPI_MAX_RATE; ··· 1062 1026 dev_err(dev, "invalid clock frequency %d\n", max_freq); 1063 1027 return -ENXIO; 1064 1028 } 1029 + 1030 + ret = devm_pm_opp_set_clkname(dev, "core"); 1031 + if (ret) 1032 + return ret; 1033 + 1034 + /* OPP table is optional */ 1035 + ret = devm_pm_opp_of_add_table(dev); 1036 + if (ret && ret != -ENODEV) 1037 + return dev_err_probe(dev, ret, "invalid OPP table\n"); 1065 1038 1066 1039 host = spi_alloc_host(dev, sizeof(struct spi_qup)); 1067 1040 if (!host) { ··· 1105 1060 controller->base = base; 1106 1061 controller->iclk = iclk; 1107 1062 controller->cclk = cclk; 1063 + controller->icc_path = icc_path; 1108 1064 controller->irq = irq; 1109 1065 1110 1066 ret = spi_qup_init_dma(host, res->start); ··· 1226 1180 writel_relaxed(config, controller->base + QUP_CONFIG); 1227 1181 1228 1182 clk_disable_unprepare(controller->cclk); 1183 + spi_qup_vote_bw(controller, 0); 1229 1184 clk_disable_unprepare(controller->iclk); 1230 1185 1231 1186 return 0; ··· 1278 1231 return ret; 1279 1232 1280 1233 clk_disable_unprepare(controller->cclk); 1234 + spi_qup_vote_bw(controller, 0); 1281 1235 clk_disable_unprepare(controller->iclk); 1282 1236 return 0; 1283 1237 }
+5 -25
drivers/spi/spi-rockchip.c
··· 782 782 goto err_put_ctlr; 783 783 } 784 784 785 - rs->apb_pclk = devm_clk_get(&pdev->dev, "apb_pclk"); 785 + rs->apb_pclk = devm_clk_get_enabled(&pdev->dev, "apb_pclk"); 786 786 if (IS_ERR(rs->apb_pclk)) { 787 787 dev_err(&pdev->dev, "Failed to get apb_pclk\n"); 788 788 ret = PTR_ERR(rs->apb_pclk); 789 789 goto err_put_ctlr; 790 790 } 791 791 792 - rs->spiclk = devm_clk_get(&pdev->dev, "spiclk"); 792 + rs->spiclk = devm_clk_get_enabled(&pdev->dev, "spiclk"); 793 793 if (IS_ERR(rs->spiclk)) { 794 794 dev_err(&pdev->dev, "Failed to get spi_pclk\n"); 795 795 ret = PTR_ERR(rs->spiclk); 796 796 goto err_put_ctlr; 797 797 } 798 798 799 - ret = clk_prepare_enable(rs->apb_pclk); 800 - if (ret < 0) { 801 - dev_err(&pdev->dev, "Failed to enable apb_pclk\n"); 802 - goto err_put_ctlr; 803 - } 804 - 805 - ret = clk_prepare_enable(rs->spiclk); 806 - if (ret < 0) { 807 - dev_err(&pdev->dev, "Failed to enable spi_clk\n"); 808 - goto err_disable_apbclk; 809 - } 810 - 811 799 spi_enable_chip(rs, false); 812 800 813 801 ret = platform_get_irq(pdev, 0); 814 802 if (ret < 0) 815 - goto err_disable_spiclk; 803 + goto err_put_ctlr; 816 804 817 805 ret = devm_request_threaded_irq(&pdev->dev, ret, rockchip_spi_isr, NULL, 818 806 IRQF_ONESHOT, dev_name(&pdev->dev), ctlr); 819 807 if (ret) 820 - goto err_disable_spiclk; 808 + goto err_put_ctlr; 821 809 822 810 rs->dev = &pdev->dev; 823 811 rs->freq = clk_get_rate(rs->spiclk); ··· 831 843 if (!rs->fifo_len) { 832 844 dev_err(&pdev->dev, "Failed to get fifo length\n"); 833 845 ret = -EINVAL; 834 - goto err_disable_spiclk; 846 + goto err_put_ctlr; 835 847 } 836 848 837 849 pm_runtime_set_autosuspend_delay(&pdev->dev, ROCKCHIP_AUTOSUSPEND_TIMEOUT); ··· 925 937 dma_release_channel(ctlr->dma_tx); 926 938 err_disable_pm_runtime: 927 939 pm_runtime_disable(&pdev->dev); 928 - err_disable_spiclk: 929 - clk_disable_unprepare(rs->spiclk); 930 - err_disable_apbclk: 931 - clk_disable_unprepare(rs->apb_pclk); 932 940 err_put_ctlr: 933 941 spi_controller_put(ctlr); 934 942 ··· 934 950 static void rockchip_spi_remove(struct platform_device *pdev) 935 951 { 936 952 struct spi_controller *ctlr = spi_controller_get(platform_get_drvdata(pdev)); 937 - struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); 938 953 939 954 pm_runtime_get_sync(&pdev->dev); 940 - 941 - clk_disable_unprepare(rs->spiclk); 942 - clk_disable_unprepare(rs->apb_pclk); 943 955 944 956 pm_runtime_put_noidle(&pdev->dev); 945 957 pm_runtime_disable(&pdev->dev);
+83 -44
drivers/spi/spi-rzv2m-csi.c
··· 11 11 #include <linux/interrupt.h> 12 12 #include <linux/iopoll.h> 13 13 #include <linux/log2.h> 14 + #include <linux/of.h> 14 15 #include <linux/platform_device.h> 15 16 #include <linux/property.h> 16 17 #include <linux/reset.h> ··· 39 38 #define CSI_MODE_SETUP 0x00000040 40 39 41 40 /* CSI_CLKSEL */ 41 + #define CSI_CLKSEL_SS_ENA BIT(19) 42 + #define CSI_CLKSEL_SS_POL BIT(18) 43 + #define CSI_CLKSEL_SS (CSI_CLKSEL_SS_ENA | CSI_CLKSEL_SS_POL) 42 44 #define CSI_CLKSEL_CKP BIT(17) 43 45 #define CSI_CLKSEL_DAP BIT(16) 44 46 #define CSI_CLKSEL_MODE (CSI_CLKSEL_CKP|CSI_CLKSEL_DAP) ··· 86 82 87 83 #define CSI_MAX_SPI_SCKO (8 * HZ_PER_MHZ) 88 84 85 + #define CSI_CLKSEL_SS_DISABLED 0 86 + #define CSI_CLKSEL_SS_ENABLED_ACTIVE_LOW BIT(1) 87 + #define CSI_CLKSEL_SS_ENABLED_ACTIVE_HIGH GENMASK(1, 0) 88 + 89 89 struct rzv2m_csi_priv { 90 90 void __iomem *base; 91 91 struct clk *csiclk; ··· 107 99 wait_queue_head_t wait; 108 100 u32 errors; 109 101 u32 status; 102 + bool target_aborted; 103 + bool use_ss_pin; 110 104 }; 111 105 112 106 static void rzv2m_csi_reg_write_bit(const struct rzv2m_csi_priv *csi, ··· 203 193 return 0; 204 194 } 205 195 196 + static inline void rzv2m_csi_empty_rxfifo(struct rzv2m_csi_priv *csi) 197 + { 198 + unsigned int i; 199 + 200 + for (i = 0; i < csi->words_to_transfer; i++) 201 + readl(csi->base + CSI_IFIFO); 202 + } 203 + 206 204 static inline void rzv2m_csi_calc_current_transfer(struct rzv2m_csi_priv *csi) 207 205 { 208 206 unsigned int bytes_transferred = max(csi->bytes_received, csi->bytes_sent); ··· 297 279 298 280 rzv2m_csi_enable_irqs(csi, enable_bits); 299 281 300 - ret = wait_event_timeout(csi->wait, 301 - ((csi->status & wait_mask) == wait_mask) || 302 - csi->errors, HZ); 282 + if (spi_controller_is_target(csi->controller)) { 283 + ret = wait_event_interruptible(csi->wait, 284 + ((csi->status & wait_mask) == wait_mask) || 285 + csi->errors || csi->target_aborted); 286 + if (ret || csi->target_aborted) 287 + ret = -EINTR; 288 + } else { 289 + ret = wait_event_timeout(csi->wait, 290 + ((csi->status & wait_mask) == wait_mask) || 291 + csi->errors, HZ) == 0 ? -ETIMEDOUT : 0; 292 + } 303 293 304 294 rzv2m_csi_disable_irqs(csi, enable_bits); 305 295 306 296 if (csi->errors) 307 297 return -EIO; 308 - 309 - if (!ret) 310 - return -ETIMEDOUT; 311 - 312 - return 0; 313 - } 314 - 315 - static int rzv2m_csi_wait_for_tx_empty(struct rzv2m_csi_priv *csi) 316 - { 317 - int ret; 318 - 319 - if (readl(csi->base + CSI_OFIFOL) == 0) 320 - return 0; 321 - 322 - ret = rzv2m_csi_wait_for_interrupt(csi, CSI_INT_TREND, CSI_CNT_TREND_E); 323 - if (ret == -ETIMEDOUT) 324 - csi->errors |= TX_TIMEOUT_ERROR; 325 298 326 299 return ret; 327 300 } ··· 321 312 { 322 313 int ret; 323 314 324 - if (readl(csi->base + CSI_IFIFOL) == csi->bytes_to_transfer) 315 + if (readl(csi->base + CSI_IFIFOL) >= csi->bytes_to_transfer) 325 316 return 0; 326 317 327 318 ret = rzv2m_csi_wait_for_interrupt(csi, CSI_INT_R_TRGR, ··· 397 388 static int rzv2m_csi_setup(struct spi_device *spi) 398 389 { 399 390 struct rzv2m_csi_priv *csi = spi_controller_get_devdata(spi->controller); 391 + u32 slave_selection = CSI_CLKSEL_SS_DISABLED; 400 392 int ret; 401 393 402 394 rzv2m_csi_sw_reset(csi, 0); ··· 412 402 rzv2m_csi_reg_write_bit(csi, CSI_MODE, CSI_MODE_DIR, 413 403 !!(spi->mode & SPI_LSB_FIRST)); 414 404 415 - /* Set the operation mode as master */ 416 - rzv2m_csi_reg_write_bit(csi, CSI_CLKSEL, CSI_CLKSEL_SLAVE, 0); 405 + /* Set the role, 1 for target and 0 for host */ 406 + rzv2m_csi_reg_write_bit(csi, CSI_CLKSEL, CSI_CLKSEL_SLAVE, 407 + !!spi_controller_is_target(csi->controller)); 408 + 409 + if (csi->use_ss_pin) 410 + slave_selection = spi->mode & SPI_CS_HIGH ? 411 + CSI_CLKSEL_SS_ENABLED_ACTIVE_HIGH : 412 + CSI_CLKSEL_SS_ENABLED_ACTIVE_LOW; 413 + 414 + /* Configure the slave selection (SS) pin */ 415 + rzv2m_csi_reg_write_bit(csi, CSI_CLKSEL, CSI_CLKSEL_SS, slave_selection); 417 416 418 417 /* Give the IP a SW reset */ 419 418 ret = rzv2m_csi_sw_reset(csi, 1); ··· 450 431 /* Make sure the TX FIFO is empty */ 451 432 writel(0, csi->base + CSI_OFIFOL); 452 433 434 + /* Make sure the RX FIFO is empty */ 435 + writel(0, csi->base + CSI_IFIFOL); 436 + 453 437 csi->bytes_sent = 0; 454 438 csi->bytes_received = 0; 455 439 csi->errors = 0; 440 + csi->target_aborted = false; 456 441 457 442 rzv2m_csi_disable_all_irqs(csi); 458 443 rzv2m_csi_clear_all_irqs(csi); ··· 475 452 476 453 rzv2m_csi_enable_irqs(csi, CSI_INT_OVERF | CSI_INT_UNDER); 477 454 478 - /* Make sure the RX FIFO is empty */ 479 - writel(0, csi->base + CSI_IFIFOL); 480 - 481 455 writel(readl(csi->base + CSI_INT), csi->base + CSI_INT); 482 456 csi->status = 0; 483 - 484 - rzv2m_csi_start_stop_operation(csi, 1, false); 485 457 486 458 /* TX */ 487 459 if (csi->txbuf) { ··· 484 466 if (ret) 485 467 break; 486 468 487 - ret = rzv2m_csi_wait_for_tx_empty(csi); 488 - if (ret) 489 - break; 490 - 491 469 if (csi->bytes_sent == csi->buffer_len) 492 470 tx_completed = true; 493 471 } 472 + 473 + rzv2m_csi_start_stop_operation(csi, 1, false); 494 474 495 475 /* 496 476 * Make sure the RX FIFO contains the desired number of words. ··· 499 483 if (ret) 500 484 break; 501 485 502 - /* RX */ 503 - if (csi->rxbuf) { 486 + if (!spi_controller_is_target(csi->controller)) 504 487 rzv2m_csi_start_stop_operation(csi, 0, false); 505 488 489 + /* RX */ 490 + if (csi->rxbuf) { 506 491 ret = rzv2m_csi_read_rxfifo(csi); 507 492 if (ret) 508 493 break; 509 494 510 495 if (csi->bytes_received == csi->buffer_len) 511 496 rx_completed = true; 497 + } else { 498 + rzv2m_csi_empty_rxfifo(csi); 512 499 } 513 - 514 - ret = rzv2m_csi_start_stop_operation(csi, 0, true); 515 - if (ret) 516 - goto pio_quit; 517 500 518 501 if (csi->errors) { 519 502 ret = -EIO; 520 - goto pio_quit; 503 + break; 521 504 } 522 505 } 523 506 524 507 rzv2m_csi_start_stop_operation(csi, 0, true); 525 - 526 - pio_quit: 527 508 rzv2m_csi_disable_all_irqs(csi); 528 509 rzv2m_csi_enable_rx_trigger(csi, false); 529 510 rzv2m_csi_clear_all_irqs(csi); ··· 542 529 543 530 rzv2m_csi_setup_operating_mode(csi, transfer); 544 531 545 - rzv2m_csi_setup_clock(csi, transfer->speed_hz); 532 + if (!spi_controller_is_target(csi->controller)) 533 + rzv2m_csi_setup_clock(csi, transfer->speed_hz); 546 534 547 535 ret = rzv2m_csi_pio_transfer(csi); 548 536 if (ret) { ··· 560 546 return ret; 561 547 } 562 548 549 + static int rzv2m_csi_target_abort(struct spi_controller *ctlr) 550 + { 551 + struct rzv2m_csi_priv *csi = spi_controller_get_devdata(ctlr); 552 + 553 + csi->target_aborted = true; 554 + wake_up(&csi->wait); 555 + 556 + return 0; 557 + } 558 + 563 559 static int rzv2m_csi_probe(struct platform_device *pdev) 564 560 { 561 + struct device_node *np = pdev->dev.of_node; 565 562 struct spi_controller *controller; 566 563 struct device *dev = &pdev->dev; 567 564 struct rzv2m_csi_priv *csi; 568 565 struct reset_control *rstc; 566 + bool target_mode; 569 567 int irq; 570 568 int ret; 571 569 572 - controller = devm_spi_alloc_host(dev, sizeof(*csi)); 570 + target_mode = of_property_read_bool(np, "spi-slave"); 571 + 572 + if (target_mode) 573 + controller = devm_spi_alloc_target(dev, sizeof(*csi)); 574 + else 575 + controller = devm_spi_alloc_host(dev, sizeof(*csi)); 576 + 573 577 if (!controller) 574 578 return -ENOMEM; 575 579 576 580 csi = spi_controller_get_devdata(controller); 577 581 platform_set_drvdata(pdev, csi); 578 582 583 + csi->use_ss_pin = false; 584 + if (spi_controller_is_target(controller) && 585 + !of_property_read_bool(np, "renesas,csi-no-ss")) 586 + csi->use_ss_pin = true; 587 + 579 588 csi->dev = dev; 580 589 csi->controller = controller; 590 + csi->target_aborted = false; 581 591 582 592 csi->base = devm_platform_ioremap_resource(pdev, 0); 583 593 if (IS_ERR(csi->base)) ··· 627 589 628 590 init_waitqueue_head(&csi->wait); 629 591 630 - controller->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST; 592 + controller->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST | SPI_CS_HIGH; 631 593 controller->bits_per_word_mask = SPI_BPW_MASK(16) | SPI_BPW_MASK(8); 632 594 controller->setup = rzv2m_csi_setup; 633 595 controller->transfer_one = rzv2m_csi_transfer_one; 634 596 controller->use_gpio_descriptors = true; 597 + controller->target_abort = rzv2m_csi_target_abort; 635 598 636 599 device_set_node(&controller->dev, dev_fwnode(dev)); 637 600
+2 -1
drivers/spi/spi-stm32.c
··· 13 13 #include <linux/interrupt.h> 14 14 #include <linux/iopoll.h> 15 15 #include <linux/module.h> 16 - #include <linux/of_platform.h> 16 + #include <linux/of.h> 17 + #include <linux/platform_device.h> 17 18 #include <linux/pinctrl/consumer.h> 18 19 #include <linux/pm_runtime.h> 19 20 #include <linux/reset.h>
+2
drivers/spi/spi-tegra20-slink.c
··· 1086 1086 reset_control_deassert(tspi->rst); 1087 1087 1088 1088 spi_irq = platform_get_irq(pdev, 0); 1089 + if (spi_irq < 0) 1090 + return spi_irq; 1089 1091 tspi->irq = spi_irq; 1090 1092 ret = request_threaded_irq(tspi->irq, tegra_slink_isr, 1091 1093 tegra_slink_isr_thread, IRQF_ONESHOT,
+2 -7
drivers/spi/spi.c
··· 2093 2093 2094 2094 spin_unlock_irqrestore(&ctlr->queue_lock, flags); 2095 2095 2096 - if (ret) { 2097 - dev_warn(&ctlr->dev, "could not stop message queue\n"); 2098 - return ret; 2099 - } 2100 2096 return ret; 2101 2097 } 2102 2098 ··· 2522 2526 && obj->buffer.length == 8 && *(u64 *)obj->buffer.pointer) 2523 2527 lookup->mode |= SPI_CPHA; 2524 2528 } 2525 - 2526 - static struct spi_controller *acpi_spi_find_controller_by_adev(struct acpi_device *adev); 2527 2529 2528 2530 static int acpi_spi_add_resource(struct acpi_resource *ares, void *data) 2529 2531 { ··· 4517 4523 return ACPI_COMPANION(dev->parent) == data; 4518 4524 } 4519 4525 4520 - static struct spi_controller *acpi_spi_find_controller_by_adev(struct acpi_device *adev) 4526 + struct spi_controller *acpi_spi_find_controller_by_adev(struct acpi_device *adev) 4521 4527 { 4522 4528 struct device *dev; 4523 4529 ··· 4531 4537 4532 4538 return container_of(dev, struct spi_controller, dev); 4533 4539 } 4540 + EXPORT_SYMBOL_GPL(acpi_spi_find_controller_by_adev); 4534 4541 4535 4542 static struct spi_device *acpi_spi_find_device_by_adev(struct acpi_device *adev) 4536 4543 {
+19 -23
drivers/spi/spidev.c
··· 357 357 int retval = 0; 358 358 struct spidev_data *spidev; 359 359 struct spi_device *spi; 360 + struct spi_controller *ctlr; 360 361 u32 tmp; 361 362 unsigned n_ioc; 362 363 struct spi_ioc_transfer *ioc; ··· 377 376 return -ESHUTDOWN; 378 377 } 379 378 379 + ctlr = spi->controller; 380 + 380 381 /* use the buffer lock here for triple duty: 381 382 * - prevent I/O (from us) so calling spi_setup() is safe; 382 383 * - prevent concurrent SPI_IOC_WR_* from morphing ··· 391 388 /* read requests */ 392 389 case SPI_IOC_RD_MODE: 393 390 case SPI_IOC_RD_MODE32: 394 - tmp = spi->mode; 391 + tmp = spi->mode & SPI_MODE_MASK; 395 392 396 - { 397 - struct spi_controller *ctlr = spi->controller; 398 - 399 - if (ctlr->use_gpio_descriptors && ctlr->cs_gpiods && 400 - ctlr->cs_gpiods[spi_get_chipselect(spi, 0)]) 401 - tmp &= ~SPI_CS_HIGH; 402 - } 393 + if (ctlr->use_gpio_descriptors && spi_get_csgpiod(spi, 0)) 394 + tmp &= ~SPI_CS_HIGH; 403 395 404 396 if (cmd == SPI_IOC_RD_MODE) 405 - retval = put_user(tmp & SPI_MODE_MASK, 406 - (__u8 __user *)arg); 397 + retval = put_user(tmp, (__u8 __user *)arg); 407 398 else 408 - retval = put_user(tmp & SPI_MODE_MASK, 409 - (__u32 __user *)arg); 399 + retval = put_user(tmp, (__u32 __user *)arg); 410 400 break; 411 401 case SPI_IOC_RD_LSB_FIRST: 412 402 retval = put_user((spi->mode & SPI_LSB_FIRST) ? 1 : 0, ··· 420 424 else 421 425 retval = get_user(tmp, (u32 __user *)arg); 422 426 if (retval == 0) { 423 - struct spi_controller *ctlr = spi->controller; 424 427 u32 save = spi->mode; 425 428 426 429 if (tmp & ~SPI_MODE_MASK) { ··· 427 432 break; 428 433 } 429 434 430 - if (ctlr->use_gpio_descriptors && ctlr->cs_gpiods && 431 - ctlr->cs_gpiods[spi_get_chipselect(spi, 0)]) 435 + if (ctlr->use_gpio_descriptors && spi_get_csgpiod(spi, 0)) 432 436 tmp |= SPI_CS_HIGH; 433 437 434 438 tmp |= spi->mode & ~SPI_MODE_MASK; ··· 695 701 * It also simplifies memory management. 696 702 */ 697 703 698 - static struct class *spidev_class; 704 + static const struct class spidev_class = { 705 + .name = "spidev", 706 + }; 699 707 700 708 static const struct spi_device_id spidev_spi_ids[] = { 701 709 { .name = "dh2228fv" }, ··· 800 804 struct device *dev; 801 805 802 806 spidev->devt = MKDEV(SPIDEV_MAJOR, minor); 803 - dev = device_create(spidev_class, &spi->dev, spidev->devt, 807 + dev = device_create(&spidev_class, &spi->dev, spidev->devt, 804 808 spidev, "spidev%d.%d", 805 809 spi->master->bus_num, spi_get_chipselect(spi, 0)); 806 810 status = PTR_ERR_OR_ZERO(dev); ··· 836 840 mutex_unlock(&spidev->spi_lock); 837 841 838 842 list_del(&spidev->device_entry); 839 - device_destroy(spidev_class, spidev->devt); 843 + device_destroy(&spidev_class, spidev->devt); 840 844 clear_bit(MINOR(spidev->devt), minors); 841 845 if (spidev->users == 0) 842 846 kfree(spidev); ··· 874 878 if (status < 0) 875 879 return status; 876 880 877 - spidev_class = class_create("spidev"); 878 - if (IS_ERR(spidev_class)) { 881 + status = class_register(&spidev_class); 882 + if (status) { 879 883 unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name); 880 - return PTR_ERR(spidev_class); 884 + return status; 881 885 } 882 886 883 887 status = spi_register_driver(&spidev_spi_driver); 884 888 if (status < 0) { 885 - class_destroy(spidev_class); 889 + class_unregister(&spidev_class); 886 890 unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name); 887 891 } 888 892 return status; ··· 892 896 static void __exit spidev_exit(void) 893 897 { 894 898 spi_unregister_driver(&spidev_spi_driver); 895 - class_destroy(spidev_class); 899 + class_unregister(&spidev_class); 896 900 unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name); 897 901 } 898 902 module_exit(spidev_exit);
+14 -14
include/linux/spi/spi.h
··· 867 867 extern void spi_unregister_controller(struct spi_controller *ctlr); 868 868 869 869 #if IS_ENABLED(CONFIG_ACPI) 870 + extern struct spi_controller *acpi_spi_find_controller_by_adev(struct acpi_device *adev); 870 871 extern struct spi_device *acpi_spi_device_alloc(struct spi_controller *ctlr, 871 872 struct acpi_device *adev, 872 873 int index); ··· 1087 1086 * @state: for use by whichever driver currently owns the message 1088 1087 * @resources: for resource management when the SPI message is processed 1089 1088 * @prepared: spi_prepare_message was called for the this message 1090 - * @t: for use with spi_message_alloc() when message and transfers have 1091 - * been allocated together 1092 1089 * 1093 1090 * A @spi_message is used to execute an atomic sequence of data transfers, 1094 1091 * each represented by a struct spi_transfer. The sequence is "atomic" ··· 1141 1142 1142 1143 /* List of spi_res resources when the SPI message is processed */ 1143 1144 struct list_head resources; 1144 - 1145 - /* For embedding transfers into the memory of the message */ 1146 - struct spi_transfer t[]; 1147 1145 }; 1148 1146 1149 1147 static inline void spi_message_init_no_memset(struct spi_message *m) ··· 1199 1203 */ 1200 1204 static inline struct spi_message *spi_message_alloc(unsigned ntrans, gfp_t flags) 1201 1205 { 1202 - struct spi_message *m; 1206 + struct spi_message_with_transfers { 1207 + struct spi_message m; 1208 + struct spi_transfer t[]; 1209 + } *mwt; 1210 + unsigned i; 1203 1211 1204 - m = kzalloc(struct_size(m, t, ntrans), flags); 1205 - if (m) { 1206 - unsigned i; 1212 + mwt = kzalloc(struct_size(mwt, t, ntrans), flags); 1213 + if (!mwt) 1214 + return NULL; 1207 1215 1208 - spi_message_init_no_memset(m); 1209 - for (i = 0; i < ntrans; i++) 1210 - spi_message_add_tail(&m->t[i], m); 1211 - } 1212 - return m; 1216 + spi_message_init_no_memset(&mwt->m); 1217 + for (i = 0; i < ntrans; i++) 1218 + spi_message_add_tail(&mwt->t[i], &mwt->m); 1219 + 1220 + return &mwt->m; 1213 1221 } 1214 1222 1215 1223 static inline void spi_message_free(struct spi_message *m)