mediatek: add an upstreamed spi-nand driver
[openwrt/staging/981213.git] / target / linux / mediatek / patches-5.15 / 130-dts-mt7629-add-snand-support.patch
index e7c5d9b167b65ed7f235202aa342144c5b1f4fce..be0018a383752cd5d22938ff2cb08f54f0558005 100644 (file)
@@ -11,63 +11,80 @@ Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
 
 --- a/arch/arm/boot/dts/mt7629.dtsi
 +++ b/arch/arm/boot/dts/mt7629.dtsi
-@@ -272,6 +272,22 @@
+@@ -272,6 +272,27 @@
                        status = "disabled";
                };
  
-+              snand: snfi@1100d000 {
-+                      pinctrl-names = "default";
-+                      pinctrl-0 = <&serial_nand_pins>;
++              snfi: spi@1100d000 {
 +                      compatible = "mediatek,mt7629-snand";
-+                      reg = <0x1100d000 0x1000>, <0x1100e000 0x1000>;
-+                      reg-names = "nfi", "ecc";
++                      reg = <0x1100d000 0x1000>;
 +                      interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
-+                      clocks = <&pericfg CLK_PERI_NFI_PD>,
-+                               <&pericfg CLK_PERI_SNFI_PD>,
-+                               <&pericfg CLK_PERI_NFIECC_PD>;
-+                      clock-names = "nfi_clk", "pad_clk", "ecc_clk";
++                      clocks = <&pericfg CLK_PERI_NFI_PD>, <&pericfg CLK_PERI_SNFI_PD>;
++                      clock-names = "nfi_clk", "pad_clk";
++                      nand-ecc-engine = <&bch>;
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
 +                      status = "disabled";
 +              };
++
++              bch: ecc@1100e000 {
++                      compatible = "mediatek,mt7622-ecc";
++                      reg = <0x1100e000 0x1000>;
++                      interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_LOW>;
++                      clocks = <&pericfg CLK_PERI_NFIECC_PD>;
++                      clock-names = "nfiecc_clk";
++                      status = "disabled";
++              };
 +
                spi: spi@1100a000 {
                        compatible = "mediatek,mt7629-spi",
                                     "mediatek,mt7622-spi";
 --- a/arch/arm/boot/dts/mt7629-rfb.dts
 +++ b/arch/arm/boot/dts/mt7629-rfb.dts
-@@ -254,6 +254,38 @@
+@@ -254,6 +254,50 @@
        };
  };
  
-+&snand {
++&bch {
++      status = "okay";
++};
++
++&snfi {
++      pinctrl-names = "default";
++      pinctrl-0 = <&serial_nand_pins>;
 +      status = "okay";
-+      mediatek,quad-spi;
++      flash@0 {
++              compatible = "spi-nand";
++              reg = <0>;
++              spi-tx-bus-width = <4>;
++              spi-rx-bus-width = <4>;
++              nand-ecc-engine = <&snfi>;
 +
-+      partitions {
-+              compatible = "fixed-partitions";
-+              #address-cells = <1>;
-+              #size-cells = <1>;
++              partitions {
++                      compatible = "fixed-partitions";
++                      #address-cells = <1>;
++                      #size-cells = <1>;
 +
-+              partition@0 {
-+                      label = "Bootloader";
-+                      reg = <0x00000 0x0100000>;
-+                      read-only;
-+              };
++                      partition@0 {
++                              label = "Bootloader";
++                              reg = <0x00000 0x0100000>;
++                              read-only;
++                      };
 +
-+              partition@100000 {
-+                      label = "Config";
-+                      reg = <0x100000 0x0040000>;
-+              };
++                      partition@100000 {
++                              label = "Config";
++                              reg = <0x100000 0x0040000>;
++                      };
 +
-+              partition@140000 {
-+                      label = "factory";
-+                      reg = <0x140000 0x0080000>;
-+              };
++                      partition@140000 {
++                              label = "factory";
++                              reg = <0x140000 0x0080000>;
++                      };
 +
-+              partition@1c0000 {
-+                      label = "firmware";
-+                      reg = <0x1c0000 0x1000000>;
++                      partition@1c0000 {
++                              label = "firmware";
++                              reg = <0x1c0000 0x1000000>;
++                      };
 +              };
 +      };
 +};