]> code.ossystems Code Review - openembedded-core.git/commitdiff
linux-nokia800: Nokia 770 boots the 2.6.18 osso kernel.
authorSamuel Ortiz <sameo@openedhand.com>
Mon, 13 Aug 2007 15:42:15 +0000 (15:42 +0000)
committerSamuel Ortiz <sameo@openedhand.com>
Mon, 13 Aug 2007 15:42:15 +0000 (15:42 +0000)
Sato images are now running properly with this kernel, on a 770.

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@2486 311d38ba-8fff-0310-9ca6-ca027cbcb966

meta/packages/linux/linux-nokia800-2.6.18-osso40/nokia770/defconfig
meta/packages/linux/linux-nokia800-2.6.18-osso40/nokia770_nand_fix.patch

index eab2dea2150f0251808f974cfe720a784b0335e0..a6cbb33280d680dd1c63f9c0622e222b0891f210 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.18-omap1
-# Wed May 23 16:39:36 2007
+# Mon Aug 13 17:32:01 2007
 #
 CONFIG_ARM=y
 CONFIG_MMU=y
@@ -308,9 +308,17 @@ CONFIG_TCP_CONG_BIC=y
 # IP: Virtual Server Configuration
 #
 # CONFIG_IP_VS is not set
-# CONFIG_IPV6 is not set
+CONFIG_IPV6=y
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
 # CONFIG_INET6_XFRM_TUNNEL is not set
 # CONFIG_INET6_TUNNEL is not set
+CONFIG_INET6_XFRM_MODE_TRANSPORT=y
+CONFIG_INET6_XFRM_MODE_TUNNEL=y
+# CONFIG_IPV6_TUNNEL is not set
 # CONFIG_NETWORK_SECMARK is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
@@ -330,6 +338,11 @@ CONFIG_NETFILTER_NETLINK=y
 # CONFIG_IP_NF_CONNTRACK is not set
 # CONFIG_IP_NF_QUEUE is not set
 
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP6_NF_QUEUE is not set
+
 #
 # DCCP Configuration (EXPERIMENTAL)
 #
@@ -697,13 +710,16 @@ CONFIG_HW_CONSOLE=y
 #
 # Serial drivers
 #
-# CONFIG_SERIAL_8250 is not set
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
 
 #
 # Non-8250 serial port support
 #
-CONFIG_SERIAL_OMAP=y
-CONFIG_SERIAL_OMAP_CONSOLE=y
+# CONFIG_SERIAL_OMAP is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_UNIX98_PTYS=y
@@ -906,7 +922,7 @@ CONFIG_FB_OMAP_LCDC_EXTERNAL=y
 CONFIG_FB_OMAP_LCDC_HWA742=y
 # CONFIG_FB_OMAP_LCDC_BLIZZARD is not set
 CONFIG_FB_OMAP_MANUAL_UPDATE=y
-# CONFIG_FB_OMAP_LCD_MIPID is not set
+CONFIG_FB_OMAP_LCD_MIPID=y
 # CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
 CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=2
 # CONFIG_FB_OMAP_DMA_TUNE is not set
@@ -988,16 +1004,12 @@ CONFIG_USB_BANDWIDTH=y
 # CONFIG_USB_DYNAMIC_MINORS is not set
 CONFIG_USB_SUSPEND=y
 # CONFIG_USB_OTG is not set
-# CONFIG_USB_OTG_WHITELIST is not set
-# CONFIG_USB_OTG_BLACKLIST_HUB is not set
 
 #
 # USB Host Controller Drivers
 #
 # CONFIG_USB_ISP116X_HCD is not set
 # CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 # CONFIG_USB_SL811_HCD is not set
 # CONFIG_USB_MUSB_HDRC is not set
 # CONFIG_USB_GADGET_MUSB_HDRC is not set
@@ -1188,7 +1200,6 @@ CONFIG_CBUS=y
 CONFIG_CBUS_TAHVO=y
 CONFIG_CBUS_TAHVO_USER=y
 CONFIG_CBUS_TAHVO_USB=y
-# CONFIG_CBUS_TAHVO_USB_HOST_BY_DEFAULT is not set
 CONFIG_CBUS_RETU=y
 CONFIG_CBUS_RETU_USER=y
 CONFIG_CBUS_RETU_POWERBUTTON=y
