[PATCH] powerpc: move mmio_nvram.c over to arch/powerpc
authorArnd Bergmann <arndb@de.ibm.com>
Tue, 1 Nov 2005 01:08:40 +0000 (20:08 -0500)
committerPaul Mackerras <paulus@samba.org>
Tue, 1 Nov 2005 10:03:04 +0000 (21:03 +1100)
The nvram code formally known as bpa_nvram.c is rather
generic really, so it is quite likely to be useful to
future boards not based on cell.

This patch puts it into arch/powerpc/sysdev.

Signed-off-by: Arnd Bergmann <arndb@de.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/Kconfig
arch/powerpc/sysdev/Makefile
arch/powerpc/sysdev/mmio_nvram.c [new file with mode: 0644]
arch/ppc64/kernel/Makefile
arch/ppc64/kernel/bpa_nvram.c [deleted file]

index aa13a9d95ea2774123cc89e31d32df902a58840b..1c44a1dac4213fc1ad677feab1420cc59fc99367 100644 (file)
@@ -325,6 +325,7 @@ config PPC_CELL
        depends on PPC_MULTIPLATFORM && PPC64
        select PPC_RTAS
        select RTAS_FW
+       select MMIO_NVRAM
 
 config PPC_OF
        bool
@@ -360,6 +361,10 @@ config RTAS_FW
        depends on PPC_RTAS
        default n
 
+config MMIO_NVRAM
+       bool
+       default n
+
 config MPIC_BROKEN_U3
        bool
        depends on PPC_MAPLE
index 8acd21dee05dbc26d552d9b4c3022b0bc511a9d2..6b7efcfc352a2ed266ee08f8da00ad90f58041a5 100644 (file)
@@ -5,3 +5,4 @@ obj-$(CONFIG_PPC_MPC106)        += grackle.o
 obj-$(CONFIG_BOOKE)            += dcr.o
 obj-$(CONFIG_40x)              += dcr.o
 obj-$(CONFIG_U3_DART)          += u3_iommu.o
+obj-$(CONFIG_MMIO_NVRAM)       += mmio_nvram.o
diff --git a/arch/powerpc/sysdev/mmio_nvram.c b/arch/powerpc/sysdev/mmio_nvram.c
new file mode 100644 (file)
index 0000000..74e0d31
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * memory mapped NVRAM
+ *
+ * (C) Copyright IBM Corp. 2005
+ *
+ * Authors : Utz Bacher <utz.bacher@de.ibm.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <linux/fs.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/spinlock.h>
+#include <linux/types.h>
+
+#include <asm/machdep.h>
+#include <asm/nvram.h>
+#include <asm/prom.h>
+
+static void __iomem *mmio_nvram_start;
+static long mmio_nvram_len;
+static spinlock_t mmio_nvram_lock = SPIN_LOCK_UNLOCKED;
+
+static ssize_t mmio_nvram_read(char *buf, size_t count, loff_t *index)
+{
+       unsigned long flags;
+
+       if (*index >= mmio_nvram_len)
+               return 0;
+       if (*index + count > mmio_nvram_len)
+               count = mmio_nvram_len - *index;
+
+       spin_lock_irqsave(&mmio_nvram_lock, flags);
+
+       memcpy_fromio(buf, mmio_nvram_start + *index, count);
+
+       spin_unlock_irqrestore(&mmio_nvram_lock, flags);
+       
+       *index += count;
+       return count;
+}
+
+static ssize_t mmio_nvram_write(char *buf, size_t count, loff_t *index)
+{
+       unsigned long flags;
+
+       if (*index >= mmio_nvram_len)
+               return 0;
+       if (*index + count > mmio_nvram_len)
+               count = mmio_nvram_len - *index;
+
+       spin_lock_irqsave(&mmio_nvram_lock, flags);
+
+       memcpy_toio(mmio_nvram_start + *index, buf, count);
+
+       spin_unlock_irqrestore(&mmio_nvram_lock, flags);
+       
+       *index += count;
+       return count;
+}
+
+static ssize_t mmio_nvram_get_size(void)
+{
+       return mmio_nvram_len;
+}
+
+int __init mmio_nvram_init(void)
+{
+       struct device_node *nvram_node;
+       unsigned long *buffer;
+       int proplen;
+       unsigned long nvram_addr;
+       int ret;
+
+       ret = -ENODEV;
+       nvram_node = of_find_node_by_type(NULL, "nvram");
+       if (!nvram_node)
+               goto out;
+
+       ret = -EIO;
+       buffer = (unsigned long *)get_property(nvram_node, "reg", &proplen);
+       if (proplen != 2*sizeof(unsigned long))
+               goto out;
+
+       ret = -ENODEV;
+       nvram_addr = buffer[0];
+       mmio_nvram_len = buffer[1];
+       if ( (!mmio_nvram_len) || (!nvram_addr) )
+               goto out;
+
+       mmio_nvram_start = ioremap(nvram_addr, mmio_nvram_len);
+       if (!mmio_nvram_start)
+               goto out;
+
+       printk(KERN_INFO "mmio NVRAM, %luk mapped to %p\n",
+              mmio_nvram_len >> 10, mmio_nvram_start);
+
+       ppc_md.nvram_read       = mmio_nvram_read;
+       ppc_md.nvram_write      = mmio_nvram_write;
+       ppc_md.nvram_size       = mmio_nvram_get_size;
+
+out:
+       of_node_put(nvram_node);
+       return ret;
+}
index a01a9de9eb564cbdc7af2bc5cfc0a6e24fcefeab..afd445114446684299175015a8cee9b34d3b9172 100644 (file)
@@ -31,7 +31,7 @@ endif
 
 obj-$(CONFIG_PPC_PSERIES) += rtasd.o udbg_16550.o
 
