/* * Versatile Express V2M Motherboard Support */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "core.h" #define V2M_PA_CS0 0x40000000 #define V2M_PA_CS1 0x44000000 #define V2M_PA_CS2 0x48000000 #define V2M_PA_CS3 0x4c000000 #define V2M_PA_CS7 0x10000000 static struct map_desc v2m_io_desc[] __initdata = { { .virtual = V2M_PERIPH, .pfn = __phys_to_pfn(V2M_PA_CS7), .length = SZ_128K, .type = MT_DEVICE, }, }; static void __init v2m_sp804_init(void __iomem *base, unsigned int irq) { if (WARN_ON(!base || irq == NO_IRQ)) return; writel(0, base + TIMER_1_BASE + TIMER_CTRL); writel(0, base + TIMER_2_BASE + TIMER_CTRL); sp804_clocksource_init(base + TIMER_2_BASE, "v2m-timer1"); sp804_clockevents_init(base + TIMER_1_BASE, irq, "v2m-timer0"); } static struct resource v2m_pcie_i2c_resource = { .start = V2M_SERIAL_BUS_PCI, .end = V2M_SERIAL_BUS_PCI + SZ_4K - 1, .flags = IORESOURCE_MEM, }; static struct platform_device v2m_pcie_i2c_device = { .name = "versatile-i2c", .id = 0, .num_resources = 1, .resource = &v2m_pcie_i2c_resource, }; static struct resource v2m_ddc_i2c_resource = { .start = V2M_SERIAL_BUS_DVI, .end = V2M_SERIAL_BUS_DVI + SZ_4K - 1, .flags = IORESOURCE_MEM, }; static struct platform_device v2m_ddc_i2c_device = { .name = "versatile-i2c",