arm: tegra: fuse: replace globals with functions
[linux-3.10.git] / arch / arm / mach-shmobile / board-bonito.c
index c79baa9..70d992c 100644 (file)
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
+#include <linux/pinctrl/machine.h>
 #include <linux/platform_device.h>
 #include <linux/gpio.h>
+#include <linux/regulator/fixed.h>
+#include <linux/regulator/machine.h>
 #include <linux/smsc911x.h>
 #include <linux/videodev2.h>
 #include <mach/common.h>
@@ -35,6 +38,7 @@
 #include <asm/mach/time.h>
 #include <asm/hardware/cache-l2x0.h>
 #include <mach/r8a7740.h>
+#include <mach/irqs.h>
 #include <video/sh_mobile_lcdc.h>
 
 /*
  * S38.2 = OFF
  */
 
+/* Dummy supplies, where voltage doesn't matter */
+static struct regulator_consumer_supply dummy_supplies[] = {
+       REGULATOR_SUPPLY("vddvario", "smsc911x"),
+       REGULATOR_SUPPLY("vdd33a", "smsc911x"),
+};
+
 /*
  * FPGA
  */
 #define FPGA_ETH_IRQ           (FPGA_IRQ0 + 15)
 static u16 bonito_fpga_read(u32 offset)
 {
-       return __raw_readw(0xf0003000 + offset);
+       return __raw_readw(IOMEM(0xf0003000) + offset);
 }
 
 static void bonito_fpga_write(u32 offset, u16 val)
 {
-       __raw_writew(val, 0xf0003000 + offset);
+       __raw_writew(val, IOMEM(0xf0003000) + offset);
 }
 
 static void bonito_fpga_irq_disable(struct irq_data *data)
@@ -279,6 +289,16 @@ static struct platform_device lcdc0_device = {
        },
 };
 
+static const struct pinctrl_map lcdc0_pinctrl_map[] = {
+       /* LCD0 */
+       PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_lcdc_fb.0", "pfc-r8a7740",
+                                 "lcd0_data24_1", "lcd0"),
+       PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_lcdc_fb.0", "pfc-r8a7740",
+                                 "lcd0_lclk_1", "lcd0"),
+       PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_lcdc_fb.0", "pfc-r8a7740",
+                                 "lcd0_sync", "lcd0"),
+};
+
 /*
  * SMSC 9221
  */
