]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge omap-drivers
authorTony Lindgren <tony@atomide.com>
Thu, 24 May 2007 23:56:22 +0000 (16:56 -0700)
committerTony Lindgren <tony@atomide.com>
Thu, 24 May 2007 23:56:22 +0000 (16:56 -0700)
Merge branches 'master' and 'omap-drivers'

Conflicts:

arch/arm/configs/omap_h2_1610_defconfig
arch/arm/configs/omap_osk_5912_defconfig
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-palmte.c
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/board-2430sdp.c
arch/arm/mach-omap2/board-apollon-keys.c
arch/arm/mach-omap2/board-h4.c
arch/arm/mach-omap2/board-n800-audio.c
arch/arm/mach-omap2/board-n800-dsp.c
arch/arm/mach-omap2/board-n800-usb.c
arch/arm/mach-omap2/devices.c
arch/arm/mach-omap2/io.c
arch/arm/mach-omap2/pm.c
arch/arm/plat-omap/Makefile
arch/arm/plat-omap/dsp/dsp_common.c
drivers/Makefile
drivers/i2c/busses/i2c-omap.c
drivers/i2c/chips/Kconfig
drivers/i2c/chips/Makefile
drivers/i2c/chips/menelaus.c
drivers/i2c/chips/tlv320aic23.c
drivers/i2c/chips/twl4030_core.c
include/asm-arm/arch-omap/board-2430sdp.h
include/asm-arm/arch-omap/eac.h
include/asm-arm/arch-omap/gpio.h
include/asm-arm/arch-omap/mmc.h
include/asm-arm/arch-omap/omap24xx.h
include/asm-arm/arch-omap/onenand.h
include/asm-arm/arch-omap/pm.h
include/asm-arm/arch-omap/twl4030.h
include/asm-arm/hardware/tsc2101.h
include/linux/i2c-id.h
net/ipv4/netfilter/Kconfig

1  2 
Makefile
arch/arm/Kconfig
arch/arm/mach-omap1/board-osk.c
arch/arm/mach-omap1/pm.c
arch/arm/mach-omap2/clock.c
arch/arm/mach-omap2/clock.h
arch/arm/plat-omap/common.c
drivers/char/Kconfig
drivers/input/touchscreen/Kconfig

diff --combined Makefile
index 61b3e03f776cf2793b52189d1cf6913a72a2a468,34210af91ce2f575d770bd7de61a646768ace9d2..402a0ea239542190a3e9f8d273c3e6135e7d2cdf
+++ b/Makefile
@@@ -1,7 -1,7 +1,7 @@@
  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 22
- EXTRAVERSION = -rc1
+ EXTRAVERSION = -rc2
  NAME = Nocturnal Monster Puppy
  
  # *DOCUMENTATION*
@@@ -16,9 -16,6 +16,9 @@@
  # o  print "Entering directory ...";
  MAKEFLAGS += -rR --no-print-directory
  
 +# Add custom flags here to avoid conflict with updates
 +EXTRAVERSION := $(EXTRAVERSION)-omap1
 +
  # We are using a recursive build, so we need to do a little thinking
  # to get the ordering right.
  #
@@@ -166,8 -163,6 +166,8 @@@ SUBARCH := $(shell uname -m | sed -e s/
                                  -e s/s390x/s390/ -e s/parisc64/parisc/ \
                                  -e s/ppc.*/powerpc/ -e s/mips.*/mips/ )
  
 +SUBARCH := arm
 +
  # Cross compiling and selecting different set of gcc/bin-utils
  # ---------------------------------------------------------------------------
  #
  # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
  
  ARCH          ?= $(SUBARCH)
 -CROSS_COMPILE ?=
 +CROSS_COMPILE ?= arm-linux-
  
  # Architecture as present in compile.h
  UTS_MACHINE := $(ARCH)
@@@ -496,7 -491,7 +496,7 @@@ endi
  include $(srctree)/arch/$(ARCH)/Makefile
  
  ifdef CONFIG_FRAME_POINTER
