... | ... | ||
---|---|---|---|
12 | The device tree files adds Octo Memory Manager and its 2 associated Octo | 12 | The device tree files adds Octo Memory Manager and its 2 associated Octo |
13 | SPI chidren in stm32mp251.dtsi and adds SPI NOR support in stm32mp257f-ev1 | 13 | SPI chidren in stm32mp251.dtsi and adds SPI NOR support in stm32mp257f-ev1 |
14 | board. | 14 | board. |
15 | 15 | ||
16 | Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> | 16 | Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> |
17 | |||
18 | Changes in v8: | ||
19 | - update OMM's dt-bindings: | ||
20 | - Remove minItems for clocks and resets properties. | ||
21 | - Fix st,syscfg-amcr items declaration. | ||
22 | - move power-domains property before vendor specific properties. | ||
23 | - Update compatible check wrongly introduced during internal tests in | ||
24 | stm32_omm.c. | ||
25 | - Move ommanager's node outside bus@42080000's node in stm32mp251.dtsi. | ||
26 | - Link to v7: https://lore.kernel.org/r/20250401-upstream_ospi_v6-v7-0-0ef28513ed81@foss.st.com | ||
17 | 27 | ||
18 | Changes in v7: | 28 | Changes in v7: |
19 | - update OMM's dt-bindings by updating : | 29 | - update OMM's dt-bindings by updating : |
20 | - clock-names and reset-names properties. | 30 | - clock-names and reset-names properties. |
21 | - spi unit-address node. | 31 | - spi unit-address node. |
... | ... | ||
89 | arm64: dts: st: Add OMM node on stm32mp251 | 99 | arm64: dts: st: Add OMM node on stm32mp251 |
90 | arm64: dts: st: Add ospi port1 pinctrl entries in stm32mp25-pinctrl.dtsi | 100 | arm64: dts: st: Add ospi port1 pinctrl entries in stm32mp25-pinctrl.dtsi |
91 | arm64: dts: st: Add SPI NOR flash support on stm32mp257f-ev1 board | 101 | arm64: dts: st: Add SPI NOR flash support on stm32mp257f-ev1 board |
92 | arm64: defconfig: Enable STM32 Octo Memory Manager and OcstoSPI driver | 102 | arm64: defconfig: Enable STM32 Octo Memory Manager and OcstoSPI driver |
93 | 103 | ||
94 | .../memory-controllers/st,stm32mp25-omm.yaml | 227 ++++++++++ | 104 | .../memory-controllers/st,stm32mp25-omm.yaml | 226 ++++++++++ |
95 | MAINTAINERS | 6 + | 105 | MAINTAINERS | 6 + |
96 | arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi | 51 +++ | 106 | arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi | 51 +++ |
97 | arch/arm64/boot/dts/st/stm32mp251.dtsi | 54 +++ | 107 | arch/arm64/boot/dts/st/stm32mp251.dtsi | 54 +++ |
98 | arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 32 ++ | 108 | arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 32 ++ |
99 | arch/arm64/configs/defconfig | 2 + | 109 | arch/arm64/configs/defconfig | 2 + |
100 | drivers/memory/Kconfig | 17 + | 110 | drivers/memory/Kconfig | 17 + |
101 | drivers/memory/Makefile | 1 + | 111 | drivers/memory/Makefile | 1 + |
102 | drivers/memory/stm32_omm.c | 474 +++++++++++++++++++++ | 112 | drivers/memory/stm32_omm.c | 474 +++++++++++++++++++++ |
103 | 9 files changed, 864 insertions(+) | 113 | 9 files changed, 863 insertions(+) |
104 | --- | 114 | --- |
105 | base-commit: 88424abd55ab36c3565898a656589a0a25ecd92f | 115 | base-commit: 88424abd55ab36c3565898a656589a0a25ecd92f |
106 | change-id: 20250320-upstream_ospi_v6-d432a8172105 | 116 | change-id: 20250320-upstream_ospi_v6-d432a8172105 |
107 | 117 | ||
108 | Best regards, | 118 | Best regards, |
109 | -- | 119 | -- |
110 | Patrice Chotard <patrice.chotard@foss.st.com> | 120 | Patrice Chotard <patrice.chotard@foss.st.com> | diff view generated by jsdifflib |
1 | Add myself as STM32 OCTO MEMORY MANAGER maintainer. | 1 | Add myself as STM32 OCTO MEMORY MANAGER maintainer. |
---|---|---|---|
2 | 2 | ||
3 | Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> | 3 | Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> |
4 | --- | 4 | --- |
5 | MAINTAINERS | 6 ++++++ | 5 | MAINTAINERS | 6 ++++++ |
6 | 1 file changed, 6 insertions(+) | 6 | 1 file changed, 6 insertions(+) |
7 | 7 | ||
8 | diff --git a/MAINTAINERS b/MAINTAINERS | 8 | diff --git a/MAINTAINERS b/MAINTAINERS |
9 | index XXXXXXX..XXXXXXX 100644 | 9 | index XXXXXXX..XXXXXXX 100644 |
10 | --- a/MAINTAINERS | 10 | --- a/MAINTAINERS |
11 | +++ b/MAINTAINERS | 11 | +++ b/MAINTAINERS |
12 | @@ -XXX,XX +XXX,XX @@ L: linux-i2c@vger.kernel.org | 12 | @@ -XXX,XX +XXX,XX @@ L: linux-i2c@vger.kernel.org |
13 | S: Maintained | 13 | S: Maintained |
14 | F: drivers/i2c/busses/i2c-stm32* | 14 | F: drivers/i2c/busses/i2c-stm32* |
15 | 15 | ||
16 | +ST STM32 OCTO MEMORY MANAGER | 16 | +ST STM32 OCTO MEMORY MANAGER |
17 | +M: Patrice Chotard <patrice.chotard@foss.st.com> | 17 | +M: Patrice Chotard <patrice.chotard@foss.st.com> |
18 | +S: Maintained | 18 | +S: Maintained |
19 | +F: Documentation/devicetree/bindings/memory-controllers/st,stm32mp25-omm.yaml | 19 | +F: Documentation/devicetree/bindings/memory-controllers/st,stm32mp25-omm.yaml |
20 | +F: drivers/memory/stm32_omm.c | 20 | +F: drivers/memory/stm32_omm.c |
21 | + | 21 | + |
22 | ST STM32 SPI DRIVER | 22 | ST STM32 SPI DRIVER |
23 | M: Alain Volmat <alain.volmat@foss.st.com> | 23 | M: Alain Volmat <alain.volmat@foss.st.com> |
24 | L: linux-spi@vger.kernel.org | 24 | L: linux-spi@vger.kernel.org |
25 | 25 | ||
26 | -- | 26 | -- |
27 | 2.25.1 | 27 | 2.25.1 | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
13 | - chip select selection override. | 13 | - chip select selection override. |
14 | - the time between 2 transactions in multiplexed mode. | 14 | - the time between 2 transactions in multiplexed mode. |
15 | 15 | ||
16 | Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> | 16 | Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> |
17 | --- | 17 | --- |
18 | .../memory-controllers/st,stm32mp25-omm.yaml | 227 +++++++++++++++++++++ | 18 | .../memory-controllers/st,stm32mp25-omm.yaml | 226 +++++++++++++++++++++ |
19 | 1 file changed, 227 insertions(+) | 19 | 1 file changed, 226 insertions(+) |
20 | 20 | ||
21 | diff --git a/Documentation/devicetree/bindings/memory-controllers/st,stm32mp25-omm.yaml b/Documentation/devicetree/bindings/memory-controllers/st,stm32mp25-omm.yaml | 21 | diff --git a/Documentation/devicetree/bindings/memory-controllers/st,stm32mp25-omm.yaml b/Documentation/devicetree/bindings/memory-controllers/st,stm32mp25-omm.yaml |
22 | new file mode 100644 | 22 | new file mode 100644 |
23 | index XXXXXXX..XXXXXXX | 23 | index XXXXXXX..XXXXXXX |
24 | --- /dev/null | 24 | --- /dev/null |
... | ... | ||
86 | + enum: [ospi1, ospi2] | 86 | + enum: [ospi1, ospi2] |
87 | + minItems: 1 | 87 | + minItems: 1 |
88 | + maxItems: 2 | 88 | + maxItems: 2 |
89 | + | 89 | + |
90 | + clocks: | 90 | + clocks: |
91 | + minItems: 3 | ||
92 | + maxItems: 3 | 91 | + maxItems: 3 |
93 | + | 92 | + |
94 | + clock-names: | 93 | + clock-names: |
95 | + items: | 94 | + items: |
96 | + - const: omm | 95 | + - const: omm |
97 | + - const: ospi1 | 96 | + - const: ospi1 |
98 | + - const: ospi2 | 97 | + - const: ospi2 |
99 | + | 98 | + |
100 | + resets: | 99 | + resets: |
101 | + minItems: 3 | ||
102 | + maxItems: 3 | 100 | + maxItems: 3 |
103 | + | 101 | + |
104 | + reset-names: | 102 | + reset-names: |
105 | + items: | 103 | + items: |
106 | + - const: omm | 104 | + - const: omm |
107 | + - const: ospi1 | 105 | + - const: ospi1 |
108 | + - const: ospi2 | 106 | + - const: ospi2 |
109 | + | 107 | + |
110 | + access-controllers: | 108 | + access-controllers: |
109 | + maxItems: 1 | ||
110 | + | ||
111 | + power-domains: | ||
111 | + maxItems: 1 | 112 | + maxItems: 1 |
112 | + | 113 | + |
113 | + st,syscfg-amcr: | 114 | + st,syscfg-amcr: |
114 | + $ref: /schemas/types.yaml#/definitions/phandle-array | 115 | + $ref: /schemas/types.yaml#/definitions/phandle-array |
115 | + description: | | 116 | + description: | |
... | ... | ||
121 | + - 001: OCTOSPI1 (192 Mbytes), OCTOSPI2 (64 Mbytes) | 122 | + - 001: OCTOSPI1 (192 Mbytes), OCTOSPI2 (64 Mbytes) |
122 | + - 010: OCTOSPI1 (128 Mbytes), OCTOSPI2 (128 Mbytes) | 123 | + - 010: OCTOSPI1 (128 Mbytes), OCTOSPI2 (128 Mbytes) |
123 | + - 011: OCTOSPI1 (64 Mbytes), OCTOSPI2 (192 Mbytes) | 124 | + - 011: OCTOSPI1 (64 Mbytes), OCTOSPI2 (192 Mbytes) |
124 | + - 1xx: OCTOSPI1 unmapped, OCTOSPI2 (256 Mbytes) | 125 | + - 1xx: OCTOSPI1 unmapped, OCTOSPI2 (256 Mbytes) |
125 | + items: | 126 | + items: |
126 | + - description: phandle to syscfg | 127 | + items: |
127 | + - description: register offset within syscfg | 128 | + - description: phandle to syscfg |
128 | + - description: register bitmask for memory split | 129 | + - description: register offset within syscfg |
130 | + - description: register bitmask for memory split | ||
129 | + | 131 | + |
130 | + st,omm-req2ack-ns: | 132 | + st,omm-req2ack-ns: |
131 | + description: | 133 | + description: |
132 | + In multiplexed mode (MUXEN = 1), this field defines the time in | 134 | + In multiplexed mode (MUXEN = 1), this field defines the time in |
133 | + nanoseconds between two transactions. | 135 | + nanoseconds between two transactions. |
... | ... | ||
154 | + - 2: swapped mode | 156 | + - 2: swapped mode |
155 | + - 3: mux OCTOSPI1 and OCTOSPI2 to port 2 | 157 | + - 3: mux OCTOSPI1 and OCTOSPI2 to port 2 |
156 | + minimum: 0 | 158 | + minimum: 0 |
157 | + maximum: 3 | 159 | + maximum: 3 |
158 | + default: 0 | 160 | + default: 0 |
159 | + | ||
160 | + power-domains: | ||
161 | + maxItems: 1 | ||
162 | + | 161 | + |
163 | +patternProperties: | 162 | +patternProperties: |
164 | + ^spi@[0-9]: | 163 | + ^spi@[0-9]: |
165 | + type: object | 164 | + type: object |
166 | + $ref: /schemas/spi/st,stm32mp25-ospi.yaml# | 165 | + $ref: /schemas/spi/st,stm32mp25-ospi.yaml# |
... | ... | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
388 | + if (omm->nb_child >= OMM_CHILD_NB) { | 388 | + if (omm->nb_child >= OMM_CHILD_NB) { |
389 | + dev_err(dev, "Bad DT, found too much children\n"); | 389 | + dev_err(dev, "Bad DT, found too much children\n"); |
390 | + return -E2BIG; | 390 | + return -E2BIG; |
391 | + } | 391 | + } |
392 | + | 392 | + |
393 | + if (!of_device_is_compatible(child, "st,stm32mp25-omi")) | 393 | + if (!of_device_is_compatible(child, "st,stm32mp25-ospi")) |
394 | + return -EINVAL; | 394 | + return -EINVAL; |
395 | + | 395 | + |
396 | + ret = stm32_omm_check_access(child); | 396 | + ret = stm32_omm_check_access(child); |
397 | + if (ret < 0 && ret != -EACCES) | 397 | + if (ret < 0 && ret != -EACCES) |
398 | + return ret; | 398 | + return ret; |
... | ... | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
8 | 8 | ||
9 | diff --git a/arch/arm64/boot/dts/st/stm32mp251.dtsi b/arch/arm64/boot/dts/st/stm32mp251.dtsi | 9 | diff --git a/arch/arm64/boot/dts/st/stm32mp251.dtsi b/arch/arm64/boot/dts/st/stm32mp251.dtsi |
10 | index XXXXXXX..XXXXXXX 100644 | 10 | index XXXXXXX..XXXXXXX 100644 |
11 | --- a/arch/arm64/boot/dts/st/stm32mp251.dtsi | 11 | --- a/arch/arm64/boot/dts/st/stm32mp251.dtsi |
12 | +++ b/arch/arm64/boot/dts/st/stm32mp251.dtsi | 12 | +++ b/arch/arm64/boot/dts/st/stm32mp251.dtsi |
13 | @@ -XXX,XX +XXX,XX @@ rng: rng@42020000 { | 13 | @@ -XXX,XX +XXX,XX @@ hpdma3: dma-controller@40420000 { |
14 | status = "disabled"; | 14 | #dma-cells = <3>; |
15 | }; | 15 | }; |
16 | 16 | ||
17 | + ommanager: ommanager@40500000 { | 17 | + ommanager: ommanager@40500000 { |
18 | + compatible = "st,stm32mp25-omm"; | 18 | + compatible = "st,stm32mp25-omm"; |
19 | + reg = <0x40500000 0x400>, <0x60000000 0x10000000>; | 19 | + reg = <0x40500000 0x400>, <0x60000000 0x10000000>; |
20 | + reg-names = "regs", "memory_map"; | 20 | + reg-names = "regs", "memory_map"; |
21 | + ranges = <0 0 0x40430000 0x400>, | 21 | + ranges = <0 0 0x40430000 0x400>, |
22 | + <1 0 0x40440000 0x400>; | 22 | + <1 0 0x40440000 0x400>; |
23 | + clocks = <&rcc CK_BUS_OSPIIOM>, | 23 | + clocks = <&rcc CK_BUS_OSPIIOM>, |
24 | + <&scmi_clk CK_SCMI_OSPI1>, | 24 | + <&scmi_clk CK_SCMI_OSPI1>, |
25 | + <&scmi_clk CK_SCMI_OSPI2>; | 25 | + <&scmi_clk CK_SCMI_OSPI2>; |
26 | + clock-names = "omm", "ospi1", "ospi2"; | 26 | + clock-names = "omm", "ospi1", "ospi2"; |
27 | + resets = <&rcc OSPIIOM_R>, | 27 | + resets = <&rcc OSPIIOM_R>, |
28 | + <&scmi_reset RST_SCMI_OSPI1>, | 28 | + <&scmi_reset RST_SCMI_OSPI1>, |
29 | + <&scmi_reset RST_SCMI_OSPI2>; | 29 | + <&scmi_reset RST_SCMI_OSPI2>; |
30 | + reset-names = "omm", "ospi1", "ospi2"; | 30 | + reset-names = "omm", "ospi1", "ospi2"; |
31 | + access-controllers = <&rifsc 111>; | 31 | + access-controllers = <&rifsc 111>; |
32 | + power-domains = <&CLUSTER_PD>; | ||
33 | + #address-cells = <2>; | ||
34 | + #size-cells = <1>; | ||
35 | + st,syscfg-amcr = <&syscfg 0x2c00 0x7>; | ||
36 | + status = "disabled"; | ||
37 | + | ||
38 | + ospi1: spi@0 { | ||
39 | + compatible = "st,stm32mp25-ospi"; | ||
40 | + reg = <0 0 0x400>; | ||
41 | + interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>; | ||
42 | + dmas = <&hpdma 2 0x62 0x3121>, | ||
43 | + <&hpdma 2 0x42 0x3112>; | ||
44 | + dma-names = "tx", "rx"; | ||
45 | + clocks = <&scmi_clk CK_SCMI_OSPI1>; | ||
46 | + resets = <&scmi_reset RST_SCMI_OSPI1>, | ||
47 | + <&scmi_reset RST_SCMI_OSPI1DLL>; | ||
48 | + access-controllers = <&rifsc 74>; | ||
32 | + power-domains = <&CLUSTER_PD>; | 49 | + power-domains = <&CLUSTER_PD>; |
33 | + #address-cells = <2>; | 50 | + st,syscfg-dlyb = <&syscfg 0x1000>; |
34 | + #size-cells = <1>; | ||
35 | + st,syscfg-amcr = <&syscfg 0x2c00 0x7>; | ||
36 | + status = "disabled"; | 51 | + status = "disabled"; |
37 | + | ||
38 | + ospi1: spi@0 { | ||
39 | + compatible = "st,stm32mp25-ospi"; | ||
40 | + reg = <0 0 0x400>; | ||
41 | + interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>; | ||
42 | + dmas = <&hpdma 2 0x62 0x00003121>, | ||
43 | + <&hpdma 2 0x42 0x00003112>; | ||
44 | + dma-names = "tx", "rx"; | ||
45 | + clocks = <&scmi_clk CK_SCMI_OSPI1>; | ||
46 | + resets = <&scmi_reset RST_SCMI_OSPI1>, | ||
47 | + <&scmi_reset RST_SCMI_OSPI1DLL>; | ||
48 | + access-controllers = <&rifsc 74>; | ||
49 | + power-domains = <&CLUSTER_PD>; | ||
50 | + st,syscfg-dlyb = <&syscfg 0x1000>; | ||
51 | + status = "disabled"; | ||
52 | + }; | ||
53 | + | ||
54 | + ospi2: spi@1 { | ||
55 | + compatible = "st,stm32mp25-ospi"; | ||
56 | + reg = <1 0 0x400>; | ||
57 | + interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>; | ||
58 | + dmas = <&hpdma 3 0x62 0x00003121>, | ||
59 | + <&hpdma 3 0x42 0x00003112>; | ||
60 | + dma-names = "tx", "rx"; | ||
61 | + clocks = <&scmi_clk CK_SCMI_OSPI2>; | ||
62 | + resets = <&scmi_reset RST_SCMI_OSPI2>, | ||
63 | + <&scmi_reset RST_SCMI_OSPI2DLL>; | ||
64 | + access-controllers = <&rifsc 75>; | ||
65 | + power-domains = <&CLUSTER_PD>; | ||
66 | + st,syscfg-dlyb = <&syscfg 0x1400>; | ||
67 | + status = "disabled"; | ||
68 | + }; | ||
69 | + }; | 52 | + }; |
70 | + | 53 | + |
71 | spi8: spi@46020000 { | 54 | + ospi2: spi@1 { |
72 | #address-cells = <1>; | 55 | + compatible = "st,stm32mp25-ospi"; |
73 | #size-cells = <0>; | 56 | + reg = <1 0 0x400>; |
57 | + interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>; | ||
58 | + dmas = <&hpdma 3 0x62 0x3121>, | ||
59 | + <&hpdma 3 0x42 0x3112>; | ||
60 | + dma-names = "tx", "rx"; | ||
61 | + clocks = <&scmi_clk CK_SCMI_OSPI2>; | ||
62 | + resets = <&scmi_reset RST_SCMI_OSPI2>, | ||
63 | + <&scmi_reset RST_SCMI_OSPI2DLL>; | ||
64 | + access-controllers = <&rifsc 75>; | ||
65 | + power-domains = <&CLUSTER_PD>; | ||
66 | + st,syscfg-dlyb = <&syscfg 0x1400>; | ||
67 | + status = "disabled"; | ||
68 | + }; | ||
69 | + }; | ||
70 | + | ||
71 | rifsc: bus@42080000 { | ||
72 | compatible = "st,stm32mp25-rifsc", "simple-bus"; | ||
73 | reg = <0x42080000 0x1000>; | ||
74 | 74 | ||
75 | -- | 75 | -- |
76 | 2.25.1 | 76 | 2.25.1 | diff view generated by jsdifflib |
1 | Add pinctrl entry related to OSPI's port1 in stm32mp25-pinctrl.dtsi | 1 | Add pinctrl entry related to OSPI's port1 in stm32mp25-pinctrl.dtsi |
---|---|---|---|
2 | 2 | ||
3 | Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> | 3 | Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> |
4 | --- | 4 | --- |
5 | arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi | 51 +++++++++++++++++++++++++++ | 5 | arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi | 51 +++++++++++++++++++++++++++ |
6 | 1 file changed, 51 insertions(+) | 6 | 1 file changed, 51 insertions(+) |
7 | 7 | ||
8 | diff --git a/arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi b/arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi | 8 | diff --git a/arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi b/arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi |
9 | index XXXXXXX..XXXXXXX 100644 | 9 | index XXXXXXX..XXXXXXX 100644 |
10 | --- a/arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi | 10 | --- a/arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi |
11 | +++ b/arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi | 11 | +++ b/arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi |
12 | @@ -XXX,XX +XXX,XX @@ pins2 { | 12 | @@ -XXX,XX +XXX,XX @@ pins2 { |
13 | }; | 13 | }; |
14 | }; | 14 | }; |
15 | 15 | ||
16 | + ospi_port1_clk_pins_a: ospi-port1-clk-0 { | 16 | + ospi_port1_clk_pins_a: ospi-port1-clk-0 { |
17 | + pins { | 17 | + pins { |
18 | + pinmux = <STM32_PINMUX('D', 0, AF10)>; /* OSPI1_CLK */ | 18 | + pinmux = <STM32_PINMUX('D', 0, AF10)>; /* OSPI1_CLK */ |
19 | + bias-disable; | 19 | + bias-disable; |
20 | + drive-push-pull; | 20 | + drive-push-pull; |
21 | + slew-rate = <2>; | 21 | + slew-rate = <2>; |
22 | + }; | 22 | + }; |
23 | + }; | 23 | + }; |
24 | + | 24 | + |
25 | + ospi_port1_clk_sleep_pins_a: ospi-port1-clk-sleep-0 { | 25 | + ospi_port1_clk_sleep_pins_a: ospi-port1-clk-sleep-0 { |
26 | + pins { | 26 | + pins { |
27 | + pinmux = <STM32_PINMUX('D', 0, ANALOG)>; /* OSPI1_CLK */ | 27 | + pinmux = <STM32_PINMUX('D', 0, ANALOG)>; /* OSPI1_CLK */ |
28 | + }; | 28 | + }; |
29 | + }; | 29 | + }; |
30 | + | 30 | + |
31 | + ospi_port1_cs0_pins_a: ospi-port1-cs0-0 { | 31 | + ospi_port1_cs0_pins_a: ospi-port1-cs0-0 { |
32 | + pins { | 32 | + pins { |
33 | + pinmux = <STM32_PINMUX('D', 3, AF10)>; /* OSPI_NCS0 */ | 33 | + pinmux = <STM32_PINMUX('D', 3, AF10)>; /* OSPI_NCS0 */ |
34 | + bias-pull-up; | 34 | + bias-pull-up; |
35 | + drive-push-pull; | 35 | + drive-push-pull; |
36 | + slew-rate = <0>; | 36 | + slew-rate = <0>; |
37 | + }; | 37 | + }; |
38 | + }; | 38 | + }; |
39 | + | 39 | + |
40 | + ospi_port1_cs0_sleep_pins_a: ospi-port1-cs0-sleep-0 { | 40 | + ospi_port1_cs0_sleep_pins_a: ospi-port1-cs0-sleep-0 { |
41 | + pins { | 41 | + pins { |
42 | + pinmux = <STM32_PINMUX('D', 3, ANALOG)>; /* OSPI_NCS0 */ | 42 | + pinmux = <STM32_PINMUX('D', 3, ANALOG)>; /* OSPI_NCS0 */ |
43 | + }; | 43 | + }; |
44 | + }; | 44 | + }; |
45 | + | 45 | + |
46 | + ospi_port1_io03_pins_a: ospi-port1-io03-0 { | 46 | + ospi_port1_io03_pins_a: ospi-port1-io03-0 { |
47 | + pins { | 47 | + pins { |
48 | + pinmux = <STM32_PINMUX('D', 4, AF10)>, /* OSPI_IO0 */ | 48 | + pinmux = <STM32_PINMUX('D', 4, AF10)>, /* OSPI_IO0 */ |
49 | + <STM32_PINMUX('D', 5, AF10)>, /* OSPI_IO1 */ | 49 | + <STM32_PINMUX('D', 5, AF10)>, /* OSPI_IO1 */ |
50 | + <STM32_PINMUX('D', 6, AF10)>, /* OSPI_IO2 */ | 50 | + <STM32_PINMUX('D', 6, AF10)>, /* OSPI_IO2 */ |
51 | + <STM32_PINMUX('D', 7, AF10)>; /* OSPI_IO3 */ | 51 | + <STM32_PINMUX('D', 7, AF10)>; /* OSPI_IO3 */ |
52 | + bias-disable; | 52 | + bias-disable; |
53 | + drive-push-pull; | 53 | + drive-push-pull; |
54 | + slew-rate = <0>; | 54 | + slew-rate = <0>; |
55 | + }; | 55 | + }; |
56 | + }; | 56 | + }; |
57 | + | 57 | + |
58 | + ospi_port1_io03_sleep_pins_a: ospi-port1-io03-sleep-0 { | 58 | + ospi_port1_io03_sleep_pins_a: ospi-port1-io03-sleep-0 { |
59 | + pins { | 59 | + pins { |
60 | + pinmux = <STM32_PINMUX('D', 4, ANALOG)>, /* OSPI_IO0 */ | 60 | + pinmux = <STM32_PINMUX('D', 4, ANALOG)>, /* OSPI_IO0 */ |
61 | + <STM32_PINMUX('D', 5, ANALOG)>, /* OSPI_IO1 */ | 61 | + <STM32_PINMUX('D', 5, ANALOG)>, /* OSPI_IO1 */ |
62 | + <STM32_PINMUX('D', 6, ANALOG)>, /* OSPI_IO2 */ | 62 | + <STM32_PINMUX('D', 6, ANALOG)>, /* OSPI_IO2 */ |
63 | + <STM32_PINMUX('D', 7, ANALOG)>; /* OSPI_IO3 */ | 63 | + <STM32_PINMUX('D', 7, ANALOG)>; /* OSPI_IO3 */ |
64 | + }; | 64 | + }; |
65 | + }; | 65 | + }; |
66 | + | 66 | + |
67 | sdmmc1_b4_od_pins_a: sdmmc1-b4-od-0 { | 67 | sdmmc1_b4_od_pins_a: sdmmc1-b4-od-0 { |
68 | pins1 { | 68 | pins1 { |
69 | pinmux = <STM32_PINMUX('E', 4, AF10)>, /* SDMMC1_D0 */ | 69 | pinmux = <STM32_PINMUX('E', 4, AF10)>, /* SDMMC1_D0 */ |
70 | 70 | ||
71 | -- | 71 | -- |
72 | 2.25.1 | 72 | 2.25.1 | diff view generated by jsdifflib |
1 | Add SPI NOR flash nor support on stm32mp257f-ev1 board. | 1 | Add SPI NOR flash nor support on stm32mp257f-ev1 board. |
---|---|---|---|
2 | 2 | ||
3 | Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> | 3 | Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> |
4 | --- | 4 | --- |
5 | arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 32 ++++++++++++++++++++++++++++++ | 5 | arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 32 ++++++++++++++++++++++++++++++ |
6 | 1 file changed, 32 insertions(+) | 6 | 1 file changed, 32 insertions(+) |
7 | 7 | ||
8 | diff --git a/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts b/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 8 | diff --git a/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts b/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts |
9 | index XXXXXXX..XXXXXXX 100644 | 9 | index XXXXXXX..XXXXXXX 100644 |
10 | --- a/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 10 | --- a/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts |
11 | +++ b/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 11 | +++ b/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts |
12 | @@ -XXX,XX +XXX,XX @@ fw@80000000 { | 12 | @@ -XXX,XX +XXX,XX @@ fw@80000000 { |
13 | reg = <0x0 0x80000000 0x0 0x4000000>; | 13 | reg = <0x0 0x80000000 0x0 0x4000000>; |
14 | no-map; | 14 | no-map; |
15 | }; | 15 | }; |
16 | + | 16 | + |
17 | + mm_ospi1: mm-ospi@60000000 { | 17 | + mm_ospi1: mm-ospi@60000000 { |
18 | + reg = <0x0 0x60000000 0x0 0x10000000>; | 18 | + reg = <0x0 0x60000000 0x0 0x10000000>; |
19 | + no-map; | 19 | + no-map; |
20 | + }; | 20 | + }; |
21 | }; | 21 | }; |
22 | }; | 22 | }; |
23 | 23 | ||
24 | @@ -XXX,XX +XXX,XX @@ &i2c8 { | 24 | @@ -XXX,XX +XXX,XX @@ &i2c8 { |
25 | status = "disabled"; | 25 | status = "disabled"; |
26 | }; | 26 | }; |
27 | 27 | ||
28 | +&ommanager { | 28 | +&ommanager { |
29 | + memory-region = <&mm_ospi1>; | 29 | + memory-region = <&mm_ospi1>; |
30 | + pinctrl-0 = <&ospi_port1_clk_pins_a | 30 | + pinctrl-0 = <&ospi_port1_clk_pins_a |
31 | + &ospi_port1_io03_pins_a | 31 | + &ospi_port1_io03_pins_a |
32 | + &ospi_port1_cs0_pins_a>; | 32 | + &ospi_port1_cs0_pins_a>; |
33 | + pinctrl-1 = <&ospi_port1_clk_sleep_pins_a | 33 | + pinctrl-1 = <&ospi_port1_clk_sleep_pins_a |
34 | + &ospi_port1_io03_sleep_pins_a | 34 | + &ospi_port1_io03_sleep_pins_a |
35 | + &ospi_port1_cs0_sleep_pins_a>; | 35 | + &ospi_port1_cs0_sleep_pins_a>; |
36 | + pinctrl-names = "default", "sleep"; | 36 | + pinctrl-names = "default", "sleep"; |
37 | + status = "okay"; | 37 | + status = "okay"; |
38 | + | 38 | + |
39 | + spi@0 { | 39 | + spi@0 { |
40 | + #address-cells = <1>; | 40 | + #address-cells = <1>; |
41 | + #size-cells = <0>; | 41 | + #size-cells = <0>; |
42 | + memory-region = <&mm_ospi1>; | 42 | + memory-region = <&mm_ospi1>; |
43 | + status = "okay"; | 43 | + status = "okay"; |
44 | + | 44 | + |
45 | + flash0: flash@0 { | 45 | + flash0: flash@0 { |
46 | + compatible = "jedec,spi-nor"; | 46 | + compatible = "jedec,spi-nor"; |
47 | + reg = <0>; | 47 | + reg = <0>; |
48 | + spi-rx-bus-width = <4>; | 48 | + spi-rx-bus-width = <4>; |
49 | + spi-tx-bus-width = <4>; | 49 | + spi-tx-bus-width = <4>; |
50 | + spi-max-frequency = <50000000>; | 50 | + spi-max-frequency = <50000000>; |
51 | + }; | 51 | + }; |
52 | + }; | 52 | + }; |
53 | +}; | 53 | +}; |
54 | + | 54 | + |
55 | &rtc { | 55 | &rtc { |
56 | status = "okay"; | 56 | status = "okay"; |
57 | }; | 57 | }; |
58 | 58 | ||
59 | -- | 59 | -- |
60 | 2.25.1 | 60 | 2.25.1 | diff view generated by jsdifflib |
1 | Enable STM32 OctoSPI driver. | 1 | Enable STM32 OctoSPI driver. |
---|---|---|---|
2 | Enable STM32 Octo Memory Manager (OMM) driver which is needed | 2 | Enable STM32 Octo Memory Manager (OMM) driver which is needed |
3 | for OSPI usage on STM32MP257F-EV1 board. | 3 | for OSPI usage on STM32MP257F-EV1 board. |
4 | 4 | ||
5 | Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> | 5 | Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> |
6 | --- | 6 | --- |
7 | arch/arm64/configs/defconfig | 2 ++ | 7 | arch/arm64/configs/defconfig | 2 ++ |
8 | 1 file changed, 2 insertions(+) | 8 | 1 file changed, 2 insertions(+) |
9 | 9 | ||
10 | diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig | 10 | diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig |
11 | index XXXXXXX..XXXXXXX 100644 | 11 | index XXXXXXX..XXXXXXX 100644 |
12 | --- a/arch/arm64/configs/defconfig | 12 | --- a/arch/arm64/configs/defconfig |
13 | +++ b/arch/arm64/configs/defconfig | 13 | +++ b/arch/arm64/configs/defconfig |
14 | @@ -XXX,XX +XXX,XX @@ CONFIG_SPI_QUP=y | 14 | @@ -XXX,XX +XXX,XX @@ CONFIG_SPI_QUP=y |
15 | CONFIG_SPI_QCOM_GENI=m | 15 | CONFIG_SPI_QCOM_GENI=m |
16 | CONFIG_SPI_S3C64XX=y | 16 | CONFIG_SPI_S3C64XX=y |
17 | CONFIG_SPI_SH_MSIOF=m | 17 | CONFIG_SPI_SH_MSIOF=m |
18 | +CONFIG_SPI_STM32_OSPI=m | 18 | +CONFIG_SPI_STM32_OSPI=m |
19 | CONFIG_SPI_SUN6I=y | 19 | CONFIG_SPI_SUN6I=y |
20 | CONFIG_SPI_TEGRA210_QUAD=m | 20 | CONFIG_SPI_TEGRA210_QUAD=m |
21 | CONFIG_SPI_TEGRA114=m | 21 | CONFIG_SPI_TEGRA114=m |
22 | @@ -XXX,XX +XXX,XX @@ CONFIG_EXTCON_USB_GPIO=y | 22 | @@ -XXX,XX +XXX,XX @@ CONFIG_EXTCON_USB_GPIO=y |
23 | CONFIG_EXTCON_USBC_CROS_EC=y | 23 | CONFIG_EXTCON_USBC_CROS_EC=y |
24 | CONFIG_FSL_IFC=y | 24 | CONFIG_FSL_IFC=y |
25 | CONFIG_RENESAS_RPCIF=m | 25 | CONFIG_RENESAS_RPCIF=m |
26 | +CONFIG_STM32_OMM=m | 26 | +CONFIG_STM32_OMM=m |
27 | CONFIG_IIO=y | 27 | CONFIG_IIO=y |
28 | CONFIG_EXYNOS_ADC=y | 28 | CONFIG_EXYNOS_ADC=y |
29 | CONFIG_IMX8QXP_ADC=m | 29 | CONFIG_IMX8QXP_ADC=m |
30 | 30 | ||
31 | -- | 31 | -- |
32 | 2.25.1 | 32 | 2.25.1 | diff view generated by jsdifflib |