@@ -1216,7 +1227,8 @@ CONFIG_FS_MBCACHE=y
 # CONFIG_OCFS2_FS is not set
 # CONFIG_MINIX_FS is not set
 # CONFIG_ROMFS_FS is not set
-# CONFIG_INOTIFY is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
 # CONFIG_QUOTA is not set
 CONFIG_DNOTIFY=y
 # CONFIG_AUTOFS_FS is not set
index aa801fbb5ecee2f24a109a4d517cf20def4da2a1..79d53545e36b37adec50cfe542e53e293de114d2 100644 (file)
 ---
- arch/arm/mach-omap1/mmu.c        |    1 +
- drivers/cbus/tahvo-usb.c         |    4 ++--
- drivers/i2c/chips/isp1301_omap.c |    1 +
- drivers/mtd/nand/omap-hw.c       |   37 +++++++++++++++----------------------
- drivers/video/omap/omapfb_main.c |    4 ++--
- 5 files changed, 21 insertions(+), 26 deletions(-)
+ arch/arm/mach-omap1/board-nokia770.c |   60 +++++++++++++++++++++++++++++++----
+ arch/arm/mach-omap1/mmu.c            |    1 
+ drivers/cbus/tahvo-usb.c             |    4 +-
+ drivers/i2c/chips/isp1301_omap.c     |    1 
+ drivers/mtd/mtdchar.c                |    6 +++
+ drivers/mtd/mtdpart.c                |    5 ++
+ drivers/mtd/nand/omap-hw.c           |   55 +++++++++++++++-----------------
+ drivers/serial/8250.c                |    2 +
+ drivers/video/omap/omapfb_main.c     |    4 +-
+ include/asm-arm/arch-omap/keypad.h   |    3 +
+ include/asm-arm/arch-omap/serial.h   |   16 +++++++++
+ 11 files changed, 118 insertions(+), 39 deletions(-)
 
