Skip to content

Commit a2590d6

Browse files
committed
Merge tag 'spi-v5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
Pull spi updates from Mark Brown: "The main focus of this release from a framework point of view has been spi-mem where we've acquired support for a few new hardware features which enable better performance on suitable hardware. Otherwise mostly thanks to Arnd's cleanup efforts on old platforms we've removed several obsolete drivers which just about balance out the newer drivers we've added this cycle. Summary: - Allow drivers to flag if they are unidirectional. - Support for DTR mode and hardware acceleration of dummy cycles in spi-mem. - Support for Allwinder H616, Intel Lightning Mountain, nVidia Tegra QuadSPI, Realtek RTL838x and RTL839x. - Removal of obsolete EFM32, Txx9 and SIRF Prima and Atlas drivers" * tag 'spi-v5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (76 commits) spi: Skip zero-length transfers in spi_transfer_one_message() spi: dw: Avoid stack content exposure spi: cadence-quadspi: Use spi_mem_dtr_supports_op() spi: spi-mem: add spi_mem_dtr_supports_op() spi: atmel-quadspi: Disable the QSPI IP at suspend() spi: pxa2xx: Add IDs for the controllers found on Intel Lynxpoint spi: pxa2xx: Fix the controller numbering for Wildcat Point spi: Change provied to provided in the file spi.h spi: mediatek: add set_cs_timing support spi: support CS timing for HW & SW mode spi: add power control when set_cs_timing spi: stm32: make spurious and overrun interrupts visible spi: stm32h7: replace private SPI_1HZ_NS with NSEC_PER_SEC spi: stm32: defer probe for reset spi: stm32: driver uses reset controller only at init spi: stm32h7: ensure message are smaller than max size spi: stm32: use bitfield macros spi: stm32: do not mandate cs_gpio spi: stm32: properly handle 0 byte transfer spi: clps711xx: remove redundant white-space ...
2 parents d656005 + eec262d commit a2590d6

45 files changed

Lines changed: 2518 additions & 2544 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Documentation/devicetree/bindings/spi/allwinner,sun6i-a31-spi.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ properties:
2525
- enum:
2626
- allwinner,sun8i-r40-spi
2727
- allwinner,sun50i-h6-spi
28+
- allwinner,sun50i-h616-spi
2829
- const: allwinner,sun8i-h3-spi
2930

3031
reg:

Documentation/devicetree/bindings/mtd/cadence-quadspi.txt renamed to Documentation/devicetree/bindings/spi/cadence-quadspi.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Required properties:
55
Generic default - "cdns,qspi-nor".
66
For TI 66AK2G SoC - "ti,k2g-qspi", "cdns,qspi-nor".
77
For TI AM654 SoC - "ti,am654-ospi", "cdns,qspi-nor".
8+
For Intel LGM SoC - "intel,lgm-qspi", "cdns,qspi-nor".
89
- reg : Contains two entries, each of which is a tuple consisting of a
910
physical address and length. The first entry is the address and
1011
length of the controller register set. The second entry is the
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/spi/nvidia,tegra210-quad.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Tegra Quad SPI Controller
8+
9+
maintainers:
10+
- Thierry Reding <thierry.reding@gmail.com>
11+
- Jonathan Hunter <jonathanh@nvidia.com>
12+
13+
allOf:
14+
- $ref: "spi-controller.yaml#"
15+
16+
properties:
17+
compatible:
18+
enum:
19+
- nvidia,tegra210-qspi
20+
- nvidia,tegra186-qspi
21+
- nvidia,tegra194-qspi
22+
23+
reg:
24+
maxItems: 1
25+
26+
interrupts:
27+
maxItems: 1
28+
29+
clock-names:
30+
items:
31+
- const: qspi
32+
- const: qspi_out
33+
34+
clocks:
35+
maxItems: 2
36+
37+
resets:
38+
maxItems: 1
39+
40+
dmas:
41+
maxItems: 2
42+
43+
dma-names:
44+
items:
45+
- const: rx
46+
- const: tx
47+
48+
patternProperties:
49+
"@[0-9a-f]+":
50+
type: object
51+
52+
properties:
53+
spi-rx-bus-width:
54+
enum: [1, 2, 4]
55+
56+
spi-tx-bus-width:
57+
enum: [1, 2, 4]
58+
59+
nvidia,tx-clk-tap-delay:
60+
description:
61+
Delays the clock going out to device with this tap value.
62+
Tap value varies based on platform design trace lengths from Tegra
63+
QSPI to corresponding slave device.
64+
$ref: /schemas/types.yaml#/definitions/uint32
65+
minimum: 0
66+
maximum: 31
67+
68+
nvidia,rx-clk-tap-delay:
69+
description:
70+
Delays the clock coming in from the device with this tap value.
71+
Tap value varies based on platform design trace lengths from Tegra
72+
QSPI to corresponding slave device.
73+
$ref: /schemas/types.yaml#/definitions/uint32
74+
minimum: 0
75+
maximum: 255
76+
77+
required:
78+
- reg
79+
80+
required:
81+
- compatible
82+
- reg
83+
- interrupts
84+
- clock-names
85+
- clocks
86+
- resets
87+
88+
unevaluatedProperties: false
89+
90+
examples:
91+
- |
92+
#include <dt-bindings/clock/tegra210-car.h>
93+
#include <dt-bindings/reset/tegra210-car.h>
94+
#include <dt-bindings/interrupt-controller/arm-gic.h>
95+
spi@70410000 {
96+
compatible = "nvidia,tegra210-qspi";
97+
reg = <0x70410000 0x1000>;
98+
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
99+
#address-cells = <1>;
100+
#size-cells = <0>;
101+
clocks = <&tegra_car TEGRA210_CLK_QSPI>,
102+
<&tegra_car TEGRA210_CLK_QSPI_PM>;
103+
clock-names = "qspi", "qspi_out";
104+
resets = <&tegra_car 211>;
105+
dmas = <&apbdma 5>, <&apbdma 5>;
106+
dma-names = "rx", "tx";
107+
108+
flash@0 {
109+
compatible = "spi-nor";
110+
reg = <0>;
111+
spi-max-frequency = <104000000>;
112+
spi-tx-bus-width = <2>;
113+
spi-rx-bus-width = <2>;
114+
nvidia,tx-clk-tap-delay = <0>;
115+
nvidia,rx-clk-tap-delay = <0>;
116+
};
117+
};
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/spi/realtek,rtl-spi.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Realtek RTL838x/RTL839x SPI controller
8+
9+
maintainers:
10+
- Bert Vermeulen <bert@biot.com>
11+
- Birger Koblitz <mail@birger-koblitz.de>
12+
13+
allOf:
14+
- $ref: "spi-controller.yaml#"
15+
16+
properties:
17+
compatible:
18+
oneOf:
19+
- const: realtek,rtl8380-spi
20+
- const: realtek,rtl8382-spi
21+
- const: realtek,rtl8391-spi
22+
- const: realtek,rtl8392-spi
23+
- const: realtek,rtl8393-spi
24+
25+
reg:
26+
maxItems: 1
27+
28+
required:
29+
- compatible
30+
- reg
31+
32+
unevaluatedProperties: false
33+
34+
examples:
35+
- |
36+
spi: spi@1200 {
37+
compatible = "realtek,rtl8382-spi";
38+
reg = <0x1200 0x100>;
39+
#address-cells = <1>;
40+
#size-cells = <0>;
41+
};

Documentation/devicetree/bindings/spi/renesas,sh-msiof.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ properties:
4747
- renesas,msiof-r8a77980 # R-Car V3H
4848
- renesas,msiof-r8a77990 # R-Car E3
4949
- renesas,msiof-r8a77995 # R-Car D3
50+
- renesas,msiof-r8a779a0 # R-Car V3U
5051
- const: renesas,rcar-gen3-msiof # generic R-Car Gen3 and RZ/G2
5152
# compatible device
5253
- items:

Documentation/devicetree/bindings/spi/spi-controller.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,9 @@ patternProperties:
152152
spi-rx-bus-width:
153153
description:
154154
Bus width to the SPI bus used for read transfers.
155+
If 0 is provided, then no RX will be possible on this device.
155156
$ref: /schemas/types.yaml#/definitions/uint32
156-
enum: [1, 2, 4, 8]
157+
enum: [0, 1, 2, 4, 8]
157158
default: 1
158159

159160
spi-rx-delay-us:
@@ -163,8 +164,9 @@ patternProperties:
163164
spi-tx-bus-width:
164165
description:
165166
Bus width to the SPI bus used for write transfers.
167+
If 0 is provided, then no TX will be possible on this device.
166168
$ref: /schemas/types.yaml#/definitions/uint32
167-
enum: [1, 2, 4, 8]
169+
enum: [0, 1, 2, 4, 8]
168170
default: 1
169171

