mediatek: add an upstreamed spi-nand driver
This patch implements the spi-nand controller driver as an ECC-capable spi-mem controller to use the upstream SPI-NAND driver. Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
This commit is contained in:
		| @@ -497,55 +497,65 @@ | |||||||
| 	status = "okay"; | 	status = "okay"; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| &snand { | &bch { | ||||||
| 	mediatek,quad-spi; | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &snfi { | ||||||
| 	pinctrl-names = "default"; | 	pinctrl-names = "default"; | ||||||
| 	pinctrl-0 = <&serial_nand_pins>; | 	pinctrl-0 = <&serial_nand_pins>; | ||||||
| 	status = "okay"; | 	status = "okay"; | ||||||
|  | 	flash@0 { | ||||||
|  | 		compatible = "spi-nand"; | ||||||
|  | 		reg = <0>; | ||||||
|  | 		spi-tx-bus-width = <4>; | ||||||
|  | 		spi-rx-bus-width = <4>; | ||||||
|  | 		nand-ecc-engine = <&snfi>; | ||||||
|  |  | ||||||
| 	partitions { | 		partitions { | ||||||
| 		compatible = "fixed-partitions"; | 			compatible = "fixed-partitions"; | ||||||
| 		#address-cells = <1>; | 			#address-cells = <1>; | ||||||
| 		#size-cells = <1>; | 			#size-cells = <1>; | ||||||
|  |  | ||||||
| 		partition@0 { | 			partition@0 { | ||||||
| 			label = "Preloader"; | 				label = "Preloader"; | ||||||
| 			reg = <0x00000 0x0080000>; | 				reg = <0x00000 0x0080000>; | ||||||
| 			read-only; | 				read-only; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		partition@80000 { | 			partition@80000 { | ||||||
| 			label = "ATF"; | 				label = "ATF"; | ||||||
| 			reg = <0x80000 0x0040000>; | 				reg = <0x80000 0x0040000>; | ||||||
| 			read-only; | 				read-only; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		partition@c0000 { | 			partition@c0000 { | ||||||
| 			label = "uboot"; | 				label = "uboot"; | ||||||
| 			reg = <0xc0000 0x0080000>; | 				reg = <0xc0000 0x0080000>; | ||||||
| 			read-only; | 				read-only; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		partition@140000 { | 			partition@140000 { | ||||||
| 			label = "uboot-env"; | 				label = "uboot-env"; | ||||||
| 			reg = <0x140000 0x0080000>; | 				reg = <0x140000 0x0080000>; | ||||||
| 			read-only; | 				read-only; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		factory: partition@1c0000 { | 			factory: partition@1c0000 { | ||||||
| 			label = "factory"; | 				label = "factory"; | ||||||
| 			reg = <0x1c0000 0x0040000>; | 				reg = <0x1c0000 0x0040000>; | ||||||
| 			read-only; | 				read-only; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		partition@200000 { | 			partition@200000 { | ||||||
| 			label = "firmware"; | 				label = "firmware"; | ||||||
| 			reg = <0x200000 0x2000000>; | 				reg = <0x200000 0x2000000>; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		partition@2200000 { | 			partition@2200000 { | ||||||
| 			label = "reserved"; | 				label = "reserved"; | ||||||
| 			reg = <0x2200000 0x4000000>; | 				reg = <0x2200000 0x4000000>; | ||||||
|  | 			}; | ||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -342,11 +342,22 @@ | |||||||
| 	}; | 	}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| &snand { | &bch { | ||||||
| 	mediatek,quad-spi; | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &snfi { | ||||||
| 	pinctrl-names = "default"; | 	pinctrl-names = "default"; | ||||||
| 	pinctrl-0 = <&serial_nand_pins>; | 	pinctrl-0 = <&serial_nand_pins>; | ||||||
| 	status = "okay"; | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	snand: flash@0 { | ||||||
|  | 		compatible = "spi-nand"; | ||||||
|  | 		reg = <0>; | ||||||
|  | 		spi-tx-bus-width = <4>; | ||||||
|  | 		spi-rx-bus-width = <4>; | ||||||
|  | 		nand-ecc-engine = <&snfi>; | ||||||
|  | 	}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| &spi0 { | &spi0 { | ||||||
|   | |||||||
| @@ -6,51 +6,53 @@ | |||||||
| 	compatible = "mediatek,mt7622-rfb1-ubi"; | 	compatible = "mediatek,mt7622-rfb1-ubi"; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| &snand { | &snfi { | ||||||
| 	mediatek,bmt-v2; | 	flash@0 { | ||||||
| 	mediatek,bmt-remap-range = <0x0 0x6c0000>; | 		mediatek,bmt-v2; | ||||||
|  | 		mediatek,bmt-remap-range = <0x0 0x6c0000>; | ||||||
|  |  | ||||||
| 	partitions { | 		partitions { | ||||||
| 		compatible = "fixed-partitions"; | 			compatible = "fixed-partitions"; | ||||||
| 		#address-cells = <1>; | 			#address-cells = <1>; | ||||||
| 		#size-cells = <1>; | 			#size-cells = <1>; | ||||||
|  |  | ||||||
| 		partition@0 { | 			partition@0 { | ||||||
| 			label = "Preloader"; | 				label = "Preloader"; | ||||||
| 			reg = <0x00000 0x0080000>; | 				reg = <0x00000 0x0080000>; | ||||||
| 			read-only; | 				read-only; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			partition@80000 { | ||||||
|  | 				label = "ATF"; | ||||||
|  | 				reg = <0x80000 0x0040000>; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			partition@c0000 { | ||||||
|  | 				label = "Bootloader"; | ||||||
|  | 				reg = <0xc0000 0x0080000>; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			partition@140000 { | ||||||
|  | 				label = "Config"; | ||||||
|  | 				reg = <0x140000 0x0080000>; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			factory: partition@1c0000 { | ||||||
|  | 				label = "Factory"; | ||||||
|  | 				reg = <0x1c0000 0x0100000>; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			partition@200000 { | ||||||
|  | 				label = "kernel"; | ||||||
|  | 				reg = <0x2c0000 0x400000>; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			partition@6c0000 { | ||||||
|  | 				label = "ubi"; | ||||||
|  | 				reg = <0x6c0000 0x6f00000>; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			/delete-node/ partition@2200000; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
| 		partition@80000 { |  | ||||||
| 			label = "ATF"; |  | ||||||
| 			reg = <0x80000 0x0040000>; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		partition@c0000 { |  | ||||||
| 			label = "Bootloader"; |  | ||||||
| 			reg = <0xc0000 0x0080000>; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		partition@140000 { |  | ||||||
| 			label = "Config"; |  | ||||||
| 			reg = <0x140000 0x0080000>; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		factory: partition@1c0000 { |  | ||||||
| 			label = "Factory"; |  | ||||||
| 			reg = <0x1c0000 0x0100000>; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		partition@200000 { |  | ||||||
| 			label = "kernel"; |  | ||||||
| 			reg = <0x2c0000 0x400000>; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		partition@6c0000 { |  | ||||||
| 			label = "ubi"; |  | ||||||
| 			reg = <0x6c0000 0x6f00000>; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		/delete-node/ partition@2200000; |  | ||||||
| 	}; | 	}; | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -226,62 +226,72 @@ | |||||||
| 	status = "okay"; | 	status = "okay"; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| &snand { | &bch { | ||||||
| 	mediatek,quad-spi; | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &snfi { | ||||||
| 	pinctrl-names = "default"; | 	pinctrl-names = "default"; | ||||||
| 	pinctrl-0 = <&serial_nand_pins>; | 	pinctrl-0 = <&serial_nand_pins>; | ||||||
| 	status = "okay"; | 	status = "okay"; | ||||||
| 	mediatek,bmt-v2; | 	flash@0 { | ||||||
|  | 		compatible = "spi-nand"; | ||||||
|  | 		reg = <0>; | ||||||
|  | 		spi-tx-bus-width = <4>; | ||||||
|  | 		spi-rx-bus-width = <4>; | ||||||
|  | 		nand-ecc-engine = <&snfi>; | ||||||
|  | 		mediatek,bmt-v2; | ||||||
|  |  | ||||||
| 	partitions { | 		partitions { | ||||||
| 		compatible = "fixed-partitions"; | 			compatible = "fixed-partitions"; | ||||||
| 		#address-cells = <1>; | 			#address-cells = <1>; | ||||||
| 		#size-cells = <1>; | 			#size-cells = <1>; | ||||||
|  |  | ||||||
| 		partition@0 { | 			partition@0 { | ||||||
| 			label = "Preloader"; | 				label = "Preloader"; | ||||||
| 			reg = <0x0 0x80000>; | 				reg = <0x0 0x80000>; | ||||||
| 			read-only; | 				read-only; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		partition@80000 { | 			partition@80000 { | ||||||
| 			label = "ATF"; | 				label = "ATF"; | ||||||
| 			reg = <0x80000 0x40000>; | 				reg = <0x80000 0x40000>; | ||||||
| 			read-only; | 				read-only; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		partition@c0000 { | 			partition@c0000 { | ||||||
| 			label = "u-boot"; | 				label = "u-boot"; | ||||||
| 			reg = <0xc0000 0x80000>; | 				reg = <0xc0000 0x80000>; | ||||||
| 			read-only; | 				read-only; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		partition@140000 { | 			partition@140000 { | ||||||
| 			label = "u-boot-env"; | 				label = "u-boot-env"; | ||||||
| 			reg = <0x140000 0x80000>; | 				reg = <0x140000 0x80000>; | ||||||
| 			read-only; | 				read-only; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		factory: partition@1c0000 { | 			factory: partition@1c0000 { | ||||||
| 			label = "factory"; | 				label = "factory"; | ||||||
| 			reg = <0x1c0000 0x40000>; | 				reg = <0x1c0000 0x40000>; | ||||||
| 			read-only; | 				read-only; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		partition@200000 { | 			partition@200000 { | ||||||
| 			label = "ubi"; | 				label = "ubi"; | ||||||
| 			reg = <0x200000 0x6400000>; | 				reg = <0x200000 0x6400000>; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		partition@6600000 { | 			partition@6600000 { | ||||||
| 			label = "User_data"; | 				label = "User_data"; | ||||||
| 			reg = <0x6600000 0x100000>; | 				reg = <0x6600000 0x100000>; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		/* size of this partition varies due to BMT & bad blocks. */ | 			/* size of this partition varies due to BMT & bad blocks. */ | ||||||
| 		partition@6700000 { | 			partition@6700000 { | ||||||
| 			label = "reserved"; | 				label = "reserved"; | ||||||
| 			reg = <0x6700000 0>; | 				reg = <0x6700000 0>; | ||||||
|  | 			}; | ||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -211,94 +211,105 @@ | |||||||
| 	}; | 	}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| &snand { | &bch { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &snfi { | ||||||
| 	pinctrl-names = "default"; | 	pinctrl-names = "default"; | ||||||
| 	pinctrl-0 = <&serial_nand_pins>; | 	pinctrl-0 = <&serial_nand_pins>; | ||||||
| 	status = "okay"; | 	status = "okay"; | ||||||
|  |  | ||||||
| 	mediatek,bmt-v2; | 	flash@0 { | ||||||
| 	mediatek,bmt-table-size = <0x1000>; | 		compatible = "spi-nand"; | ||||||
| 	mediatek,bmt-remap-range = <0x0 0x6c0000>; | 		reg = <0>; | ||||||
|  | 		spi-tx-bus-width = <4>; | ||||||
|  | 		spi-rx-bus-width = <4>; | ||||||
|  | 		nand-ecc-engine = <&snfi>; | ||||||
|  |  | ||||||
| 	partitions { | 		mediatek,bmt-v2; | ||||||
| 		compatible = "fixed-partitions"; | 		mediatek,bmt-table-size = <0x1000>; | ||||||
| 		#address-cells = <1>; | 		mediatek,bmt-remap-range = <0x0 0x6c0000>; | ||||||
| 		#size-cells = <1>; |  | ||||||
|  |  | ||||||
| 		partition@0 { | 		partitions { | ||||||
| 			label = "Preloader"; | 			compatible = "fixed-partitions"; | ||||||
| 			reg = <0x0 0x80000>; |  | ||||||
| 			read-only; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		partition@80000 { |  | ||||||
| 			label = "ATF"; |  | ||||||
| 			reg = <0x80000 0x40000>; |  | ||||||
| 			read-only; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		partition@c0000 { |  | ||||||
| 			label = "u-boot"; |  | ||||||
| 			reg = <0xc0000 0x80000>; |  | ||||||
| 			read-only; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		partition@140000 { |  | ||||||
| 			label = "u-boot-env"; |  | ||||||
| 			reg = <0x140000 0x40000>; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		partition@180000 { |  | ||||||
| 			label = "bdata"; |  | ||||||
| 			reg = <0x180000 0x40000>; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		factory: partition@1c0000 { |  | ||||||
| 			label = "factory"; |  | ||||||
| 			reg = <0x1c0000 0x80000>; |  | ||||||
| 			read-only; |  | ||||||
|  |  | ||||||
| 			compatible = "nvmem-cells"; |  | ||||||
| 			#address-cells = <1>; | 			#address-cells = <1>; | ||||||
| 			#size-cells = <1>; | 			#size-cells = <1>; | ||||||
|  |  | ||||||
| 			macaddr_factory_4: macaddr@4 { | 			partition@0 { | ||||||
| 				reg = <0x4 0x6>; | 				label = "Preloader"; | ||||||
|  | 				reg = <0x0 0x80000>; | ||||||
|  | 				read-only; | ||||||
| 			}; | 			}; | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		partition@240000 { | 			partition@80000 { | ||||||
| 			label = "crash"; | 				label = "ATF"; | ||||||
| 			reg = <0x240000 0x40000>; | 				reg = <0x80000 0x40000>; | ||||||
| 			read-only; | 				read-only; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		partition@280000 { | 			partition@c0000 { | ||||||
| 			label = "crash_log"; | 				label = "u-boot"; | ||||||
| 			reg = <0x280000 0x40000>; | 				reg = <0xc0000 0x80000>; | ||||||
| 			read-only; | 				read-only; | ||||||
| 		}; | 			}; | ||||||
|  |  | ||||||
| 		/* Shrunk and renamed from "firmware" | 			partition@140000 { | ||||||
| 		 * as to not break luci size checks | 				label = "u-boot-env"; | ||||||
| 		 */ | 				reg = <0x140000 0x40000>; | ||||||
| 		partition@2c0000 { | 			}; | ||||||
| 			label = "kernel"; |  | ||||||
| 			compatible = "denx,fit"; |  | ||||||
| 			reg = <0x2c0000 0x400000>; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
|  | 			partition@180000 { | ||||||
|  | 				label = "bdata"; | ||||||
|  | 				reg = <0x180000 0x40000>; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
| 		/* ubi partition is the result of squashing | 			factory: partition@1c0000 { | ||||||
| 		 * consecutive stock partitions: | 				label = "factory"; | ||||||
| 		 * - firmware (partially) | 				reg = <0x1c0000 0x80000>; | ||||||
| 		 * - firmware1 | 				read-only; | ||||||
| 		 * - overlay |  | ||||||
| 		 * - obr | 				compatible = "nvmem-cells"; | ||||||
| 		 */ | 				#address-cells = <1>; | ||||||
| 		partition@6c0000 { | 				#size-cells = <1>; | ||||||
| 			label = "ubi"; |  | ||||||
| 			reg = <0x6C0000 0x6f00000>; | 				macaddr_factory_4: macaddr@4 { | ||||||
|  | 					reg = <0x4 0x6>; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			partition@240000 { | ||||||
|  | 				label = "crash"; | ||||||
|  | 				reg = <0x240000 0x40000>; | ||||||
|  | 				read-only; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			partition@280000 { | ||||||
|  | 				label = "crash_log"; | ||||||
|  | 				reg = <0x280000 0x40000>; | ||||||
|  | 				read-only; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			/* Shrunk and renamed from "firmware" | ||||||
|  | 			 * as to not break luci size checks | ||||||
|  | 			 */ | ||||||
|  | 			partition@2c0000 { | ||||||
|  | 				label = "kernel"; | ||||||
|  | 				compatible = "denx,fit"; | ||||||
|  | 				reg = <0x2c0000 0x400000>; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			/* ubi partition is the result of squashing | ||||||
|  | 			 * consecutive stock partitions: | ||||||
|  | 			 * - firmware (partially) | ||||||
|  | 			 * - firmware1 | ||||||
|  | 			 * - overlay | ||||||
|  | 			 * - obr | ||||||
|  | 			 */ | ||||||
|  | 			partition@6c0000 { | ||||||
|  | 				label = "ubi"; | ||||||
|  | 				reg = <0x6C0000 0x6f00000>; | ||||||
|  | 			}; | ||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -247,6 +247,7 @@ CONFIG_MODULES_TREE_LOOKUP=y | |||||||
| CONFIG_MODULES_USE_ELF_RELA=y | CONFIG_MODULES_USE_ELF_RELA=y | ||||||
| CONFIG_MTD_NAND_CORE=y | CONFIG_MTD_NAND_CORE=y | ||||||
| CONFIG_MTD_NAND_ECC=y | CONFIG_MTD_NAND_ECC=y | ||||||
|  | CONFIG_MTD_NAND_ECC_MEDIATEK=y | ||||||
| CONFIG_MTD_NAND_ECC_SW_HAMMING=y | CONFIG_MTD_NAND_ECC_SW_HAMMING=y | ||||||
| CONFIG_MTD_NAND_MTK=y | CONFIG_MTD_NAND_MTK=y | ||||||
| CONFIG_MTD_NAND_MTK_BMT=y | CONFIG_MTD_NAND_MTK_BMT=y | ||||||
| @@ -268,7 +269,6 @@ CONFIG_MTK_INFRACFG=y | |||||||
| CONFIG_MTK_PMIC_WRAP=y | CONFIG_MTK_PMIC_WRAP=y | ||||||
| CONFIG_MTK_SCPSYS=y | CONFIG_MTK_SCPSYS=y | ||||||
| CONFIG_MTK_SCPSYS_PM_DOMAINS=y | CONFIG_MTK_SCPSYS_PM_DOMAINS=y | ||||||
| CONFIG_MTK_SPI_NAND=y |  | ||||||
| CONFIG_MTK_THERMAL=y | CONFIG_MTK_THERMAL=y | ||||||
| CONFIG_MTK_TIMER=y | CONFIG_MTK_TIMER=y | ||||||
| # CONFIG_MTK_UART_APDMA is not set | # CONFIG_MTK_UART_APDMA is not set | ||||||
| @@ -349,7 +349,6 @@ CONFIG_POWER_RESET_SYSCON=y | |||||||
| CONFIG_POWER_SUPPLY=y | CONFIG_POWER_SUPPLY=y | ||||||
| CONFIG_PRINTK_TIME=y | CONFIG_PRINTK_TIME=y | ||||||
| CONFIG_PSTORE=y | CONFIG_PSTORE=y | ||||||
| # CONFIG_PSTORE_BLK is not set |  | ||||||
| CONFIG_PSTORE_COMPRESS=y | CONFIG_PSTORE_COMPRESS=y | ||||||
| CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" | CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" | ||||||
| CONFIG_PSTORE_CONSOLE=y | CONFIG_PSTORE_CONSOLE=y | ||||||
| @@ -411,6 +410,7 @@ CONFIG_SPI_MASTER=y | |||||||
| CONFIG_SPI_MEM=y | CONFIG_SPI_MEM=y | ||||||
| CONFIG_SPI_MT65XX=y | CONFIG_SPI_MT65XX=y | ||||||
| CONFIG_SPI_MTK_NOR=y | CONFIG_SPI_MTK_NOR=y | ||||||
|  | CONFIG_SPI_MTK_SNFI=y | ||||||
| CONFIG_SRCU=y | CONFIG_SRCU=y | ||||||
| CONFIG_SWCONFIG=y | CONFIG_SWCONFIG=y | ||||||
| CONFIG_SWIOTLB=y | CONFIG_SWIOTLB=y | ||||||
|   | |||||||
| @@ -1,40 +1,49 @@ | |||||||
| --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts | --- a/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts | ||||||
| +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts | +++ b/arch/arm64/boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts | ||||||
| @@ -259,14 +259,32 @@ | @@ -259,14 +259,42 @@ | ||||||
|  	status = "disabled"; |  	status = "disabled"; | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| -&nor_flash { | -&nor_flash { | ||||||
| +&snand { | -	pinctrl-names = "default"; | ||||||
|  	pinctrl-names = "default"; |  | ||||||
| -	pinctrl-0 = <&spi_nor_pins>; | -	pinctrl-0 = <&spi_nor_pins>; | ||||||
| -	status = "disabled"; | -	status = "disabled"; | ||||||
| +	pinctrl-0 = <&serial_nand_pins>; | +&bch { | ||||||
| +	mediatek,quad-spi; |  | ||||||
| +	status = "okay"; | +	status = "okay"; | ||||||
| +	partitions { | +}; | ||||||
| +		compatible = "fixed-partitions"; |  | ||||||
| +		#address-cells = <1>; |  | ||||||
| +		#size-cells = <1>; |  | ||||||
| + |  | ||||||
| +		partition@0 { |  | ||||||
| +			label = "bl2"; |  | ||||||
| +			reg = <0x0 0x80000>; |  | ||||||
| +			read-only; |  | ||||||
| +		}; |  | ||||||
| + |  | ||||||
| +		partition@80000 { |  | ||||||
| +			label = "fip"; |  | ||||||
| +			reg = <0x80000 0x200000>; |  | ||||||
| +			read-only; |  | ||||||
| +		}; |  | ||||||
|   |   | ||||||
| -	flash@0 { | +&snfi { | ||||||
|  | +	pinctrl-names = "default"; | ||||||
|  | +	pinctrl-0 = <&serial_nand_pins>; | ||||||
|  | +	status = "okay"; | ||||||
|  |  	flash@0 { | ||||||
| -		compatible = "jedec,spi-nor"; | -		compatible = "jedec,spi-nor"; | ||||||
| -		reg = <0>; | +		compatible = "spi-nand"; | ||||||
| +		partition@280000 { |  		reg = <0>; | ||||||
| +			label = "ubi"; | +		spi-tx-bus-width = <4>; | ||||||
| +			reg = <0x280000 0x7d80000>; | +		spi-rx-bus-width = <4>; | ||||||
|  | +		nand-ecc-engine = <&snfi>; | ||||||
|  | +		partitions { | ||||||
|  | +			compatible = "fixed-partitions"; | ||||||
|  | +			#address-cells = <1>; | ||||||
|  | +			#size-cells = <1>; | ||||||
|  | + | ||||||
|  | +			partition@0 { | ||||||
|  | +				label = "bl2"; | ||||||
|  | +				reg = <0x0 0x80000>; | ||||||
|  | +				read-only; | ||||||
|  | +			}; | ||||||
|  | + | ||||||
|  | +			partition@80000 { | ||||||
|  | +				label = "fip"; | ||||||
|  | +				reg = <0x80000 0x200000>; | ||||||
|  | +				read-only; | ||||||
|  | +			}; | ||||||
|  | + | ||||||
|  | +			partition@280000 { | ||||||
|  | +				label = "ubi"; | ||||||
|  | +				reg = <0x280000 0x7d80000>; | ||||||
|  | +			}; | ||||||
| +		}; | +		}; | ||||||
|  	}; |  	}; | ||||||
|  }; |  }; | ||||||
|   | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | From 433b76fa0f3ca2865841abc21538dd8077ca3edd Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Chuanhong Guo <gch981213@gmail.com> | ||||||
|  | Date: Mon, 4 Apr 2022 00:05:38 +0800 | ||||||
|  | Subject: [PATCH 13/15] mtd: nand: mtk-ecc: also parse nand-ecc-engine if | ||||||
|  |  available | ||||||
|  |  | ||||||
|  | The recently added ECC engine support introduced a generic property | ||||||
|  | named nand-ecc-engine for ecc engine phandle. This patch adds support | ||||||
|  | for this new property. | ||||||
|  |  | ||||||
|  | Signed-off-by: Chuanhong Guo <gch981213@gmail.com> | ||||||
|  | (cherry picked from commit a41f25feb6e47c1c4d8d3279ae990ccbd8dfab54) | ||||||
|  | --- | ||||||
|  |  drivers/mtd/nand/ecc-mtk.c | 5 ++++- | ||||||
|  |  1 file changed, 4 insertions(+), 1 deletion(-) | ||||||
|  |  | ||||||
|  | diff --git a/drivers/mtd/nand/ecc-mtk.c b/drivers/mtd/nand/ecc-mtk.c | ||||||
|  | index c64c3c45cdbc..79c7622af563 100644 | ||||||
|  | --- a/drivers/mtd/nand/ecc-mtk.c | ||||||
|  | +++ b/drivers/mtd/nand/ecc-mtk.c | ||||||
|  | @@ -279,7 +279,10 @@ struct mtk_ecc *of_mtk_ecc_get(struct device_node *of_node) | ||||||
|  |  	struct mtk_ecc *ecc = NULL; | ||||||
|  |  	struct device_node *np; | ||||||
|  |   | ||||||
|  | -	np = of_parse_phandle(of_node, "ecc-engine", 0); | ||||||
|  | +	np = of_parse_phandle(of_node, "nand-ecc-engine", 0); | ||||||
|  | +	/* for backward compatibility */ | ||||||
|  | +	if (!np) | ||||||
|  | +		np = of_parse_phandle(of_node, "ecc-engine", 0); | ||||||
|  |  	if (np) { | ||||||
|  |  		ecc = mtk_ecc_get(np); | ||||||
|  |  		of_node_put(np); | ||||||
|  | --  | ||||||
|  | 2.35.1 | ||||||
|  |  | ||||||
| @@ -0,0 +1,40 @@ | |||||||
|  | From 9ba7c246063ae43baf2e53ccc8c8b5f8d025aaaa Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Chuanhong Guo <gch981213@gmail.com> | ||||||
|  | Date: Sun, 3 Apr 2022 10:19:29 +0800 | ||||||
|  | Subject: [PATCH 15/15] arm64: dts: mediatek: add mtk-snfi for mt7622 | ||||||
|  |  | ||||||
|  | This patch adds a device-tree node for the MTK SPI-NAND Flash Interface | ||||||
|  | for MT7622 device tree. | ||||||
|  |  | ||||||
|  | Signed-off-by: Chuanhong Guo <gch981213@gmail.com> | ||||||
|  | (cherry picked from commit 2e022641709011ef0843d0416b0f264b5fc217af) | ||||||
|  | --- | ||||||
|  |  arch/arm64/boot/dts/mediatek/mt7622.dtsi | 12 ++++++++++++ | ||||||
|  |  1 file changed, 12 insertions(+) | ||||||
|  |  | ||||||
|  | diff --git a/arch/arm64/boot/dts/mediatek/mt7622.dtsi b/arch/arm64/boot/dts/mediatek/mt7622.dtsi | ||||||
|  | index 890a942ec608..8cdb8cc94bd3 100644 | ||||||
|  | --- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi | ||||||
|  | +++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi | ||||||
|  | @@ -545,6 +545,18 @@ nandc: nfi@1100d000 { | ||||||
|  |  		status = "disabled"; | ||||||
|  |  	}; | ||||||
|  |   | ||||||
|  | +	snfi: spi@1100d000 { | ||||||
|  | +		compatible = "mediatek,mt7622-snand"; | ||||||
|  | +		reg = <0 0x1100d000 0 0x1000>; | ||||||
|  | +		interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>; | ||||||
|  | +		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 = <0 0x1100e000 0 0x1000>; | ||||||
|  | --  | ||||||
|  | 2.35.1 | ||||||
|  |  | ||||||
| @@ -11,63 +11,80 @@ Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com> | |||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/mt7629.dtsi | --- a/arch/arm/boot/dts/mt7629.dtsi | ||||||
| +++ b/arch/arm/boot/dts/mt7629.dtsi | +++ b/arch/arm/boot/dts/mt7629.dtsi | ||||||
| @@ -272,6 +272,22 @@ | @@ -272,6 +272,27 @@ | ||||||
|  			status = "disabled"; |  			status = "disabled"; | ||||||
|  		}; |  		}; | ||||||
|   |   | ||||||
| +		snand: snfi@1100d000 { | +		snfi: spi@1100d000 { | ||||||
| +			pinctrl-names = "default"; |  | ||||||
| + 			pinctrl-0 = <&serial_nand_pins>; |  | ||||||
| +			compatible = "mediatek,mt7629-snand"; | +			compatible = "mediatek,mt7629-snand"; | ||||||
| +			reg = <0x1100d000 0x1000>, <0x1100e000 0x1000>; | +			reg = <0x1100d000 0x1000>; | ||||||
| +			reg-names = "nfi", "ecc"; |  | ||||||
| +			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>; | +			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>; | ||||||
| +			clocks = <&pericfg CLK_PERI_NFI_PD>, | +			clocks = <&pericfg CLK_PERI_NFI_PD>, <&pericfg CLK_PERI_SNFI_PD>; | ||||||
| +				 <&pericfg CLK_PERI_SNFI_PD>, | +			clock-names = "nfi_clk", "pad_clk"; | ||||||
| +				 <&pericfg CLK_PERI_NFIECC_PD>; | +			nand-ecc-engine = <&bch>; | ||||||
| +			clock-names = "nfi_clk", "pad_clk", "ecc_clk"; |  | ||||||
| +			#address-cells = <1>; | +			#address-cells = <1>; | ||||||
| +			#size-cells = <0>; | +			#size-cells = <0>; | ||||||
| +			status = "disabled"; | +			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 { |  		spi: spi@1100a000 { | ||||||
|  			compatible = "mediatek,mt7629-spi", |  			compatible = "mediatek,mt7629-spi", | ||||||
|  				     "mediatek,mt7622-spi"; |  				     "mediatek,mt7622-spi"; | ||||||
| --- a/arch/arm/boot/dts/mt7629-rfb.dts | --- a/arch/arm/boot/dts/mt7629-rfb.dts | ||||||
| +++ b/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"; | +	status = "okay"; | ||||||
| +	mediatek,quad-spi; | +}; | ||||||
| + | + | ||||||
| +	partitions { | +&snfi { | ||||||
| +		compatible = "fixed-partitions"; | +	pinctrl-names = "default"; | ||||||
| +		#address-cells = <1>; | +	pinctrl-0 = <&serial_nand_pins>; | ||||||
| +		#size-cells = <1>; | +	status = "okay"; | ||||||
|  | +	flash@0 { | ||||||
|  | +		compatible = "spi-nand"; | ||||||
|  | +		reg = <0>; | ||||||
|  | +		spi-tx-bus-width = <4>; | ||||||
|  | +		spi-rx-bus-width = <4>; | ||||||
|  | +		nand-ecc-engine = <&snfi>; | ||||||
| + | + | ||||||
| +		partition@0 { | +		partitions { | ||||||
| +			label = "Bootloader"; | +			compatible = "fixed-partitions"; | ||||||
| +			reg = <0x00000 0x0100000>; | +			#address-cells = <1>; | ||||||
| +			read-only; | +			#size-cells = <1>; | ||||||
| +		}; |  | ||||||
| + | + | ||||||
| +		partition@100000 { | +			partition@0 { | ||||||
| +			label = "Config"; | +				label = "Bootloader"; | ||||||
| +			reg = <0x100000 0x0040000>; | +				reg = <0x00000 0x0100000>; | ||||||
| +		}; | +				read-only; | ||||||
|  | +			}; | ||||||
| + | + | ||||||
| +		partition@140000 { | +			partition@100000 { | ||||||
| +			label = "factory"; | +				label = "Config"; | ||||||
| +			reg = <0x140000 0x0080000>; | +				reg = <0x100000 0x0040000>; | ||||||
| +		}; | +			}; | ||||||
| + | + | ||||||
| +		partition@1c0000 { | +			partition@140000 { | ||||||
| +			label = "firmware"; | +				label = "factory"; | ||||||
| +			reg = <0x1c0000 0x1000000>; | +				reg = <0x140000 0x0080000>; | ||||||
|  | +			}; | ||||||
|  | + | ||||||
|  | +			partition@1c0000 { | ||||||
|  | +				label = "firmware"; | ||||||
|  | +				reg = <0x1c0000 0x1000000>; | ||||||
|  | +			}; | ||||||
| +		}; | +		}; | ||||||
| +	}; | +	}; | ||||||
| +}; | +}; | ||||||
|   | |||||||
| @@ -1,77 +1,64 @@ | |||||||
| --- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi |  | ||||||
| +++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi |  | ||||||
| @@ -561,6 +561,20 @@ |  | ||||||
|  		status = "disabled"; |  | ||||||
|  	}; |  | ||||||
|   |  | ||||||
| +	snand: snfi@1100d000 { |  | ||||||
| +		compatible = "mediatek,mt7622-snand"; |  | ||||||
| +		reg = <0 0x1100d000 0 0x1000>, <0 0x1100e000 0 0x1000>; |  | ||||||
| +		reg-names = "nfi", "ecc"; |  | ||||||
| +		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"; |  | ||||||
| +		#address-cells = <1>; |  | ||||||
| +		#size-cells = <0>; |  | ||||||
| +		status = "disabled"; |  | ||||||
| +	}; |  | ||||||
| + |  | ||||||
|  	nor_flash: spi@11014000 { |  | ||||||
|  		compatible = "mediatek,mt7622-nor", |  | ||||||
|  			     "mediatek,mt8173-nor"; |  | ||||||
| --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | ||||||
| +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | ||||||
| @@ -539,6 +539,55 @@ | @@ -539,6 +539,65 @@ | ||||||
|  	status = "disabled"; |  	status = "disabled"; | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| +&snand { | +&bch { | ||||||
| +	mediatek,quad-spi; | +	status = "okay"; | ||||||
|  | +}; | ||||||
|  | + | ||||||
|  | +&snfi { | ||||||
| +	pinctrl-names = "default"; | +	pinctrl-names = "default"; | ||||||
| +	pinctrl-0 = <&serial_nand_pins>; | +	pinctrl-0 = <&serial_nand_pins>; | ||||||
| +	status = "okay"; | +	status = "okay"; | ||||||
|  | +	flash@0 { | ||||||
|  | +		compatible = "spi-nand"; | ||||||
|  | +		reg = <0>; | ||||||
|  | +		spi-tx-bus-width = <4>; | ||||||
|  | +		spi-rx-bus-width = <4>; | ||||||
|  | +		nand-ecc-engine = <&snfi>; | ||||||
| + | + | ||||||
| +	partitions { | +		partitions { | ||||||
| +		compatible = "fixed-partitions"; | +			compatible = "fixed-partitions"; | ||||||
| +		#address-cells = <1>; | +			#address-cells = <1>; | ||||||
| +		#size-cells = <1>; | +			#size-cells = <1>; | ||||||
| + | + | ||||||
| +		partition@0 { | +			partition@0 { | ||||||
| +			label = "Preloader"; | +				label = "Preloader"; | ||||||
| +			reg = <0x00000 0x0080000>; | +				reg = <0x00000 0x0080000>; | ||||||
| +			read-only; | +				read-only; | ||||||
| +		}; | +			}; | ||||||
| + | + | ||||||
| +		partition@80000 { | +			partition@80000 { | ||||||
| +			label = "ATF"; | +				label = "ATF"; | ||||||
| +			reg = <0x80000 0x0040000>; | +				reg = <0x80000 0x0040000>; | ||||||
| +		}; | +			}; | ||||||
| + | + | ||||||
| +		partition@c0000 { | +			partition@c0000 { | ||||||
| +			label = "Bootloader"; | +				label = "Bootloader"; | ||||||
| +			reg = <0xc0000 0x0080000>; | +				reg = <0xc0000 0x0080000>; | ||||||
| +		}; | +			}; | ||||||
| + | + | ||||||
| +		partition@140000 { | +			partition@140000 { | ||||||
| +			label = "Config"; | +				label = "Config"; | ||||||
| +			reg = <0x140000 0x0080000>; | +				reg = <0x140000 0x0080000>; | ||||||
| +		}; | +			}; | ||||||
| + | + | ||||||
| +		partition@1c0000 { | +			partition@1c0000 { | ||||||
| +			label = "Factory"; | +				label = "Factory"; | ||||||
| +			reg = <0x1c0000 0x0100000>; | +				reg = <0x1c0000 0x0100000>; | ||||||
| +		}; | +			}; | ||||||
| + | + | ||||||
| +		partition@200000 { | +			partition@200000 { | ||||||
| +			label = "firmware"; | +				label = "firmware"; | ||||||
| +			reg = <0x2c0000 0x2000000>; | +				reg = <0x2c0000 0x2000000>; | ||||||
| +		}; | +			}; | ||||||
| + | + | ||||||
| +		partition@2200000 { | +			partition@2200000 { | ||||||
| +			label = "User_data"; | +				label = "User_data"; | ||||||
| +			reg = <0x22c0000 0x4000000>; | +				reg = <0x22c0000 0x4000000>; | ||||||
|  | +			}; | ||||||
| +		}; | +		}; | ||||||
| +	}; | +	}; | ||||||
| +}; | +}; | ||||||
|   | |||||||
| @@ -1,15 +1,15 @@ | |||||||
| --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | ||||||
| +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | ||||||
| @@ -571,7 +571,7 @@ | @@ -580,7 +580,7 @@ | ||||||
|  			reg = <0x140000 0x0080000>; |  				reg = <0x140000 0x0080000>; | ||||||
|  		}; |  			}; | ||||||
|   |   | ||||||
| -		partition@1c0000 { | -			partition@1c0000 { | ||||||
| +		factory: partition@1c0000 { | +			factory: partition@1c0000 { | ||||||
|  			label = "Factory"; |  				label = "Factory"; | ||||||
|  			reg = <0x1c0000 0x0100000>; |  				reg = <0x1c0000 0x0100000>; | ||||||
|  		}; |  			}; | ||||||
| @@ -631,5 +631,6 @@ | @@ -641,5 +641,6 @@ | ||||||
|  &wmac { |  &wmac { | ||||||
|  	pinctrl-names = "default"; |  	pinctrl-names = "default"; | ||||||
|  	pinctrl-0 = <&wmac_pins>; |  	pinctrl-0 = <&wmac_pins>; | ||||||
|   | |||||||
| @@ -0,0 +1,34 @@ | |||||||
|  | --- a/drivers/mtd/nand/spi/core.c | ||||||
|  | +++ b/drivers/mtd/nand/spi/core.c | ||||||
|  | @@ -19,6 +19,7 @@ | ||||||
|  |  #include <linux/string.h> | ||||||
|  |  #include <linux/spi/spi.h> | ||||||
|  |  #include <linux/spi/spi-mem.h> | ||||||
|  | +#include <linux/mtd/mtk_bmt.h> | ||||||
|  |   | ||||||
|  |  static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val) | ||||||
|  |  { | ||||||
|  | @@ -1331,6 +1332,7 @@ static int spinand_probe(struct spi_mem | ||||||
|  |  	if (ret) | ||||||
|  |  		return ret; | ||||||
|  |   | ||||||
|  | +	mtk_bmt_attach(mtd); | ||||||
|  |  	ret = mtd_device_register(mtd, NULL, 0); | ||||||
|  |  	if (ret) | ||||||
|  |  		goto err_spinand_cleanup; | ||||||
|  | @@ -1338,6 +1340,7 @@ static int spinand_probe(struct spi_mem | ||||||
|  |  	return 0; | ||||||
|  |   | ||||||
|  |  err_spinand_cleanup: | ||||||
|  | +	mtk_bmt_detach(mtd); | ||||||
|  |  	spinand_cleanup(spinand); | ||||||
|  |   | ||||||
|  |  	return ret; | ||||||
|  | @@ -1356,6 +1359,7 @@ static int spinand_remove(struct spi_mem | ||||||
|  |  	if (ret) | ||||||
|  |  		return ret; | ||||||
|  |   | ||||||
|  | +	mtk_bmt_detach(mtd); | ||||||
|  |  	spinand_cleanup(spinand); | ||||||
|  |   | ||||||
|  |  	return 0; | ||||||
| @@ -1,11 +1,10 @@ | |||||||
| --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | --- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | ||||||
| +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | +++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | ||||||
| @@ -545,6 +545,8 @@ | @@ -553,6 +553,7 @@ | ||||||
|  	pinctrl-0 = <&serial_nand_pins>; |  		spi-tx-bus-width = <4>; | ||||||
|  	status = "okay"; |  		spi-rx-bus-width = <4>; | ||||||
|  |  		nand-ecc-engine = <&snfi>; | ||||||
|  | +		mediatek,bmt-v2; | ||||||
|   |   | ||||||
| +	mediatek,bmt-v2; |  		partitions { | ||||||
| + |  			compatible = "fixed-partitions"; | ||||||
|  	partitions { |  | ||||||
|  		compatible = "fixed-partitions"; |  | ||||||
|  		#address-cells = <1>; |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Chuanhong Guo
					Chuanhong Guo