+Index: linux-g/arch/arm/mach-omap1/board-nokia770.c
+===================================================================
+--- linux-g.orig/arch/arm/mach-omap1/board-nokia770.c  2006-11-08 13:18:39.000000000 +0100
++++ linux-g/arch/arm/mach-omap1/board-nokia770.c       2007-08-13 16:23:15.000000000 +0200
+@@ -16,6 +16,8 @@
+ #include <linux/spi/spi.h>
+ #include <linux/spi/ads7846.h>
++#include <linux/workqueue.h>
++#include <linux/delay.h>
+ #include <asm/hardware.h>
+ #include <asm/mach-types.h>
+@@ -33,9 +35,12 @@
+ #include <asm/arch/gpio.h>
+ #include <asm/arch/omapfb.h>
+ #include <asm/arch/hwa742.h>
++#include <asm/arch/lcd_mipid.h>
+ #include "../plat-omap/dsp/dsp_common.h"
++#define ADS7846_PENDOWN_GPIO  15
++
+ static void __init omap_nokia770_init_irq(void)
+ {
+       /* On Nokia 770, the SleepX signal is masked with an
+@@ -75,9 +80,11 @@
+ };
+ static struct omap_kp_platform_data nokia770_kp_data = {
+-      .rows   = 8,
+-      .cols   = 8,
+-      .keymap = nokia770_keymap
++      .rows           = 8,
++      .cols           = 8,
++      .keymap         = nokia770_keymap,
++      .keymapsize     = ARRAY_SIZE(nokia770_keymap),
++      .delay          = 4,
+ };
+ static struct platform_device nokia770_kp_device = {
+@@ -94,6 +101,41 @@
+       &nokia770_kp_device,
+ };
++static void mipid_shutdown(struct mipid_platform_data *pdata)
++{
++      if (pdata->nreset_gpio != -1) {
++              printk(KERN_INFO "shutdown LCD\n");
++              omap_set_gpio_dataout(pdata->nreset_gpio, 0);
++              msleep(120);
++      }
++}
++
++static struct mipid_platform_data nokia770_mipid_platform_data = {
++      .shutdown = mipid_shutdown,
++};
++
++static void mipid_dev_init(void)
++{
++      const struct omap_lcd_config *conf;
++
++      conf = omap_get_config(OMAP_TAG_LCD, struct omap_lcd_config);
++      if (conf != NULL) {
++              nokia770_mipid_platform_data.nreset_gpio = conf->nreset_gpio;
++              nokia770_mipid_platform_data.data_lines = conf->data_lines;
++      }
++}
++
++static void ads7846_dev_init(void)
++{
++      if (omap_request_gpio(ADS7846_PENDOWN_GPIO) < 0)
++              printk(KERN_ERR "can't get ads7846 pen down GPIO\n");
++}
++
++static int ads7846_get_pendown_state(void)
++{
++      return !omap_get_gpio_datain(ADS7846_PENDOWN_GPIO);
++}
++
+ static struct ads7846_platform_data nokia770_ads7846_platform_data __initdata = {
+       .x_max          = 0x0fff,
+       .y_max          = 0x0fff,
+@@ -101,14 +143,17 @@
+       .pressure_max   = 255,
+       .debounce_max   = 10,
+       .debounce_tol   = 3,
++      .debounce_rep   = 1,
++      .get_pendown_state      = ads7846_get_pendown_state,
+ };
+ static struct spi_board_info nokia770_spi_board_info[] __initdata = {
+       [0] = {
+-              .modalias       = "lcd_lph8923",
++              .modalias       = "lcd_mipid",
+               .bus_num        = 2,
+               .chip_select    = 3,
+               .max_speed_hz   = 12000000,
++              .platform_data  = &nokia770_mipid_platform_data,
+       },
+       [1] = {
+               .modalias       = "ads7846",
+@@ -189,7 +234,7 @@
+       },
+ };
+-static struct omap_board_config_kernel nokia770_config[] = {
++static struct omap_board_config_kernel nokia770_config[] __initdata = {
+       { OMAP_TAG_USB,         NULL },
+       { OMAP_TAG_MMC,         &nokia770_mmc_config },
+ };
+@@ -235,7 +280,7 @@
+               printk("HP connected\n");
+ }
+-static void codec_delayed_power_down(void *arg)
++static void codec_delayed_power_down(struct work_struct *work)
+ {
+       down(&audio_pwr_sem);
+       if (audio_pwr_state == -1)
+@@ -326,9 +371,12 @@
+                               ARRAY_SIZE(nokia770_spi_board_info));
+       omap_board_config = nokia770_config;
+       omap_board_config_size = ARRAY_SIZE(nokia770_config);
++      omap_gpio_init();
+       omap_serial_init();
+       omap_dsp_init();
+       hwa742_dev_init();
++      ads7846_dev_init();
++      mipid_dev_init();
+ }
+ static void __init omap_nokia770_map_io(void)
 Index: linux-g/arch/arm/mach-omap1/mmu.c
 ===================================================================
---- linux-g.orig/arch/arm/mach-omap1/mmu.c     2007-05-23 18:05:21.000000000 +0100
-+++ linux-g/arch/arm/mach-omap1/mmu.c  2007-05-23 18:05:23.000000000 +0100
+--- linux-g.orig/arch/arm/mach-omap1/mmu.c     2007-08-13 13:54:01.000000000 +0200
++++ linux-g/arch/arm/mach-omap1/mmu.c  2007-08-13 16:23:15.000000000 +0200
 @@ -29,6 +29,7 @@
  #include <linux/kernel.h>
  #include <linux/mm.h>
@@ -20,9 +159,9 @@ Index: linux-g/arch/arm/mach-omap1/mmu.c
  
 Index: linux-g/drivers/cbus/tahvo-usb.c
 ===================================================================
---- linux-g.orig/drivers/cbus/tahvo-usb.c      2006-11-08 12:18:51.000000000 +0000
-+++ linux-g/drivers/cbus/tahvo-usb.c   2007-05-23 18:05:23.000000000 +0100
-@@ -135,8 +135,8 @@ static irqreturn_t omap_otg_irq(int irq,
+--- linux-g.orig/drivers/cbus/tahvo-usb.c      2006-11-08 13:18:51.000000000 +0100
++++ linux-g/drivers/cbus/tahvo-usb.c   2007-08-13 16:23:15.000000000 +0200
+@@ -135,8 +135,8 @@
                if ((!(OTG_CTRL_REG & OTG_DRIVER_SEL)) &&
                   tu->otg.host && tu->otg.state == OTG_STATE_A_HOST) {
                        /* role is host */
@@ -35,8 +174,8 @@ Index: linux-g/drivers/cbus/tahvo-usb.c
        } else
 Index: linux-g/drivers/i2c/chips/isp1301_omap.c
 ===================================================================
