powerpc: Define missing ppc_md.nvram_size for CHRP and PowerMac
authorFinn Thain <fthain@telegraphics.com.au>
Tue, 15 Jan 2019 04:18:56 +0000 (15:18 +1100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Jan 2019 09:21:45 +0000 (10:21 +0100)
Add the nvram_size() function to those PowerPC platforms that don't already
have one: CHRP and PowerMac. This means that the ppc_md.nvram_size()
function can be called by nvram_get_size().

Since we are addressing CHRP inconsistencies here, rename chrp_nvram_read
and chrp_nvram_write, which break the naming convention used across
powerpc platforms for NVRAM accessor functions.

Tested-by: Stan Johnson <userm57@yahoo.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/powerpc/platforms/chrp/nvram.c
arch/powerpc/platforms/powermac/nvram.c

index 791b86398e1d708ff9c0b3d4a5b6601c59d65dee..37ac20ccbb1956d05e19f152063dee9b75f0042c 100644 (file)
@@ -24,7 +24,7 @@ static unsigned int nvram_size;
 static unsigned char nvram_buf[4];
 static DEFINE_SPINLOCK(nvram_lock);
 
-static unsigned char chrp_nvram_read(int addr)
+static unsigned char chrp_nvram_read_val(int addr)
 {
        unsigned int done;
        unsigned long flags;
@@ -46,7 +46,7 @@ static unsigned char chrp_nvram_read(int addr)
        return ret;
 }
 
-static void chrp_nvram_write(int addr, unsigned char val)
+static void chrp_nvram_write_val(int addr, unsigned char val)
 {
        unsigned int done;
        unsigned long flags;
@@ -64,6 +64,11 @@ static void chrp_nvram_write(int addr, unsigned char val)
        spin_unlock_irqrestore(&nvram_lock, flags);
 }
 
+static ssize_t chrp_nvram_size(void)
+{
+       return nvram_size;
+}
+
 void __init chrp_nvram_init(void)
 {
        struct device_node *nvram;
@@ -85,8 +90,9 @@ void __init chrp_nvram_init(void)
        printk(KERN_INFO "CHRP nvram contains %u bytes\n", nvram_size);
        of_node_put(nvram);
 
-       ppc_md.nvram_read_val = chrp_nvram_read;
-       ppc_md.nvram_write_val = chrp_nvram_write;
+       ppc_md.nvram_read_val  = chrp_nvram_read_val;
+       ppc_md.nvram_write_val = chrp_nvram_write_val;
+       ppc_md.nvram_size      = chrp_nvram_size;
 
        return;
 }
index ae54d7fe68f3628da3a7eaec671c23ae25d208f0..9360cdc408c18078b1cab9c512964fbd5e748fc8 100644 (file)
@@ -147,6 +147,11 @@ static ssize_t core99_nvram_size(void)
 static volatile unsigned char __iomem *nvram_addr;
 static int nvram_mult;
 
+static ssize_t ppc32_nvram_size(void)
+{
+       return NVRAM_SIZE;
+}
+
 static unsigned char direct_nvram_read_byte(int addr)
 {
        return in_8(&nvram_data[(addr & (NVRAM_SIZE - 1)) * nvram_mult]);
@@ -590,21 +595,25 @@ int __init pmac_nvram_init(void)
                nvram_mult = 1;
                ppc_md.nvram_read_val   = direct_nvram_read_byte;
                ppc_md.nvram_write_val  = direct_nvram_write_byte;
+               ppc_md.nvram_size       = ppc32_nvram_size;
        } else if (nvram_naddrs == 1) {
                nvram_data = ioremap(r1.start, s1);
                nvram_mult = (s1 + NVRAM_SIZE - 1) / NVRAM_SIZE;
                ppc_md.nvram_read_val   = direct_nvram_read_byte;
                ppc_md.nvram_write_val  = direct_nvram_write_byte;
+               ppc_md.nvram_size       = ppc32_nvram_size;
        } else if (nvram_naddrs == 2) {
                nvram_addr = ioremap(r1.start, s1);
                nvram_data = ioremap(r2.start, s2);
                ppc_md.nvram_read_val   = indirect_nvram_read_byte;
                ppc_md.nvram_write_val  = indirect_nvram_write_byte;
+               ppc_md.nvram_size       = ppc32_nvram_size;
        } else if (nvram_naddrs == 0 && sys_ctrler == SYS_CTRLER_PMU) {
 #ifdef CONFIG_ADB_PMU
                nvram_naddrs = -1;
                ppc_md.nvram_read_val   = pmu_nvram_read_byte;
                ppc_md.nvram_write_val  = pmu_nvram_write_byte;
+               ppc_md.nvram_size       = ppc32_nvram_size;
 #endif /* CONFIG_ADB_PMU */
        } else {
                printk(KERN_ERR "Incompatible type of NVRAM\n");