mirror of
https://github.com/openwrt/openwrt.git
synced 2025-03-13 07:54:14 +00:00
mediatek: add work-around for ASUS bootloader MTD behavior
ASUS makes use of U-Boot's fdt_fixup_mtdparts() function which applies the partitions defined in U-Boot's mtdparts and mtdids environment variables to the devicetree passed over to Linux. The undesired side-effect is that in this way also all additional properties and child nodes get wiped, preventing NVMEM cells to be defined for MTD partitions or UBI volumes. To work-around this issue, add an additional compatible string 'u-boot-dont-touch-spi-nand' which can be used instead of 'spi-nand' in case the replacement of the MTD partitions by U-Boot should be skipped alltogether. In practise this is mostly relevant for SPI-NAND which anyway comes only with two partitions nowadays: 'Bootloader' and 'UBI_DEV'. Hence this work-around is applicable for SPI-NAND only. Similar work-arounds for other MTD devices can be created as well should they actually be needed. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
parent
054bdc7877
commit
c48afca32c
@ -0,0 +1,47 @@
|
||||
From 30a04cf5b6ffa1249df72ccd98cef05f37890f89 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Golle <daniel@makrotopia.org>
|
||||
Date: Thu, 6 Feb 2025 05:07:20 +0000
|
||||
Subject: [PATCH] mtd: spinand: add work-around to prevent bootloader wiping
|
||||
mtdparts
|
||||
|
||||
ASUS makes use of U-Boot's fdt_fixup_mtdparts() function which applies
|
||||
the partitions defined in U-Boot's mtdparts and mtdids environment
|
||||
variables to the devicetree passed over to Linux.
|
||||
|
||||
The undesired side-effect is that in this way also all additional
|
||||
properties and child nodes get wiped, preventing NVMEM cells to be
|
||||
defined for MTD partitions or UBI volumes.
|
||||
|
||||
To work-around this issue, add an additional compatible string
|
||||
'u-boot-dont-touch-spi-nand' which can be used instead of 'spi-nand' in
|
||||
case the replacement of the MTD partitions by U-Boot should be skipped
|
||||
alltogether.
|
||||
|
||||
In practise this is mostly relevant for SPI-NAND which anyway comes only
|
||||
with two partitions nowadays: 'Bootloader' and 'UBI_DEV'. Hence this
|
||||
work-around is applicable for SPI-NAND only. Similar work-arounds for
|
||||
other MTD devices can be created as well should they actually be needed.
|
||||
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
---
|
||||
drivers/mtd/nand/spi/core.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/drivers/mtd/nand/spi/core.c
|
||||
+++ b/drivers/mtd/nand/spi/core.c
|
||||
@@ -1441,6 +1441,7 @@ static int spinand_remove(struct spi_mem
|
||||
|
||||
static const struct spi_device_id spinand_ids[] = {
|
||||
{ .name = "spi-nand" },
|
||||
+ { .name = "u-boot-dont-touch-spi-nand" },
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(spi, spinand_ids);
|
||||
@@ -1448,6 +1449,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids);
|
||||
#ifdef CONFIG_OF
|
||||
static const struct of_device_id spinand_of_ids[] = {
|
||||
{ .compatible = "spi-nand" },
|
||||
+ { .compatible = "u-boot-dont-touch-spi-nand" },
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, spinand_of_ids);
|
Loading…
x
Reference in New Issue
Block a user