---- linux-g.orig/drivers/i2c/chips/isp1301_omap.c      2006-11-08 12:18:51.000000000 +0000
-+++ linux-g/drivers/i2c/chips/isp1301_omap.c   2007-05-23 18:05:23.000000000 +0100
+--- linux-g.orig/drivers/i2c/chips/isp1301_omap.c      2006-11-08 13:18:51.000000000 +0100
++++ linux-g/drivers/i2c/chips/isp1301_omap.c   2007-08-13 16:23:15.000000000 +0200
 @@ -32,6 +32,7 @@
  #include <linux/usb_gadget.h>
  #include <linux/usb.h>
@@ -45,11 +184,44 @@ Index: linux-g/drivers/i2c/chips/isp1301_omap.c
  #include <linux/i2c.h>
  #include <linux/workqueue.h>
  
+Index: linux-g/drivers/mtd/mtdchar.c
+===================================================================
+--- linux-g.orig/drivers/mtd/mtdchar.c 2006-11-08 13:18:55.000000000 +0100
++++ linux-g/drivers/mtd/mtdchar.c      2007-08-13 16:23:15.000000000 +0200
+@@ -622,6 +622,12 @@
+               break;
+       }
++        case MEMSETOOBSEL:
++        {
++                break;
++        }
++
++
+       case MEMGETBADBLOCK:
+       {
+               loff_t offs;
+Index: linux-g/drivers/mtd/mtdpart.c
+===================================================================
+--- linux-g.orig/drivers/mtd/mtdpart.c 2006-11-08 13:18:55.000000000 +0100
++++ linux-g/drivers/mtd/mtdpart.c      2007-08-13 16:23:15.000000000 +0200
+@@ -200,6 +200,11 @@
+               return -EINVAL;
+       instr->addr += part->offset;
+       ret = part->master->erase(part->master, instr);
++      if (ret) {
++              if (instr->fail_addr != 0xffffffff)
++                      instr->fail_addr -= part->offset;
++              instr->addr -= part->offset;
++      }
+       return ret;
+ }
 Index: linux-g/drivers/mtd/nand/omap-hw.c
 ===================================================================
---- linux-g.orig/drivers/mtd/nand/omap-hw.c    2006-11-08 12:18:55.000000000 +0000
-+++ linux-g/drivers/mtd/nand/omap-hw.c 2007-05-23 18:05:23.000000000 +0100
-@@ -386,11 +386,6 @@ static u_char omap_nand_read_byte(struct
+--- linux-g.orig/drivers/mtd/nand/omap-hw.c    2006-11-08 13:18:55.000000000 +0100
++++ linux-g/drivers/mtd/nand/omap-hw.c 2007-08-13 16:23:15.000000000 +0200
+@@ -386,11 +386,6 @@
        return nand_read_reg8(NND_ACCESS);
  }
  