- CFLAGS                += -fno-omit-frame-pointer -fno-optimize-sibling-calls
+ CFLAGS                += -fno-omit-frame-pointer $(call cc-option,-fno-optimize-sibling-calls,)
  else
  CFLAGS                += -fomit-frame-pointer
  endif
diff --combined arch/arm/Kconfig
index 16bc321382eedb859e7c6fc8f6f19a1ccd68e13a,07c57f930c76a713ae6a5e85cb31c48119976b39..5802de6038a71ab309bec72c6efab6d9689c1d14
@@@ -287,6 -287,7 +287,7 @@@ config ARCH_IXP200
  config ARCH_IXP4XX
        bool "IXP4xx-based"
        depends on MMU
+       select GENERIC_GPIO
        select GENERIC_TIME
        select GENERIC_CLOCKEVENTS
        help
@@@ -390,7 -391,6 +391,7 @@@ config ARCH_OMA
        bool "TI OMAP"
        select GENERIC_GPIO
        select GENERIC_TIME
 +      select GENERIC_CLOCKEVENTS
        help
          Support for TI's OMAP platform (OMAP1 and OMAP2).
  
index d8337085701c767cd310a588df03da3615c996b3,1825781f4354468b3ef6893943fd39f36e1accfc..39bc97732c6bcd2d03c9ff9514da5136faf7cb1f
@@@ -237,7 -237,7 +237,7 @@@ static struct omap_lcd_config osk_lcd_c
  };
  #endif
  
 -static struct omap_board_config_kernel osk_config[] = {
 +static struct omap_board_config_kernel osk_config[] __initdata = {
        { OMAP_TAG_USB,           &osk_usb_config },
        { OMAP_TAG_UART,                &osk_uart_config },
  #ifdef        CONFIG_OMAP_OSK_MISTRAL
@@@ -440,7 -440,7 +440,7 @@@ static void __init osk_init(void
        /* Workaround for wrong CS3 (NOR flash) timing
         * There are some U-Boot versions out there which configure
         * wrong CS3 memory timings. This mainly leads to CRC
-        * or similiar errors if you use NOR flash (e.g. with JFFS2)
+        * or similar errors if you use NOR flash (e.g. with JFFS2)
         */
        if (EMIFS_CCS(3) != EMIFS_CS3_VAL)
                EMIFS_CCS(3) = EMIFS_CS3_VAL;
diff --combined arch/arm/mach-omap1/pm.c
index 130bafa0a9fcd0154465297f309aa104c6af38af,089b8208de0e4b25cb1b1a34a2d2b3a816ad802d..0a3483b236b485d9d760df7a7e37e377e2c5e9d4
@@@ -98,6 -98,7 +98,6 @@@ static struct subsys_attribute sleep_wh
        .store  = omap_pm_sleep_while_idle_store,
  };
  
 -extern struct kset power_subsys;
  static void (*omap_sram_idle)(void) = NULL;
  static void (*omap_sram_suspend)(unsigned long r0, unsigned long r1) = NULL;
  
@@@ -428,7 -429,7 +428,7 @@@ void omap_pm_suspend(void
                omap_writew(0, ULPD_SOFT_DISABLE_REQ_REG);
  
        /*
-        * Reenable interrupts
+        * Re-enable interrupts
         */
  
        local_irq_enable();
index d60d1717f1ff504cc92910b7c3b856fc0f94ec66,d9af4367f8bb033376c1f2863bc0de95c27d70f4..e05534df9432d99b2fa73db5d74c6f288ea638d4
@@@ -97,7 -97,7 +97,7 @@@ static void omap2_clk_fixed_enable(stru
  {
        u32 cval, i=0;
  
 -      if (clk->enable_bit == 0xff)                    /* Parent will do it */
 +      if (clk->enable_bit == PARENT_CONTROLS_CLOCK)   /* Parent will do it */
                return;
  
        cval = CM_CLKEN_PLL;
@@@ -205,8 -205,8 +205,8 @@@ static void omap2_clk_fixed_disable(str
  {
        u32 cval;
  
 -      if(clk->enable_bit == 0xff)             /* let parent off do it */
 -              return;
 +      if (clk->enable_bit == PARENT_CONTROLS_CLOCK)
 +              return;         /* let parent off do it */
  
        cval = CM_CLKEN_PLL;
        cval &= ~(0x3 << clk->enable_bit);
@@@ -443,7 -443,7 +443,7 @@@ static long omap2_clk_round_rate(struc
  
  /*
   * Check the DLL lock state, and return tue if running in unlock mode.
-  * This is needed to compenste for the shifted DLL value in unlock mode.
+  * This is needed to compensate for the shifted DLL value in unlock mode.
   */
  static u32 omap2_dll_force_needed(void)
  {
@@@ -651,7 -651,7 +651,7 @@@ static u32 omap2_get_clksel(u32 *div_se
                break;
        case CM_SYSCLKOUT_SEL1:
                div_addr = (u32)&PRCM_CLKOUT_CTRL;
 -              if ((div_off == 3) || (div_off = 11))
 +              if ((div_off == 3) || (div_off == 11))
                        mask= 0x3;
                break;
        case CM_CORE_SEL1:
index ba26e16fd5765e9b663c1f2b0cb747806c7cb4d4,4f791866b910900bdd1b40058929e6acd408976f..ef0189ca1e2a7e93e3c3c92d8d75e3ed8023ef92
@@@ -29,8 -29,6 +29,8 @@@ static void omap2_sys_clk_recalc(struc
  static u32 omap2_clksel_to_divisor(u32 div_sel, u32 field_val);
  static u32 omap2_clksel_get_divisor(struct clk *clk);
  
 +/* REVISIT: should use a clock flag for this, not a magic number */
 +#define PARENT_CONTROLS_CLOCK 0xff
  
  #define RATE_IN_242X  (1 << 0)
  #define RATE_IN_243X  (1 << 1)
@@@ -176,7 -174,7 +176,7 @@@ struct prcm_config 
  #define RII_CLKSEL_DSP                        (3 << 0)        /* c5x - 200MHz */
  #define RII_CLKSEL_DSP_IF             (2 << 5)        /* c5x - 100MHz */
  #define RII_SYNC_DSP                  (0 << 7)        /* Bypass sync */
 -#define RII_CLKSEL_IVA                        (6 << 8)        /* iva1 - 200MHz */
 +#define RII_CLKSEL_IVA                        (3 << 8)        /* iva1 - 200MHz */
  #define RII_SYNC_IVA                  (0 << 13)       /* Bypass sync */
  #define RII_CM_CLKSEL_DSP_VAL         RII_SYNC_IVA | RII_CLKSEL_IVA | \
                                        RII_SYNC_DSP | RII_CLKSEL_DSP_IF | \
  #define RII_CLKSEL_GFX                        (2 << 0)        /* 50MHz */
  #define RII_CM_CLKSEL_GFX_VAL         RII_CLKSEL_GFX
  
 +/* 2420-PRCM I 660MHz core */
 +#define RI_CLKSEL_L3                  (4 << 0)        /* 165MHz */
 +#define RI_CLKSEL_L4                  (2 << 5)        /* 82.5MHz */
 +#define RI_CLKSEL_USB                 (4 << 25)       /* 41.25MHz */
 +#define RI_CM_CLKSEL1_CORE_VAL                RI_CLKSEL_USB | \
 +                                      RXX_CLKSEL_SSI | RXX_CLKSEL_VLYNQ | \
 +                                      RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
 +                                      RI_CLKSEL_L4 | RI_CLKSEL_L3
 +#define RI_CLKSEL_MPU                 (2 << 0)        /* 330MHz */
 +#define RI_CM_CLKSEL_MPU_VAL          RI_CLKSEL_MPU
 +#define RI_CLKSEL_DSP                 (3 << 0)        /* c5x - 220MHz */
 +#define RI_CLKSEL_DSP_IF              (2 << 5)        /* c5x - 110MHz */
 +#define RI_SYNC_DSP                   (1 << 7)        /* Activate sync */
 +#define RI_CLKSEL_IVA                 (4 << 8)        /* iva1 - 165MHz */
 +#define RI_SYNC_IVA                   (0 << 13)       /* Bypass sync */
 +#define RI_CM_CLKSEL_DSP_VAL          RI_SYNC_IVA | RI_CLKSEL_IVA | \
 +                                      RI_SYNC_DSP | RI_CLKSEL_DSP_IF | \
 +                                      RI_CLKSEL_DSP
 +#define RI_CLKSEL_GFX                 (1 << 0)        /* 165MHz */
 +#define RI_CM_CLKSEL_GFX_VAL          RI_CLKSEL_GFX
 +
  /* 2420-PRCM VII (boot) */
  #define RVII_CLKSEL_L3                        (1 << 0)
  #define RVII_CLKSEL_L4                        (1 << 5)
   * boot (boot)
   */
  
 +/* PRCM I target DPLL = 2*330MHz = 660MHz */
 +#define MI_DPLL_MULT_12                       (55 << 12)
 +#define MI_DPLL_DIV_12                        (1 << 8)
 +#define MI_CM_CLKSEL1_PLL_12_VAL      MX_48M_SRC | MX_54M_SRC | \
 +                                      MI_DPLL_DIV_12 | MI_DPLL_MULT_12 | \
 +                                      MX_APLLS_CLIKIN_12
 +
  /*
   * 2420 Equivalent - mode registers
   * PRCM II , target DPLL = 2*300MHz = 600MHz
  /*
   * These represent optimal values for common parts, it won't work for all.
   * As long as you scale down, most parameters are still work, they just
-  * become sub-optimal. The RFR value goes in the oppisite direction. If you
+  * become sub-optimal. The RFR value goes in the opposite direction. If you
   * don't adjust it down as your clock period increases the refresh interval
   * will not be met. Setting all parameters for complete worst case may work,
   * but may cut memory performance by 2x. Due to errata the DLLs need to be
   * By having the boot loader boot up in the fastest L4 speed available likely
   * will result in something which you can switch between.
   */
 +#define V24XX_SDRC_RFR_CTRL_165MHz    (0x00044c00 | 1)
  #define V24XX_SDRC_RFR_CTRL_133MHz    (0x0003de00 | 1)
  #define V24XX_SDRC_RFR_CTRL_100MHz    (0x0002da01 | 1)
  #define V24XX_SDRC_RFR_CTRL_110MHz    (0x0002da01 | 1) /* Need to calc */
   * Filling in table based on H4 boards and 2430-SDPs variants available.
   * There are quite a few more rates combinations which could be defined.
   *
-  * When multiple values are defiend the start up will try and choose the
+  * When multiple values are defined the start up will try and choose the
   * fastest one. If a 'fast' value is defined, then automatically, the /2
   * one should be included as it can be used.  Generally having more that
   * one fast set does not make sense, as static timings need to be changed
   * Note: This table needs to be sorted, fastest to slowest.
   *-------------------------------------------------------------------------*/
  static struct prcm_config rate_table[] = {
 +      /* PRCM I - FAST */
 +      {S12M, S660M, S330M, RI_CM_CLKSEL_MPU_VAL,              /* 330MHz ARM */
 +              RI_CM_CLKSEL_DSP_VAL, RI_CM_CLKSEL_GFX_VAL,
 +              RI_CM_CLKSEL1_CORE_VAL, MI_CM_CLKSEL1_PLL_12_VAL,
 +              MX_CLKSEL2_PLL_2x_VAL, 0, V24XX_SDRC_RFR_CTRL_165MHz,
 +              RATE_IN_242X},
 +
        /* PRCM II - FAST */
        {S12M, S600M, S300M, RII_CM_CLKSEL_MPU_VAL,             /* 300MHz ARM */
                RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL,
@@@ -666,7 -628,7 +666,7 @@@ static struct clk func_54m_ck = 
                                RATE_FIXED | CM_PLL_SEL1 | RATE_PROPAGATES,
        .src_offset     = 5,
        .enable_reg     = (void __iomem *)&CM_CLKEN_PLL,
 -      .enable_bit     = 0xff,
 +      .enable_bit     = PARENT_CONTROLS_CLOCK,
        .recalc         = &omap2_propagate_rate,
  };
  
@@@ -693,7 -655,7 +693,7 @@@ static struct clk func_96m_ck = 
        .flags          = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X |
                                RATE_FIXED | RATE_PROPAGATES,
        .enable_reg     = (void __iomem *)&CM_CLKEN_PLL,
 -      .enable_bit     = 0xff,
 +      .enable_bit     = PARENT_CONTROLS_CLOCK,
        .recalc         = &omap2_propagate_rate,
  };
  
@@@ -705,7 -667,7 +705,7 @@@ static struct clk func_48m_ck = 
                                RATE_FIXED | CM_PLL_SEL1 | RATE_PROPAGATES,
        .src_offset     = 3,
        .enable_reg     = (void __iomem *)&CM_CLKEN_PLL,
 -      .enable_bit     = 0xff,
 +      .enable_bit     = PARENT_CONTROLS_CLOCK,
        .recalc         = &omap2_propagate_rate,
  };
  
@@@ -717,7 -679,7 +717,7 @@@ static struct clk func_12m_ck = 
                                RATE_FIXED | RATE_PROPAGATES,
        .recalc         = &omap2_propagate_rate,
        .enable_reg     = (void __iomem *)&CM_CLKEN_PLL,
 -      .enable_bit     = 0xff,
 +      .enable_bit     = PARENT_CONTROLS_CLOCK,
  };
  
  /* Secure timer, only available in secure mode */
@@@ -834,7 -796,7 +834,7 @@@ static struct clk dsp_ick = 
        .parent         = &dsp_fck,
        .flags          = CLOCK_IN_OMAP242X | RATE_CKCTL | CM_DSP_SEL1 |
                                DELAYED_APP | CONFIG_PARTICIPANT,
 -      .rate_offset = 5,
 +      .rate_offset    = 5,
        .enable_reg     = (void __iomem *)&CM_ICLKEN_DSP,
        .enable_bit     = 1,            /* for ipi */
        .recalc         = &omap2_clksel_recalc,
@@@ -845,7 -807,7 +845,7 @@@ static struct clk iva1_ifck = 
        .parent         = &core_ck,
        .flags          = CLOCK_IN_OMAP242X | CM_DSP_SEL1 | RATE_CKCTL |
                        CONFIG_PARTICIPANT | RATE_PROPAGATES | DELAYED_APP,
 -      .rate_offset= 8,
 +      .rate_offset    = 8,
        .enable_reg     = (void __iomem *)&CM_FCLKEN_DSP,
        .enable_bit     = 10,
        .recalc         = &omap2_clksel_recalc,
@@@ -899,7 -861,7 +899,7 @@@ static struct clk usb_l4_ick = {   /* FS-
                                CONFIG_PARTICIPANT,
        .enable_reg     = (void __iomem *)&CM_ICLKEN2_CORE,
        .enable_bit     = 0,
 -      .rate_offset = 25,
 +      .rate_offset    = 25,
        .recalc         = &omap2_clksel_recalc,
  };
  
@@@ -918,7 -880,7 +918,7 @@@ static struct clk ssi_ssr_sst_fck = 
                                RATE_CKCTL | CM_CORE_SEL1 | DELAYED_APP,
        .enable_reg     = (void __iomem *)&CM_FCLKEN2_CORE,     /* bit 1 */
        .enable_bit     = 1,
 -      .rate_offset = 20,
 +      .rate_offset    = 20,
        .recalc         = &omap2_clksel_recalc,
  };
  
@@@ -940,7 -902,7 +940,7 @@@ static struct clk gfx_3d_fck = 
                                RATE_CKCTL | CM_GFX_SEL1,
        .enable_reg     = (void __iomem *)&CM_FCLKEN_GFX,
        .enable_bit     = 2,
 -      .rate_offset= 0,
 +      .rate_offset    = 0,
        .recalc         = &omap2_clksel_recalc,
  };
  
@@@ -951,7 -913,7 +951,7 @@@ static struct clk gfx_2d_fck = 
                                RATE_CKCTL | CM_GFX_SEL1,
        .enable_reg     = (void __iomem *)&CM_FCLKEN_GFX,
        .enable_bit     = 1,
 -      .rate_offset= 0,
 +      .rate_offset    = 0,
        .recalc         = &omap2_clksel_recalc,
  };
  
@@@ -1320,8 -1282,8 +1320,8 @@@ static struct clk mcbsp1_ick = 
        .name           = "mcbsp1_ick",
        .parent         = &l4_ck,
        .flags          = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,
 -      .enable_bit     = 15,
        .enable_reg     = (void __iomem *)&CM_ICLKEN1_CORE,      /* bit16 */
 +      .enable_bit     = 15,
        .recalc         = &omap2_followparent_recalc,
  };
  
@@@ -1329,8 -1291,8 +1329,8 @@@ static struct clk mcbsp1_fck = 
        .name           = "mcbsp1_fck",
        .parent         = &func_96m_ck,
        .flags          = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,
 -      .enable_bit     = 15,
        .enable_reg     = (void __iomem *)&CM_FCLKEN1_CORE,
 +      .enable_bit     = 15,
        .recalc         = &omap2_followparent_recalc,
  };
  
@@@ -1338,8 -1300,8 +1338,8 @@@ static struct clk mcbsp2_ick = 
        .name           = "mcbsp2_ick",
        .parent         = &l4_ck,
        .flags          = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,
 -      .enable_bit     = 16,
        .enable_reg     = (void __iomem *)&CM_ICLKEN1_CORE,
 +      .enable_bit     = 16,
        .recalc         = &omap2_followparent_recalc,
  };
  
@@@ -1347,8 -1309,8 +1347,8 @@@ static struct clk mcbsp2_fck = 
        .name           = "mcbsp2_fck",
        .parent         = &func_96m_ck,
        .flags          = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,
 -      .enable_bit     = 16,
        .enable_reg     = (void __iomem *)&CM_FCLKEN1_CORE,
 +      .enable_bit     = 16,
        .recalc         = &omap2_followparent_recalc,
  };
  
@@@ -1763,8 -1725,7 +1763,8 @@@ static struct clk i2c2_fck = 
  };
  
  static struct clk i2chs2_fck = {
 -      .name           = "i2chs2_fck",
 +      .name           = "i2chs_fck",
 +      .id             = 2,
        .parent         = &func_96m_ck,
        .flags          = CLOCK_IN_OMAP243X,
        .enable_reg     = (void __iomem *)&CM_FCLKEN2_CORE,
@@@ -1793,8 -1754,7 +1793,8 @@@ static struct clk i2c1_fck = 
  };
  
  static struct clk i2chs1_fck = {
 -      .name           = "i2chs1_fck",
 +      .name           = "i2chs_fck",
 +      .id             = 1,
        .parent         = &func_96m_ck,
        .flags          = CLOCK_IN_OMAP243X,
        .enable_reg     = (void __iomem *)&CM_FCLKEN2_CORE,
index e03ace4eaceecb24f2257cb95cde69199ea0563f,4f0f9c4e938ee7fbb2937c4fb4841de6de8acbcc..0e671135a132a4d6f552741f5cefe8a6e8dc46fd
@@@ -40,26 -40,6 +40,26 @@@ int omap_bootloader_tag_len
  struct omap_board_config_kernel *omap_board_config;
  int omap_board_config_size;
  
 +#ifdef CONFIG_OMAP_BOOT_TAG
 +
 +static int __init parse_tag_omap(const struct tag *tag)
 +{
 +      u32 size = tag->hdr.size - (sizeof(tag->hdr) >> 2);
 +
 +        size <<= 2;
 +      if (size > sizeof(omap_bootloader_tag))
 +              return -1;
 +
 +      memcpy(omap_bootloader_tag, tag->u.omap.data, size);
 +      omap_bootloader_tag_len = size;
 +
 +        return 0;
 +}
 +
 +__tagtable(ATAG_BOARD, parse_tag_omap);
 +
 +#endif
 +
  static const void *get_config(u16 tag, size_t len, int skip, size_t *len_out)
  {
        struct omap_board_config_kernel *kinfo = NULL;
@@@ -93,7 -73,7 +93,7 @@@
        }
        if (info != NULL) {
                /* Check the length as a lame attempt to check for
-                * binary inconsistancy. */
+                * binary inconsistency. */
                if (len != NO_LENGTH_CHECK) {
                        /* Word-align len */
                        if (len & 0x03)
diff --combined drivers/char/Kconfig
index 8dd3475b9c6a0d65ac86712bee48da52985aefdb,ef683ebd367caf7b4b4045857525301ef2e25285..65f779e35f8d1673674fc0b97816266b8e3496af
@@@ -815,7 -815,7 +815,7 @@@ config SGI_IP27_RT
  
  config GEN_RTC
        tristate "Generic /dev/rtc emulation"
-       depends on RTC!=y && !IA64 && !ARM && !M32R && !SPARC && !FRV && !S390
+       depends on RTC!=y && !IA64 && !ARM && !M32R && !SPARC && !FRV && !S390 && !SUPERH
        ---help---
          If you say Y here and create a character special file /dev/rtc with
          major number 10 and minor number 135 using mknod ("man mknod"), you
@@@ -841,11 -841,6 +841,11 @@@ config GEN_RTC_
  config EFI_RTC
        bool "EFI Real Time Clock Services"
        depends on IA64
 +config OMAP_RTC
 +      bool "TI OMAP Real Time Clock"
 +      depends on ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730
 +      help
 +        Support for TI OMAP RTC
  
  config DS1302
        tristate "DS1302 RTC support"
index 58fe796c0ea44577a9aaabc44c6465b1538ab59a,e5cca9bd040632bcbe7d7064a63ca4394c077e3d..f8abc9ec89ae0e8d4ee29e9636f20edefcd4b323
@@@ -12,17 -12,17 +12,17 @@@ menuconfig INPUT_TOUCHSCREE
  if INPUT_TOUCHSCREEN
  
  config TOUCHSCREEN_ADS7846
-       tristate "ADS 7846/7843 based touchscreens"
+       tristate "ADS7846/TSC2046 and ADS7843 based touchscreens"
        depends on SPI_MASTER
        depends on HWMON = n || HWMON
        help
          Say Y here if you have a touchscreen interface using the
-         ADS7846 or ADS7843 controller, and your board-specific setup
-         code includes that in its table of SPI devices.
+         ADS7846/TSC2046 or ADS7843 controller, and your board-specific
+         setup code includes that in its table of SPI devices.
  
          If HWMON is selected, and the driver is told the reference voltage
          on your board, you will also get hwmon interfaces for the voltage
-         (and on ads7846, temperature) sensors of this chip.
+         (and on ads7846/tsc2046, temperature) sensors of this chip.
  
          If unsure, say N (but it's safe to say "Y").
  
@@@ -164,18 -164,6 +164,18 @@@ config TOUCHSCREEN_UCB140
          To compile this driver as a module, choose M here: the
          module will be called ucb1400_ts.
  
 +config TOUCHSCREEN_TSC2301
 +      tristate "TSC2301 touchscreen support"
 +      depends on SPI_TSC2301
 +      help
 +        Say Y here for if you are using the touchscreen features of TSC2301.
 +
 +config TOUCHSCREEN_TSC2046
 +      tristate "TSC2046 touchscreen support"
 +      default MACH_OMAP2430SDP
 +        help
 +        Say Y here for if you are using the touchscreen features of TSC2046
 +
  config TOUCHSCREEN_USB_COMPOSITE
        tristate "USB Touchscreen Driver"
        depends on USB_ARCH_HAS_HCD