[Blackfin] arch: add support for BF523/BF524/BF526
authorMike Frysinger <michael.frysinger@analog.com>
Mon, 24 Dec 2007 08:54:48 +0000 (16:54 +0800)
committerBryan Wu <bryan.wu@analog.com>
Mon, 24 Dec 2007 08:54:48 +0000 (16:54 +0800)
Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
arch/blackfin/Kconfig
arch/blackfin/Makefile
arch/blackfin/kernel/bfin_gpio.c

index e4ccdcdb46395a86e5c741a7c5bc786188b0c06f..a241a0a27de2de0477dfb6e60f0ed3318a2252ec 100644 (file)
@@ -85,11 +85,26 @@ config BF522
        help
          BF522 Processor Support.
 
+config BF523
+       bool "BF523"
+       help
+         BF523 Processor Support.
+
+config BF524
+       bool "BF524"
+       help
+         BF524 Processor Support.
+
 config BF525
        bool "BF525"
        help
          BF525 Processor Support.
 
+config BF526
+       bool "BF526"
+       help
+         BF526 Processor Support.
+
 config BF527
        bool "BF527"
        help
@@ -198,7 +213,7 @@ endchoice
 
 config BF52x
        bool
-       depends on (BF522 || BF525 || BF527)
+       depends on (BF522 || BF523 || BF524 || BF525 || BF526 || BF527)
        default y
 
 config BF53x
@@ -371,7 +386,10 @@ config SCLK_DIV
 config MAX_VCO_HZ
        int
        default 600000000 if BF522
+       default 400000000 if BF523
+       default 400000000 if BF524
        default 600000000 if BF525
+       default 400000000 if BF526
        default 600000000 if BF527
        default 400000000 if BF531
        default 400000000 if BF532
@@ -383,6 +401,8 @@ config MAX_VCO_HZ
        default 533333333 if BF539
        default 600000000 if BF542
        default 533333333 if BF544
+       default 600000000 if BF547
+       default 600000000 if BF548
        default 533333333 if BF549
        default 600000000 if BF561
 
@@ -897,8 +917,8 @@ config PM_WAKEUP_SIC_IWR
        depends on PM_WAKEUP_GPIO_BY_SIC_IWR
        default 0x80000000 if (BF537 || BF536 || BF534)
        default 0x100000 if (BF533 || BF532 || BF531)
-       default 0x800000 if (BF549 || BF548 || BF547 || BF542)
-       default 0x800000 if (BF527 || BF524 || BF522)
+       default 0x800000 if (BF54x)
+       default 0x800000 if (BF52x)
 
 config PM_WAKEUP_GPIO_NUMBER
        int "Wakeup GPIO number"
index c47e000f83240ac9c0c1dd085a816b363e861fcc..0c9680eac8ef4e6ece5ab29d371bd3301a0c8117 100644 (file)
@@ -21,7 +21,10 @@ KBUILD_DEFCONFIG := BF537-STAMP_defconfig
 
 # setup the machine name and the machine dependent settings
 machine-$(CONFIG_BF522) := bf527
+machine-$(CONFIG_BF523) := bf527
+machine-$(CONFIG_BF524) := bf527
 machine-$(CONFIG_BF525) := bf527
+machine-$(CONFIG_BF526) := bf527
 machine-$(CONFIG_BF527) := bf527
 machine-$(CONFIG_BF531) := bf533
 machine-$(CONFIG_BF532) := bf533
@@ -39,7 +42,10 @@ MACHINE := $(machine-y)
 export MACHINE
 
 cpu-$(CONFIG_BF522) := bf522
+cpu-$(CONFIG_BF523) := bf523
+cpu-$(CONFIG_BF524) := bf524
 cpu-$(CONFIG_BF525) := bf525
+cpu-$(CONFIG_BF526) := bf526
 cpu-$(CONFIG_BF527) := bf527
 cpu-$(CONFIG_BF531) := bf531
 cpu-$(CONFIG_BF532) := bf532
index ce85d4bf34cae428555d40771328b296d0f0376c..ea13d2a22d69dfb3b44d05cccbeca45318c8615d 100644 (file)
@@ -83,6 +83,7 @@
 #include <linux/delay.h>
 #include <linux/module.h>
 #include <linux/err.h>
+#include <linux/proc_fs.h>
 #include <asm/blackfin.h>
 #include <asm/gpio.h>
 #include <asm/portmux.h>
@@ -1194,3 +1195,36 @@ void bfin_gpio_reset_spi0_ssel1(void)
 }
 
 #endif /*BF548_FAMILY */
+
+#if defined(CONFIG_PROC_FS)
+static int gpio_proc_read(char *buf, char **start, off_t offset,
+                         int len, int *unused_i, void *unused_v)
+{
+       int c, outlen = 0;
+
+       for (c = 0; c < MAX_RESOURCES; c++) {
+               if (!check_gpio(c) && (reserved_gpio_map[gpio_bank(c)] & gpio_bit(c)))
+                       len = sprintf(buf, "GPIO_%d: %s \tGPIO %s\n", c,
+                                get_label(c), get_gpio_dir(c) ? "OUTPUT" : "INPUT");
+               else if (reserved_peri_map[gpio_bank(c)] & gpio_bit(c))
+                       len = sprintf(buf, "GPIO_%d: %s \tPeripheral\n", c, get_label(c));
+               else
+                       continue;
+               buf += len;
+               outlen += len;
+       }
+       return outlen;
+}
+
+static __init int gpio_register_proc(void)
+{
+       struct proc_dir_entry *proc_gpio;
+
+       proc_gpio = create_proc_entry("gpio", S_IRUGO, NULL);
+       if (proc_gpio)
+               proc_gpio->read_proc = gpio_proc_read;
+       return proc_gpio != NULL;
+}
+
+__initcall(gpio_register_proc);
+#endif