@@ -61,7 +233,7 @@ Index: linux-g/drivers/mtd/nand/omap-hw.c
  static int omap_nand_dev_ready(struct mtd_info *mtd)
  {
        u32 l;
-@@ -425,9 +420,9 @@ static void omap_nand_command(struct mtd
+@@ -425,9 +420,9 @@
        if (command == NAND_CMD_SEQIN) {
                int readcmd;
  
@@ -73,7 +245,7 @@ Index: linux-g/drivers/mtd/nand/omap-hw.c
                        readcmd = NAND_CMD_READOOB;
                } else if (column < 256) {
                        /* First 256 bytes --> READ0 */
-@@ -458,7 +453,7 @@ static void omap_nand_command_lp(struct 
+@@ -458,7 +453,7 @@
        struct nand_chip *this = mtd->priv;
  
        if (command == NAND_CMD_READOOB) {
@@ -82,30 +254,32 @@ Index: linux-g/drivers/mtd/nand/omap-hw.c
                command = NAND_CMD_READ0;
        }
        switch (command) {
-@@ -495,7 +490,7 @@ static int omap_nand_calculate_ecc(struc
+@@ -495,7 +490,8 @@
        int n;
        struct nand_chip *this = mtd->priv;
  
 -      if (this->eccmode == NAND_ECC_HW12_2048)
-+      if (this->ecc.size == 2048)
++      /* Ex NAND_ECC_HW12_2048 */
++      if ((this->ecc.mode == NAND_ECC_HW) && (this->ecc.size  == 2048))
                n = 4;
        else
                n = 1;
-@@ -642,7 +637,7 @@ static int omap_nand_correct_data(struct
+@@ -642,7 +638,8 @@
        int block_count = 0, i, r;
  
        this = mtd->priv;
 -      if (this->eccmode == NAND_ECC_HW12_2048)
-+      if (this->ecc.size == 2048)
++      /* Ex NAND_ECC_HW12_2048 */
++      if ((this->ecc.mode == NAND_ECC_HW) && (this->ecc.size  == 2048))
                block_count = 4;
        else
                block_count = 1;
-@@ -672,17 +667,17 @@ static int __init add_dynamic_parts(stru
+@@ -672,12 +669,12 @@
  {
        static const char *part_parsers[] = { "cmdlinepart", NULL };
        struct mtd_partition *parts;
 -      const struct omap_flash_part_config *cfg;
-+      void *cfg;
++      const struct omap_flash_part_str_config *cfg;
        char *part_str = NULL;
        size_t part_str_len;
        int c;
@@ -115,38 +289,40 @@ Index: linux-g/drivers/mtd/nand/omap-hw.c
        if (cfg != NULL) {
                part_str = kmalloc(part_str_len + 1, GFP_KERNEL);
                if (part_str == NULL)
-                       return -ENOMEM;
--              memcpy(part_str, cfg->part_table, part_str_len);
-+              memcpy(part_str, cfg, part_str_len);
-               part_str[part_str_len] = '\0';
-               mtdpart_setup(part_str);
-       }
-@@ -794,19 +789,19 @@ static int __init omap_nand_init(void)
+@@ -794,19 +791,20 @@
  
        /* Used from chip select and nand_command() */
        this->read_byte = omap_nand_read_byte;
 -      this->write_byte = omap_nand_write_byte;
  
-       this->select_chip = omap_nand_select_chip;
-       this->dev_ready = omap_nand_dev_ready;
-       this->chip_delay = 0;
+-      this->select_chip = omap_nand_select_chip;
+-      this->dev_ready = omap_nand_dev_ready;
+-      this->chip_delay = 0;
 -      this->eccmode = NAND_ECC_HW3_512; 
-+      this->ecc.size = 512;
-+      this->ecc.bytes = 3;
-       this->cmdfunc = omap_nand_command;
-       this->write_buf = omap_nand_write_buf;
-       this->read_buf = omap_nand_read_buf;
-       this->verify_buf = omap_nand_verify_buf;
+-      this->cmdfunc = omap_nand_command;
+-      this->write_buf = omap_nand_write_buf;
+-      this->read_buf = omap_nand_read_buf;
+-      this->verify_buf = omap_nand_verify_buf;
 -      this->calculate_ecc = omap_nand_calculate_ecc;
 -      this->correct_data = omap_nand_correct_data;
 -      this->enable_hwecc = omap_nand_enable_hwecc;
++      this->select_chip   = omap_nand_select_chip;
++      this->dev_ready     = omap_nand_dev_ready;
++      this->chip_delay    = 0;
++      this->ecc.mode      = NAND_ECC_HW;
++      this->ecc.bytes     = 3;
++      this->ecc.size      = 512;
++      this->cmdfunc       = omap_nand_command;
++      this->write_buf     = omap_nand_write_buf;
++      this->read_buf      = omap_nand_read_buf;
++      this->verify_buf    = omap_nand_verify_buf;
 +      this->ecc.calculate = omap_nand_calculate_ecc;
-+      this->ecc.correct = omap_nand_correct_data;
-+      this->ecc.hwctl = omap_nand_enable_hwecc;
++      this->ecc.correct   = omap_nand_correct_data;
++      this->ecc.hwctl     = omap_nand_enable_hwecc;
  
        nand_write_reg(NND_SYSCFG, 0x1); /* Enable auto idle */
        nand_write_reg(NND_PSC_CLK, 10);
-@@ -822,10 +817,8 @@ static int __init omap_nand_init(void)
+@@ -822,11 +820,10 @@
                l = nand_read_reg(NND_CTRL);
                l |= 1 << 4; /* Set the A8 bit in CTRL reg */
                nand_write_reg(NND_CTRL, l);
@@ -154,16 +330,32 @@ Index: linux-g/drivers/mtd/nand/omap-hw.c
 -              this->eccsteps = 1;
 -              this->eccsize = 2048;
 -              this->eccbytes = 12;
+-              omap_mtd->eccsize = 2048;
++              this->ecc.mode = NAND_ECC_HW;
++              this->ecc.steps = 1;
 +              this->ecc.size = 2048;
 +              this->ecc.bytes = 12;
-               omap_mtd->eccsize = 2048;
                nand_write_reg(NND_ECC_SELECT, 6);
        }
+Index: linux-g/drivers/serial/8250.c
+===================================================================
+--- linux-g.orig/drivers/serial/8250.c 2006-11-08 13:18:59.000000000 +0100
++++ linux-g/drivers/serial/8250.c      2007-08-13 16:23:15.000000000 +0200
+@@ -44,6 +44,8 @@
+ #include <asm/io.h>
+ #include <asm/irq.h>
++#include <asm/arch/serial.h>
++
+ #include "8250.h"
+ /*
 Index: linux-g/drivers/video/omap/omapfb_main.c
 ===================================================================
---- linux-g.orig/drivers/video/omap/omapfb_main.c      2007-05-23 18:05:21.000000000 +0100
-+++ linux-g/drivers/video/omap/omapfb_main.c   2007-05-23 22:27:39.000000000 +0100
-@@ -110,7 +110,7 @@ static struct lcd_ctrl *ctrls[] = {
+--- linux-g.orig/drivers/video/omap/omapfb_main.c      2007-08-13 13:54:01.000000000 +0200
++++ linux-g/drivers/video/omap/omapfb_main.c   2007-08-13 16:23:15.000000000 +0200
+@@ -110,7 +110,7 @@
  
  #ifdef CONFIG_FB_OMAP_LCDC_EXTERNAL
  #ifdef CONFIG_ARCH_OMAP1
@@ -172,7 +364,7 @@ Index: linux-g/drivers/video/omap/omapfb_main.c
  #else
  extern struct lcd_ctrl_extif omap2_ext_if;
  #endif
-@@ -1658,7 +1658,7 @@ static int omapfb_do_probe(struct platfo
+@@ -1658,7 +1658,7 @@
  #ifdef CONFIG_ARCH_OMAP1
        fbdev->int_ctrl = &omap1_int_ctrl;
  #ifdef CONFIG_FB_OMAP_LCDC_EXTERNAL
@@ -181,3 +373,43 @@ Index: linux-g/drivers/video/omap/omapfb_main.c
  #endif
  #else /* OMAP2 */
        fbdev->int_ctrl = &omap2_int_ctrl;
+Index: linux-g/include/asm-arm/arch-omap/keypad.h
+===================================================================
+--- linux-g.orig/include/asm-arm/arch-omap/keypad.h    2006-11-08 13:19:11.000000000 +0100
++++ linux-g/include/asm-arm/arch-omap/keypad.h 2007-08-13 16:23:15.000000000 +0200
+@@ -14,7 +14,10 @@
+       int rows;
+       int cols;
+       int *keymap;
++      unsigned int keymapsize;
+       unsigned int rep:1;
++      unsigned long delay;
++      unsigned int dbounce:1;
+       /* specific to OMAP242x*/
+       unsigned int *row_gpios;
+       unsigned int *col_gpios;
+Index: linux-g/include/asm-arm/arch-omap/serial.h
+===================================================================
+--- linux-g.orig/include/asm-arm/arch-omap/serial.h    2007-08-13 13:54:01.000000000 +0200
++++ linux-g/include/asm-arm/arch-omap/serial.h 2007-08-13 16:23:15.000000000 +0200
+@@ -26,4 +26,20 @@
+ #define OMAP1510_BASE_BAUD    (12000000/16)
+ #define OMAP16XX_BASE_BAUD    (48000000/16)
++#define is_omap_port(p) ({int __ret = 0;                        \
++                         if (p == IO_ADDRESS(OMAP_UART1_BASE) || \
++                             p == IO_ADDRESS(OMAP_UART2_BASE) || \
++                             p == IO_ADDRESS(OMAP_UART3_BASE))   \
++                                 __ret = 1;                      \
++                         __ret;                                  \
++                         })
++
++#define is_omap_port(p) ({int __ret = 0;                        \
++                         if (p == IO_ADDRESS(OMAP_UART1_BASE) || \
++                             p == IO_ADDRESS(OMAP_UART2_BASE) || \
++                             p == IO_ADDRESS(OMAP_UART3_BASE))   \
++                                 __ret = 1;                      \
++                         __ret;                                  \
++                         })
++
+ #endif