170172
spi-tx-delay-us:

Documentation/devicetree/bindings/spi/spi-sirf.txt

Lines changed: 0 additions & 42 deletions
This file was deleted.

MAINTAINERS

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17537,6 +17537,14 @@ M: Laxman Dewangan <ldewangan@nvidia.com>
1753717537
S: Supported
1753817538
F: drivers/spi/spi-tegra*
1753917539

17540+
TEGRA QUAD SPI DRIVER
17541+
M: Thierry Reding <thierry.reding@gmail.com>
17542+
M: Jonathan Hunter <jonathanh@nvidia.com>
17543+
M: Sowjanya Komatineni <skomatineni@nvidia.com>
17544+
L: linux-tegra@vger.kernel.org
17545+
S: Maintained
17546+
F: drivers/spi/spi-tegra210-quad.c
17547+
1754017548
TEGRA VIDEO DRIVER
1754117549
M: Thierry Reding <thierry.reding@gmail.com>
1754217550
M: Jonathan Hunter <jonathanh@nvidia.com>

drivers/spi/Kconfig

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ config SPI_CADENCE
203203

204204
config SPI_CADENCE_QUADSPI
205205
tristate "Cadence Quad SPI controller"
206-
depends on OF && (ARM || ARM64 || COMPILE_TEST)
206+
depends on OF && (ARM || ARM64 || X86 || COMPILE_TEST)
207207
help
208208
Enable support for the Cadence Quad SPI Flash controller.
209209

@@ -292,13 +292,6 @@ config SPI_DLN2
292292
This driver can also be built as a module. If so, the module
293293
will be called spi-dln2.
294294

295-
config SPI_EFM32
296-
tristate "EFM32 SPI controller"
297-
depends on OF && ARM && (ARCH_EFM32 || COMPILE_TEST)
298-
select SPI_BITBANG
299-
help
300-
Driver for the spi controller found on Energy Micro's EFM32 SoCs.
301-
302295
config SPI_EP93XX
303296
tristate "Cirrus Logic EP93xx SPI controller"
304297
depends on ARCH_EP93XX || COMPILE_TEST
@@ -649,7 +642,7 @@ config SPI_RPCIF
649642
tristate "Renesas RPC-IF SPI driver"
650643
depends on RENESAS_RPCIF
651644
help
652-
SPI driver for Renesas R-Car Gen3 RPC-IF.
645+
SPI driver for Renesas R-Car Gen3 or RZ/G2 RPC-IF.
653646

654647
config SPI_RSPI
655648
tristate "Renesas RSPI/QSPI controller"
@@ -750,13 +743,6 @@ config SPI_SIFIVE
750743
help
751744
This exposes the SPI controller IP from SiFive.
752745

753-
config SPI_SIRF
754-
tristate "CSR SiRFprimaII SPI controller"
755-
depends on SIRF_DMA
756-
select SPI_BITBANG
757-
help
758-
SPI driver for CSR SiRFprimaII SoCs
759-
760746
config SPI_SLAVE_MT27XX
761747
tristate "MediaTek SPI slave device"
762748
depends on ARCH_MEDIATEK || COMPILE_TEST
@@ -842,6 +828,15 @@ config SPI_MXS
842828
help
843829
SPI driver for Freescale MXS devices.
844830

831+
config SPI_TEGRA210_QUAD
832+
tristate "NVIDIA Tegra QSPI Controller"
833+
depends on ARCH_TEGRA || COMPILE_TEST
834+
depends on RESET_CONTROLLER
835+
help
836+
QSPI driver for NVIDIA Tegra QSPI Controller interface. This
837+
controller is different from the SPI controller and is available
838+
on Tegra SoCs starting from Tegra210.
839+
845840
config SPI_TEGRA114
846841
tristate "NVIDIA Tegra114 SPI Controller"
847842
depends on (ARCH_TEGRA && TEGRA20_APB_DMA) || COMPILE_TEST
@@ -884,12 +879,6 @@ config SPI_TOPCLIFF_PCH
884879
This driver also supports the ML7213/ML7223/ML7831, a companion chip
885880
for the Atom E6xx series and compatible with the Intel EG20T PCH.
886881

