===================================================================
@@ -98,7 +98,4 @@ extern int nvram_write_os_partition(stru
unsigned int err_type,
unsigned int error_log_cnt);
-/* Determine NVRAM size */
-extern ssize_t nvram_get_size(void);
-
#endif /* _ASM_POWERPC_NVRAM_H */
===================================================================
@@ -186,13 +186,12 @@ void nvram_write_byte(unsigned char val,
}
EXPORT_SYMBOL(nvram_write_byte);
-ssize_t nvram_get_size(void)
+static ssize_t ppc_nvram_get_size(void)
{
if (ppc_md.nvram_size)
return ppc_md.nvram_size();
- return -1;
+ return -ENODEV;
}
-EXPORT_SYMBOL(nvram_get_size);
void nvram_sync(void)
{
@@ -201,6 +200,11 @@ void nvram_sync(void)
}
EXPORT_SYMBOL(nvram_sync);
+const struct nvram_ops arch_nvram_ops = {
+ .get_size = ppc_nvram_get_size,
+};
+EXPORT_SYMBOL(arch_nvram_ops);
+
#endif /* CONFIG_NVRAM */
int __init ppc_init(void)
===================================================================
@@ -27,8 +27,6 @@
#include <asm/machdep.h>
#endif
-#define NVRAM_SIZE 8192
-
static DEFINE_MUTEX(nvram_mutex);
static ssize_t nvram_len;
@@ -149,20 +147,22 @@ static struct miscdevice nvram_dev = {
int __init nvram_init(void)
{
- int ret = 0;
+ int ret;
- printk(KERN_INFO "Generic non-volatile memory driver v%s\n",
- NVRAM_VERSION);
- ret = misc_register(&nvram_dev);
- if (ret != 0)
- goto out;
+ if (arch_nvram_ops.get_size == NULL)
+ return -ENODEV;
- nvram_len = nvram_get_size();
+ nvram_len = arch_nvram_ops.get_size();
if (nvram_len < 0)
- nvram_len = NVRAM_SIZE;
+ return nvram_len;
-out:
- return ret;
+ ret = misc_register(&nvram_dev);
+ if (ret)
+ return ret;
+
+ pr_info("Generic non-volatile memory driver v%s\n", NVRAM_VERSION);
+
+ return 0;
}
void __exit nvram_cleanup(void)
Implement arch_nvram_ops for PPC32 and make use of it in the generic_nvram misc device module so that the nvram_* function exports can be removed. Signed-off-by: Finn Thain <fthain@telegraphics.com.au> --- arch/powerpc/include/asm/nvram.h | 3 --- arch/powerpc/kernel/setup_32.c | 10 +++++++--- drivers/char/generic_nvram.c | 24 ++++++++++++------------ 3 files changed, 19 insertions(+), 18 deletions(-)