diff options
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r-- | arch/arm/mach-omap2/Makefile.boot | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-3430sdp.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-am3517evm.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-cm-t35.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-devkit8000.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-igep0020.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-igep0030.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-omap3beagle.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-omap3evm.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-omap3stalker.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-overo.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/devices.c | 109 |
12 files changed, 133 insertions, 7 deletions
diff --git a/arch/arm/mach-omap2/Makefile.boot b/arch/arm/mach-omap2/Makefile.boot index 565aff7f37a..422c1700ccf 100644 --- a/arch/arm/mach-omap2/Makefile.boot +++ b/arch/arm/mach-omap2/Makefile.boot @@ -1,3 +1,9 @@ zreladdr-y := 0x80008000 params_phys-y := 0x80000100 initrd_phys-y := 0x80800000 + +dtb-$(CONFIG_MACH_OMAP3_BEAGLE) += omap3-beagle.dtb +dtb-$(CONFIG_MACH_OMAP4_PANDA) += omap4-panda.dtb +dtb-$(CONFIG_MACH_OVERO) += omap3-overo.dtb +dtb-$(CONFIG_MACH_IGEP0020) += isee-igep-v2.dtb +dtb-$(CONFIG_MACH_IGEP0030) += isee-igep-v3.dtb diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index 9afd087cc29..e512b48c936 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c @@ -275,6 +275,7 @@ static struct panel_generic_dpi_data dvi_panel = { .name = "generic", .platform_enable = sdp3430_panel_enable_dvi, .platform_disable = sdp3430_panel_disable_dvi, + .i2c_bus_num = 3, }; static struct omap_dss_device sdp3430_dvi_device = { diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c index ce7d5e6e415..ace46665d67 100644 --- a/arch/arm/mach-omap2/board-am3517evm.c +++ b/arch/arm/mach-omap2/board-am3517evm.c @@ -311,6 +311,7 @@ static struct panel_generic_dpi_data lcd_panel = { .name = "sharp_lq", .platform_enable = am3517_evm_panel_enable_lcd, .platform_disable = am3517_evm_panel_disable_lcd, + .i2c_bus_num = 3, }; static struct omap_dss_device am3517_evm_lcd_device = { @@ -359,6 +360,7 @@ static struct panel_generic_dpi_data dvi_panel = { .name = "generic", .platform_enable = am3517_evm_panel_enable_dvi, .platform_disable = am3517_evm_panel_disable_dvi, + .i2c_bus_num = 3, }; static struct omap_dss_device am3517_evm_dvi_device = { diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index 02a12b41c0f..edd48356c30 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c @@ -356,6 +356,7 @@ static struct panel_generic_dpi_data lcd_panel = { .name = "toppoly_tdo35s", .platform_enable = cm_t35_panel_enable_lcd, .platform_disable = cm_t35_panel_disable_lcd, + .i2c_bus_num = 3, }; static struct omap_dss_device cm_t35_lcd_device = { @@ -370,6 +371,7 @@ static struct panel_generic_dpi_data dvi_panel = { .name = "generic", .platform_enable = cm_t35_panel_enable_dvi, .platform_disable = cm_t35_panel_disable_dvi, + .i2c_bus_num = 3, }; static struct omap_dss_device cm_t35_dvi_device = { diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index 65f9fde2c56..0a35c3a3ed9 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c @@ -151,6 +151,7 @@ static struct panel_generic_dpi_data lcd_panel = { .name = "generic", .platform_enable = devkit8000_panel_enable_lcd, .platform_disable = devkit8000_panel_disable_lcd, + .i2c_bus_num = 3, }; static struct omap_dss_device devkit8000_lcd_device = { @@ -165,6 +166,7 @@ static struct panel_generic_dpi_data dvi_panel = { .name = "generic", .platform_enable = devkit8000_panel_enable_dvi, .platform_disable = devkit8000_panel_disable_dvi, + .i2c_bus_num = 3, }; static struct omap_dss_device devkit8000_dvi_device = { diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index 5f8a2fd0633..8b24d62e8f2 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c @@ -465,6 +465,7 @@ static struct panel_generic_dpi_data dvi_panel = { .name = "generic", .platform_enable = igep2_enable_dvi, .platform_disable = igep2_disable_dvi, + .i2c_bus_num = 3, }; static struct omap_dss_device igep2_dvi_device = { @@ -703,6 +704,11 @@ static void __init igep2_init(void) } +static const char *igep2_dt_compat[] __initdata = { + "ISEE,igep-v2", + NULL +}; + MACHINE_START(IGEP0020, "IGEP v2 board") .boot_params = 0x80000100, .reserve = omap_reserve, @@ -711,4 +717,5 @@ MACHINE_START(IGEP0020, "IGEP v2 board") .init_irq = omap_init_irq, .init_machine = igep2_init, .timer = &omap_timer, + .dt_compat = &igep2_dt_compat, MACHINE_END diff --git a/arch/arm/mach-omap2/board-igep0030.c b/arch/arm/mach-omap2/board-igep0030.c index b10db0e6ee6..01762bb6800 100644 --- a/arch/arm/mach-omap2/board-igep0030.c +++ b/arch/arm/mach-omap2/board-igep0030.c @@ -447,6 +447,11 @@ static void __init igep3_init(void) } +static const char *igep3_dt_compat[] __initdata = { + "ISEE,igep-v3", + NULL +}; + MACHINE_START(IGEP0030, "IGEP OMAP3 module") .boot_params = 0x80000100, .reserve = omap_reserve, @@ -455,4 +460,5 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module") .init_irq = omap_init_irq, .init_machine = igep3_init, .timer = &omap_timer, + .dt_compat = &igep3_dt_compat, MACHINE_END diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 4c62a01a379..34b0cb4d189 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c @@ -202,6 +202,7 @@ static struct panel_generic_dpi_data dvi_panel = { .name = "generic", .platform_enable = beagle_enable_dvi, .platform_disable = beagle_disable_dvi, + .i2c_bus_num = 3, }; static struct omap_dss_device beagle_dvi_device = { diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index 5a1a916e5cc..792ca7454b8 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c @@ -341,6 +341,7 @@ static struct panel_generic_dpi_data dvi_panel = { .name = "generic", .platform_enable = omap3_evm_enable_dvi, .platform_disable = omap3_evm_disable_dvi, + .i2c_bus_num = 3, }; static struct omap_dss_device omap3_evm_dvi_device = { diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c index a6e0b9161c9..8491295d650 100644 --- a/arch/arm/mach-omap2/board-omap3stalker.c +++ b/arch/arm/mach-omap2/board-omap3stalker.c @@ -165,6 +165,7 @@ static struct panel_generic_dpi_data lcd_panel = { .name = "generic", .platform_enable = omap3_stalker_enable_lcd, .platform_disable = omap3_stalker_disable_lcd, + .i2c_bus_num = 3, }; static struct omap_dss_device omap3_stalker_lcd_device = { @@ -218,6 +219,7 @@ static struct panel_generic_dpi_data dvi_panel = { .name = "generic", .platform_enable = omap3_stalker_enable_dvi, .platform_disable = omap3_stalker_disable_dvi, + .i2c_bus_num = 3, }; static struct omap_dss_device omap3_stalker_dvi_device = { diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index da6d2f150d9..bcdffe22d19 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c @@ -296,6 +296,7 @@ static struct panel_generic_dpi_data dvi_panel = { .name = "generic", .platform_enable = overo_panel_enable_dvi, .platform_disable = overo_panel_disable_dvi, + .i2c_bus_num = 3, }; static struct omap_dss_device overo_dvi_device = { diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index d478f53f908..f30c1bdaa98 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c @@ -22,6 +22,7 @@ #include <asm/mach-types.h> #include <asm/mach/map.h> #include <asm/pmu.h> +#include <asm/cti.h> #include <plat/tc.h> #include <plat/board.h> @@ -386,20 +387,95 @@ static struct resource omap3_pmu_resource = { .flags = IORESOURCE_IRQ, }; +static struct resource omap4_pmu_resource[] = { + { + .start = OMAP44XX_IRQ_CTI0, + .end = OMAP44XX_IRQ_CTI0, + .flags = IORESOURCE_IRQ, + }, + { + .start = OMAP44XX_IRQ_CTI1, + .end = OMAP44XX_IRQ_CTI1, + .flags = IORESOURCE_IRQ, + } +}; + static struct platform_device omap_pmu_device = { .name = "arm-pmu", .id = ARM_PMU_DEVICE_CPU, .num_resources = 1, }; +static struct arm_pmu_platdata omap4_pmu_data; +static struct cti omap4_cti[2]; + +static void omap4_enable_cti(int irq) +{ + if (irq == OMAP44XX_IRQ_CTI0) + cti_enable(&omap4_cti[0]); + else if (irq == OMAP44XX_IRQ_CTI1) + cti_enable(&omap4_cti[1]); +} + +static void omap4_disable_cti(int irq) +{ + if (irq == OMAP44XX_IRQ_CTI0) + cti_disable(&omap4_cti[0]); + else if (irq == OMAP44XX_IRQ_CTI1) + cti_disable(&omap4_cti[1]); +} + +static irqreturn_t omap4_pmu_handler(int irq, void *dev, irq_handler_t handler) +{ + if (irq == OMAP44XX_IRQ_CTI0) + cti_irq_ack(&omap4_cti[0]); + else if (irq == OMAP44XX_IRQ_CTI1) + cti_irq_ack(&omap4_cti[1]); + + return handler(irq, dev); +} + +static void omap4_configure_pmu_irq(void) +{ + void __iomem *base0; + void __iomem *base1; + + base0 = ioremap(OMAP44XX_CTI0_BASE, SZ_4K); + base1 = ioremap(OMAP44XX_CTI1_BASE, SZ_4K); + if (!base0 && !base1) { + pr_err("ioremap for OMAP4 CTI failed\n"); + return; + } + + /*configure CTI0 for pmu irq routing*/ + cti_init(&omap4_cti[0], base0, OMAP44XX_IRQ_CTI0, 6); + cti_unlock(&omap4_cti[0]); + cti_map_trigger(&omap4_cti[0], 1, 6, 2); + + /*configure CTI1 for pmu irq routing*/ + cti_init(&omap4_cti[1], base1, OMAP44XX_IRQ_CTI1, 6); + cti_unlock(&omap4_cti[1]); + cti_map_trigger(&omap4_cti[1], 1, 6, 2); + + omap4_pmu_data.handle_irq = omap4_pmu_handler; + omap4_pmu_data.enable_irq = omap4_enable_cti; + omap4_pmu_data.disable_irq = omap4_disable_cti; +} + static void omap_init_pmu(void) { - if (cpu_is_omap24xx()) + if (cpu_is_omap24xx()) { omap_pmu_device.resource = &omap2_pmu_resource; - else if (cpu_is_omap34xx()) + } else if (cpu_is_omap34xx()) { omap_pmu_device.resource = &omap3_pmu_resource; - else + } else if (cpu_is_omap44xx()) { + omap_pmu_device.resource = omap4_pmu_resource; + omap_pmu_device.num_resources = 2; + omap_pmu_device.dev.platform_data = &omap4_pmu_data; + omap4_configure_pmu_irq(); + } else { return; + } platform_device_register(&omap_pmu_device); } @@ -637,13 +713,21 @@ static inline void omap_hdq_init(void) {} #if defined(CONFIG_VIDEO_OMAP2_VOUT) || \ defined(CONFIG_VIDEO_OMAP2_VOUT_MODULE) #if defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE) -static struct resource omap_vout_resource[3 - CONFIG_FB_OMAP2_NUM_FBS] = { -}; +#define NUM_FB CONFIG_FB_OMAP2_NUM_FBS +#elif defined(CONFIG_DRM_OMAP) || defined(CONFIG_DRM_OMAP_MODULE) +#define NUM_FB CONFIG_DRM_OMAP_NUM_CRTCS #else -static struct resource omap_vout_resource[2] = { -}; +#define NUM_FB 1 /* we don't want gfx pipe */ +#endif +#ifdef CONFIG_ARCH_OMAP4 +#define NUM_PIPES 4 +#else +#define NUM_PIPES 3 #endif +static struct resource omap_vout_resource[NUM_PIPES - NUM_FB] = { +}; + static struct platform_device omap_vout_device = { .name = "omap_vout", .num_resources = ARRAY_SIZE(omap_vout_resource), @@ -659,6 +743,16 @@ static void omap_init_vout(void) static inline void omap_init_vout(void) {} #endif +static struct platform_device omap_gpu_device = { + .name = "omap_gpu", + .id = -1, +}; + +static void omap_init_gpu(void) +{ + platform_device_register(&omap_gpu_device); +} + /*-------------------------------------------------------------------------*/ static int __init omap2_init_devices(void) @@ -677,6 +771,7 @@ static int __init omap2_init_devices(void) omap_init_sham(); omap_init_aes(); omap_init_vout(); + omap_init_gpu(); return 0; } |