mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 18:19:02 +00:00
kernel: fix mtd/NVMEM regression affecting U-Boot env NVMEM driver
Fixes:20736013e9
("kernel: backport nvmem v6.6 fixes and v6.7 changes") Fixes: https://github.com/openwrt/openwrt/issues/13831 Signed-off-by: Rafał Miłecki <rafal@milecki.pl> (cherry picked from commitc997634c01
)
This commit is contained in:
parent
20736013e9
commit
0dec0e0f19
@ -34,7 +34,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||
mtd->type = MTD_NORFLASH;
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -847,6 +847,17 @@ out_error:
|
||||
@@ -870,6 +870,17 @@ out_error:
|
||||
*/
|
||||
static void mtd_set_dev_defaults(struct mtd_info *mtd)
|
||||
{
|
||||
|
@ -77,7 +77,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
#include "mtdcore.h"
|
||||
|
||||
@@ -1083,6 +1084,8 @@ int mtd_device_parse_register(struct mtd
|
||||
@@ -1106,6 +1107,8 @@ int mtd_device_parse_register(struct mtd
|
||||
register_reboot_notifier(&mtd->reboot_notifier);
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -761,7 +761,8 @@ int add_mtd_device(struct mtd_info *mtd)
|
||||
@@ -784,7 +784,8 @@ int add_mtd_device(struct mtd_info *mtd)
|
||||
|
||||
mutex_unlock(&mtd_table_mutex);
|
||||
|
||||
|
@ -0,0 +1,48 @@
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Tue, 31 Oct 2023 15:51:01 +0100
|
||||
Subject: [PATCH] mtd: don't register NVMEM devices for partitions with custom
|
||||
drivers
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This fixes issue exposed by upstream commit f4cf4e5db331 ("Revert
|
||||
"nvmem: add new config option"").
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
---
|
||||
drivers/mtd/mtdcore.c | 23 +++++++++++++++++++++++
|
||||
1 file changed, 23 insertions(+)
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -537,6 +537,29 @@ static int mtd_nvmem_add(struct mtd_info
|
||||
struct device_node *node = mtd_get_of_node(mtd);
|
||||
struct nvmem_config config = {};
|
||||
|
||||
+ /*
|
||||
+ * Do NOT register NVMEM device for any partition that is meant to be
|
||||
+ * handled by a U-Boot env driver. That would result in associating two
|
||||
+ * different NVMEM devices with the same OF node.
|
||||
+ *
|
||||
+ * An example of unwanted behaviour of above (forwardtrace):
|
||||
+ * of_get_mac_addr_nvmem()
|
||||
+ * of_nvmem_cell_get()
|
||||
+ * __nvmem_device_get()
|
||||
+ *
|
||||
+ * We can't have __nvmem_device_get() return "mtdX" NVMEM device instead
|
||||
+ * of U-Boot env NVMEM device. That would result in failing to find
|
||||
+ * NVMEM cell.
|
||||
+ *
|
||||
+ * This issue seems to affect U-Boot env case only and will go away with
|
||||
+ * switch to NVMEM layouts.
|
||||
+ */
|
||||
+ if (of_device_is_compatible(node, "u-boot,env") ||
|
||||
+ of_device_is_compatible(node, "u-boot,env-redundant-bool") ||
|
||||
+ of_device_is_compatible(node, "u-boot,env-redundant-count") ||
|
||||
+ of_device_is_compatible(node, "brcm,env"))
|
||||
+ return 0;
|
||||
+
|
||||
config.id = -1;
|
||||
config.dev = &mtd->dev;
|
||||
config.name = dev_name(&mtd->dev);
|
@ -34,7 +34,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||
mtd->type = MTD_NORFLASH;
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -847,6 +847,17 @@ out_error:
|
||||
@@ -870,6 +870,17 @@ out_error:
|
||||
*/
|
||||
static void mtd_set_dev_defaults(struct mtd_info *mtd)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user