-obj-$(CONFIG_PPC_CELL) += bpa_setup.o bpa_iommu.o bpa_nvram.o \
+obj-$(CONFIG_PPC_CELL) += bpa_setup.o bpa_iommu.o \
                         bpa_iic.o spider-pic.o
 
 obj-$(CONFIG_KEXEC)            += machine_kexec.o
diff --git a/arch/ppc64/kernel/bpa_nvram.c b/arch/ppc64/kernel/bpa_nvram.c
deleted file mode 100644 (file)
index 74e0d31..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * memory mapped NVRAM
- *
- * (C) Copyright IBM Corp. 2005
- *
- * Authors : Utz Bacher <utz.bacher@de.ibm.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <linux/fs.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/spinlock.h>
-#include <linux/types.h>
-
-#include <asm/machdep.h>
-#include <asm/nvram.h>
-#include <asm/prom.h>
-
-static void __iomem *mmio_nvram_start;
-static long mmio_nvram_len;
-static spinlock_t mmio_nvram_lock = SPIN_LOCK_UNLOCKED;
-
-static ssize_t mmio_nvram_read(char *buf, size_t count, loff_t *index)
-{
-       unsigned long flags;
-
-       if (*index >= mmio_nvram_len)
-               return 0;
-       if (*index + count > mmio_nvram_len)
-               count = mmio_nvram_len - *index;
-
-       spin_lock_irqsave(&mmio_nvram_lock, flags);
-
-       memcpy_fromio(buf, mmio_nvram_start + *index, count);
-
-       spin_unlock_irqrestore(&mmio_nvram_lock, flags);
-       
-       *index += count;
-       return count;
-}
-
-static ssize_t mmio_nvram_write(char *buf, size_t count, loff_t *index)
-{
-       unsigned long flags;
-
-       if (*index >= mmio_nvram_len)
-               return 0;
-       if (*index + count > mmio_nvram_len)
-               count = mmio_nvram_len - *index;
-
-       spin_lock_irqsave(&mmio_nvram_lock, flags);
-
-       memcpy_toio(mmio_nvram_start + *index, buf, count);
-
-       spin_unlock_irqrestore(&mmio_nvram_lock, flags);
-       
-       *index += count;
-       return count;
-}
-
-static ssize_t mmio_nvram_get_size(void)
-{
-       return mmio_nvram_len;
-}
-
-int __init mmio_nvram_init(void)
-{
-       struct device_node *nvram_node;
-       unsigned long *buffer;
-       int proplen;
-       unsigned long nvram_addr;
-       int ret;
-
-       ret = -ENODEV;
-       nvram_node = of_find_node_by_type(NULL, "nvram");
-       if (!nvram_node)
-               goto out;
-
-       ret = -EIO;
-       buffer = (unsigned long *)get_property(nvram_node, "reg", &proplen);
-       if (proplen != 2*sizeof(unsigned long))
-               goto out;
-
-       ret = -ENODEV;
-       nvram_addr = buffer[0];
-       mmio_nvram_len = buffer[1];
-       if ( (!mmio_nvram_len) || (!nvram_addr) )
-               goto out;
-
-       mmio_nvram_start = ioremap(nvram_addr, mmio_nvram_len);
-       if (!mmio_nvram_start)
-               goto out;
-
-       printk(KERN_INFO "mmio NVRAM, %luk mapped to %p\n",
-              mmio_nvram_len >> 10, mmio_nvram_start);
-
-       ppc_md.nvram_read       = mmio_nvram_read;
-       ppc_md.nvram_write      = mmio_nvram_write;
-       ppc_md.nvram_size       = mmio_nvram_get_size;
-
-out:
-       of_node_put(nvram_node);
-       return ret;
-}