Merge tag 'cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
[pandora-kernel.git] / arch / arm / mach-shmobile / setup-r8a7778.c
index 0174f05..203becf 100644 (file)
@@ -53,7 +53,7 @@
        .irqs           = SCIx_IRQ_MUXED(irq),                  \
 }
 
-static struct plat_sci_port scif_platform_data[] = {
+static struct plat_sci_port scif_platform_data[] __initdata = {
        SCIF_INFO(0xffe40000, gic_iid(0x66)),
        SCIF_INFO(0xffe41000, gic_iid(0x67)),
        SCIF_INFO(0xffe42000, gic_iid(0x68)),
@@ -63,24 +63,24 @@ static struct plat_sci_port scif_platform_data[] = {
 };
 
 /* TMU */
-static struct resource sh_tmu0_resources[] = {
+static struct resource sh_tmu0_resources[] __initdata = {
        DEFINE_RES_MEM(0xffd80008, 12),
        DEFINE_RES_IRQ(gic_iid(0x40)),
 };
 
-static struct sh_timer_config sh_tmu0_platform_data = {
+static struct sh_timer_config sh_tmu0_platform_data __initdata = {
        .name                   = "TMU00",
        .channel_offset         = 0x4,
        .timer_bit              = 0,
        .clockevent_rating      = 200,
 };
 
-static struct resource sh_tmu1_resources[] = {
+static struct resource sh_tmu1_resources[] __initdata = {
        DEFINE_RES_MEM(0xffd80014, 12),
        DEFINE_RES_IRQ(gic_iid(0x41)),
 };
 
-static struct sh_timer_config sh_tmu1_platform_data = {
+static struct sh_timer_config sh_tmu1_platform_data __initdata = {
        .name                   = "TMU01",
        .channel_offset         = 0x10,
        .timer_bit              = 1,
@@ -189,7 +189,7 @@ USB_PLATFORM_INFO(ehci);
 USB_PLATFORM_INFO(ohci);
 
 /* Ether */
-static struct resource ether_resources[] = {
+static struct resource ether_resources[] __initdata = {
        DEFINE_RES_MEM(0xfde00000, 0x400),
        DEFINE_RES_IRQ(gic_iid(0x89)),
 };
@@ -203,17 +203,17 @@ void __init r8a7778_add_ether_device(struct sh_eth_plat_data *pdata)
 }
 
 /* PFC/GPIO */
-static struct resource pfc_resources[] = {
+static struct resource pfc_resources[] __initdata = {
        DEFINE_RES_MEM(0xfffc0000, 0x118),
 };
 
 #define R8A7778_GPIO(idx)                                              \
-static struct resource r8a7778_gpio##idx##_resources[] = {             \
+static struct resource r8a7778_gpio##idx##_resources[] __initdata = {  \
        DEFINE_RES_MEM(0xffc40000 + 0x1000 * (idx), 0x30),              \
        DEFINE_RES_IRQ(gic_iid(0x87)),                                  \
 };                                                                     \
                                                                        \
-static struct gpio_rcar_config r8a7778_gpio##idx##_platform_data = {   \
+static struct gpio_rcar_config r8a7778_gpio##idx##_platform_data __initdata = { \
        .gpio_base      = 32 * (idx),                                   \
        .irq_base       = GPIO_IRQ_BASE(idx),                           \
        .number_of_pins = 32,                                           \
@@ -249,7 +249,7 @@ void __init r8a7778_pinmux_init(void)
 };
 
 /* SDHI */
-static struct resource sdhi_resources[] = {
+static struct resource sdhi_resources[] __initdata = {
        /* SDHI0 */
        DEFINE_RES_MEM(0xFFE4C000, 0x100),
        DEFINE_RES_IRQ(gic_iid(0x77)),
@@ -399,12 +399,12 @@ void __init r8a7778_init_late(void)
        platform_device_register_full(&ohci_info);
 }
 
-static struct renesas_intc_irqpin_config irqpin_platform_data = {
+static struct renesas_intc_irqpin_config irqpin_platform_data __initdata = {
        .irq_base = irq_pin(0), /* IRQ0 -> IRQ3 */
        .sense_bitfield_width = 2,
 };
 
-static struct resource irqpin_resources[] = {
+static struct resource irqpin_resources[] __initdata = {
        DEFINE_RES_MEM(0xfe78001c, 4), /* ICR1 */
        DEFINE_RES_MEM(0xfe780010, 4), /* INTPRI */
        DEFINE_RES_MEM(0xfe780024, 4), /* INTREQ */
@@ -442,17 +442,25 @@ void __init r8a7778_init_irq_extpin(int irlm)
                        &irqpin_platform_data, sizeof(irqpin_platform_data));
 }
 
+void __init r8a7778_init_delay(void)
+{
+       shmobile_setup_delay(800, 1, 3); /* Cortex-A9 @ 800MHz */
+}
+
+#ifdef CONFIG_USE_OF
 #define INT2SMSKCR0    0x82288 /* 0xfe782288 */
 #define INT2SMSKCR1    0x8228c /* 0xfe78228c */
 
 #define INT2NTSR0      0x00018 /* 0xfe700018 */
 #define INT2NTSR1      0x0002c /* 0xfe70002c */
-static void __init r8a7778_init_irq_common(void)
+void __init r8a7778_init_irq_dt(void)
 {
        void __iomem *base = ioremap_nocache(0xfe700000, 0x00100000);
 
        BUG_ON(!base);
 
+       irqchip_init();
+
        /* route all interrupts to ARM */
        __raw_writel(0x73ffffff, base + INT2NTSR0);
        __raw_writel(0xffffffff, base + INT2NTSR1);
@@ -464,43 +472,6 @@ static void __init r8a7778_init_irq_common(void)
        iounmap(base);
 }
 
-void __init r8a7778_init_irq(void)
-{
-       void __iomem *gic_dist_base;
-       void __iomem *gic_cpu_base;
-
-       gic_dist_base = ioremap_nocache(0xfe438000, PAGE_SIZE);
-       gic_cpu_base  = ioremap_nocache(0xfe430000, PAGE_SIZE);
-       BUG_ON(!gic_dist_base || !gic_cpu_base);
-
-       /* use GIC to handle interrupts */
-       gic_init(0, 29, gic_dist_base, gic_cpu_base);
-
-       r8a7778_init_irq_common();
-}
-
-void __init r8a7778_init_delay(void)
-{
-       shmobile_setup_delay(800, 1, 3); /* Cortex-A9 @ 800MHz */
-}
-
-#ifdef CONFIG_USE_OF
-void __init r8a7778_init_irq_dt(void)
-{
-       irqchip_init();
-       r8a7778_init_irq_common();
-}
-
-static const struct of_dev_auxdata r8a7778_auxdata_lookup[] __initconst = {
-       {},
-};
-
-void __init r8a7778_add_standard_devices_dt(void)
-{
-       of_platform_populate(NULL, of_default_bus_match_table,
-                            r8a7778_auxdata_lookup, NULL);
-}
-
 static const char *r8a7778_compat_dt[] __initdata = {
        "renesas,r8a7778",
        NULL,
@@ -509,7 +480,6 @@ static const char *r8a7778_compat_dt[] __initdata = {
 DT_MACHINE_START(R8A7778_DT, "Generic R8A7778 (Flattened Device Tree)")
        .init_early     = r8a7778_init_delay,
        .init_irq       = r8a7778_init_irq_dt,
-       .init_machine   = r8a7778_add_standard_devices_dt,
        .init_time      = shmobile_timer_init,
        .dt_compat      = r8a7778_compat_dt,
        .init_late      = r8a7778_init_late,