887-
config SPI_TXX9
888-
tristate "Toshiba TXx9 SPI controller"
889-
depends on GPIOLIB && (CPU_TX49XX || COMPILE_TEST)
890-
help
891-
SPI driver for Toshiba TXx9 MIPS SoCs
892-
893882
config SPI_UNIPHIER
894883
tristate "Socionext UniPhier SPI Controller"
895884
depends on (ARCH_UNIPHIER || COMPILE_TEST) && OF

drivers/spi/Makefile

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ spi-dw-$(CONFIG_SPI_DW_DMA) += spi-dw-dma.o
4242
obj-$(CONFIG_SPI_DW_BT1) += spi-dw-bt1.o
4343
obj-$(CONFIG_SPI_DW_MMIO) += spi-dw-mmio.o
4444
obj-$(CONFIG_SPI_DW_PCI) += spi-dw-pci.o
45-
obj-$(CONFIG_SPI_EFM32) += spi-efm32.o
4645
obj-$(CONFIG_SPI_EP93XX) += spi-ep93xx.o
4746
obj-$(CONFIG_SPI_FALCON) += spi-falcon.o
4847
obj-$(CONFIG_SPI_FSI) += spi-fsi.o
@@ -94,6 +93,7 @@ obj-$(CONFIG_SPI_QCOM_QSPI) += spi-qcom-qspi.o
9493
obj-$(CONFIG_SPI_QUP) += spi-qup.o
9594
obj-$(CONFIG_SPI_ROCKCHIP) += spi-rockchip.o
9695
obj-$(CONFIG_SPI_RB4XX) += spi-rb4xx.o
96+
obj-$(CONFIG_MACH_REALTEK_RTL) += spi-realtek-rtl.o
9797
obj-$(CONFIG_SPI_RPCIF) += spi-rpc-if.o
9898
obj-$(CONFIG_SPI_RSPI) += spi-rspi.o
9999
obj-$(CONFIG_SPI_S3C24XX) += spi-s3c24xx-hw.o
@@ -105,7 +105,6 @@ obj-$(CONFIG_SPI_SH_HSPI) += spi-sh-hspi.o
105105
obj-$(CONFIG_SPI_SH_MSIOF) += spi-sh-msiof.o
106106
obj-$(CONFIG_SPI_SH_SCI) += spi-sh-sci.o
107107
obj-$(CONFIG_SPI_SIFIVE) += spi-sifive.o
108-
obj-$(CONFIG_SPI_SIRF) += spi-sirf.o
109108
obj-$(CONFIG_SPI_SLAVE_MT27XX) += spi-slave-mt27xx.o
110109
obj-$(CONFIG_SPI_SPRD) += spi-sprd.o
111110
obj-$(CONFIG_SPI_SPRD_ADI) += spi-sprd-adi.o
@@ -115,14 +114,14 @@ obj-$(CONFIG_SPI_ST_SSC4) += spi-st-ssc4.o
115114
obj-$(CONFIG_SPI_SUN4I) += spi-sun4i.o
116115
obj-$(CONFIG_SPI_SUN6I) += spi-sun6i.o
117116
obj-$(CONFIG_SPI_SYNQUACER) += spi-synquacer.o
117+
obj-$(CONFIG_SPI_TEGRA210_QUAD) += spi-tegra210-quad.o
118118
obj-$(CONFIG_SPI_TEGRA114) += spi-tegra114.o
119119
obj-$(CONFIG_SPI_TEGRA20_SFLASH) += spi-tegra20-sflash.o
120120
obj-$(CONFIG_SPI_TEGRA20_SLINK) += spi-tegra20-slink.o
121121
obj-$(CONFIG_SPI_TLE62X0) += spi-tle62x0.o
122122
spi-thunderx-objs := spi-cavium.o spi-cavium-thunderx.o
123123
obj-$(CONFIG_SPI_THUNDERX) += spi-thunderx.o
124124
obj-$(CONFIG_SPI_TOPCLIFF_PCH) += spi-topcliff-pch.o
125-
obj-$(CONFIG_SPI_TXX9) += spi-txx9.o
126125
obj-$(CONFIG_SPI_UNIPHIER) += spi-uniphier.o
127126
obj-$(CONFIG_SPI_XCOMM) += spi-xcomm.o
128127
obj-$(CONFIG_SPI_XILINX) += spi-xilinx.o

0 commit comments

Comments
 (0)