[openwrt/openwrt] kernel: backport v6.6 nvmem changes

LEDE Commits lede-commits at lists.infradead.org
Wed Aug 30 15:50:40 PDT 2023


rmilecki pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/52c365f055f62eb820cc42b0a1cfd037c68b01d0

commit 52c365f055f62eb820cc42b0a1cfd037c68b01d0
Author: Rafał Miłecki <rafal at milecki.pl>
AuthorDate: Thu Aug 31 00:28:58 2023 +0200

    kernel: backport v6.6 nvmem changes
    
    Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
---
 ..._sid-Convert-to-devm_platform_ioremap_res.patch |  36 +++++
 ...nvram-Use-devm_platform_get_and_ioremap_r.patch |  30 ++++
 ...xx_otp-Convert-to-devm_platform_ioremap_r.patch |  34 +++++
 ...-mx-efuse-Convert-to-devm_platform_iorema.patch |  36 +++++
 ...hip-efuse-Use-devm_platform_get_and_iorem.patch |  31 +++++
 ...-romem-Use-devm_platform_get_and_ioremap_.patch |  30 ++++
 ...19-v6.6-0007-nvmem-qfprom-do-some-cleanup.patch |  59 ++++++++
 ...ier-Use-devm_platform_get_and_ioremap_res.patch |  29 ++++
 ...0009-nvmem-add-new-NXP-QorIQ-eFuse-driver.patch | 133 ++++++++++++++++++
 ...-0011-nvmem-Kconfig-Fix-typo-drive-driver.patch |  37 +++++
 ...qfprom-Add-Qualcomm-secure-QFPROM-support.patch | 152 +++++++++++++++++++++
 ...t-env-Replace-zero-length-array-with-DECL.patch |  30 ++++
 ...Create-all-cells-before-adding-the-nvmem-.patch |  40 ++++++
 ...Return-NULL-when-no-nvmem-layout-is-found.patch |  35 +++++
 ...-core-Do-not-open-code-existing-functions.patch |  29 ++++
 ...re-Notify-when-a-new-layout-is-registered.patch |  44 ++++++
 ..._sid-Convert-to-devm_platform_ioremap_res.patch |  36 +++++
 ...nvram-Use-devm_platform_get_and_ioremap_r.patch |  30 ++++
 ...xx_otp-Convert-to-devm_platform_ioremap_r.patch |  34 +++++
 ...-mx-efuse-Convert-to-devm_platform_iorema.patch |  36 +++++
 ...hip-efuse-Use-devm_platform_get_and_iorem.patch |  31 +++++
 ...-romem-Use-devm_platform_get_and_ioremap_.patch |  30 ++++
 ...14-v6.6-0007-nvmem-qfprom-do-some-cleanup.patch |  59 ++++++++
 ...ier-Use-devm_platform_get_and_ioremap_res.patch |  29 ++++
 ...0009-nvmem-add-new-NXP-QorIQ-eFuse-driver.patch | 133 ++++++++++++++++++
 ...-0011-nvmem-Kconfig-Fix-typo-drive-driver.patch |  37 +++++
 ...qfprom-Add-Qualcomm-secure-QFPROM-support.patch | 152 +++++++++++++++++++++
 ...t-env-Replace-zero-length-array-with-DECL.patch |  30 ++++
 ...Create-all-cells-before-adding-the-nvmem-.patch |  40 ++++++
 ...Return-NULL-when-no-nvmem-layout-is-found.patch |  35 +++++
 ...-core-Do-not-open-code-existing-functions.patch |  29 ++++
 ...re-Notify-when-a-new-layout-is-registered.patch |  44 ++++++
 ...-fix-support-for-fixed-cells-NVMEM-layout.patch |   2 +-
 ...-fix-support-for-fixed-cells-NVMEM-layout.patch |   2 +-
 target/linux/ipq40xx/config-5.15                   |   1 +
 target/linux/ipq806x/config-6.1                    |   1 +
 target/linux/mpc85xx/config-5.15                   |   1 +
 target/linux/qualcommax/config-6.1                 |   1 +
 38 files changed, 1576 insertions(+), 2 deletions(-)

