1 # SPDX-License-Identifier: (GPL-2.0-only OR BS 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 %YAML 1.2 2 %YAML 1.2 3 --- 3 --- 4 $id: http://devicetree.org/schemas/mtd/marvell 4 $id: http://devicetree.org/schemas/mtd/marvell,nand-controller.yaml# 5 $schema: http://devicetree.org/meta-schemas/co 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 6 6 7 title: Marvell NAND Flash Controller (NFC) 7 title: Marvell NAND Flash Controller (NFC) 8 8 9 maintainers: 9 maintainers: 10 - Miquel Raynal <miquel.raynal@bootlin.com> 10 - Miquel Raynal <miquel.raynal@bootlin.com> 11 11 12 properties: 12 properties: 13 compatible: 13 compatible: 14 oneOf: 14 oneOf: 15 - items: 15 - items: 16 - const: marvell,armada-8k-nand-cont 16 - const: marvell,armada-8k-nand-controller 17 - const: marvell,armada370-nand-cont 17 - const: marvell,armada370-nand-controller 18 - enum: 18 - enum: 19 - marvell,ac5-nand-controller 19 - marvell,ac5-nand-controller 20 - marvell,armada370-nand-controller 20 - marvell,armada370-nand-controller 21 - marvell,pxa3xx-nand-controller 21 - marvell,pxa3xx-nand-controller 22 - description: legacy bindings 22 - description: legacy bindings 23 deprecated: true 23 deprecated: true 24 enum: 24 enum: 25 - marvell,armada-8k-nand 25 - marvell,armada-8k-nand 26 - marvell,armada370-nand 26 - marvell,armada370-nand 27 - marvell,pxa3xx-nand 27 - marvell,pxa3xx-nand 28 28 29 reg: 29 reg: 30 maxItems: 1 30 maxItems: 1 31 31 32 interrupts: 32 interrupts: 33 maxItems: 1 33 maxItems: 1 34 34 35 clocks: 35 clocks: 36 description: 36 description: 37 Shall reference the NAND controller cloc 37 Shall reference the NAND controller clocks, the second one is 38 is only needed for the Armada 7K/8K SoCs 38 is only needed for the Armada 7K/8K SoCs 39 minItems: 1 39 minItems: 1 40 maxItems: 2 40 maxItems: 2 41 41 42 clock-names: 42 clock-names: 43 minItems: 1 43 minItems: 1 44 items: 44 items: 45 - const: core 45 - const: core 46 - const: reg 46 - const: reg 47 47 48 dmas: 48 dmas: 49 maxItems: 1 49 maxItems: 1 50 50 51 dma-names: 51 dma-names: 52 items: 52 items: 53 - const: data 53 - const: data 54 54 55 marvell,system-controller: 55 marvell,system-controller: 56 $ref: /schemas/types.yaml#/definitions/pha 56 $ref: /schemas/types.yaml#/definitions/phandle 57 description: Syscon node that handles NAND 57 description: Syscon node that handles NAND controller related registers 58 58 59 patternProperties: 59 patternProperties: 60 "^nand@[a-f0-9]$": 60 "^nand@[a-f0-9]$": 61 type: object 61 type: object 62 $ref: raw-nand-chip.yaml 62 $ref: raw-nand-chip.yaml 63 63 64 properties: 64 properties: 65 reg: 65 reg: 66 minimum: 0 66 minimum: 0 67 maximum: 3 67 maximum: 3 68 68 69 nand-rb: 69 nand-rb: 70 items: 70 items: 71 - minimum: 0 71 - minimum: 0 72 maximum: 1 72 maximum: 1 73 73 74 nand-ecc-step-size: 74 nand-ecc-step-size: 75 const: 512 75 const: 512 76 76 77 nand-ecc-strength: 77 nand-ecc-strength: 78 enum: [1, 4, 8, 12, 16] 78 enum: [1, 4, 8, 12, 16] 79 79 80 nand-ecc-mode: 80 nand-ecc-mode: 81 const: hw 81 const: hw 82 82 83 marvell,nand-keep-config: 83 marvell,nand-keep-config: 84 $ref: /schemas/types.yaml#/definitions 84 $ref: /schemas/types.yaml#/definitions/flag 85 description: 85 description: 86 Orders the driver not to take the ti 86 Orders the driver not to take the timings from the core and 87 leaving them completely untouched. B 87 leaving them completely untouched. Bootloader timings will then 88 be used. 88 be used. 89 89 90 marvell,nand-enable-arbiter: 90 marvell,nand-enable-arbiter: 91 $ref: /schemas/types.yaml#/definitions 91 $ref: /schemas/types.yaml#/definitions/flag 92 description: 92 description: 93 To enable the arbiter, all boards bl 93 To enable the arbiter, all boards blindly used it, 94 this bit was set by the bootloader f 94 this bit was set by the bootloader for many boards and even if 95 it is marked reserved in several dat 95 it is marked reserved in several datasheets, it might be needed to set 96 it (otherwise it is harmless). 96 it (otherwise it is harmless). 97 deprecated: true 97 deprecated: true 98 98 99 required: 99 required: 100 - reg 100 - reg 101 - nand-rb 101 - nand-rb 102 102 103 unevaluatedProperties: false 103 unevaluatedProperties: false 104 104 105 required: 105 required: 106 - compatible 106 - compatible 107 - reg 107 - reg 108 - interrupts 108 - interrupts 109 - clocks 109 - clocks 110 110 111 allOf: 111 allOf: 112 - $ref: nand-controller.yaml# 112 - $ref: nand-controller.yaml# 113 113 114 - if: 114 - if: 115 properties: 115 properties: 116 compatible: 116 compatible: 117 contains: 117 contains: 118 const: marvell,pxa3xx-nand-control 118 const: marvell,pxa3xx-nand-controller 119 then: 119 then: 120 required: 120 required: 121 - dmas 121 - dmas 122 - dma-names 122 - dma-names 123 123 124 - if: 124 - if: 125 properties: 125 properties: 126 compatible: 126 compatible: 127 contains: 127 contains: 128 const: marvell,armada-8k-nand-cont 128 const: marvell,armada-8k-nand-controller 129 then: 129 then: 130 properties: 130 properties: 131 clocks: 131 clocks: 132 minItems: 2 132 minItems: 2 133 133 134 clock-names: 134 clock-names: 135 minItems: 2 135 minItems: 2 136 136 137 required: 137 required: 138 - marvell,system-controller 138 - marvell,system-controller 139 139 140 else: 140 else: 141 properties: 141 properties: 142 clocks: 142 clocks: 143 minItems: 1 143 minItems: 1 144 144 145 clock-names: 145 clock-names: 146 minItems: 1 146 minItems: 1 147 147 148 148 149 unevaluatedProperties: false 149 unevaluatedProperties: false 150 150 151 examples: 151 examples: 152 - | 152 - | 153 #include <dt-bindings/interrupt-controller 153 #include <dt-bindings/interrupt-controller/arm-gic.h> 154 nand_controller: nand-controller@d0000 { 154 nand_controller: nand-controller@d0000 { 155 compatible = "marvell,armada370-nand-c 155 compatible = "marvell,armada370-nand-controller"; 156 reg = <0xd0000 0x54>; 156 reg = <0xd0000 0x54>; 157 #address-cells = <1>; 157 #address-cells = <1>; 158 #size-cells = <0>; 158 #size-cells = <0>; 159 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVE 159 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; 160 clocks = <&coredivclk 0>; 160 clocks = <&coredivclk 0>; 161 161 162 nand@0 { 162 nand@0 { 163 reg = <0>; 163 reg = <0>; 164 label = "main-storage"; 164 label = "main-storage"; 165 nand-rb = <0>; 165 nand-rb = <0>; 166 nand-ecc-mode = "hw"; 166 nand-ecc-mode = "hw"; 167 marvell,nand-keep-config; 167 marvell,nand-keep-config; 168 nand-on-flash-bbt; 168 nand-on-flash-bbt; 169 nand-ecc-strength = <4>; 169 nand-ecc-strength = <4>; 170 nand-ecc-step-size = <512>; 170 nand-ecc-step-size = <512>; 171 171 172 partitions { 172 partitions { 173 compatible = "fixed-partitions 173 compatible = "fixed-partitions"; 174 #address-cells = <1>; 174 #address-cells = <1>; 175 #size-cells = <1>; 175 #size-cells = <1>; 176 176 177 partition@0 { 177 partition@0 { 178 label = "Rootfs"; 178 label = "Rootfs"; 179 reg = <0x00000000 0x400000 179 reg = <0x00000000 0x40000000>; 180 }; 180 }; 181 }; 181 }; 182 }; 182 }; 183 }; 183 }; 184 184 185 - | 185 - | 186 cp0_nand_controller: nand-controller@72000 186 cp0_nand_controller: nand-controller@720000 { 187 compatible = "marvell,armada-8k-nand-c 187 compatible = "marvell,armada-8k-nand-controller", 188 "marvell,armada370-nand-contro 188 "marvell,armada370-nand-controller"; 189 reg = <0x720000 0x54>; 189 reg = <0x720000 0x54>; 190 #address-cells = <1>; 190 #address-cells = <1>; 191 #size-cells = <0>; 191 #size-cells = <0>; 192 interrupts = <115 IRQ_TYPE_LEVEL_HIGH> 192 interrupts = <115 IRQ_TYPE_LEVEL_HIGH>; 193 clock-names = "core", "reg"; 193 clock-names = "core", "reg"; 194 clocks = <&cp0_clk 1 2>, 194 clocks = <&cp0_clk 1 2>, 195 <&cp0_clk 1 17>; 195 <&cp0_clk 1 17>; 196 marvell,system-controller = <&cp0_sysc 196 marvell,system-controller = <&cp0_syscon0>; 197 197 198 nand@0 { 198 nand@0 { 199 reg = <0>; 199 reg = <0>; 200 label = "main-storage"; 200 label = "main-storage"; 201 nand-rb = <0>; 201 nand-rb = <0>; 202 nand-ecc-mode = "hw"; 202 nand-ecc-mode = "hw"; 203 nand-ecc-strength = <8>; 203 nand-ecc-strength = <8>; 204 nand-ecc-step-size = <512>; 204 nand-ecc-step-size = <512>; 205 }; 205 }; 206 }; 206 }; 207 207 208 - | 208 - | 209 nand-controller@43100000 { 209 nand-controller@43100000 { 210 compatible = "marvell,pxa3xx-nand-cont 210 compatible = "marvell,pxa3xx-nand-controller"; 211 reg = <0x43100000 90>; 211 reg = <0x43100000 90>; 212 interrupts = <45>; 212 interrupts = <45>; 213 clocks = <&clks 1>; 213 clocks = <&clks 1>; 214 clock-names = "core"; 214 clock-names = "core"; 215 dmas = <&pdma 97 3>; 215 dmas = <&pdma 97 3>; 216 dma-names = "data"; 216 dma-names = "data"; 217 #address-cells = <1>; 217 #address-cells = <1>; 218 #size-cells = <0>; 218 #size-cells = <0>; 219 nand@0 { 219 nand@0 { 220 reg = <0>; 220 reg = <0>; 221 nand-rb = <0>; 221 nand-rb = <0>; 222 nand-ecc-mode = "hw"; 222 nand-ecc-mode = "hw"; 223 marvell,nand-keep-config; 223 marvell,nand-keep-config; 224 }; 224 }; 225 }; 225 }; 226 226 227 ... 227 ...
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.