@@ -328,28 +348,6 @@ static struct platform_device *bonito_base_devices[] __initdata = {
  * map I/O
  */
 static struct map_desc bonito_io_desc[] __initdata = {
-        /*
-         * for CPGA/INTC/PFC
-         * 0xe6000000-0xefffffff -> 0xe6000000-0xefffffff
-         */
-       {
-               .virtual        = 0xe6000000,
-               .pfn            = __phys_to_pfn(0xe6000000),
-               .length         = 160 << 20,
-               .type           = MT_DEVICE_NONSHARED
-       },
-#ifdef CONFIG_CACHE_L2X0
-       /*
-        * for l2x0_init()
-        * 0xf0100000-0xf0101000 -> 0xf0002000-0xf0003000
-        */
-       {
-               .virtual        = 0xf0002000,
-               .pfn            = __phys_to_pfn(0xf0100000),
-               .length         = PAGE_SIZE,
-               .type           = MT_DEVICE_NONSHARED
-       },
-#endif
        /*
         * for FPGA (0x1800000-0x19ffffff)
         * 0x18000000-0x18002000 -> 0xf0003000-0xf0005000
@@ -364,11 +362,8 @@ static struct map_desc bonito_io_desc[] __initdata = {
 
 static void __init bonito_map_io(void)
 {
+       r8a7740_map_io();
        iotable_init(bonito_io_desc, ARRAY_SIZE(bonito_io_desc));
-
-       /* setup early devices and console here as well */
-       r8a7740_add_early_devices();
-       shmobile_setup_console();
 }
 
 /*
@@ -377,13 +372,15 @@ static void __init bonito_map_io(void)
 #define BIT_ON(sw, bit)                (sw & (1 << bit))
 #define BIT_OFF(sw, bit)       (!(sw & (1 << bit)))
 
-#define VCCQ1CR                0xE6058140
-#define VCCQ1LCDCR     0xE6058186
+#define VCCQ1CR                IOMEM(0xE6058140)
+#define VCCQ1LCDCR     IOMEM(0xE6058186)
 
 static void __init bonito_init(void)
 {
        u16 val;
 
+       regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
+
        r8a7740_pinmux_init();
        bonito_fpga_init();
 
@@ -395,7 +392,7 @@ static void __init bonito_init(void)
 
 #ifdef CONFIG_CACHE_L2X0
        /* Early BRESP enable, Shared attribute override enable, 32K*8way */
-       l2x0_init(__io(0xf0002000), 0x40440000, 0x82000fff);
+       l2x0_init(IOMEM(0xf0002000), 0x40440000, 0x82000fff);
 #endif
 
        r8a7740_add_standard_devices();
@@ -406,9 +403,8 @@ static void __init bonito_init(void)
        /*
         * base board settings
         */
-       gpio_request(GPIO_PORT176, NULL);
-       gpio_direction_input(GPIO_PORT176);
-       if (!gpio_get_value(GPIO_PORT176)) {
+       gpio_request_one(176, GPIOF_IN, NULL);
+       if (!gpio_get_value(176)) {
                u16 bsw2;
                u16 bsw3;
                u16 bsw4;
@@ -445,39 +441,12 @@ static void __init bonito_init(void)
                 */
                if (BIT_ON(bsw2, 3) &&  /* S38.1 = OFF */
                    BIT_ON(bsw2, 2)) {  /* S38.2 = OFF */
-                       gpio_request(GPIO_FN_LCDC0_SELECT,      NULL);
-                       gpio_request(GPIO_FN_LCD0_D0,           NULL);
-                       gpio_request(GPIO_FN_LCD0_D1,           NULL);
-                       gpio_request(GPIO_FN_LCD0_D2,           NULL);
-                       gpio_request(GPIO_FN_LCD0_D3,           NULL);
-                       gpio_request(GPIO_FN_LCD0_D4,           NULL);
-                       gpio_request(GPIO_FN_LCD0_D5,           NULL);
-                       gpio_request(GPIO_FN_LCD0_D6,           NULL);
-                       gpio_request(GPIO_FN_LCD0_D7,           NULL);
-                       gpio_request(GPIO_FN_LCD0_D8,           NULL);
-                       gpio_request(GPIO_FN_LCD0_D9,           NULL);
-                       gpio_request(GPIO_FN_LCD0_D10,          NULL);
-                       gpio_request(GPIO_FN_LCD0_D11,          NULL);
-                       gpio_request(GPIO_FN_LCD0_D12,          NULL);
-                       gpio_request(GPIO_FN_LCD0_D13,          NULL);
-                       gpio_request(GPIO_FN_LCD0_D14,          NULL);
-                       gpio_request(GPIO_FN_LCD0_D15,          NULL);
-                       gpio_request(GPIO_FN_LCD0_D16,          NULL);
-                       gpio_request(GPIO_FN_LCD0_D17,          NULL);
-                       gpio_request(GPIO_FN_LCD0_D18_PORT163,  NULL);
-                       gpio_request(GPIO_FN_LCD0_D19_PORT162,  NULL);
-                       gpio_request(GPIO_FN_LCD0_D20_PORT161,  NULL);
-                       gpio_request(GPIO_FN_LCD0_D21_PORT158,  NULL);
-                       gpio_request(GPIO_FN_LCD0_D22_PORT160,  NULL);
-                       gpio_request(GPIO_FN_LCD0_D23_PORT159,  NULL);
-                       gpio_request(GPIO_FN_LCD0_DCK,          NULL);
-                       gpio_request(GPIO_FN_LCD0_VSYN,         NULL);
-                       gpio_request(GPIO_FN_LCD0_HSYN,         NULL);
-                       gpio_request(GPIO_FN_LCD0_DISP,         NULL);
-                       gpio_request(GPIO_FN_LCD0_LCLK_PORT165, NULL);
-
-                       gpio_request(GPIO_PORT61, NULL); /* LCDDON */
-                       gpio_direction_output(GPIO_PORT61, 1);
+                       pinctrl_register_mappings(lcdc0_pinctrl_map,
+                                                 ARRAY_SIZE(lcdc0_pinctrl_map));
+                       gpio_request(GPIO_FN_LCDC0_SELECT, NULL);
+
+                       gpio_request_one(61, GPIOF_OUT_INIT_HIGH,
+                                        NULL); /* LCDDON */
 
                        /* backlight on */
                        bonito_fpga_write(LCDCR, 1);
@@ -492,7 +461,7 @@ static void __init bonito_init(void)
        }
 }
 
-static void __init bonito_timer_init(void)
+static void __init bonito_earlytimer_init(void)
 {
        u16 val;
        u8 md_ck = 0;
@@ -507,17 +476,20 @@ static void __init bonito_timer_init(void)
                md_ck |= MD_CK0;
 
        r8a7740_clock_init(md_ck);
-       shmobile_timer.init();
+       shmobile_earlytimer_init();
 }
 
-struct sys_timer bonito_timer = {
-       .init   = bonito_timer_init,
-};
+static void __init bonito_add_early_devices(void)
+{
+       r8a7740_add_early_devices();
+}
 
 MACHINE_START(BONITO, "bonito")
        .map_io         = bonito_map_io,
+       .init_early     = bonito_add_early_devices,
        .init_irq       = r8a7740_init_irq,
        .handle_irq     = shmobile_handle_irq_intc,
        .init_machine   = bonito_init,
-       .timer          = &bonito_timer,
+       .init_late      = shmobile_init_late,
+       .init_time      = bonito_earlytimer_init,
 MACHINE_END