bcm53xx: add testing support for kernel 5.10
[openwrt/staging/ldir.git] / target / linux / bcm53xx / patches-5.10 / 800-0001-firmware-bcm47xx_nvram-support-init-from-IO-memory.patch
1 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
2 Date: Thu, 11 Mar 2021 08:24:44 +0100
3 Subject: [PATCH] firmware: bcm47xx_nvram: support init from IO memory
4 MIME-Version: 1.0
5 Content-Type: text/plain; charset=UTF-8
6 Content-Transfer-Encoding: 8bit
7
8 Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
9 ---
10 drivers/firmware/broadcom/bcm47xx_nvram.c | 17 +++++++++++++++++
11 include/linux/bcm47xx_nvram.h | 6 ++++++
12 2 files changed, 23 insertions(+)
13
14 --- a/drivers/firmware/broadcom/bcm47xx_nvram.c
15 +++ b/drivers/firmware/broadcom/bcm47xx_nvram.c
16 @@ -110,6 +110,23 @@ found:
17 return 0;
18 }
19
20 +int bcm47xx_nvram_init_from_iomem(void __iomem *nvram_start, size_t res_size)
21 +{
22 + if (nvram_len) {
23 + pr_warn("nvram already initialized\n");
24 + return -EEXIST;
25 + }
26 +
27 + if (!bcm47xx_nvram_is_valid(nvram_start)) {
28 + pr_err("No valid NVRAM found\n");
29 + return -ENOENT;
30 + }
31 +
32 + bcm47xx_nvram_copy(nvram_start, res_size);
33 +
34 + return 0;
35 +}
36 +
37 /*
38 * On bcm47xx we need access to the NVRAM very early, so we can't use mtd
39 * subsystem to access flash. We can't even use platform device / driver to
40 --- a/include/linux/bcm47xx_nvram.h
41 +++ b/include/linux/bcm47xx_nvram.h
42 @@ -11,6 +11,7 @@
43 #include <linux/vmalloc.h>
44
45 #ifdef CONFIG_BCM47XX_NVRAM
46 +int bcm47xx_nvram_init_from_iomem(void __iomem *nvram_start, size_t res_size);
47 int bcm47xx_nvram_init_from_mem(u32 base, u32 lim);
48 int bcm47xx_nvram_getenv(const char *name, char *val, size_t val_len);
49 int bcm47xx_nvram_gpio_pin(const char *name);
50 @@ -20,6 +21,11 @@ static inline void bcm47xx_nvram_release
51 vfree(nvram);
52 };
53 #else
54 +static inline int bcm47xx_nvram_init_from_iomem(void __iomem *nvram_start,
55 + size_t res_size)
56 +{
57 + return -ENOTSUPP;
58 +}
59 static inline int bcm47xx_nvram_init_from_mem(u32 base, u32 lim)
60 {
61 return -ENOTSUPP;