hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Davinci SPI controller device bindings
 
Links on DM:
Keystone 2 - https://www.ti.com/lit/ug/sprugp2a/sprugp2a.pdf
dm644x - https://www.ti.com/lit/ug/sprue32a/sprue32a.pdf
OMAP-L138/da830 - http://www.ti.com/lit/ug/spruh77a/spruh77a.pdf
 
Required properties:
- #address-cells: number of cells required to define a chip select
   address on the SPI bus. Should be set to 1.
- #size-cells: should be zero.
- compatible:
   - "ti,dm6441-spi" for SPI used similar to that on DM644x SoC family
   - "ti,da830-spi" for SPI used similar to that on DA8xx SoC family
   - "ti,keystone-spi" for SPI used similar to that on Keystone2 SoC
       family
- reg: Offset and length of SPI controller register space
- num-cs: Number of chip selects. This includes internal as well as
   GPIO chip selects.
- ti,davinci-spi-intr-line: interrupt line used to connect the SPI
   IP to the interrupt controller within the SoC. Possible values
   are 0 and 1. Manual says one of the two possible interrupt
   lines can be tied to the interrupt controller. Set this
   based on a specific SoC configuration.
- interrupts: interrupt number mapped to CPU.
- clocks: spi clk phandle
          For 66AK2G this property should be set per binding,
          Documentation/devicetree/bindings/clock/ti,sci-clk.txt
 
SoC-specific Required Properties:
 
The following are mandatory properties for Keystone 2 66AK2G SoCs only:
 
- power-domains:    Should contain a phandle to a PM domain provider node
           and an args specifier containing the SPI device id
           value. This property is as per the binding,
 
Optional:
- cs-gpios: gpio chip selects
   For example to have 3 internal CS and 2 GPIO CS, user could define
   cs-gpios = <0>, <0>, <0>, <&gpio1 30 0>, <&gpio1 31 0>;
   where first three are internal CS and last two are GPIO CS.
 
Optional properties for slave devices:
SPI slave nodes can contain the following properties.
Not all SPI Peripherals from Texas Instruments support this.
Please check SPI peripheral documentation for a device before using these.
 
- ti,spi-wdelay : delay between transmission of words
   (SPIFMTn.WDELAY, SPIDAT1.WDEL) must be specified in number of SPI module
   clock periods.
 
   delay = WDELAY * SPI_module_clock_period + 2 * SPI_module_clock_period
 
Below is timing diagram which shows functional meaning of
"ti,spi-wdelay" parameter.
 
             +-+ +-+ +-+ +-+ +-+                           +-+ +-+ +-+
SPI_CLK      | | | | | | | | | |                           | | | | | |
  +----------+ +-+ +-+ +-+ +-+ +---------------------------+ +-+ +-+ +-
 
SPI_SOMI/SIMO+-----------------+                           +-----------
  +----------+ word1           +---------------------------+word2
             +-----------------+                           +-----------
                                          WDELAY
                                <-------------------------->
 
Example of a NOR flash slave device (n25q032) connected to DaVinci
SPI controller device over the SPI bus.
 
spi0:spi@20bf0000 {
   #address-cells            = <1>;
   #size-cells            = <0>;
   compatible            = "ti,dm6446-spi";
   reg                = <0x20BF0000 0x1000>;
   num-cs                = <4>;
   ti,davinci-spi-intr-line    = <0>;
   interrupts            = <338>;
   clocks                = <&clkspi>;
 
   flash: n25q032@0 {
       #address-cells = <1>;
       #size-cells = <1>;
       compatible = "st,m25p32";
       spi-max-frequency = <25000000>;
       reg = <0>;
       ti,spi-wdelay = <8>;
 
       partition@0 {
           label = "u-boot-spl";
           reg = <0x0 0x80000>;
           read-only;
       };
 
       partition@1 {
           label = "test";
           reg = <0x80000 0x380000>;
       };
   };
};