...
...
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