aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/omap24xx/patches-2.6.38/300-nokia-board.patch
diff options
context:
space:
mode:
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.patch197
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