sh: make pmb iomapping configurable.
authorPaul Mundt <lethal@linux-sh.org>
Tue, 2 Mar 2010 07:49:50 +0000 (16:49 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Tue, 2 Mar 2010 07:49:50 +0000 (16:49 +0900)
This plugs in an early_param for permitting transparent PMB-backed
ioremapping to be enabled/disabled. For the time being, we use a
default-disabled policy.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/mm/pmb.c

index 9a516b8..9429355 100644 (file)
@@ -68,6 +68,8 @@ static DEFINE_RWLOCK(pmb_rwlock);
 static struct pmb_entry pmb_entry_list[NR_PMB_ENTRIES];
 static DECLARE_BITMAP(pmb_map, NR_PMB_ENTRIES);
 
+static unsigned int pmb_iomapping_enabled;
+
 static __always_inline unsigned long mk_pmb_entry(unsigned int entry)
 {
        return (entry & PMB_E_MASK) << PMB_E_SHIFT;
@@ -284,6 +286,9 @@ void __iomem *pmb_remap_caller(phys_addr_t phys, unsigned long size,
        unsigned long aligned;
        struct vm_struct *area;
 
+       if (!pmb_iomapping_enabled)
+               return NULL;
+
        /*
         * Small mappings need to go through the TLB.
         */
@@ -684,6 +689,18 @@ static void __init pmb_resize(void)
 }
 #endif
 
+static int __init early_pmb(char *p)
+{
+       if (!p)
+               return 0;
+
+       if (strstr(p, "iomap"))
+               pmb_iomapping_enabled = 1;
+
+       return 0;
+}
+early_param("pmb", early_pmb);
+
 void __init pmb_init(void)
 {
        /* Synchronize software state */