2 arch/arm/mach-omap1/board-nokia770.c | 16 +
3 arch/arm/mach-omap2/Kconfig | 10
4 arch/arm/mach-omap2/Makefile | 2
5 arch/arm/mach-omap2/board-n8x0-lcd.c | 127 ++++++++++++
6 arch/arm/mach-omap2/board-n8x0-usb.c | 175 +++++++++++++++++
7 arch/arm/mach-omap2/board-n8x0.c | 355 ++++++++++++++++++++++++++---------
8 arch/arm/mach-omap2/control.c | 2
9 arch/arm/mach-omap2/serial.c | 8
10 8 files changed, 608 insertions(+), 87 deletions(-)
12 Index: linux-2.6.37/arch/arm/mach-omap1/board-nokia770.c
13 ===================================================================
14 --- linux-2.6.37.orig/arch/arm/mach-omap1/board-nokia770.c 2011-01-27 14:17:04.376000007 +0100
15 +++ linux-2.6.37/arch/arm/mach-omap1/board-nokia770.c 2011-01-27 14:17:29.131000007 +0100
17 #include <plat/lcd_mipid.h>
19 #include <plat/clock.h>
20 +#include <plat/cbus.h>
22 #define ADS7846_PENDOWN_GPIO 15
25 .resource = nokia770_kp_resources,
28 +static struct cbus_host_platform_data nokia770_cbus_data = {
29 + .clk_gpio = OMAP_MPUIO(11),
30 + .dat_gpio = OMAP_MPUIO(10),
31 + .sel_gpio = OMAP_MPUIO(9),
34 +static struct platform_device nokia770_cbus_device = {
38 + .platform_data = &nokia770_cbus_data,
42 static struct platform_device *nokia770_devices[] __initdata = {
44 + &nokia770_cbus_device,
47 static void mipid_shutdown(struct mipid_platform_data *pdata)
48 Index: linux-2.6.37/arch/arm/mach-omap2/board-n8x0.c
49 ===================================================================
50 --- linux-2.6.37.orig/arch/arm/mach-omap2/board-n8x0.c 2011-01-27 14:17:04.381000007 +0100
51 +++ linux-2.6.37/arch/arm/mach-omap2/board-n8x0.c 2011-01-27 14:17:29.132000007 +0100
54 #include <linux/stddef.h>
55 #include <linux/i2c.h>
56 +#include <linux/platform_device.h>
57 #include <linux/spi/spi.h>
58 +#include <linux/spi/tsc2005.h>
59 +#include <linux/input.h>
60 #include <linux/usb/musb.h>
61 #include <sound/tlv320aic3x.h>
62 +#include <linux/i2c/lm8323.h>
64 #include <asm/mach/arch.h>
65 #include <asm/mach-types.h>
67 #include <plat/onenand.h>
69 #include <plat/serial.h>
70 +#include <plat/cbus.h>
71 +#include <plat/gpio-switch.h>
76 static int slot2_cover_open;
77 static struct device *mmc_device;
79 -#define TUSB6010_ASYNC_CS 1
80 -#define TUSB6010_SYNC_CS 4
81 -#define TUSB6010_GPIO_INT 58
82 -#define TUSB6010_GPIO_ENABLE 0
83 -#define TUSB6010_DMACHAN 0x3f
85 -#if defined(CONFIG_USB_TUSB6010) || \
86 - defined(CONFIG_USB_TUSB6010_MODULE)
88 - * Enable or disable power to TUSB6010. When enabling, turn on 3.3 V and
89 - * 1.5 V voltage regulators of PM companion chip. Companion chip will then
90 - * provide then PGOOD signal to TUSB6010 which will release it from reset.
92 -static int tusb_set_power(int state)
97 - gpio_set_value(TUSB6010_GPIO_ENABLE, 1);
100 - /* Wait until TUSB6010 pulls INT pin down */
102 - while (i && gpio_get_value(TUSB6010_GPIO_INT)) {
108 - printk(KERN_ERR "tusb: powerup failed\n");
112 - gpio_set_value(TUSB6010_GPIO_ENABLE, 0);
117 +#define RX51_TSC2005_RESET_GPIO 94
118 +#define RX51_TSC2005_IRQ_GPIO 106
119 +#define OMAP_TAG_NOKIA_BT 0x4e01
121 +static s16 rx44_keymap[LM8323_KEYMAP_SIZE] = {
126 + [0x05] = KEY_BACKSPACE,
138 + [0x14] = KEY_APOSTROPHE,
145 + [0x1c] = KEY_LEFTSHIFT, /* Actually, this is both shift keys */
149 + [0x22] = KEY_SEMICOLON,
150 + [0x23] = KEY_MINUS,
151 + [0x24] = KEY_EQUAL,
157 + [0x32] = KEY_RIGHTCTRL,
158 + [0x34] = KEY_SPACE,
159 + [0x35] = KEY_COMMA,
161 + [0x3c] = KEY_COMPOSE,
166 + [0x46] = KEY_RIGHT,
170 + [0x55] = KEY_ENTER,
177 + [0x75] = KEY_KPENTER,
180 +static struct lm8323_platform_data lm8323_pdata = {
181 + .repeat = 0, /* Repeat is handled in userspace for now. */
182 + .keymap = rx44_keymap,
185 + .debounce_time = 12,
186 + .active_time = 500,
188 + .name = "Internal keyboard",
189 + .pwm_names[0] = "n810::keyboard",
190 + .pwm_names[1] = "n810::cover",
191 + //.pwm1_name = "n810::keyboard",
192 + //.pwm2_name = "n810::cover",
195 +struct omap_bluetooth_config {
198 + u8 host_wakeup_gpio;
205 +static struct platform_device n8x0_bt_device = {
208 + .num_resources = 0,
211 +void __init n8x0_bt_init(void)
213 + const struct omap_bluetooth_config *bt_config;
215 + bt_config = (void *) omap_get_config(OMAP_TAG_NOKIA_BT,
216 + struct omap_bluetooth_config);
217 + n8x0_bt_device.dev.platform_data = (void *) bt_config;
218 + if (platform_device_register(&n8x0_bt_device) < 0)
222 -static struct musb_hdrc_config musb_config = {
227 +static struct omap2_mcspi_device_config mipid_mcspi_config = {
229 + .single_channel = 1,
232 -static struct musb_hdrc_platform_data tusb_data = {
233 -#if defined(CONFIG_USB_MUSB_OTG)
235 -#elif defined(CONFIG_USB_MUSB_PERIPHERAL)
236 - .mode = MUSB_PERIPHERAL,
237 -#else /* defined(CONFIG_USB_MUSB_HOST) */
240 - .set_power = tusb_set_power,
241 - .min_power = 25, /* x2 = 50 mA drawn from VBUS as peripheral */
242 - .power = 100, /* Max 100 mA VBUS for host mode */
243 - .config = &musb_config,
246 -static void __init n8x0_usb_init(void)
249 - static char announce[] __initdata = KERN_INFO "TUSB 6010\n";
251 - /* PM companion chip power control pin */
252 - ret = gpio_request(TUSB6010_GPIO_ENABLE, "TUSB6010 enable");
254 - printk(KERN_ERR "Could not get TUSB power GPIO%i\n",
255 - TUSB6010_GPIO_ENABLE);
258 - gpio_direction_output(TUSB6010_GPIO_ENABLE, 0);
261 +static int slot1_cover_open;
262 +static int slot2_cover_open;
263 +static struct device *mmc_device;
265 - ret = tusb6010_setup_interface(&tusb_data, TUSB6010_REFCLK_19, 2,
266 - TUSB6010_ASYNC_CS, TUSB6010_SYNC_CS,
267 - TUSB6010_GPIO_INT, TUSB6010_DMACHAN);
272 +static struct omap2_mcspi_device_config p54spi_mcspi_config = {
274 + .single_channel = 1,
278 +#ifdef CONFIG_MACH_NOKIA_N8X0_LCD
279 +extern struct mipid_platform_data n8x0_mipid_platform_data;
283 - gpio_free(TUSB6010_GPIO_ENABLE);
284 +#ifdef CONFIG_TOUCHSCREEN_TSC2005
285 +static struct tsc2005_platform_data tsc2005_config;
286 +static void rx51_tsc2005_set_reset(bool enable)
288 + gpio_set_value(RX51_TSC2005_RESET_GPIO, enable);
292 -static void __init n8x0_usb_init(void) {}
294 -#endif /*CONFIG_USB_TUSB6010 */
297 -static struct omap2_mcspi_device_config p54spi_mcspi_config = {
298 +static struct omap2_mcspi_device_config tsc2005_mcspi_config = {
304 static struct spi_board_info n800_spi_board_info[] __initdata = {
305 +#ifdef CONFIG_MACH_NOKIA_N8X0_LCD
307 + .modalias = "lcd_mipid",
310 + .max_speed_hz = 4000000,
311 + .controller_data= &mipid_mcspi_config,
312 + .platform_data = &n8x0_mipid_platform_data,
316 .modalias = "p54spi",
319 .max_speed_hz = 48000000,
320 .controller_data = &p54spi_mcspi_config,
323 + .modalias = "tsc2005",
326 + .irq = OMAP_GPIO_IRQ(RX51_TSC2005_IRQ_GPIO),
327 + .max_speed_hz = 6000000,
328 + .controller_data = &tsc2005_mcspi_config,
329 + .platform_data = &tsc2005_config,
333 +static void __init tsc2005_set_config(void)
335 + const struct omap_lcd_config *conf;
337 + conf = omap_get_config(OMAP_TAG_LCD, struct omap_lcd_config);
338 + if (conf != NULL) {
339 +#ifdef CONFIG_TOUCHSCREEN_TSC2005
340 + if (strcmp(conf->panel_name, "lph8923") == 0) {
341 + tsc2005_config.ts_x_plate_ohm = 180;
342 + tsc2005_config.ts_hw_avg = 0;
343 + tsc2005_config.ts_ignore_last = 0;
344 + tsc2005_config.ts_touch_pressure = 1500;
345 + tsc2005_config.ts_stab_time = 100;
346 + tsc2005_config.ts_pressure_max = 2048;
347 + tsc2005_config.ts_pressure_fudge = 2;
348 + tsc2005_config.ts_x_max = 4096;
349 + tsc2005_config.ts_x_fudge = 4;
350 + tsc2005_config.ts_y_max = 4096;
351 + tsc2005_config.ts_y_fudge = 7;
352 + tsc2005_config.set_reset = rx51_tsc2005_set_reset;
353 + } else if (strcmp(conf->panel_name, "ls041y3") == 0) {
354 + tsc2005_config.ts_x_plate_ohm = 280;
355 + tsc2005_config.ts_hw_avg = 0;
356 + tsc2005_config.ts_ignore_last = 0;
357 + tsc2005_config.ts_touch_pressure = 1500;
358 + tsc2005_config.ts_stab_time = 1000;
359 + tsc2005_config.ts_pressure_max = 2048;
360 + tsc2005_config.ts_pressure_fudge = 2;
361 + tsc2005_config.ts_x_max = 4096;
362 + tsc2005_config.ts_x_fudge = 4;
363 + tsc2005_config.ts_y_max = 4096;
364 + tsc2005_config.ts_y_fudge = 7;
365 + tsc2005_config.set_reset = rx51_tsc2005_set_reset;
367 + printk(KERN_ERR "Unknown panel type, set default "
368 + "touchscreen configuration\n");
369 + tsc2005_config.ts_x_plate_ohm = 200;
370 + tsc2005_config.ts_stab_time = 100;
376 #if defined(CONFIG_MTD_ONENAND_OMAP2) || \
377 defined(CONFIG_MTD_ONENAND_OMAP2_MODULE)
383 +static struct cbus_host_platform_data n8x0_cbus_data = {
389 +static struct platform_device n8x0_cbus_device = {
393 + .platform_data = &n8x0_cbus_data,
397 static struct omap_onenand_platform_data board_onenand_data = {
402 static struct i2c_board_info n810_i2c_board_info_2[] __initdata = {
404 + I2C_BOARD_INFO("lm8323", 0x45),
405 + .irq = OMAP_GPIO_IRQ(109),
406 + .platform_data = &lm8323_pdata,
409 I2C_BOARD_INFO("tlv320aic3x", 0x18),
410 .platform_data = &n810_aic33_data,
412 @@ -657,10 +779,62 @@
413 #define board_mux NULL
416 +#ifdef CONFIG_MACH_NOKIA_N8X0_LCD
417 +extern void n8x0_mipid_init(void);
418 +extern void n8x0_blizzard_init(void);
420 +#define n8x0_mipid_init() 0
421 +#define n8x0_blizzard_init() 0
424 +extern void n8x0_usb_init(void);
426 +static struct omap_gpio_switch n8x0_gpio_switches[] __initdata = {
428 + .name = "headphone",
430 + .debounce_rising = 200,
431 + .debounce_falling = 200,
435 + .debounce_rising = 200,
436 + .debounce_falling = 200,
438 + .name = "cam_turn",
440 + .debounce_rising = 100,
441 + .debounce_falling = 100,
445 + .debounce_rising = 200,
446 + .debounce_falling = 200,
450 + .debounce_rising = 200,
451 + .debounce_falling = 200,
455 +static void __init n8x0_gpio_switches_init(void)
457 + /* The switches are actually registered through ATAG mechanism.
458 + * This just updates the parameters (thus .gpio is -1) */
459 + omap_register_gpio_switches(n8x0_gpio_switches,
460 + ARRAY_SIZE(n8x0_gpio_switches));
463 static void __init n8x0_init_machine(void)
465 omap2420_mux_init(board_mux, OMAP_PACKAGE_ZAC);
466 + n8x0_gpio_switches_init();
467 + platform_device_register(&n8x0_cbus_device);
470 /* FIXME: add n810 spi devices */
471 + tsc2005_set_config();
472 spi_register_board_info(n800_spi_board_info,
473 ARRAY_SIZE(n800_spi_board_info));
474 omap_register_i2c_bus(1, 400, n8x0_i2c_board_info_1,
476 ARRAY_SIZE(n810_i2c_board_info_2));
481 + n8x0_blizzard_init();
486 Index: linux-2.6.37/arch/arm/mach-omap2/board-n8x0-lcd.c
487 ===================================================================
488 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
489 +++ linux-2.6.37/arch/arm/mach-omap2/board-n8x0-lcd.c 2011-01-27 14:17:29.132000007 +0100
492 + * linux/arch/arm/mach-omap2/board-n8x0.c
494 + * Copyright (C) 2005-2009 Nokia Corporation
495 + * Author: Juha Yrjola <juha.yrjola@nokia.com>
497 + * Modified from mach-omap2/board-generic.c
499 + * This program is free software; you can redistribute it and/or modify
500 + * it under the terms of the GNU General Public License version 2 as
501 + * published by the Free Software Foundation.
504 +#include <linux/clk.h>
505 +#include <linux/delay.h>
506 +#include <linux/gpio.h>
507 +#include <linux/omapfb.h>
509 +#include <plat/lcd_mipid.h>
510 +#include <plat/blizzard.h>
512 +#include <../drivers/cbus/tahvo.h>
514 +#define N8X0_BLIZZARD_POWERDOWN_GPIO 15
518 +static void mipid_shutdown(struct mipid_platform_data *pdata)
520 + if (pdata->nreset_gpio != -1) {
521 + pr_info("shutdown LCD\n");
522 + gpio_set_value(pdata->nreset_gpio, 0);
527 +struct mipid_platform_data n8x0_mipid_platform_data = {
528 + .shutdown = mipid_shutdown,
531 +void __init n8x0_mipid_init(void)
533 + const struct omap_lcd_config *conf;
535 + conf = omap_get_config(OMAP_TAG_LCD, struct omap_lcd_config);
536 + if (conf != NULL) {
537 + n8x0_mipid_platform_data.nreset_gpio = conf->nreset_gpio;
538 + n8x0_mipid_platform_data.data_lines = conf->data_lines;
539 + printk(KERN_INFO "N8x0 MIPID config loaded");
542 + printk(KERN_INFO "N8x0 MIPID config not provided");
546 +// Epson Blizzard LCD Controller
549 + struct clk *sys_ck;
552 +static int blizzard_get_clocks(void)
554 + blizzard.sys_ck = clk_get(0, "osc_ck");
555 + if (IS_ERR(blizzard.sys_ck)) {
556 + printk(KERN_ERR "can't get Blizzard clock\n");
557 + return PTR_ERR(blizzard.sys_ck);
562 +static unsigned long blizzard_get_clock_rate(struct device *dev)
564 + return clk_get_rate(blizzard.sys_ck);
567 +static void blizzard_enable_clocks(int enable)
570 + clk_enable(blizzard.sys_ck);
572 + clk_disable(blizzard.sys_ck);
575 +static void blizzard_power_up(struct device *dev)
577 + /* Vcore to 1.475V */
578 + tahvo_set_clear_reg_bits(0x07, 0, 0xf);
581 + blizzard_enable_clocks(1);
582 + gpio_set_value(N8X0_BLIZZARD_POWERDOWN_GPIO, 1);
585 +static void blizzard_power_down(struct device *dev)
587 + gpio_set_value(N8X0_BLIZZARD_POWERDOWN_GPIO, 0);
588 + blizzard_enable_clocks(0);
590 + /* Vcore to 1.005V */
591 + tahvo_set_clear_reg_bits(0x07, 0xf, 0);
594 +static struct blizzard_platform_data n8x0_blizzard_data = {
595 + .power_up = blizzard_power_up,
596 + .power_down = blizzard_power_down,
597 + .get_clock_rate = blizzard_get_clock_rate,
601 +void __init n8x0_blizzard_init(void)
605 + r = gpio_request(N8X0_BLIZZARD_POWERDOWN_GPIO, "Blizzard pd");
608 + printk(KERN_ERR "Can't get N8x0 Blizzard powerdown GPIO %d\n", N8X0_BLIZZARD_POWERDOWN_GPIO);
611 + gpio_direction_output(N8X0_BLIZZARD_POWERDOWN_GPIO, 1);
613 + blizzard_get_clocks();
614 + omapfb_set_ctrl_platform_data(&n8x0_blizzard_data);
616 + printk(KERN_INFO "N8x0 Blizzard initialized");
618 Index: linux-2.6.37/arch/arm/mach-omap2/board-n8x0-usb.c
619 ===================================================================
620 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
621 +++ linux-2.6.37/arch/arm/mach-omap2/board-n8x0-usb.c 2011-01-27 14:17:29.132000007 +0100
624 + * linux/arch/arm/mach-omap2/board-n8x0-usb.c
626 + * Copyright (C) 2006 Nokia Corporation
627 + * Author: Juha Yrjola
629 + * This program is free software; you can redistribute it and/or modify
630 + * it under the terms of the GNU General Public License version 2 as
631 + * published by the Free Software Foundation.
634 +#include <linux/types.h>
635 +#include <linux/delay.h>
636 +#include <linux/platform_device.h>
637 +#include <linux/clk.h>
638 +#include <linux/err.h>
639 +#include <linux/gpio.h>
640 +#include <linux/usb/musb.h>
642 +#include <plat/gpmc.h>
644 +#define TUSB_ASYNC_CS 1
645 +#define TUSB_SYNC_CS 4
646 +#define GPIO_TUSB_INT 58
647 +#define GPIO_TUSB_ENABLE 0
649 +static int tusb_set_power(int state);
650 +static int tusb_set_clock(struct clk *osc_ck, int state);
652 +#if defined(CONFIG_USB_MUSB_OTG)
653 +# define BOARD_MODE MUSB_OTG
654 +#elif defined(CONFIG_USB_MUSB_PERIPHERAL)
655 +# define BOARD_MODE MUSB_PERIPHERAL
656 +#else /* defined(CONFIG_USB_MUSB_HOST) */
657 +# define BOARD_MODE MUSB_HOST
660 +static struct musb_hdrc_eps_bits musb_eps[] = {
693 +static struct musb_hdrc_config musb_config = {
701 + .eps_bits = musb_eps,
704 +static struct musb_hdrc_platform_data tusb_data = {
705 + .mode = BOARD_MODE,
706 + .set_power = tusb_set_power,
707 + .set_clock = tusb_set_clock,
708 + .min_power = 25, /* x2 = 50 mA drawn from VBUS as peripheral */
709 + .power = 100, /* Max 100 mA VBUS for host mode */
711 + .config = &musb_config,
715 + * Enable or disable power to TUSB6010. When enabling, turn on 3.3 V and
716 + * 1.5 V voltage regulators of PM companion chip. Companion chip will then
717 + * provide then PGOOD signal to TUSB6010 which will release it from reset.
719 +static int tusb_set_power(int state)
724 + gpio_set_value(GPIO_TUSB_ENABLE, 1);
727 + /* Wait until TUSB6010 pulls INT pin down */
729 + while (i && gpio_get_value(GPIO_TUSB_INT)) {
735 + printk(KERN_ERR "tusb: powerup failed\n");
739 + gpio_set_value(GPIO_TUSB_ENABLE, 0);
746 +static int osc_ck_on;
748 +static int tusb_set_clock(struct clk *osc_ck, int state)
754 + //omap2_block_sleep();
755 + clk_enable(osc_ck);
758 + if (osc_ck_on == 0)
761 + clk_disable(osc_ck);
763 + //omap2_allow_sleep();
769 +void __init n8x0_usb_init(void)
772 + static char announce[] __initdata = KERN_INFO "TUSB 6010\n";
774 + /* PM companion chip power control pin */
775 + ret = gpio_request(GPIO_TUSB_ENABLE, "TUSB6010 enable");
777 + printk(KERN_ERR "Could not get TUSB power GPIO%i\n",
781 + gpio_direction_output(GPIO_TUSB_ENABLE, 0);
785 + ret = tusb6010_setup_interface(&tusb_data, TUSB6010_REFCLK_19, 2,
786 + TUSB_ASYNC_CS, TUSB_SYNC_CS,
787 + GPIO_TUSB_INT, 0x3f);
796 + gpio_free(GPIO_TUSB_ENABLE);
798 Index: linux-2.6.37/arch/arm/mach-omap2/control.c
799 ===================================================================
800 --- linux-2.6.37.orig/arch/arm/mach-omap2/control.c 2011-01-27 14:17:04.403000007 +0100
801 +++ linux-2.6.37/arch/arm/mach-omap2/control.c 2011-01-27 14:17:29.132000007 +0100
803 return __raw_readw(OMAP_CTRL_REGADDR(offset));
806 +EXPORT_SYMBOL_GPL(omap_ctrl_readl);
807 u32 omap_ctrl_readl(u16 offset)
809 return __raw_readl(OMAP_CTRL_REGADDR(offset));
811 __raw_writew(val, OMAP_CTRL_REGADDR(offset));
814 +EXPORT_SYMBOL_GPL(omap_ctrl_writel);
815 void omap_ctrl_writel(u32 val, u16 offset)
817 __raw_writel(val, OMAP_CTRL_REGADDR(offset));
818 Index: linux-2.6.37/arch/arm/mach-omap2/Kconfig
819 ===================================================================
820 --- linux-2.6.37.orig/arch/arm/mach-omap2/Kconfig 2011-01-27 14:17:04.391000007 +0100
821 +++ linux-2.6.37/arch/arm/mach-omap2/Kconfig 2011-01-27 14:17:29.132000007 +0100
823 select MACH_NOKIA_N810
824 select MACH_NOKIA_N810_WIMAX
826 +config MACH_NOKIA_N8X0_LCD
828 + depends on MACH_NOKIA_N8X0 && FB_OMAP_LCDC_BLIZZARD && FB_OMAP_LCD_MIPID
831 +config MACH_NOKIA_N8X0_USB
833 + depends on MACH_NOKIA_N8X0 && MACH_OMAP2_TUSB6010
836 config MACH_NOKIA_RX51
837 bool "Nokia RX-51 board"
838 depends on ARCH_OMAP3
839 Index: linux-2.6.37/arch/arm/mach-omap2/Makefile
840 ===================================================================
841 --- linux-2.6.37.orig/arch/arm/mach-omap2/Makefile 2011-01-27 14:17:04.386000007 +0100
842 +++ linux-2.6.37/arch/arm/mach-omap2/Makefile 2011-01-27 14:17:29.132000007 +0100
846 obj-$(CONFIG_MACH_NOKIA_N8X0) += board-n8x0.o
847 +obj-$(CONFIG_MACH_NOKIA_N8X0_LCD) += board-n8x0-lcd.o
848 +obj-$(CONFIG_MACH_NOKIA_N8X0_USB) += board-n8x0-usb.o
849 obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o \
851 board-rx51-peripherals.o \
852 Index: linux-2.6.37/arch/arm/mach-omap2/serial.c
853 ===================================================================
854 --- linux-2.6.37.orig/arch/arm/mach-omap2/serial.c 2011-01-27 14:17:04.398000007 +0100
855 +++ linux-2.6.37/arch/arm/mach-omap2/serial.c 2011-01-27 14:17:29.132000007 +0100
856 @@ -546,14 +546,17 @@
861 uart->irqflags |= IRQF_SHARED;
862 ret = request_threaded_irq(uart->irq, NULL, omap_uart_interrupt,
863 IRQF_SHARED, "serial idle", (void *)uart);
868 void omap_uart_enable_irqs(int enable)
872 struct omap_uart_state *uart;
875 free_irq(uart->irq, (void *)uart);
881 static ssize_t sleep_timeout_show(struct device *dev,