diff --git a/target/linux/generic/backport-5.15/819-v6.6-0001-nvmem-sunxi_sid-Convert-to-devm_platform_ioremap_res.patch b/target/linux/generic/backport-5.15/819-v6.6-0001-nvmem-sunxi_sid-Convert-to-devm_platform_ioremap_res.patch
new file mode 100644
index 0000000000..bf7a816bb2
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0001-nvmem-sunxi_sid-Convert-to-devm_platform_ioremap_res.patch
@@ -0,0 +1,36 @@
+From 9ccfcbeb8f32ff89e99b36cb9cdebaa0d1b44ed1 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:24 +0100
+Subject: [PATCH] nvmem: sunxi_sid: Convert to devm_platform_ioremap_resource()
+
+Use devm_platform_ioremap_resource() to simplify code.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Acked-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-3-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/sunxi_sid.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/drivers/nvmem/sunxi_sid.c
++++ b/drivers/nvmem/sunxi_sid.c
+@@ -125,7 +125,6 @@ static int sun8i_sid_read_by_reg(void *c
+ static int sunxi_sid_probe(struct platform_device *pdev)
+ {
+ 	struct device *dev = &pdev->dev;
+-	struct resource *res;
+ 	struct nvmem_config *nvmem_cfg;
+ 	struct nvmem_device *nvmem;
+ 	struct sunxi_sid *sid;
+@@ -142,8 +141,7 @@ static int sunxi_sid_probe(struct platfo
+ 		return -EINVAL;
+ 	sid->value_offset = cfg->value_offset;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	sid->base = devm_ioremap_resource(dev, res);
++	sid->base = devm_platform_ioremap_resource(pdev, 0);
+ 	if (IS_ERR(sid->base))
+ 		return PTR_ERR(sid->base);
+ 
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0002-nvmem-brcm_nvram-Use-devm_platform_get_and_ioremap_r.patch b/target/linux/generic/backport-5.15/819-v6.6-0002-nvmem-brcm_nvram-Use-devm_platform_get_and_ioremap_r.patch
new file mode 100644
index 0000000000..f142d735de
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0002-nvmem-brcm_nvram-Use-devm_platform_get_and_ioremap_r.patch
@@ -0,0 +1,30 @@
+From cfadd0e7d9225566f320bc4dc716682be910be6c Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:25 +0100
+Subject: [PATCH] nvmem: brcm_nvram: Use
+ devm_platform_get_and_ioremap_resource()
+
+Convert platform_get_resource(), devm_ioremap_resource() to a single
+call to devm_platform_get_and_ioremap_resource(), as this is exactly
+what this function does.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-4-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/brcm_nvram.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/nvmem/brcm_nvram.c
++++ b/drivers/nvmem/brcm_nvram.c
+@@ -159,8 +159,7 @@ static int brcm_nvram_probe(struct platf
+ 		return -ENOMEM;
+ 	priv->dev = dev;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	priv->base = devm_ioremap_resource(dev, res);
++	priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ 	if (IS_ERR(priv->base))
+ 		return PTR_ERR(priv->base);
+ 
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0003-nvmem-lpc18xx_otp-Convert-to-devm_platform_ioremap_r.patch b/target/linux/generic/backport-5.15/819-v6.6-0003-nvmem-lpc18xx_otp-Convert-to-devm_platform_ioremap_r.patch
new file mode 100644
index 0000000000..0395bbf8bc
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0003-nvmem-lpc18xx_otp-Convert-to-devm_platform_ioremap_r.patch
@@ -0,0 +1,34 @@
+From 0b49178e2b6b4aac3c7fa3ce8d8c02208a13b988 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:26 +0100
+Subject: [PATCH] nvmem: lpc18xx_otp: Convert to
+ devm_platform_ioremap_resource()
+
+Use devm_platform_ioremap_resource() to simplify code.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-5-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/lpc18xx_otp.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/drivers/nvmem/lpc18xx_otp.c
++++ b/drivers/nvmem/lpc18xx_otp.c
+@@ -68,14 +68,12 @@ static int lpc18xx_otp_probe(struct plat
+ {
+ 	struct nvmem_device *nvmem;
+ 	struct lpc18xx_otp *otp;
+-	struct resource *res;
+ 
+ 	otp = devm_kzalloc(&pdev->dev, sizeof(*otp), GFP_KERNEL);
+ 	if (!otp)
+ 		return -ENOMEM;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	otp->base = devm_ioremap_resource(&pdev->dev, res);
++	otp->base = devm_platform_ioremap_resource(pdev, 0);
+ 	if (IS_ERR(otp->base))
+ 		return PTR_ERR(otp->base);
+ 
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0004-nvmem-meson-mx-efuse-Convert-to-devm_platform_iorema.patch b/target/linux/generic/backport-5.15/819-v6.6-0004-nvmem-meson-mx-efuse-Convert-to-devm_platform_iorema.patch
new file mode 100644
index 0000000000..da077eb4b7
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0004-nvmem-meson-mx-efuse-Convert-to-devm_platform_iorema.patch
@@ -0,0 +1,36 @@
+From 0a223a097709b99a0ba738d6be5b4f52c04ffb64 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:27 +0100
+Subject: [PATCH] nvmem: meson-mx-efuse: Convert to
+ devm_platform_ioremap_resource()
+
+Use devm_platform_ioremap_resource() to simplify code.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-6-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/meson-mx-efuse.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/drivers/nvmem/meson-mx-efuse.c
++++ b/drivers/nvmem/meson-mx-efuse.c
+@@ -194,7 +194,6 @@ static int meson_mx_efuse_probe(struct p
+ {
+ 	const struct meson_mx_efuse_platform_data *drvdata;
+ 	struct meson_mx_efuse *efuse;
+-	struct resource *res;
+ 
+ 	drvdata = of_device_get_match_data(&pdev->dev);
+ 	if (!drvdata)
+@@ -204,8 +203,7 @@ static int meson_mx_efuse_probe(struct p
+ 	if (!efuse)
+ 		return -ENOMEM;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	efuse->base = devm_ioremap_resource(&pdev->dev, res);
++	efuse->base = devm_platform_ioremap_resource(pdev, 0);
+ 	if (IS_ERR(efuse->base))
+ 		return PTR_ERR(efuse->base);
+ 
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0005-nvmem-rockchip-efuse-Use-devm_platform_get_and_iorem.patch b/target/linux/generic/backport-5.15/819-v6.6-0005-nvmem-rockchip-efuse-Use-devm_platform_get_and_iorem.patch
new file mode 100644
index 0000000000..dc144ddfbd
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0005-nvmem-rockchip-efuse-Use-devm_platform_get_and_iorem.patch
@@ -0,0 +1,31 @@
+From 94904db28db49ac8fbb2a273d25156db26a3a985 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:28 +0100
+Subject: [PATCH] nvmem: rockchip-efuse: Use
+ devm_platform_get_and_ioremap_resource()
+
+Convert platform_get_resource(), devm_ioremap_resource() to a single
+call to devm_platform_get_and_ioremap_resource(), as this is exactly
+what this function does.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Reviewed-by: Heiko Stuebner <heiko at sntech.de>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-7-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/rockchip-efuse.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/nvmem/rockchip-efuse.c
++++ b/drivers/nvmem/rockchip-efuse.c
+@@ -267,8 +267,7 @@ static int rockchip_efuse_probe(struct p
+ 	if (!efuse)
+ 		return -ENOMEM;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	efuse->base = devm_ioremap_resource(dev, res);
++	efuse->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ 	if (IS_ERR(efuse->base))
+ 		return PTR_ERR(efuse->base);
+ 
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0006-nvmem-stm32-romem-Use-devm_platform_get_and_ioremap_.patch b/target/linux/generic/backport-5.15/819-v6.6-0006-nvmem-stm32-romem-Use-devm_platform_get_and_ioremap_.patch
new file mode 100644
index 0000000000..99e20939cc
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0006-nvmem-stm32-romem-Use-devm_platform_get_and_ioremap_.patch
@@ -0,0 +1,30 @@
+From 0a4a8c0d238fec1fa4b85591524ef42ad261cb97 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:29 +0100
+Subject: [PATCH] nvmem: stm32-romem: Use
+ devm_platform_get_and_ioremap_resource()
+
+Convert platform_get_resource(), devm_ioremap_resource() to a single
+call to devm_platform_get_and_ioremap_resource(), as this is exactly
+what this function does.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-8-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/stm32-romem.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/nvmem/stm32-romem.c
++++ b/drivers/nvmem/stm32-romem.c
+@@ -196,8 +196,7 @@ static int stm32_romem_probe(struct plat
+ 	if (!priv)
+ 		return -ENOMEM;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	priv->base = devm_ioremap_resource(dev, res);
++	priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ 	if (IS_ERR(priv->base))
+ 		return PTR_ERR(priv->base);
+ 
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0007-nvmem-qfprom-do-some-cleanup.patch b/target/linux/generic/backport-5.15/819-v6.6-0007-nvmem-qfprom-do-some-cleanup.patch
new file mode 100644
index 0000000000..6d93752e27
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0007-nvmem-qfprom-do-some-cleanup.patch
@@ -0,0 +1,59 @@
+From 0bc0d6dc2a9a05ae6729b4622f09782d9f230815 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:30 +0100
+Subject: [PATCH] nvmem: qfprom: do some cleanup
+
+Use devm_platform_ioremap_resource() and
+devm_platform_get_and_ioremap_resource() to simplify code.
+BTW convert to use dev_err_probe() instead of open it.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-9-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/qfprom.c | 17 +++++------------
+ 1 file changed, 5 insertions(+), 12 deletions(-)
+
+--- a/drivers/nvmem/qfprom.c
++++ b/drivers/nvmem/qfprom.c
+@@ -374,8 +374,7 @@ static int qfprom_probe(struct platform_
+ 		return -ENOMEM;
+ 
+ 	/* The corrected section is always provided */
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	priv->qfpcorrected = devm_ioremap_resource(dev, res);
++	priv->qfpcorrected = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ 	if (IS_ERR(priv->qfpcorrected))
+ 		return PTR_ERR(priv->qfpcorrected);
+ 
+@@ -402,12 +401,10 @@ static int qfprom_probe(struct platform_
+ 		priv->qfpraw = devm_ioremap_resource(dev, res);
+ 		if (IS_ERR(priv->qfpraw))
+ 			return PTR_ERR(priv->qfpraw);
+-		res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
+-		priv->qfpconf = devm_ioremap_resource(dev, res);
++		priv->qfpconf = devm_platform_ioremap_resource(pdev, 2);
+ 		if (IS_ERR(priv->qfpconf))
+ 			return PTR_ERR(priv->qfpconf);
+-		res = platform_get_resource(pdev, IORESOURCE_MEM, 3);
+-		priv->qfpsecurity = devm_ioremap_resource(dev, res);
++		priv->qfpsecurity = devm_platform_ioremap_resource(pdev, 3);
+ 		if (IS_ERR(priv->qfpsecurity))
+ 			return PTR_ERR(priv->qfpsecurity);
+ 
+@@ -427,12 +424,8 @@ static int qfprom_probe(struct platform_
+ 			return PTR_ERR(priv->vcc);
+ 
+ 		priv->secclk = devm_clk_get(dev, "core");
+-		if (IS_ERR(priv->secclk)) {
+-			ret = PTR_ERR(priv->secclk);
+-			if (ret != -EPROBE_DEFER)
+-				dev_err(dev, "Error getting clock: %d\n", ret);
+-			return ret;
+-		}
++		if (IS_ERR(priv->secclk))
++			return dev_err_probe(dev, PTR_ERR(priv->secclk), "Error getting clock\n");
+ 
+ 		/* Only enable writing if we have SoC data. */
+ 		if (priv->soc_data)
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0008-nvmem-uniphier-Use-devm_platform_get_and_ioremap_res.patch b/target/linux/generic/backport-5.15/819-v6.6-0008-nvmem-uniphier-Use-devm_platform_get_and_ioremap_res.patch
new file mode 100644
index 0000000000..3e328a4c99
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0008-nvmem-uniphier-Use-devm_platform_get_and_ioremap_res.patch
@@ -0,0 +1,29 @@
+From 6ac41c556e22a0d7d267c9b9d48681d73af4b368 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:31 +0100
+Subject: [PATCH] nvmem: uniphier: Use devm_platform_get_and_ioremap_resource()
+
+Convert platform_get_resource(), devm_ioremap_resource() to a single
+call to devm_platform_get_and_ioremap_resource(), as this is exactly
+what this function does.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-10-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/uniphier-efuse.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/nvmem/uniphier-efuse.c
++++ b/drivers/nvmem/uniphier-efuse.c
+@@ -41,8 +41,7 @@ static int uniphier_efuse_probe(struct p
+ 	if (!priv)
+ 		return -ENOMEM;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	priv->base = devm_ioremap_resource(dev, res);
++	priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ 	if (IS_ERR(priv->base))
+ 		return PTR_ERR(priv->base);
+ 
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0009-nvmem-add-new-NXP-QorIQ-eFuse-driver.patch b/target/linux/generic/backport-5.15/819-v6.6-0009-nvmem-add-new-NXP-QorIQ-eFuse-driver.patch
new file mode 100644
index 0000000000..acbe18e270
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0009-nvmem-add-new-NXP-QorIQ-eFuse-driver.patch
@@ -0,0 +1,133 @@
+From c8efcf7a86ebf2ff48584d270b3070a7075bc345 Mon Sep 17 00:00:00 2001
+From: Richard Alpe <richard at bit42.se>
+Date: Mon, 10 Apr 2023 10:20:51 +0200
+Subject: [PATCH] nvmem: add new NXP QorIQ eFuse driver
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add SFP (Security Fuse Processor) read support for NXP (Freescale)
+QorIQ series SOC's.
+
+This patch adds support for the T1023 SOC using the SFP offset from
+the existing T1023 device tree. In theory this should also work for
+T1024, T1014 and T1013 which uses the same SFP base offset.
+
+Signed-off-by: Richard Alpe <richard at bit42.se>
+Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/Kconfig       | 12 ++++++
+ drivers/nvmem/Makefile      |  2 +
+ drivers/nvmem/qoriq-efuse.c | 78 +++++++++++++++++++++++++++++++++++++
+ 3 files changed, 92 insertions(+)
+ create mode 100644 drivers/nvmem/qoriq-efuse.c
+
+--- a/drivers/nvmem/Kconfig
++++ b/drivers/nvmem/Kconfig
+@@ -392,4 +392,16 @@ config NVMEM_ZYNQMP
+ 
+ 	  If sure, say yes. If unsure, say no.
+ 
++config NVMEM_QORIQ_EFUSE
++	tristate "NXP QorIQ eFuse support"
++	depends on PPC_85xx || COMPILE_TEST
++	depends on HAS_IOMEM
++	help
++	  This driver provides read support for the eFuses (SFP) on NXP QorIQ
++	  series SoC's. This includes secure boot settings, the globally unique
++	  NXP ID 'FUIDR' and the OEM unique ID 'OUIDR'.
++
++	  This driver can also be built as a module. If so, the module
++	  will be called nvmem_qoriq_efuse.
++
+ endif
+--- a/drivers/nvmem/Makefile
++++ b/drivers/nvmem/Makefile
+@@ -77,3 +77,5 @@ obj-$(CONFIG_NVMEM_VF610_OCOTP)		+= nvme
+ nvmem-vf610-ocotp-y			:= vf610-ocotp.o
+ obj-$(CONFIG_NVMEM_ZYNQMP)		+= nvmem_zynqmp_nvmem.o
+ nvmem_zynqmp_nvmem-y			:= zynqmp_nvmem.o
++obj-$(CONFIG_NVMEM_QORIQ_EFUSE)		+= nvmem-qoriq-efuse.o
++nvmem-qoriq-efuse-y			:= qoriq-efuse.o
+--- /dev/null
++++ b/drivers/nvmem/qoriq-efuse.c
+@@ -0,0 +1,78 @@
++// SPDX-License-Identifier: GPL-2.0
++/*
++ *  Copyright (C) 2023  Westermo Network Technologies AB
++ */
++
++#include <linux/device.h>
++#include <linux/io.h>
++#include <linux/module.h>
++#include <linux/mod_devicetable.h>
++#include <linux/nvmem-provider.h>
++#include <linux/platform_device.h>
++
++struct qoriq_efuse_priv {
++	void __iomem *base;
++};
++
++static int qoriq_efuse_read(void *context, unsigned int offset, void *val,
++			    size_t bytes)
++{
++	struct qoriq_efuse_priv *priv = context;
++
++	/* .stride = 4 so offset is guaranteed to be aligned */
++	__ioread32_copy(val, priv->base + offset, bytes / 4);
++
++	/* Ignore trailing bytes (there shouldn't be any) */
++
++	return 0;
++}
++
++static int qoriq_efuse_probe(struct platform_device *pdev)
++{
++	struct nvmem_config config = {
++		.dev = &pdev->dev,
++		.read_only = true,
++		.reg_read = qoriq_efuse_read,
++		.stride = sizeof(u32),
++		.word_size = sizeof(u32),
++		.name = "qoriq_efuse_read",
++		.id = NVMEM_DEVID_AUTO,
++		.root_only = true,
++	};
++	struct qoriq_efuse_priv *priv;
++	struct nvmem_device *nvmem;
++	struct resource *res;
++
++	priv = devm_kzalloc(config.dev, sizeof(*priv), GFP_KERNEL);
++	if (!priv)
++		return -ENOMEM;
++
++	priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
++	if (IS_ERR(priv->base))
++		return PTR_ERR(priv->base);
++
++	config.size = resource_size(res);
++	config.priv = priv;
++	nvmem = devm_nvmem_register(config.dev, &config);
++
++	return PTR_ERR_OR_ZERO(nvmem);
++}
++
++static const struct of_device_id qoriq_efuse_of_match[] = {
++	{ .compatible = "fsl,t1023-sfp", },
++	{/* sentinel */},
++};
++MODULE_DEVICE_TABLE(of, qoriq_efuse_of_match);
++
++static struct platform_driver qoriq_efuse_driver = {
++	.probe = qoriq_efuse_probe,
++	.driver = {
++		.name = "qoriq-efuse",
++		.of_match_table = qoriq_efuse_of_match,
++	},
++};
++module_platform_driver(qoriq_efuse_driver);
++
++MODULE_AUTHOR("Richard Alpe <richard.alpe at bit42.se>");
++MODULE_DESCRIPTION("NXP QorIQ Security Fuse Processor (SFP) Reader");
++MODULE_LICENSE("GPL");
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0011-nvmem-Kconfig-Fix-typo-drive-driver.patch b/target/linux/generic/backport-5.15/819-v6.6-0011-nvmem-Kconfig-Fix-typo-drive-driver.patch
new file mode 100644
index 0000000000..67f30e34a2
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0011-nvmem-Kconfig-Fix-typo-drive-driver.patch
@@ -0,0 +1,37 @@
+From 9d53d595f688c9837e88a919229cc61a165c7b9e Mon Sep 17 00:00:00 2001
+From: Diederik de Haas <didi.debian at cknow.org>
+Date: Mon, 24 Jul 2023 13:36:22 +0200
+Subject: [PATCH] nvmem: Kconfig: Fix typo "drive" -> "driver"
+
+Fix typo where "driver" was meant instead of "drive".
+While at it, also capitalize "OTP".
+
+Signed-off-by: Diederik de Haas <didi.debian at cknow.org>
+Reviewed-by: Heiko Stuebner <heiko at sntech.de>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/Kconfig | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/nvmem/Kconfig
++++ b/drivers/nvmem/Kconfig
+@@ -247,7 +247,7 @@ config NVMEM_ROCKCHIP_EFUSE
+ 	depends on ARCH_ROCKCHIP || COMPILE_TEST
+ 	depends on HAS_IOMEM
+ 	help
+-	  This is a simple drive to dump specified values of Rockchip SoC
++	  This is a simple driver to dump specified values of Rockchip SoC
+ 	  from eFuse, such as cpu-leakage.
+ 
+ 	  This driver can also be built as a module. If so, the module
+@@ -258,8 +258,8 @@ config NVMEM_ROCKCHIP_OTP
+ 	depends on ARCH_ROCKCHIP || COMPILE_TEST
+ 	depends on HAS_IOMEM
+ 	help
+-	  This is a simple drive to dump specified values of Rockchip SoC
+-	  from otp, such as cpu-leakage.
++	  This is a simple driver to dump specified values of Rockchip SoC
++	  from OTP, such as cpu-leakage.
+ 
+ 	  This driver can also be built as a module. If so, the module
+ 	  will be called nvmem_rockchip_otp.
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0012-nvmem-sec-qfprom-Add-Qualcomm-secure-QFPROM-support.patch b/target/linux/generic/backport-5.15/819-v6.6-0012-nvmem-sec-qfprom-Add-Qualcomm-secure-QFPROM-support.patch
new file mode 100644
index 0000000000..d24a624ddf
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0012-nvmem-sec-qfprom-Add-Qualcomm-secure-QFPROM-support.patch
@@ -0,0 +1,152 @@
+From 0a9ec38c47c1ca4528aa058e2b9ea61901a7e632 Mon Sep 17 00:00:00 2001
+From: Komal Bajaj <quic_kbajaj at quicinc.com>
+Date: Tue, 1 Aug 2023 12:10:25 +0530
+Subject: [PATCH] nvmem: sec-qfprom: Add Qualcomm secure QFPROM support
+
+For some of the Qualcomm SoC's, it is possible that
+some of the fuse regions or entire qfprom region is
+protected from non-secure access. In such situations,
+the OS will have to use secure calls to read the region.
+With that motivation, add secure qfprom driver.
+
+Signed-off-by: Komal Bajaj <quic_kbajaj at quicinc.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/Kconfig      | 13 ++++++
+ drivers/nvmem/Makefile     |  2 +
+ drivers/nvmem/sec-qfprom.c | 96 ++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 111 insertions(+)
+ create mode 100644 drivers/nvmem/sec-qfprom.c
+
+--- a/drivers/nvmem/Kconfig
++++ b/drivers/nvmem/Kconfig
+@@ -226,6 +226,19 @@ config NVMEM_QCOM_QFPROM
+ 	  This driver can also be built as a module. If so, the module
+ 	  will be called nvmem_qfprom.
+ 
++config NVMEM_QCOM_SEC_QFPROM
++        tristate "QCOM SECURE QFPROM Support"
++        depends on ARCH_QCOM || COMPILE_TEST
++        depends on HAS_IOMEM
++        depends on OF
++        select QCOM_SCM
++        help
++          Say y here to enable secure QFPROM support. The secure QFPROM provides access
++          functions for QFPROM data to rest of the drivers via nvmem interface.
++
++          This driver can also be built as a module. If so, the module will be called
++          nvmem_sec_qfprom.
++
+ config NVMEM_RAVE_SP_EEPROM
+ 	tristate "Rave SP EEPROM Support"
+ 	depends on RAVE_SP_CORE
+--- a/drivers/nvmem/Makefile
++++ b/drivers/nvmem/Makefile
+@@ -46,6 +46,8 @@ obj-$(CONFIG_NVMEM_NINTENDO_OTP)	+= nvme
+ nvmem-nintendo-otp-y			:= nintendo-otp.o
+ obj-$(CONFIG_NVMEM_QCOM_QFPROM)		+= nvmem_qfprom.o
+ nvmem_qfprom-y				:= qfprom.o
++obj-$(CONFIG_NVMEM_QCOM_SEC_QFPROM)	+= nvmem_sec_qfprom.o
++nvmem_sec_qfprom-y			:= sec-qfprom.o
+ obj-$(CONFIG_NVMEM_RAVE_SP_EEPROM)	+= nvmem-rave-sp-eeprom.o
+ nvmem-rave-sp-eeprom-y			:= rave-sp-eeprom.o
+ obj-$(CONFIG_NVMEM_RMEM) 		+= nvmem-rmem.o
+--- /dev/null
++++ b/drivers/nvmem/sec-qfprom.c
+@@ -0,0 +1,96 @@
++// SPDX-License-Identifier: GPL-2.0-only
++/*
++ * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
++ */
++
++#include <linux/firmware/qcom/qcom_scm.h>
++#include <linux/mod_devicetable.h>
++#include <linux/nvmem-provider.h>
++#include <linux/platform_device.h>
++#include <linux/pm_runtime.h>
++
++/**
++ * struct sec_qfprom - structure holding secure qfprom attributes
++ *
++ * @base: starting physical address for secure qfprom corrected address space.
++ * @dev: qfprom device structure.
++ */
++struct sec_qfprom {
++	phys_addr_t base;
++	struct device *dev;
++};
++
++static int sec_qfprom_reg_read(void *context, unsigned int reg, void *_val, size_t bytes)
++{
++	struct sec_qfprom *priv = context;
++	unsigned int i;
++	u8 *val = _val;
++	u32 read_val;
++	u8 *tmp;
++
++	for (i = 0; i < bytes; i++, reg++) {
++		if (i == 0 || reg % 4 == 0) {
++			if (qcom_scm_io_readl(priv->base + (reg & ~3), &read_val)) {
++				dev_err(priv->dev, "Couldn't access fuse register\n");
++				return -EINVAL;
++			}
++			tmp = (u8 *)&read_val;
++		}
++
++		val[i] = tmp[reg & 3];
++	}
++
++	return 0;
++}
++
++static int sec_qfprom_probe(struct platform_device *pdev)
++{
++	struct nvmem_config econfig = {
++		.name = "sec-qfprom",
++		.stride = 1,
++		.word_size = 1,
++		.id = NVMEM_DEVID_AUTO,
++		.reg_read = sec_qfprom_reg_read,
++	};
++	struct device *dev = &pdev->dev;
++	struct nvmem_device *nvmem;
++	struct sec_qfprom *priv;
++	struct resource *res;
++
++	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
++	if (!priv)
++		return -ENOMEM;
++
++	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++	if (!res)
++		return -EINVAL;
++
++	priv->base = res->start;
++
++	econfig.size = resource_size(res);
++	econfig.dev = dev;
++	econfig.priv = priv;
++
++	priv->dev = dev;
++
++	nvmem = devm_nvmem_register(dev, &econfig);
++
++	return PTR_ERR_OR_ZERO(nvmem);
++}
++
++static const struct of_device_id sec_qfprom_of_match[] = {
++	{ .compatible = "qcom,sec-qfprom" },
++	{/* sentinel */},
++};
++MODULE_DEVICE_TABLE(of, sec_qfprom_of_match);
++
++static struct platform_driver qfprom_driver = {
++	.probe = sec_qfprom_probe,
++	.driver = {
++		.name = "qcom_sec_qfprom",
++		.of_match_table = sec_qfprom_of_match,
++	},
++};
++module_platform_driver(qfprom_driver);
++MODULE_DESCRIPTION("Qualcomm Secure QFPROM driver");
++MODULE_LICENSE("GPL");
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0013-nvmem-u-boot-env-Replace-zero-length-array-with-DECL.patch b/target/linux/generic/backport-5.15/819-v6.6-0013-nvmem-u-boot-env-Replace-zero-length-array-with-DECL.patch
new file mode 100644
index 0000000000..dab8ec2c24
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0013-nvmem-u-boot-env-Replace-zero-length-array-with-DECL.patch
@@ -0,0 +1,30 @@
+From c32f2186acc9abb4d766361255d7ddf07d15eeb2 Mon Sep 17 00:00:00 2001
+From: Atul Raut <rauji.raut at gmail.com>
+Date: Sun, 30 Jul 2023 15:39:15 -0700
+Subject: [PATCH] nvmem: u-boot-env:: Replace zero-length array with
+ DECLARE_FLEX_ARRAY() helper
+
+We are moving toward replacing zero-length arrays with C99 flexible-array
+members since they are deprecated. Therefore, the new DECLARE_FLEX_ARRAY()
+helper macro should be used to replace the zero-length array declaration.
+
+This fixes warnings such as:
+./drivers/nvmem/u-boot-env.c:50:9-13: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
+
+Signed-off-by: Atul Raut <rauji.raut at gmail.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/u-boot-env.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/nvmem/u-boot-env.c
++++ b/drivers/nvmem/u-boot-env.c
+@@ -47,7 +47,7 @@ struct u_boot_env_image_broadcom {
+ 	__le32 magic;
+ 	__le32 len;
+ 	__le32 crc32;
+-	uint8_t data[0];
++	DECLARE_FLEX_ARRAY(uint8_t, data);
+ } __packed;
+ 
+ static int u_boot_env_read(void *context, unsigned int offset, void *val,
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0014-nvmem-core-Create-all-cells-before-adding-the-nvmem-.patch b/target/linux/generic/backport-5.15/819-v6.6-0014-nvmem-core-Create-all-cells-before-adding-the-nvmem-.patch
new file mode 100644
index 0000000000..f9532f39c3
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0014-nvmem-core-Create-all-cells-before-adding-the-nvmem-.patch
@@ -0,0 +1,40 @@
+From 104af6a5b199eb4dc7970d1304aef38ac5a6ed54 Mon Sep 17 00:00:00 2001
+From: Miquel Raynal <miquel.raynal at bootlin.com>
+Date: Tue, 8 Aug 2023 08:29:26 +0200
+Subject: [PATCH] nvmem: core: Create all cells before adding the nvmem device
+
+Let's pack all the cells creation in one place, so they are all created
+before we add the nvmem device.
+
+Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
+Reviewed-by: Michael Walle <michael at walle.cc>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/core.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+--- a/drivers/nvmem/core.c
++++ b/drivers/nvmem/core.c
+@@ -998,17 +998,17 @@ struct nvmem_device *nvmem_register(cons
+ 	if (rval)
+ 		goto err_remove_cells;
+ 
+-	dev_dbg(&nvmem->dev, "Registering nvmem device %s\n", config->name);
+-
+-	rval = device_add(&nvmem->dev);
++	rval = nvmem_add_cells_from_fixed_layout(nvmem);
+ 	if (rval)
+ 		goto err_remove_cells;
+ 
+-	rval = nvmem_add_cells_from_fixed_layout(nvmem);
++	rval = nvmem_add_cells_from_layout(nvmem);
+ 	if (rval)
+ 		goto err_remove_cells;
+ 
+-	rval = nvmem_add_cells_from_layout(nvmem);
++	dev_dbg(&nvmem->dev, "Registering nvmem device %s\n", config->name);
++
++	rval = device_add(&nvmem->dev);
+ 	if (rval)
+ 		goto err_remove_cells;
+ 
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0015-nvmem-core-Return-NULL-when-no-nvmem-layout-is-found.patch b/target/linux/generic/backport-5.15/819-v6.6-0015-nvmem-core-Return-NULL-when-no-nvmem-layout-is-found.patch
new file mode 100644
index 0000000000..8f64d0c28b
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0015-nvmem-core-Return-NULL-when-no-nvmem-layout-is-found.patch
@@ -0,0 +1,35 @@
+From 6c7f48ea2e663b679aa8e60d8d8e1e6306a644f9 Mon Sep 17 00:00:00 2001
+From: Miquel Raynal <miquel.raynal at bootlin.com>
+Date: Tue, 8 Aug 2023 08:29:27 +0200
+Subject: [PATCH] nvmem: core: Return NULL when no nvmem layout is found
+
+Currently, of_nvmem_layout_get_container() returns NULL on error, or an
+error pointer if either CONFIG_NVMEM or CONFIG_OF is turned off. We
+should likely avoid this kind of mix for two reasons: to clarify the
+intend and anyway fix the !CONFIG_OF which will likely always if we use
+this helper somewhere else. Let's just return NULL when no layout is
+found, we don't need an error value here.
+
+Link: https://staticthinking.wordpress.com/2022/08/01/mixing-error-pointers-and-null/
+Fixes: 266570f496b9 ("nvmem: core: introduce NVMEM layouts")
+Reported-by: kernel test robot <lkp at intel.com>
+Reported-by: Dan Carpenter <dan.carpenter at linaro.org>
+Closes: https://lore.kernel.org/r/202308030002.DnSFOrMB-lkp@intel.com/
+Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
+Reviewed-by: Michael Walle <michael at walle.cc>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ include/linux/nvmem-consumer.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/include/linux/nvmem-consumer.h
++++ b/include/linux/nvmem-consumer.h
+@@ -256,7 +256,7 @@ static inline struct nvmem_device *of_nv
+ static inline struct device_node *
+ of_nvmem_layout_get_container(struct nvmem_device *nvmem)
+ {
+-	return ERR_PTR(-EOPNOTSUPP);
++	return NULL;
+ }
+ #endif /* CONFIG_NVMEM && CONFIG_OF */
+ 
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0016-nvmem-core-Do-not-open-code-existing-functions.patch b/target/linux/generic/backport-5.15/819-v6.6-0016-nvmem-core-Do-not-open-code-existing-functions.patch
new file mode 100644
index 0000000000..28d8bba194
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0016-nvmem-core-Do-not-open-code-existing-functions.patch
@@ -0,0 +1,29 @@
+From b8257f61b4ddac6d7d0e19a5a4e8b07afb3b4ed3 Mon Sep 17 00:00:00 2001
+From: Miquel Raynal <miquel.raynal at bootlin.com>
+Date: Tue, 8 Aug 2023 08:29:28 +0200
+Subject: [PATCH] nvmem: core: Do not open-code existing functions
+
+Use of_nvmem_layout_get_container() instead of hardcoding it.
+
+Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
+Reviewed-by: Michael Walle <michael at walle.cc>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/core.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/nvmem/core.c
++++ b/drivers/nvmem/core.c
+@@ -786,10 +786,10 @@ EXPORT_SYMBOL_GPL(nvmem_layout_unregiste
+ 
+ static struct nvmem_layout *nvmem_layout_get(struct nvmem_device *nvmem)
+ {
+-	struct device_node *layout_np, *np = nvmem->dev.of_node;
++	struct device_node *layout_np;
+ 	struct nvmem_layout *l, *layout = ERR_PTR(-EPROBE_DEFER);
+ 
+-	layout_np = of_get_child_by_name(np, "nvmem-layout");
++	layout_np = of_nvmem_layout_get_container(nvmem);
+ 	if (!layout_np)
+ 		return NULL;
+ 
diff --git a/target/linux/generic/backport-5.15/819-v6.6-0017-nvmem-core-Notify-when-a-new-layout-is-registered.patch b/target/linux/generic/backport-5.15/819-v6.6-0017-nvmem-core-Notify-when-a-new-layout-is-registered.patch
new file mode 100644
index 0000000000..b62a0e18da
--- /dev/null
+++ b/target/linux/generic/backport-5.15/819-v6.6-0017-nvmem-core-Notify-when-a-new-layout-is-registered.patch
@@ -0,0 +1,44 @@
+From 0991afbe4b1805e7f0113ef10d7c5f0698a739e4 Mon Sep 17 00:00:00 2001
+From: Miquel Raynal <miquel.raynal at bootlin.com>
+Date: Tue, 8 Aug 2023 08:29:29 +0200
+Subject: [PATCH] nvmem: core: Notify when a new layout is registered
+
+Tell listeners a new layout was introduced and is now available.
+
+Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/core.c           | 4 ++++
+ include/linux/nvmem-consumer.h | 2 ++
+ 2 files changed, 6 insertions(+)
+
+--- a/drivers/nvmem/core.c
++++ b/drivers/nvmem/core.c
+@@ -772,12 +772,16 @@ int __nvmem_layout_register(struct nvmem
+ 	list_add(&layout->node, &nvmem_layouts);
+ 	spin_unlock(&nvmem_layout_lock);
+ 
++	blocking_notifier_call_chain(&nvmem_notifier, NVMEM_LAYOUT_ADD, layout);
++
+ 	return 0;
+ }
+ EXPORT_SYMBOL_GPL(__nvmem_layout_register);
+ 
+ void nvmem_layout_unregister(struct nvmem_layout *layout)
+ {
++	blocking_notifier_call_chain(&nvmem_notifier, NVMEM_LAYOUT_REMOVE, layout);
++
+ 	spin_lock(&nvmem_layout_lock);
+ 	list_del(&layout->node);
+ 	spin_unlock(&nvmem_layout_lock);
+--- a/include/linux/nvmem-consumer.h
++++ b/include/linux/nvmem-consumer.h
+@@ -43,6 +43,8 @@ enum {
+ 	NVMEM_REMOVE,
+ 	NVMEM_CELL_ADD,
+ 	NVMEM_CELL_REMOVE,
++	NVMEM_LAYOUT_ADD,
++	NVMEM_LAYOUT_REMOVE,
+ };
+ 
+ #if IS_ENABLED(CONFIG_NVMEM)
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0001-nvmem-sunxi_sid-Convert-to-devm_platform_ioremap_res.patch b/target/linux/generic/backport-6.1/814-v6.6-0001-nvmem-sunxi_sid-Convert-to-devm_platform_ioremap_res.patch
new file mode 100644
index 0000000000..bf7a816bb2
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0001-nvmem-sunxi_sid-Convert-to-devm_platform_ioremap_res.patch
@@ -0,0 +1,36 @@
+From 9ccfcbeb8f32ff89e99b36cb9cdebaa0d1b44ed1 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:24 +0100
+Subject: [PATCH] nvmem: sunxi_sid: Convert to devm_platform_ioremap_resource()
+
+Use devm_platform_ioremap_resource() to simplify code.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Acked-by: Jernej Skrabec <jernej.skrabec at gmail.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-3-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/sunxi_sid.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/drivers/nvmem/sunxi_sid.c
++++ b/drivers/nvmem/sunxi_sid.c
+@@ -125,7 +125,6 @@ static int sun8i_sid_read_by_reg(void *c
+ static int sunxi_sid_probe(struct platform_device *pdev)
+ {
+ 	struct device *dev = &pdev->dev;
+-	struct resource *res;
+ 	struct nvmem_config *nvmem_cfg;
+ 	struct nvmem_device *nvmem;
+ 	struct sunxi_sid *sid;
+@@ -142,8 +141,7 @@ static int sunxi_sid_probe(struct platfo
+ 		return -EINVAL;
+ 	sid->value_offset = cfg->value_offset;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	sid->base = devm_ioremap_resource(dev, res);
++	sid->base = devm_platform_ioremap_resource(pdev, 0);
+ 	if (IS_ERR(sid->base))
+ 		return PTR_ERR(sid->base);
+ 
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0002-nvmem-brcm_nvram-Use-devm_platform_get_and_ioremap_r.patch b/target/linux/generic/backport-6.1/814-v6.6-0002-nvmem-brcm_nvram-Use-devm_platform_get_and_ioremap_r.patch
new file mode 100644
index 0000000000..f142d735de
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0002-nvmem-brcm_nvram-Use-devm_platform_get_and_ioremap_r.patch
@@ -0,0 +1,30 @@
+From cfadd0e7d9225566f320bc4dc716682be910be6c Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:25 +0100
+Subject: [PATCH] nvmem: brcm_nvram: Use
+ devm_platform_get_and_ioremap_resource()
+
+Convert platform_get_resource(), devm_ioremap_resource() to a single
+call to devm_platform_get_and_ioremap_resource(), as this is exactly
+what this function does.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-4-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/brcm_nvram.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/nvmem/brcm_nvram.c
++++ b/drivers/nvmem/brcm_nvram.c
+@@ -159,8 +159,7 @@ static int brcm_nvram_probe(struct platf
+ 		return -ENOMEM;
+ 	priv->dev = dev;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	priv->base = devm_ioremap_resource(dev, res);
++	priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ 	if (IS_ERR(priv->base))
+ 		return PTR_ERR(priv->base);
+ 
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0003-nvmem-lpc18xx_otp-Convert-to-devm_platform_ioremap_r.patch b/target/linux/generic/backport-6.1/814-v6.6-0003-nvmem-lpc18xx_otp-Convert-to-devm_platform_ioremap_r.patch
new file mode 100644
index 0000000000..0395bbf8bc
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0003-nvmem-lpc18xx_otp-Convert-to-devm_platform_ioremap_r.patch
@@ -0,0 +1,34 @@
+From 0b49178e2b6b4aac3c7fa3ce8d8c02208a13b988 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:26 +0100
+Subject: [PATCH] nvmem: lpc18xx_otp: Convert to
+ devm_platform_ioremap_resource()
+
+Use devm_platform_ioremap_resource() to simplify code.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-5-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/lpc18xx_otp.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/drivers/nvmem/lpc18xx_otp.c
++++ b/drivers/nvmem/lpc18xx_otp.c
+@@ -68,14 +68,12 @@ static int lpc18xx_otp_probe(struct plat
+ {
+ 	struct nvmem_device *nvmem;
+ 	struct lpc18xx_otp *otp;
+-	struct resource *res;
+ 
+ 	otp = devm_kzalloc(&pdev->dev, sizeof(*otp), GFP_KERNEL);
+ 	if (!otp)
+ 		return -ENOMEM;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	otp->base = devm_ioremap_resource(&pdev->dev, res);
++	otp->base = devm_platform_ioremap_resource(pdev, 0);
+ 	if (IS_ERR(otp->base))
+ 		return PTR_ERR(otp->base);
+ 
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0004-nvmem-meson-mx-efuse-Convert-to-devm_platform_iorema.patch b/target/linux/generic/backport-6.1/814-v6.6-0004-nvmem-meson-mx-efuse-Convert-to-devm_platform_iorema.patch
new file mode 100644
index 0000000000..da077eb4b7
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0004-nvmem-meson-mx-efuse-Convert-to-devm_platform_iorema.patch
@@ -0,0 +1,36 @@
+From 0a223a097709b99a0ba738d6be5b4f52c04ffb64 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:27 +0100
+Subject: [PATCH] nvmem: meson-mx-efuse: Convert to
+ devm_platform_ioremap_resource()
+
+Use devm_platform_ioremap_resource() to simplify code.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-6-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/meson-mx-efuse.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/drivers/nvmem/meson-mx-efuse.c
++++ b/drivers/nvmem/meson-mx-efuse.c
+@@ -194,7 +194,6 @@ static int meson_mx_efuse_probe(struct p
+ {
+ 	const struct meson_mx_efuse_platform_data *drvdata;
+ 	struct meson_mx_efuse *efuse;
+-	struct resource *res;
+ 
+ 	drvdata = of_device_get_match_data(&pdev->dev);
+ 	if (!drvdata)
+@@ -204,8 +203,7 @@ static int meson_mx_efuse_probe(struct p
+ 	if (!efuse)
+ 		return -ENOMEM;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	efuse->base = devm_ioremap_resource(&pdev->dev, res);
++	efuse->base = devm_platform_ioremap_resource(pdev, 0);
+ 	if (IS_ERR(efuse->base))
+ 		return PTR_ERR(efuse->base);
+ 
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0005-nvmem-rockchip-efuse-Use-devm_platform_get_and_iorem.patch b/target/linux/generic/backport-6.1/814-v6.6-0005-nvmem-rockchip-efuse-Use-devm_platform_get_and_iorem.patch
new file mode 100644
index 0000000000..dc144ddfbd
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0005-nvmem-rockchip-efuse-Use-devm_platform_get_and_iorem.patch
@@ -0,0 +1,31 @@
+From 94904db28db49ac8fbb2a273d25156db26a3a985 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:28 +0100
+Subject: [PATCH] nvmem: rockchip-efuse: Use
+ devm_platform_get_and_ioremap_resource()
+
+Convert platform_get_resource(), devm_ioremap_resource() to a single
+call to devm_platform_get_and_ioremap_resource(), as this is exactly
+what this function does.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Reviewed-by: Heiko Stuebner <heiko at sntech.de>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-7-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/rockchip-efuse.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/nvmem/rockchip-efuse.c
++++ b/drivers/nvmem/rockchip-efuse.c
+@@ -267,8 +267,7 @@ static int rockchip_efuse_probe(struct p
+ 	if (!efuse)
+ 		return -ENOMEM;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	efuse->base = devm_ioremap_resource(dev, res);
++	efuse->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ 	if (IS_ERR(efuse->base))
+ 		return PTR_ERR(efuse->base);
+ 
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0006-nvmem-stm32-romem-Use-devm_platform_get_and_ioremap_.patch b/target/linux/generic/backport-6.1/814-v6.6-0006-nvmem-stm32-romem-Use-devm_platform_get_and_ioremap_.patch
new file mode 100644
index 0000000000..99e20939cc
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0006-nvmem-stm32-romem-Use-devm_platform_get_and_ioremap_.patch
@@ -0,0 +1,30 @@
+From 0a4a8c0d238fec1fa4b85591524ef42ad261cb97 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:29 +0100
+Subject: [PATCH] nvmem: stm32-romem: Use
+ devm_platform_get_and_ioremap_resource()
+
+Convert platform_get_resource(), devm_ioremap_resource() to a single
+call to devm_platform_get_and_ioremap_resource(), as this is exactly
+what this function does.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-8-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/stm32-romem.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/nvmem/stm32-romem.c
++++ b/drivers/nvmem/stm32-romem.c
+@@ -196,8 +196,7 @@ static int stm32_romem_probe(struct plat
+ 	if (!priv)
+ 		return -ENOMEM;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	priv->base = devm_ioremap_resource(dev, res);
++	priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ 	if (IS_ERR(priv->base))
+ 		return PTR_ERR(priv->base);
+ 
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0007-nvmem-qfprom-do-some-cleanup.patch b/target/linux/generic/backport-6.1/814-v6.6-0007-nvmem-qfprom-do-some-cleanup.patch
new file mode 100644
index 0000000000..6d93752e27
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0007-nvmem-qfprom-do-some-cleanup.patch
@@ -0,0 +1,59 @@
+From 0bc0d6dc2a9a05ae6729b4622f09782d9f230815 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:30 +0100
+Subject: [PATCH] nvmem: qfprom: do some cleanup
+
+Use devm_platform_ioremap_resource() and
+devm_platform_get_and_ioremap_resource() to simplify code.
+BTW convert to use dev_err_probe() instead of open it.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-9-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/qfprom.c | 17 +++++------------
+ 1 file changed, 5 insertions(+), 12 deletions(-)
+
+--- a/drivers/nvmem/qfprom.c
++++ b/drivers/nvmem/qfprom.c
+@@ -374,8 +374,7 @@ static int qfprom_probe(struct platform_
+ 		return -ENOMEM;
+ 
+ 	/* The corrected section is always provided */
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	priv->qfpcorrected = devm_ioremap_resource(dev, res);
++	priv->qfpcorrected = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ 	if (IS_ERR(priv->qfpcorrected))
+ 		return PTR_ERR(priv->qfpcorrected);
+ 
+@@ -402,12 +401,10 @@ static int qfprom_probe(struct platform_
+ 		priv->qfpraw = devm_ioremap_resource(dev, res);
+ 		if (IS_ERR(priv->qfpraw))
+ 			return PTR_ERR(priv->qfpraw);
+-		res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
+-		priv->qfpconf = devm_ioremap_resource(dev, res);
++		priv->qfpconf = devm_platform_ioremap_resource(pdev, 2);
+ 		if (IS_ERR(priv->qfpconf))
+ 			return PTR_ERR(priv->qfpconf);
+-		res = platform_get_resource(pdev, IORESOURCE_MEM, 3);
+-		priv->qfpsecurity = devm_ioremap_resource(dev, res);
++		priv->qfpsecurity = devm_platform_ioremap_resource(pdev, 3);
+ 		if (IS_ERR(priv->qfpsecurity))
+ 			return PTR_ERR(priv->qfpsecurity);
+ 
+@@ -427,12 +424,8 @@ static int qfprom_probe(struct platform_
+ 			return PTR_ERR(priv->vcc);
+ 
+ 		priv->secclk = devm_clk_get(dev, "core");
+-		if (IS_ERR(priv->secclk)) {
+-			ret = PTR_ERR(priv->secclk);
+-			if (ret != -EPROBE_DEFER)
+-				dev_err(dev, "Error getting clock: %d\n", ret);
+-			return ret;
+-		}
++		if (IS_ERR(priv->secclk))
++			return dev_err_probe(dev, PTR_ERR(priv->secclk), "Error getting clock\n");
+ 
+ 		/* Only enable writing if we have SoC data. */
+ 		if (priv->soc_data)
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0008-nvmem-uniphier-Use-devm_platform_get_and_ioremap_res.patch b/target/linux/generic/backport-6.1/814-v6.6-0008-nvmem-uniphier-Use-devm_platform_get_and_ioremap_res.patch
new file mode 100644
index 0000000000..3e328a4c99
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0008-nvmem-uniphier-Use-devm_platform_get_and_ioremap_res.patch
@@ -0,0 +1,29 @@
+From 6ac41c556e22a0d7d267c9b9d48681d73af4b368 Mon Sep 17 00:00:00 2001
+From: Yangtao Li <frank.li at vivo.com>
+Date: Wed, 23 Aug 2023 14:27:31 +0100
+Subject: [PATCH] nvmem: uniphier: Use devm_platform_get_and_ioremap_resource()
+
+Convert platform_get_resource(), devm_ioremap_resource() to a single
+call to devm_platform_get_and_ioremap_resource(), as this is exactly
+what this function does.
+
+Signed-off-by: Yangtao Li <frank.li at vivo.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+Link: https://lore.kernel.org/r/20230823132744.350618-10-srinivas.kandagatla@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+---
+ drivers/nvmem/uniphier-efuse.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/nvmem/uniphier-efuse.c
++++ b/drivers/nvmem/uniphier-efuse.c
+@@ -41,8 +41,7 @@ static int uniphier_efuse_probe(struct p
+ 	if (!priv)
+ 		return -ENOMEM;
+ 
+-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+-	priv->base = devm_ioremap_resource(dev, res);
++	priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
+ 	if (IS_ERR(priv->base))
+ 		return PTR_ERR(priv->base);
+ 
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0009-nvmem-add-new-NXP-QorIQ-eFuse-driver.patch b/target/linux/generic/backport-6.1/814-v6.6-0009-nvmem-add-new-NXP-QorIQ-eFuse-driver.patch
new file mode 100644
index 0000000000..acbe18e270
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0009-nvmem-add-new-NXP-QorIQ-eFuse-driver.patch
@@ -0,0 +1,133 @@
+From c8efcf7a86ebf2ff48584d270b3070a7075bc345 Mon Sep 17 00:00:00 2001
+From: Richard Alpe <richard at bit42.se>
+Date: Mon, 10 Apr 2023 10:20:51 +0200
+Subject: [PATCH] nvmem: add new NXP QorIQ eFuse driver
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add SFP (Security Fuse Processor) read support for NXP (Freescale)
+QorIQ series SOC's.
+
+This patch adds support for the T1023 SOC using the SFP offset from
+the existing T1023 device tree. In theory this should also work for
+T1024, T1014 and T1013 which uses the same SFP base offset.
+
+Signed-off-by: Richard Alpe <richard at bit42.se>
+Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/Kconfig       | 12 ++++++
+ drivers/nvmem/Makefile      |  2 +
+ drivers/nvmem/qoriq-efuse.c | 78 +++++++++++++++++++++++++++++++++++++
+ 3 files changed, 92 insertions(+)
+ create mode 100644 drivers/nvmem/qoriq-efuse.c
+
+--- a/drivers/nvmem/Kconfig
++++ b/drivers/nvmem/Kconfig
+@@ -392,4 +392,16 @@ config NVMEM_ZYNQMP
+ 
+ 	  If sure, say yes. If unsure, say no.
+ 
++config NVMEM_QORIQ_EFUSE
++	tristate "NXP QorIQ eFuse support"
++	depends on PPC_85xx || COMPILE_TEST
++	depends on HAS_IOMEM
++	help
++	  This driver provides read support for the eFuses (SFP) on NXP QorIQ
++	  series SoC's. This includes secure boot settings, the globally unique
++	  NXP ID 'FUIDR' and the OEM unique ID 'OUIDR'.
++
++	  This driver can also be built as a module. If so, the module
++	  will be called nvmem_qoriq_efuse.
++
+ endif
+--- a/drivers/nvmem/Makefile
++++ b/drivers/nvmem/Makefile
+@@ -77,3 +77,5 @@ obj-$(CONFIG_NVMEM_VF610_OCOTP)		+= nvme
+ nvmem-vf610-ocotp-y			:= vf610-ocotp.o
+ obj-$(CONFIG_NVMEM_ZYNQMP)		+= nvmem_zynqmp_nvmem.o
+ nvmem_zynqmp_nvmem-y			:= zynqmp_nvmem.o
++obj-$(CONFIG_NVMEM_QORIQ_EFUSE)		+= nvmem-qoriq-efuse.o
++nvmem-qoriq-efuse-y			:= qoriq-efuse.o
+--- /dev/null
++++ b/drivers/nvmem/qoriq-efuse.c
+@@ -0,0 +1,78 @@
++// SPDX-License-Identifier: GPL-2.0
++/*
++ *  Copyright (C) 2023  Westermo Network Technologies AB
++ */
++
++#include <linux/device.h>
++#include <linux/io.h>
++#include <linux/module.h>
++#include <linux/mod_devicetable.h>
++#include <linux/nvmem-provider.h>
++#include <linux/platform_device.h>
++
++struct qoriq_efuse_priv {
++	void __iomem *base;
++};
++
++static int qoriq_efuse_read(void *context, unsigned int offset, void *val,
++			    size_t bytes)
++{
++	struct qoriq_efuse_priv *priv = context;
++
++	/* .stride = 4 so offset is guaranteed to be aligned */
++	__ioread32_copy(val, priv->base + offset, bytes / 4);
++
++	/* Ignore trailing bytes (there shouldn't be any) */
++
++	return 0;
++}
++
++static int qoriq_efuse_probe(struct platform_device *pdev)
++{
++	struct nvmem_config config = {
++		.dev = &pdev->dev,
++		.read_only = true,
++		.reg_read = qoriq_efuse_read,
++		.stride = sizeof(u32),
++		.word_size = sizeof(u32),
++		.name = "qoriq_efuse_read",
++		.id = NVMEM_DEVID_AUTO,
++		.root_only = true,
++	};
++	struct qoriq_efuse_priv *priv;
++	struct nvmem_device *nvmem;
++	struct resource *res;
++
++	priv = devm_kzalloc(config.dev, sizeof(*priv), GFP_KERNEL);
++	if (!priv)
++		return -ENOMEM;
++
++	priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
++	if (IS_ERR(priv->base))
++		return PTR_ERR(priv->base);
++
++	config.size = resource_size(res);
++	config.priv = priv;
++	nvmem = devm_nvmem_register(config.dev, &config);
++
++	return PTR_ERR_OR_ZERO(nvmem);
++}
++
++static const struct of_device_id qoriq_efuse_of_match[] = {
++	{ .compatible = "fsl,t1023-sfp", },
++	{/* sentinel */},
++};
++MODULE_DEVICE_TABLE(of, qoriq_efuse_of_match);
++
++static struct platform_driver qoriq_efuse_driver = {
++	.probe = qoriq_efuse_probe,
++	.driver = {
++		.name = "qoriq-efuse",
++		.of_match_table = qoriq_efuse_of_match,
++	},
++};
++module_platform_driver(qoriq_efuse_driver);
++
++MODULE_AUTHOR("Richard Alpe <richard.alpe at bit42.se>");
++MODULE_DESCRIPTION("NXP QorIQ Security Fuse Processor (SFP) Reader");
++MODULE_LICENSE("GPL");
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0011-nvmem-Kconfig-Fix-typo-drive-driver.patch b/target/linux/generic/backport-6.1/814-v6.6-0011-nvmem-Kconfig-Fix-typo-drive-driver.patch
new file mode 100644
index 0000000000..67f30e34a2
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0011-nvmem-Kconfig-Fix-typo-drive-driver.patch
@@ -0,0 +1,37 @@
+From 9d53d595f688c9837e88a919229cc61a165c7b9e Mon Sep 17 00:00:00 2001
+From: Diederik de Haas <didi.debian at cknow.org>
+Date: Mon, 24 Jul 2023 13:36:22 +0200
+Subject: [PATCH] nvmem: Kconfig: Fix typo "drive" -> "driver"
+
+Fix typo where "driver" was meant instead of "drive".
+While at it, also capitalize "OTP".
+
+Signed-off-by: Diederik de Haas <didi.debian at cknow.org>
+Reviewed-by: Heiko Stuebner <heiko at sntech.de>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/Kconfig | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/nvmem/Kconfig
++++ b/drivers/nvmem/Kconfig
+@@ -247,7 +247,7 @@ config NVMEM_ROCKCHIP_EFUSE
+ 	depends on ARCH_ROCKCHIP || COMPILE_TEST
+ 	depends on HAS_IOMEM
+ 	help
+-	  This is a simple drive to dump specified values of Rockchip SoC
++	  This is a simple driver to dump specified values of Rockchip SoC
+ 	  from eFuse, such as cpu-leakage.
+ 
+ 	  This driver can also be built as a module. If so, the module
+@@ -258,8 +258,8 @@ config NVMEM_ROCKCHIP_OTP
+ 	depends on ARCH_ROCKCHIP || COMPILE_TEST
+ 	depends on HAS_IOMEM
+ 	help
+-	  This is a simple drive to dump specified values of Rockchip SoC
+-	  from otp, such as cpu-leakage.
++	  This is a simple driver to dump specified values of Rockchip SoC
++	  from OTP, such as cpu-leakage.
+ 
+ 	  This driver can also be built as a module. If so, the module
+ 	  will be called nvmem_rockchip_otp.
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0012-nvmem-sec-qfprom-Add-Qualcomm-secure-QFPROM-support.patch b/target/linux/generic/backport-6.1/814-v6.6-0012-nvmem-sec-qfprom-Add-Qualcomm-secure-QFPROM-support.patch
new file mode 100644
index 0000000000..d24a624ddf
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0012-nvmem-sec-qfprom-Add-Qualcomm-secure-QFPROM-support.patch
@@ -0,0 +1,152 @@
+From 0a9ec38c47c1ca4528aa058e2b9ea61901a7e632 Mon Sep 17 00:00:00 2001
+From: Komal Bajaj <quic_kbajaj at quicinc.com>
+Date: Tue, 1 Aug 2023 12:10:25 +0530
+Subject: [PATCH] nvmem: sec-qfprom: Add Qualcomm secure QFPROM support
+
+For some of the Qualcomm SoC's, it is possible that
+some of the fuse regions or entire qfprom region is
+protected from non-secure access. In such situations,
+the OS will have to use secure calls to read the region.
+With that motivation, add secure qfprom driver.
+
+Signed-off-by: Komal Bajaj <quic_kbajaj at quicinc.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/Kconfig      | 13 ++++++
+ drivers/nvmem/Makefile     |  2 +
+ drivers/nvmem/sec-qfprom.c | 96 ++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 111 insertions(+)
+ create mode 100644 drivers/nvmem/sec-qfprom.c
+
+--- a/drivers/nvmem/Kconfig
++++ b/drivers/nvmem/Kconfig
+@@ -226,6 +226,19 @@ config NVMEM_QCOM_QFPROM
+ 	  This driver can also be built as a module. If so, the module
+ 	  will be called nvmem_qfprom.
+ 
++config NVMEM_QCOM_SEC_QFPROM
++        tristate "QCOM SECURE QFPROM Support"
++        depends on ARCH_QCOM || COMPILE_TEST
++        depends on HAS_IOMEM
++        depends on OF
++        select QCOM_SCM
++        help
++          Say y here to enable secure QFPROM support. The secure QFPROM provides access
++          functions for QFPROM data to rest of the drivers via nvmem interface.
++
++          This driver can also be built as a module. If so, the module will be called
++          nvmem_sec_qfprom.
++
+ config NVMEM_RAVE_SP_EEPROM
+ 	tristate "Rave SP EEPROM Support"
+ 	depends on RAVE_SP_CORE
+--- a/drivers/nvmem/Makefile
++++ b/drivers/nvmem/Makefile
+@@ -46,6 +46,8 @@ obj-$(CONFIG_NVMEM_NINTENDO_OTP)	+= nvme
+ nvmem-nintendo-otp-y			:= nintendo-otp.o
+ obj-$(CONFIG_NVMEM_QCOM_QFPROM)		+= nvmem_qfprom.o
+ nvmem_qfprom-y				:= qfprom.o
++obj-$(CONFIG_NVMEM_QCOM_SEC_QFPROM)	+= nvmem_sec_qfprom.o
++nvmem_sec_qfprom-y			:= sec-qfprom.o
+ obj-$(CONFIG_NVMEM_RAVE_SP_EEPROM)	+= nvmem-rave-sp-eeprom.o
+ nvmem-rave-sp-eeprom-y			:= rave-sp-eeprom.o
+ obj-$(CONFIG_NVMEM_RMEM) 		+= nvmem-rmem.o
+--- /dev/null
++++ b/drivers/nvmem/sec-qfprom.c
+@@ -0,0 +1,96 @@
++// SPDX-License-Identifier: GPL-2.0-only
++/*
++ * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
++ */
++
++#include <linux/firmware/qcom/qcom_scm.h>
++#include <linux/mod_devicetable.h>
++#include <linux/nvmem-provider.h>
++#include <linux/platform_device.h>
++#include <linux/pm_runtime.h>
++
++/**
++ * struct sec_qfprom - structure holding secure qfprom attributes
++ *
++ * @base: starting physical address for secure qfprom corrected address space.
++ * @dev: qfprom device structure.
++ */
++struct sec_qfprom {
++	phys_addr_t base;
++	struct device *dev;
++};
++
++static int sec_qfprom_reg_read(void *context, unsigned int reg, void *_val, size_t bytes)
++{
++	struct sec_qfprom *priv = context;
++	unsigned int i;
++	u8 *val = _val;
++	u32 read_val;
++	u8 *tmp;
++
++	for (i = 0; i < bytes; i++, reg++) {
++		if (i == 0 || reg % 4 == 0) {
++			if (qcom_scm_io_readl(priv->base + (reg & ~3), &read_val)) {
++				dev_err(priv->dev, "Couldn't access fuse register\n");
++				return -EINVAL;
++			}
++			tmp = (u8 *)&read_val;
++		}
++
++		val[i] = tmp[reg & 3];
++	}
++
++	return 0;
++}
++
++static int sec_qfprom_probe(struct platform_device *pdev)
++{
++	struct nvmem_config econfig = {
++		.name = "sec-qfprom",
++		.stride = 1,
++		.word_size = 1,
++		.id = NVMEM_DEVID_AUTO,
++		.reg_read = sec_qfprom_reg_read,
++	};
++	struct device *dev = &pdev->dev;
++	struct nvmem_device *nvmem;
++	struct sec_qfprom *priv;
++	struct resource *res;
++
++	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
++	if (!priv)
++		return -ENOMEM;
++
++	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++	if (!res)
++		return -EINVAL;
++
++	priv->base = res->start;
++
++	econfig.size = resource_size(res);
++	econfig.dev = dev;
++	econfig.priv = priv;
++
++	priv->dev = dev;
++
++	nvmem = devm_nvmem_register(dev, &econfig);
++
++	return PTR_ERR_OR_ZERO(nvmem);
++}
++
++static const struct of_device_id sec_qfprom_of_match[] = {
++	{ .compatible = "qcom,sec-qfprom" },
++	{/* sentinel */},
++};
++MODULE_DEVICE_TABLE(of, sec_qfprom_of_match);
++
++static struct platform_driver qfprom_driver = {
++	.probe = sec_qfprom_probe,
++	.driver = {
++		.name = "qcom_sec_qfprom",
++		.of_match_table = sec_qfprom_of_match,
++	},
++};
++module_platform_driver(qfprom_driver);
++MODULE_DESCRIPTION("Qualcomm Secure QFPROM driver");
++MODULE_LICENSE("GPL");
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0013-nvmem-u-boot-env-Replace-zero-length-array-with-DECL.patch b/target/linux/generic/backport-6.1/814-v6.6-0013-nvmem-u-boot-env-Replace-zero-length-array-with-DECL.patch
new file mode 100644
index 0000000000..dab8ec2c24
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0013-nvmem-u-boot-env-Replace-zero-length-array-with-DECL.patch
@@ -0,0 +1,30 @@
+From c32f2186acc9abb4d766361255d7ddf07d15eeb2 Mon Sep 17 00:00:00 2001
+From: Atul Raut <rauji.raut at gmail.com>
+Date: Sun, 30 Jul 2023 15:39:15 -0700
+Subject: [PATCH] nvmem: u-boot-env:: Replace zero-length array with
+ DECLARE_FLEX_ARRAY() helper
+
+We are moving toward replacing zero-length arrays with C99 flexible-array
+members since they are deprecated. Therefore, the new DECLARE_FLEX_ARRAY()
+helper macro should be used to replace the zero-length array declaration.
+
+This fixes warnings such as:
+./drivers/nvmem/u-boot-env.c:50:9-13: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
+
+Signed-off-by: Atul Raut <rauji.raut at gmail.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/u-boot-env.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/nvmem/u-boot-env.c
++++ b/drivers/nvmem/u-boot-env.c
+@@ -47,7 +47,7 @@ struct u_boot_env_image_broadcom {
+ 	__le32 magic;
+ 	__le32 len;
+ 	__le32 crc32;
+-	uint8_t data[0];
++	DECLARE_FLEX_ARRAY(uint8_t, data);
+ } __packed;
+ 
+ static int u_boot_env_read(void *context, unsigned int offset, void *val,
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0014-nvmem-core-Create-all-cells-before-adding-the-nvmem-.patch b/target/linux/generic/backport-6.1/814-v6.6-0014-nvmem-core-Create-all-cells-before-adding-the-nvmem-.patch
new file mode 100644
index 0000000000..f9532f39c3
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0014-nvmem-core-Create-all-cells-before-adding-the-nvmem-.patch
@@ -0,0 +1,40 @@
+From 104af6a5b199eb4dc7970d1304aef38ac5a6ed54 Mon Sep 17 00:00:00 2001
+From: Miquel Raynal <miquel.raynal at bootlin.com>
+Date: Tue, 8 Aug 2023 08:29:26 +0200
+Subject: [PATCH] nvmem: core: Create all cells before adding the nvmem device
+
+Let's pack all the cells creation in one place, so they are all created
+before we add the nvmem device.
+
+Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
+Reviewed-by: Michael Walle <michael at walle.cc>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/core.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+--- a/drivers/nvmem/core.c
++++ b/drivers/nvmem/core.c
+@@ -998,17 +998,17 @@ struct nvmem_device *nvmem_register(cons
+ 	if (rval)
+ 		goto err_remove_cells;
+ 
+-	dev_dbg(&nvmem->dev, "Registering nvmem device %s\n", config->name);
+-
+-	rval = device_add(&nvmem->dev);
++	rval = nvmem_add_cells_from_fixed_layout(nvmem);
+ 	if (rval)
+ 		goto err_remove_cells;
+ 
+-	rval = nvmem_add_cells_from_fixed_layout(nvmem);
++	rval = nvmem_add_cells_from_layout(nvmem);
+ 	if (rval)
+ 		goto err_remove_cells;
+ 
+-	rval = nvmem_add_cells_from_layout(nvmem);
++	dev_dbg(&nvmem->dev, "Registering nvmem device %s\n", config->name);
++
++	rval = device_add(&nvmem->dev);
+ 	if (rval)
+ 		goto err_remove_cells;
+ 
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0015-nvmem-core-Return-NULL-when-no-nvmem-layout-is-found.patch b/target/linux/generic/backport-6.1/814-v6.6-0015-nvmem-core-Return-NULL-when-no-nvmem-layout-is-found.patch
new file mode 100644
index 0000000000..8f64d0c28b
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0015-nvmem-core-Return-NULL-when-no-nvmem-layout-is-found.patch
@@ -0,0 +1,35 @@
+From 6c7f48ea2e663b679aa8e60d8d8e1e6306a644f9 Mon Sep 17 00:00:00 2001
+From: Miquel Raynal <miquel.raynal at bootlin.com>
+Date: Tue, 8 Aug 2023 08:29:27 +0200
+Subject: [PATCH] nvmem: core: Return NULL when no nvmem layout is found
+
+Currently, of_nvmem_layout_get_container() returns NULL on error, or an
+error pointer if either CONFIG_NVMEM or CONFIG_OF is turned off. We
+should likely avoid this kind of mix for two reasons: to clarify the
+intend and anyway fix the !CONFIG_OF which will likely always if we use
+this helper somewhere else. Let's just return NULL when no layout is
+found, we don't need an error value here.
+
+Link: https://staticthinking.wordpress.com/2022/08/01/mixing-error-pointers-and-null/
+Fixes: 266570f496b9 ("nvmem: core: introduce NVMEM layouts")
+Reported-by: kernel test robot <lkp at intel.com>
+Reported-by: Dan Carpenter <dan.carpenter at linaro.org>
+Closes: https://lore.kernel.org/r/202308030002.DnSFOrMB-lkp@intel.com/
+Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
+Reviewed-by: Michael Walle <michael at walle.cc>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ include/linux/nvmem-consumer.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/include/linux/nvmem-consumer.h
++++ b/include/linux/nvmem-consumer.h
+@@ -256,7 +256,7 @@ static inline struct nvmem_device *of_nv
+ static inline struct device_node *
+ of_nvmem_layout_get_container(struct nvmem_device *nvmem)
+ {
+-	return ERR_PTR(-EOPNOTSUPP);
++	return NULL;
+ }
+ #endif /* CONFIG_NVMEM && CONFIG_OF */
+ 
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0016-nvmem-core-Do-not-open-code-existing-functions.patch b/target/linux/generic/backport-6.1/814-v6.6-0016-nvmem-core-Do-not-open-code-existing-functions.patch
new file mode 100644
index 0000000000..28d8bba194
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0016-nvmem-core-Do-not-open-code-existing-functions.patch
@@ -0,0 +1,29 @@
+From b8257f61b4ddac6d7d0e19a5a4e8b07afb3b4ed3 Mon Sep 17 00:00:00 2001
+From: Miquel Raynal <miquel.raynal at bootlin.com>
+Date: Tue, 8 Aug 2023 08:29:28 +0200
+Subject: [PATCH] nvmem: core: Do not open-code existing functions
+
+Use of_nvmem_layout_get_container() instead of hardcoding it.
+
+Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
+Reviewed-by: Michael Walle <michael at walle.cc>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/core.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/nvmem/core.c
++++ b/drivers/nvmem/core.c
+@@ -786,10 +786,10 @@ EXPORT_SYMBOL_GPL(nvmem_layout_unregiste
+ 
+ static struct nvmem_layout *nvmem_layout_get(struct nvmem_device *nvmem)
+ {
+-	struct device_node *layout_np, *np = nvmem->dev.of_node;
++	struct device_node *layout_np;
+ 	struct nvmem_layout *l, *layout = ERR_PTR(-EPROBE_DEFER);
+ 
+-	layout_np = of_get_child_by_name(np, "nvmem-layout");
++	layout_np = of_nvmem_layout_get_container(nvmem);
+ 	if (!layout_np)
+ 		return NULL;
+ 
diff --git a/target/linux/generic/backport-6.1/814-v6.6-0017-nvmem-core-Notify-when-a-new-layout-is-registered.patch b/target/linux/generic/backport-6.1/814-v6.6-0017-nvmem-core-Notify-when-a-new-layout-is-registered.patch
new file mode 100644
index 0000000000..b62a0e18da
--- /dev/null
+++ b/target/linux/generic/backport-6.1/814-v6.6-0017-nvmem-core-Notify-when-a-new-layout-is-registered.patch
@@ -0,0 +1,44 @@
+From 0991afbe4b1805e7f0113ef10d7c5f0698a739e4 Mon Sep 17 00:00:00 2001
+From: Miquel Raynal <miquel.raynal at bootlin.com>
+Date: Tue, 8 Aug 2023 08:29:29 +0200
+Subject: [PATCH] nvmem: core: Notify when a new layout is registered
+
+Tell listeners a new layout was introduced and is now available.
+
+Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
+---
+ drivers/nvmem/core.c           | 4 ++++
+ include/linux/nvmem-consumer.h | 2 ++
+ 2 files changed, 6 insertions(+)
+
+--- a/drivers/nvmem/core.c
++++ b/drivers/nvmem/core.c
+@@ -772,12 +772,16 @@ int __nvmem_layout_register(struct nvmem
+ 	list_add(&layout->node, &nvmem_layouts);
+ 	spin_unlock(&nvmem_layout_lock);
+ 
++	blocking_notifier_call_chain(&nvmem_notifier, NVMEM_LAYOUT_ADD, layout);
++
+ 	return 0;
+ }
+ EXPORT_SYMBOL_GPL(__nvmem_layout_register);
+ 
+ void nvmem_layout_unregister(struct nvmem_layout *layout)
+ {
++	blocking_notifier_call_chain(&nvmem_notifier, NVMEM_LAYOUT_REMOVE, layout);
++
+ 	spin_lock(&nvmem_layout_lock);
+ 	list_del(&layout->node);
+ 	spin_unlock(&nvmem_layout_lock);
+--- a/include/linux/nvmem-consumer.h
++++ b/include/linux/nvmem-consumer.h
+@@ -43,6 +43,8 @@ enum {
+ 	NVMEM_REMOVE,
+ 	NVMEM_CELL_ADD,
+ 	NVMEM_CELL_REMOVE,
++	NVMEM_LAYOUT_ADD,
++	NVMEM_LAYOUT_REMOVE,
+ };
+ 
+ #if IS_ENABLED(CONFIG_NVMEM)
diff --git a/target/linux/generic/pending-5.15/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch b/target/linux/generic/pending-5.15/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch
index f77756b9cf..f403bbec9b 100644
--- a/target/linux/generic/pending-5.15/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch
+++ b/target/linux/generic/pending-5.15/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch
@@ -18,7 +18,7 @@ Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
 
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -794,6 +794,19 @@ static struct nvmem_layout *nvmem_layout
+@@ -798,6 +798,19 @@ static struct nvmem_layout *nvmem_layout
  		return NULL;
  
  	/*
diff --git a/target/linux/generic/pending-6.1/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch b/target/linux/generic/pending-6.1/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch
index f77756b9cf..f403bbec9b 100644
--- a/target/linux/generic/pending-6.1/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch
+++ b/target/linux/generic/pending-6.1/803-nvmem-core-fix-support-for-fixed-cells-NVMEM-layout.patch
@@ -18,7 +18,7 @@ Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
 
 --- a/drivers/nvmem/core.c
 +++ b/drivers/nvmem/core.c
-@@ -794,6 +794,19 @@ static struct nvmem_layout *nvmem_layout
+@@ -798,6 +798,19 @@ static struct nvmem_layout *nvmem_layout
  		return NULL;
  
  	/*
diff --git a/target/linux/ipq40xx/config-5.15 b/target/linux/ipq40xx/config-5.15
index 0acc013a81..f1fc501010 100644
--- a/target/linux/ipq40xx/config-5.15
+++ b/target/linux/ipq40xx/config-5.15
@@ -308,6 +308,7 @@ CONFIG_NO_HZ_IDLE=y
 CONFIG_NR_CPUS=4
 CONFIG_NVMEM=y
 CONFIG_NVMEM_QCOM_QFPROM=y
+# CONFIG_NVMEM_QCOM_SEC_QFPROM is not set
 # CONFIG_NVMEM_SPMI_SDAM is not set
 CONFIG_NVMEM_SYSFS=y
 CONFIG_OF=y
diff --git a/target/linux/ipq806x/config-6.1 b/target/linux/ipq806x/config-6.1
index b30a635396..4c9d09bc27 100644
--- a/target/linux/ipq806x/config-6.1
+++ b/target/linux/ipq806x/config-6.1
@@ -306,6 +306,7 @@ CONFIG_NO_HZ_IDLE=y
 CONFIG_NR_CPUS=2
 CONFIG_NVMEM=y
 CONFIG_NVMEM_QCOM_QFPROM=y
+# CONFIG_NVMEM_QCOM_SEC_QFPROM is not set
 # CONFIG_NVMEM_SPMI_SDAM is not set
 CONFIG_NVMEM_SYSFS=y
 CONFIG_OF=y
diff --git a/target/linux/mpc85xx/config-5.15 b/target/linux/mpc85xx/config-5.15
index 6f7db117d4..86b300ffc3 100644
--- a/target/linux/mpc85xx/config-5.15
+++ b/target/linux/mpc85xx/config-5.15
@@ -152,6 +152,7 @@ CONFIG_NLS=y
 CONFIG_NR_CPUS=1
 CONFIG_NR_IRQS=512
 CONFIG_NVMEM=y
+# CONFIG_NVMEM_QORIQ_EFUSE is not set
 CONFIG_OF=y
 CONFIG_OF_ADDRESS=y
 CONFIG_OF_DMA_DEFAULT_COHERENT=y
diff --git a/target/linux/qualcommax/config-6.1 b/target/linux/qualcommax/config-6.1
index 6d5157afeb..8bac3fa187 100644
--- a/target/linux/qualcommax/config-6.1
+++ b/target/linux/qualcommax/config-6.1
@@ -278,6 +278,7 @@ CONFIG_NR_CPUS=4
 CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y
 CONFIG_NVMEM=y
 CONFIG_NVMEM_QCOM_QFPROM=y
+# CONFIG_NVMEM_QCOM_SEC_QFPROM is not set
 # CONFIG_NVMEM_SPMI_SDAM is not set
 CONFIG_NVMEM_SYSFS=y
 CONFIG_NVMEM_U_BOOT_ENV=y




More information about the lede-commits mailing list