[PATCH] sunxi: dts: OrangePi Zero: Fixup SPI flash device node

For some reason the flash cannot be probed as is - the u-boot DT lookup code fails to find the definition, and sf complains about invalid cs.
Fixes: 280294c5df ("sunxi: boards: Enable SPI flash support in U-Boot proper") Signed-off-by: Michal Suchanek msuchanek@suse.de --- arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts index b08e84c616..034f0f77a0 100644 --- a/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts +++ b/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts @@ -167,10 +167,8 @@ /* Enable SPI NOR by default: it optional on Orange Pi Zero boards */ status = "okay";
- flash@0 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "mxicy,mx25l1606e", "winbond,w25q128"; + spiflash: flash@0 { + compatible = "mxicy,mx25l1606e", "winbond,w25q128", "jedec,spi-nor"; reg = <0>; spi-max-frequency = <40000000>; };

The device tree should include generic "jedec,spi-nor" compatible, and a manufacturer-specific one. The macronix part is what is shipped on the boards that come with a flash chip.
Fixes: 280294c5df ("sunxi: boards: Enable SPI flash support in U-Boot proper") Signed-off-by: Michal Suchanek msuchanek@suse.de --- v2: cherry-pick from Linux arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts index b08e84c616..80c1e66b38 100644 --- a/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts +++ b/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts @@ -170,7 +170,7 @@ flash@0 { #address-cells = <1>; #size-cells = <1>; - compatible = "mxicy,mx25l1606e", "winbond,w25q128"; + compatible = "mxicy,mx25l1606e", "jedec,spi-nor"; reg = <0>; spi-max-frequency = <40000000>; };

On Sat, 9 Jul 2022 08:59:45 +0200 Michal Suchanek msuchanek@suse.de wrote:
Hi Michal,
The device tree should include generic "jedec,spi-nor" compatible, and a manufacturer-specific one. The macronix part is what is shipped on the boards that come with a flash chip.
thanks for taking care and trying to bring those fixes upstream!
It seems that this patch alone doesn't do anything, as SPI0 is still disabled in the DT. Also we normally don't pick single DT changes from Linux, unless they fix a very particular U-Boot issue. Instead we try to sync the DT files in batches, once they reached a certain maturity state in the Linux tree (for instance merged into Linus' tree).
So as this one here doesn't do anything, we will just pick it up as part of the next sync, which I guess is around Linux 5.20-rc1, due in about a month.
As mentioned on IRC, I would be interested in solving this "SPI flash is optional" issue. IIUC there was pushback in Linux against blanketly enabling the SPI flash on this board, as there were boards sold without the chip? (Do you have a link to that discussion?) So the plan would be to detect the availability of the SPI flash in U-Boot, and then disable it (in the DT passed to the kernel), when the chip is not populated. Then we can send a patch to Linux to enable it in the DT, and sync that back. I would be grateful if someone could investigate the code it takes to pull this off.
Thanks, Andre
Fixes: 280294c5df ("sunxi: boards: Enable SPI flash support in U-Boot proper") Signed-off-by: Michal Suchanek msuchanek@suse.de
v2: cherry-pick from Linux arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts index b08e84c616..80c1e66b38 100644 --- a/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts +++ b/arch/arm/dts/sun8i-h2-plus-orangepi-zero.dts @@ -170,7 +170,7 @@ flash@0 { #address-cells = <1>; #size-cells = <1>;
compatible = "mxicy,mx25l1606e", "winbond,w25q128";
reg = <0>; spi-max-frequency = <40000000>; };compatible = "mxicy,mx25l1606e", "jedec,spi-nor";
participants (2)
-
Andre Przywara
-
Michal Suchanek