mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 23:12:32 +00:00
62 lines
1.8 KiB
Diff
62 lines
1.8 KiB
Diff
|
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||
|
Date: Thu, 11 Mar 2021 08:24:44 +0100
|
||
|
Subject: [PATCH] firmware: bcm47xx_nvram: support init from IO memory
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||
|
---
|
||
|
drivers/firmware/broadcom/bcm47xx_nvram.c | 17 +++++++++++++++++
|
||
|
include/linux/bcm47xx_nvram.h | 6 ++++++
|
||
|
2 files changed, 23 insertions(+)
|
||
|
|
||
|
--- a/drivers/firmware/broadcom/bcm47xx_nvram.c
|
||
|
+++ b/drivers/firmware/broadcom/bcm47xx_nvram.c
|
||
|
@@ -110,6 +110,23 @@ found:
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
+int bcm47xx_nvram_init_from_iomem(void __iomem *nvram_start, size_t res_size)
|
||
|
+{
|
||
|
+ if (nvram_len) {
|
||
|
+ pr_warn("nvram already initialized\n");
|
||
|
+ return -EEXIST;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (!bcm47xx_nvram_is_valid(nvram_start)) {
|
||
|
+ pr_err("No valid NVRAM found\n");
|
||
|
+ return -ENOENT;
|
||
|
+ }
|
||
|
+
|
||
|
+ bcm47xx_nvram_copy(nvram_start, res_size);
|
||
|
+
|
||
|
+ return 0;
|
||
|
+}
|
||
|
+
|
||
|
/*
|
||
|
* On bcm47xx we need access to the NVRAM very early, so we can't use mtd
|
||
|
* subsystem to access flash. We can't even use platform device / driver to
|
||
|
--- a/include/linux/bcm47xx_nvram.h
|
||
|
+++ b/include/linux/bcm47xx_nvram.h
|
||
|
@@ -11,6 +11,7 @@
|
||
|
#include <linux/vmalloc.h>
|
||
|
|
||
|
#ifdef CONFIG_BCM47XX_NVRAM
|
||
|
+int bcm47xx_nvram_init_from_iomem(void __iomem *nvram_start, size_t res_size);
|
||
|
int bcm47xx_nvram_init_from_mem(u32 base, u32 lim);
|
||
|
int bcm47xx_nvram_getenv(const char *name, char *val, size_t val_len);
|
||
|
int bcm47xx_nvram_gpio_pin(const char *name);
|
||
|
@@ -20,6 +21,11 @@ static inline void bcm47xx_nvram_release
|
||
|
vfree(nvram);
|
||
|
};
|
||
|
#else
|
||
|
+static inline int bcm47xx_nvram_init_from_iomem(void __iomem *nvram_start,
|
||
|
+ size_t res_size)
|
||
|
+{
|
||
|
+ return -ENOTSUPP;
|
||
|
+}
|
||
|
static inline int bcm47xx_nvram_init_from_mem(u32 base, u32 lim)
|
||
|
{
|
||
|
return -ENOTSUPP;
|