diff options
Diffstat (limited to 'target/linux/omap24xx/patches-2.6.38/300-nokia-board.patch')
-rw-r--r-- | target/linux/omap24xx/patches-2.6.38/300-nokia-board.patch | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/target/linux/omap24xx/patches-2.6.38/300-nokia-board.patch b/target/linux/omap24xx/patches-2.6.38/300-nokia-board.patch new file mode 100644 index 0000000000..0a28c0d450 --- /dev/null +++ b/target/linux/omap24xx/patches-2.6.38/300-nokia-board.patch @@ -0,0 +1,197 @@ +Index: linux-2.6.38-rc6/arch/arm/mach-omap2/board-n8x0.c +=================================================================== +--- linux-2.6.38-rc6.orig/arch/arm/mach-omap2/board-n8x0.c 2011-02-24 12:09:31.427080051 +0100 ++++ linux-2.6.38-rc6/arch/arm/mach-omap2/board-n8x0.c 2011-02-24 12:09:59.754956253 +0100 +@@ -15,8 +15,10 @@ + #include <linux/delay.h> + #include <linux/gpio.h> + #include <linux/init.h> ++#include <linux/irq.h> + #include <linux/io.h> + #include <linux/stddef.h> ++#include <linux/platform_device.h> + #include <linux/i2c.h> + #include <linux/spi/spi.h> + #include <linux/usb/musb.h> +@@ -33,6 +35,7 @@ + #include <plat/onenand.h> + #include <plat/mmc.h> + #include <plat/serial.h> ++#include <plat/cbus.h> + + #include "mux.h" + +@@ -194,6 +197,114 @@ + }; + #endif + ++#if defined(CONFIG_CBUS) || defined(CONFIG_CBUS_MODULE) ++ ++static struct cbus_host_platform_data n8x0_cbus_data = { ++ .clk_gpio = 66, ++ .dat_gpio = 65, ++ .sel_gpio = 64, ++}; ++ ++static struct platform_device n8x0_cbus_device = { ++ .name = "cbus", ++ .id = -1, ++ .dev = { ++ .platform_data = &n8x0_cbus_data, ++ }, ++}; ++ ++static struct resource retu_resource[] = { ++ { ++ .start = -EINVAL, /* set later */ ++ .flags = IORESOURCE_IRQ, ++ }, ++}; ++ ++static struct cbus_retu_platform_data n8x0_retu_data = { ++ .irq_base = CBUS_RETU_IRQ_BASE, ++ .irq_end = CBUS_RETU_IRQ_END, ++ .devid = CBUS_RETU_DEVICE_ID, ++}; ++ ++static struct platform_device retu_device = { ++ .name = "retu", ++ .id = -1, ++ .resource = retu_resource, ++ .num_resources = ARRAY_SIZE(retu_resource), ++ .dev = { ++ .platform_data = &n8x0_retu_data, ++ }, ++}; ++ ++static struct resource tahvo_resource[] = { ++ { ++ .start = -EINVAL, /* set later */ ++ .flags = IORESOURCE_IRQ, ++ } ++}; ++ ++static struct platform_device tahvo_device = { ++ .name = "tahvo", ++ .id = -1, ++ .resource = tahvo_resource, ++ .num_resources = ARRAY_SIZE(tahvo_resource), ++}; ++ ++static struct platform_device tahvo_usb_device = { ++ .name = "tahvo-usb", ++ .id = -1, ++}; ++ ++static void __init n8x0_cbus_init(void) ++{ ++ int ret; ++ ++ platform_device_register(&n8x0_cbus_device); ++ ++ ret = gpio_request(108, "RETU irq"); ++ if (ret < 0) { ++ pr_err("retu: Unable to reserve IRQ GPIO\n"); ++ return; ++ } ++ ++ ret = gpio_direction_input(108); ++ if (ret < 0) { ++ pr_err("retu: Unable to change gpio direction\n"); ++ gpio_free(108); ++ return; ++ } ++ ++ set_irq_type(gpio_to_irq(108), IRQ_TYPE_EDGE_RISING); ++ retu_resource[0].start = gpio_to_irq(108); ++ platform_device_register(&retu_device); ++ ++ ret = gpio_request(111, "TAHVO irq"); ++ if (ret) { ++ pr_err("tahvo: Unable to reserve IRQ GPIO\n"); ++ gpio_free(108); ++ return; ++ } ++ ++ /* Set the pin as input */ ++ ret = gpio_direction_input(111); ++ if (ret) { ++ pr_err("tahvo: Unable to change direction\n"); ++ gpio_free(108); ++ gpio_free(111); ++ return; ++ } ++ ++ tahvo_resource[0].start = gpio_to_irq(111); ++ platform_device_register(&tahvo_device); ++ platform_device_register(&tahvo_usb_device); ++} ++ ++#else ++static inline void __init n8x0_cbus_init(void) ++{ ++} ++#endif ++ + #if defined(CONFIG_MENELAUS) && \ + (defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE)) + +@@ -628,11 +739,10 @@ + omap242x_map_common_io(); + } + +-static void __init n8x0_init_irq(void) ++static void __init n8x0_init_early(void) + { + omap2_init_common_infrastructure(); + omap2_init_common_devices(NULL, NULL); +- omap_init_irq(); + } + + #ifdef CONFIG_OMAP_MUX +@@ -686,6 +796,8 @@ + static void __init n8x0_init_machine(void) + { + omap2420_mux_init(board_mux, OMAP_PACKAGE_ZAC); ++ n8x0_cbus_init(); ++ + /* FIXME: add n810 spi devices */ + spi_register_board_info(n800_spi_board_info, + ARRAY_SIZE(n800_spi_board_info)); +@@ -703,27 +815,30 @@ + + MACHINE_START(NOKIA_N800, "Nokia N800") + .boot_params = 0x80000100, +- .map_io = n8x0_map_io, + .reserve = omap_reserve, +- .init_irq = n8x0_init_irq, ++ .map_io = n8x0_map_io, ++ .init_early = n8x0_init_early, ++ .init_irq = omap_init_irq, + .init_machine = n8x0_init_machine, + .timer = &omap_timer, + MACHINE_END + + MACHINE_START(NOKIA_N810, "Nokia N810") + .boot_params = 0x80000100, +- .map_io = n8x0_map_io, + .reserve = omap_reserve, +- .init_irq = n8x0_init_irq, ++ .map_io = n8x0_map_io, ++ .init_early = n8x0_init_early, ++ .init_irq = omap_init_irq, + .init_machine = n8x0_init_machine, + .timer = &omap_timer, + MACHINE_END + + MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX") + .boot_params = 0x80000100, +- .map_io = n8x0_map_io, + .reserve = omap_reserve, +- .init_irq = n8x0_init_irq, ++ .map_io = n8x0_map_io, ++ .init_early = n8x0_init_early, ++ .init_irq = omap_init_irq, + .init_machine = n8x0_init_machine, + .timer = &omap_timer, + MACHINE_END |