]> git.karo-electronics.de Git - linux-beck.git/commitdiff
Merge tag 'timer' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 23 Jul 2012 23:21:23 +0000 (16:21 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 23 Jul 2012 23:21:23 +0000 (16:21 -0700)
Pull arm-soc timer updates from Arnd Bergmann:
 "This contains two branches dealing with timers, one for the picoxcell
  platform that is now using DT with the platform-independent
  dw_apb_timer driver.  The other change is for the omap-specific
  dmtimer driver."

* tag 'timer' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  clocksource: dw_apb_timer: Add common DTS glue for dw_apb_timer
  ARM: OMAP2+: Simplify dmtimer clock aliases
  ARM: OMAP2+: Move dmtimer clock set function to dmtimer driver
  ARM: OMAP1: Fix dmtimer support
  ARM: OMAP: Add flag to indicate if a timer needs a manual reset
  ARM: OMAP: Remove timer function pointer for context loss counter
  ARM: OMAP: Remove loses_context variable from timer platform data
  ARM: OMAP2+: Fix external clock support for dmtimers
  ARM: OMAP2+: HWMOD: Correct timer device attributes
  ARM: OMAP: Add DMTIMER capability variable to represent timer features
  ARM: OMAP2+: Add dmtimer platform function to reserve systimers
  ARM: OMAP2+: Remove unused max number of timers definition
  ARM: OMAP: Remove unnecessary clk structure

1  2 
arch/arm/Kconfig
arch/arm/mach-omap2/clock2420_data.c
arch/arm/mach-omap2/clock2430_data.c
arch/arm/mach-omap2/clock3xxx_data.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
arch/arm/mach-omap2/timer.c

diff --combined arch/arm/Kconfig
index 139212f38ad53d2eaa119b23e5561ec581a81664,57eb6ef7f48dbaa08e22fab6b9460e16c5a50bc6..5dbb9562742c32471e5acaf1ed2dbedd0991f3e9
@@@ -260,7 -260,6 +260,7 @@@ config ARCH_INTEGRATO
        select ICST
        select GENERIC_CLOCKEVENTS
        select PLAT_VERSATILE
 +      select PLAT_VERSATILE_CLOCK
        select PLAT_VERSATILE_FPGA_IRQ
        select NEED_MACH_IO_H
        select NEED_MACH_MEMORY_H
@@@ -278,7 -277,6 +278,7 @@@ config ARCH_REALVIE
        select GENERIC_CLOCKEVENTS
        select ARCH_WANT_OPTIONAL_GPIOLIB
        select PLAT_VERSATILE
 +      select PLAT_VERSATILE_CLOCK
        select PLAT_VERSATILE_CLCD
        select ARM_TIMER_SP804
        select GPIO_PL061 if GPIOLIB
@@@ -297,7 -295,6 +297,7 @@@ config ARCH_VERSATIL
        select ARCH_WANT_OPTIONAL_GPIOLIB
        select NEED_MACH_IO_H if PCI
        select PLAT_VERSATILE
 +      select PLAT_VERSATILE_CLOCK
        select PLAT_VERSATILE_CLCD
        select PLAT_VERSATILE_FPGA_IRQ
        select ARM_TIMER_SP804
@@@ -310,7 -307,7 +310,7 @@@ config ARCH_VEXPRES
        select ARM_AMBA
        select ARM_TIMER_SP804
        select CLKDEV_LOOKUP
 -      select HAVE_MACH_CLKDEV
 +      select COMMON_CLK
        select GENERIC_CLOCKEVENTS
        select HAVE_CLK
        select HAVE_PATA_PLATFORM
        select NO_IOPORT
        select PLAT_VERSATILE
        select PLAT_VERSATILE_CLCD
 +      select REGULATOR_FIXED_VOLTAGE if REGULATOR
        help
          This enables support for the ARM Ltd Versatile Express boards.
  
@@@ -571,7 -567,6 +571,7 @@@ config ARCH_LPC32X
        select CLKDEV_LOOKUP
        select GENERIC_CLOCKEVENTS
        select USE_OF
 +      select HAVE_PWM
        help
          Support for the NXP LPC32XX family of processors
  
@@@ -663,6 -658,7 +663,7 @@@ config ARCH_PICOXCEL
        select ARM_VIC
        select CPU_V6K
        select DW_APB_TIMER
+       select DW_APB_TIMER_OF
        select GENERIC_CLOCKEVENTS
        select GENERIC_GPIO
        select HAVE_TCM
@@@ -918,7 -914,7 +919,7 @@@ config ARCH_NOMADI
        select ARM_AMBA
        select ARM_VIC
        select CPU_ARM926T
 -      select CLKDEV_LOOKUP
 +      select COMMON_CLK
        select GENERIC_CLOCKEVENTS
        select PINCTRL
        select MIGHT_HAVE_CACHE_L2X0
@@@ -941,7 -937,6 +942,7 @@@ config ARCH_DAVINC
  
  config ARCH_OMAP
        bool "TI OMAP"
 +      depends on MMU
        select HAVE_CLK
        select ARCH_REQUIRE_GPIOLIB
        select ARCH_HAS_CPUFREQ
@@@ -1027,6 -1022,8 +1028,6 @@@ source "arch/arm/mach-kirkwood/Kconfig
  
  source "arch/arm/mach-ks8695/Kconfig"
  
 -source "arch/arm/mach-lpc32xx/Kconfig"
 -
  source "arch/arm/mach-msm/Kconfig"
  
  source "arch/arm/mach-mv78xx0/Kconfig"
index 7e39015357b126255707fed16515604b899b0d78,861767ed1a3a0492c94f7cc3f3b0a5150ee875df..002745181ad6e334bdbe961b8257f63b0f7c75b0
@@@ -1774,6 -1774,8 +1774,6 @@@ static struct omap_clk omap2420_clks[] 
        CLK(NULL,       "osc_ck",       &osc_ck,        CK_242X),
        CLK(NULL,       "sys_ck",       &sys_ck,        CK_242X),
        CLK(NULL,       "alt_ck",       &alt_ck,        CK_242X),
 -      CLK("omap-mcbsp.1",     "pad_fck",      &mcbsp_clks,    CK_242X),
 -      CLK("omap-mcbsp.2",     "pad_fck",      &mcbsp_clks,    CK_242X),
        CLK(NULL,       "mcbsp_clks",   &mcbsp_clks,    CK_242X),
        /* internal analog sources */
        CLK(NULL,       "dpll_ck",      &dpll_ck,       CK_242X),
        /* internal prcm root sources */
        CLK(NULL,       "func_54m_ck",  &func_54m_ck,   CK_242X),
        CLK(NULL,       "core_ck",      &core_ck,       CK_242X),
 -      CLK("omap-mcbsp.1",     "prcm_fck",     &func_96m_ck,   CK_242X),
 -      CLK("omap-mcbsp.2",     "prcm_fck",     &func_96m_ck,   CK_242X),
        CLK(NULL,       "func_96m_ck",  &func_96m_ck,   CK_242X),
        CLK(NULL,       "func_48m_ck",  &func_48m_ck,   CK_242X),
        CLK(NULL,       "func_12m_ck",  &func_12m_ck,   CK_242X),
        CLK(NULL,       "pka_ick",      &pka_ick,       CK_242X),
        CLK(NULL,       "usb_fck",      &usb_fck,       CK_242X),
        CLK("musb-hdrc",        "fck",  &osc_ck,        CK_242X),
-       CLK("omap_timer.1",     "32k_ck",       &func_32k_ck,   CK_243X),
-       CLK("omap_timer.2",     "32k_ck",       &func_32k_ck,   CK_243X),
-       CLK("omap_timer.3",     "32k_ck",       &func_32k_ck,   CK_243X),
-       CLK("omap_timer.4",     "32k_ck",       &func_32k_ck,   CK_243X),
-       CLK("omap_timer.5",     "32k_ck",       &func_32k_ck,   CK_243X),
-       CLK("omap_timer.6",     "32k_ck",       &func_32k_ck,   CK_243X),
-       CLK("omap_timer.7",     "32k_ck",       &func_32k_ck,   CK_243X),
-       CLK("omap_timer.8",     "32k_ck",       &func_32k_ck,   CK_243X),
-       CLK("omap_timer.9",     "32k_ck",       &func_32k_ck,   CK_243X),
-       CLK("omap_timer.10",    "32k_ck",       &func_32k_ck,   CK_243X),
-       CLK("omap_timer.11",    "32k_ck",       &func_32k_ck,   CK_243X),
-       CLK("omap_timer.12",    "32k_ck",       &func_32k_ck,   CK_243X),
-       CLK("omap_timer.1",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.2",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.3",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.4",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.5",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.6",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.7",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.8",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.9",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.10",    "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.11",    "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.12",    "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.1",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.2",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.3",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.4",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.5",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.6",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.7",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.8",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.9",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.10",    "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.11",    "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.12",    "alt_ck",       &alt_ck,        CK_243X),
+       CLK(NULL,       "timer_32k_ck", &func_32k_ck,   CK_243X),
+       CLK(NULL,       "timer_sys_ck", &sys_ck,        CK_243X),
+       CLK(NULL,       "timer_ext_ck", &alt_ck,        CK_243X),
  };
  
  /*
index 90a08c3b12acab0e84bb7a06866b3f35675bb908,5577810dbc26328dc0d09432858cca378eed2cc8..cacabb070e22b546126e82c61ce7824505755c19
@@@ -1858,6 -1858,11 +1858,6 @@@ static struct omap_clk omap2430_clks[] 
        CLK(NULL,       "osc_ck",       &osc_ck,        CK_243X),
        CLK(NULL,       "sys_ck",       &sys_ck,        CK_243X),
        CLK(NULL,       "alt_ck",       &alt_ck,        CK_243X),
 -      CLK("omap-mcbsp.1",     "pad_fck",      &mcbsp_clks,    CK_243X),
 -      CLK("omap-mcbsp.2",     "pad_fck",      &mcbsp_clks,    CK_243X),
 -      CLK("omap-mcbsp.3",     "pad_fck",      &mcbsp_clks,    CK_243X),
 -      CLK("omap-mcbsp.4",     "pad_fck",      &mcbsp_clks,    CK_243X),
 -      CLK("omap-mcbsp.5",     "pad_fck",      &mcbsp_clks,    CK_243X),
        CLK(NULL,       "mcbsp_clks",   &mcbsp_clks,    CK_243X),
        /* internal analog sources */
        CLK(NULL,       "dpll_ck",      &dpll_ck,       CK_243X),
        /* internal prcm root sources */
        CLK(NULL,       "func_54m_ck",  &func_54m_ck,   CK_243X),
        CLK(NULL,       "core_ck",      &core_ck,       CK_243X),
 -      CLK("omap-mcbsp.1",     "prcm_fck",     &func_96m_ck,   CK_243X),
 -      CLK("omap-mcbsp.2",     "prcm_fck",     &func_96m_ck,   CK_243X),
 -      CLK("omap-mcbsp.3",     "prcm_fck",     &func_96m_ck,   CK_243X),
 -      CLK("omap-mcbsp.4",     "prcm_fck",     &func_96m_ck,   CK_243X),
 -      CLK("omap-mcbsp.5",     "prcm_fck",     &func_96m_ck,   CK_243X),
        CLK(NULL,       "func_96m_ck",  &func_96m_ck,   CK_243X),
        CLK(NULL,       "func_48m_ck",  &func_48m_ck,   CK_243X),
        CLK(NULL,       "func_12m_ck",  &func_12m_ck,   CK_243X),
        CLK(NULL,       "mdm_intc_ick", &mdm_intc_ick,  CK_243X),
        CLK("omap_hsmmc.0", "mmchsdb_fck",      &mmchsdb1_fck,  CK_243X),
        CLK("omap_hsmmc.1", "mmchsdb_fck",      &mmchsdb2_fck,  CK_243X),
-       CLK("omap_timer.1",     "32k_ck",  &func_32k_ck,   CK_243X),
-       CLK("omap_timer.2",     "32k_ck",  &func_32k_ck,   CK_243X),
-       CLK("omap_timer.3",     "32k_ck",  &func_32k_ck,   CK_243X),
-       CLK("omap_timer.4",     "32k_ck",  &func_32k_ck,   CK_243X),
-       CLK("omap_timer.5",     "32k_ck",  &func_32k_ck,   CK_243X),
-       CLK("omap_timer.6",     "32k_ck",  &func_32k_ck,   CK_243X),
-       CLK("omap_timer.7",     "32k_ck",  &func_32k_ck,   CK_243X),
-       CLK("omap_timer.8",     "32k_ck",  &func_32k_ck,   CK_243X),
-       CLK("omap_timer.9",     "32k_ck",  &func_32k_ck,   CK_243X),
-       CLK("omap_timer.10",    "32k_ck",  &func_32k_ck,   CK_243X),
-       CLK("omap_timer.11",    "32k_ck",  &func_32k_ck,   CK_243X),
-       CLK("omap_timer.12",    "32k_ck",  &func_32k_ck,   CK_243X),
-       CLK("omap_timer.1",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.2",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.3",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.4",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.5",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.6",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.7",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.8",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.9",     "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.10",    "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.11",    "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.12",    "sys_ck",       &sys_ck,        CK_243X),
-       CLK("omap_timer.1",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.2",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.3",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.4",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.5",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.6",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.7",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.8",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.9",     "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.10",    "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.11",    "alt_ck",       &alt_ck,        CK_243X),
-       CLK("omap_timer.12",    "alt_ck",       &alt_ck,        CK_243X),
+       CLK(NULL,       "timer_32k_ck",  &func_32k_ck,   CK_243X),
+       CLK(NULL,       "timer_sys_ck", &sys_ck,        CK_243X),
+       CLK(NULL,       "timer_ext_ck", &alt_ck,        CK_243X),
  };
  
  /*
index 049061778a85964c809b52c2457ec5b48586de4c,0d814620b69cb852105fff78a8cb856350f41a2e..51f7430f6d3f9bfff06c91f9d402f66cd4ad4430
@@@ -2490,13 -2490,13 +2490,13 @@@ static struct clk uart4_fck = 
  };
  
  static struct clk uart4_fck_am35xx = {
 -      .name           = "uart4_fck",
 -      .ops            = &clkops_omap2_dflt_wait,
 -      .parent         = &per_48m_fck,
 -      .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
 -      .enable_bit     = OMAP3430_EN_UART4_SHIFT,
 -      .clkdm_name     = "core_l4_clkdm",
 -      .recalc         = &followparent_recalc,
 +      .name           = "uart4_fck",
 +      .ops            = &clkops_omap2_dflt_wait,
 +      .parent         = &core_48m_fck,
 +      .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
 +      .enable_bit     = AM35XX_EN_UART4_SHIFT,
 +      .clkdm_name     = "core_l4_clkdm",
 +      .recalc         = &followparent_recalc,
  };
  
  static struct clk gpt2_fck = {
@@@ -3201,12 -3201,8 +3201,12 @@@ static struct clk vpfe_fck = 
  };
  
  /*
 - * The UART1/2 functional clock acts as the functional
 - * clock for UART4. No separate fclk control available.
 + * The UART1/2 functional clock acts as the functional clock for
 + * UART4. No separate fclk control available.  XXX Well now we have a
 + * uart4_fck that is apparently used as the UART4 functional clock,
 + * but it also seems that uart1_fck or uart2_fck are still needed, at
 + * least for UART4 softresets to complete.  This really needs
 + * clarification.
   */
  static struct clk uart4_ick_am35xx = {
        .name           = "uart4_ick",
@@@ -3240,6 -3236,11 +3240,6 @@@ static struct omap_clk omap3xxx_clks[] 
        CLK(NULL,       "osc_sys_ck",   &osc_sys_ck,    CK_3XXX),
        CLK(NULL,       "sys_ck",       &sys_ck,        CK_3XXX),
        CLK(NULL,       "sys_altclk",   &sys_altclk,    CK_3XXX),
 -      CLK("omap-mcbsp.1",     "pad_fck",      &mcbsp_clks,    CK_3XXX),
 -      CLK("omap-mcbsp.2",     "pad_fck",      &mcbsp_clks,    CK_3XXX),
 -      CLK("omap-mcbsp.3",     "pad_fck",      &mcbsp_clks,    CK_3XXX),
 -      CLK("omap-mcbsp.4",     "pad_fck",      &mcbsp_clks,    CK_3XXX),
 -      CLK("omap-mcbsp.5",     "pad_fck",      &mcbsp_clks,    CK_3XXX),
        CLK(NULL,       "mcbsp_clks",   &mcbsp_clks,    CK_3XXX),
        CLK(NULL,       "sys_clkout1",  &sys_clkout1,   CK_3XXX),
        CLK(NULL,       "dpll1_ck",     &dpll1_ck,      CK_3XXX),
        CLK(NULL,       "ts_fck",       &ts_fck,        CK_3430ES2PLUS | CK_AM35XX | CK_36XX),
        CLK(NULL,       "usbtll_fck",   &usbtll_fck,    CK_3430ES2PLUS | CK_AM35XX | CK_36XX),
        CLK("usbhs_omap",       "usbtll_fck",   &usbtll_fck,    CK_3430ES2PLUS | CK_AM35XX | CK_36XX),
 -      CLK("omap-mcbsp.1",     "prcm_fck",     &core_96m_fck,  CK_3XXX),
 -      CLK("omap-mcbsp.5",     "prcm_fck",     &core_96m_fck,  CK_3XXX),
        CLK(NULL,       "core_96m_fck", &core_96m_fck,  CK_3XXX),
        CLK(NULL,       "mmchs3_fck",   &mmchs3_fck,    CK_3430ES2PLUS | CK_AM35XX | CK_36XX),
        CLK(NULL,       "mmchs2_fck",   &mmchs2_fck,    CK_3XXX),
        CLK(NULL,       "omap_32ksync_ick", &omap_32ksync_ick, CK_3XXX),
        CLK(NULL,       "gpt12_ick",    &gpt12_ick,     CK_3XXX),
        CLK(NULL,       "gpt1_ick",     &gpt1_ick,      CK_3XXX),
 -      CLK("omap-mcbsp.2",     "prcm_fck",     &per_96m_fck,   CK_3XXX),
 -      CLK("omap-mcbsp.3",     "prcm_fck",     &per_96m_fck,   CK_3XXX),
 -      CLK("omap-mcbsp.4",     "prcm_fck",     &per_96m_fck,   CK_3XXX),
        CLK(NULL,       "per_96m_fck",  &per_96m_fck,   CK_3XXX),
        CLK(NULL,       "per_48m_fck",  &per_48m_fck,   CK_3XXX),
        CLK(NULL,       "uart3_fck",    &uart3_fck,     CK_3XXX),
        CLK(NULL,       "ipss_ick",     &ipss_ick,      CK_AM35XX),
        CLK(NULL,       "rmii_ck",      &rmii_ck,       CK_AM35XX),
        CLK(NULL,       "pclk_ck",      &pclk_ck,       CK_AM35XX),
 -      CLK("davinci_emac",     NULL,   &emac_ick,      CK_AM35XX),
 +      CLK("davinci_emac.0",   NULL,   &emac_ick,      CK_AM35XX),
        CLK("davinci_mdio.0",   NULL,   &emac_fck,      CK_AM35XX),
        CLK("vpfe-capture",     "master",       &vpfe_ick,      CK_AM35XX),
        CLK("vpfe-capture",     "slave",        &vpfe_fck,      CK_AM35XX),
 -      CLK("musb-am35x",       "ick",          &hsotgusb_ick_am35xx,   CK_AM35XX),
 -      CLK("musb-am35x",       "fck",          &hsotgusb_fck_am35xx,   CK_AM35XX),
 +      CLK(NULL,       "hsotgusb_ick",         &hsotgusb_ick_am35xx,   CK_AM35XX),
 +      CLK(NULL,       "hsotgusb_fck",         &hsotgusb_fck_am35xx,   CK_AM35XX),
        CLK(NULL,       "hecc_ck",      &hecc_ck,       CK_AM35XX),
        CLK(NULL,       "uart4_ick",    &uart4_ick_am35xx,      CK_AM35XX),
-       CLK("omap_timer.1",     "32k_ck",       &omap_32k_fck,  CK_3XXX),
-       CLK("omap_timer.2",     "32k_ck",       &omap_32k_fck,  CK_3XXX),
-       CLK("omap_timer.3",     "32k_ck",       &omap_32k_fck,  CK_3XXX),
-       CLK("omap_timer.4",     "32k_ck",       &omap_32k_fck,  CK_3XXX),
-       CLK("omap_timer.5",     "32k_ck",       &omap_32k_fck,  CK_3XXX),
-       CLK("omap_timer.6",     "32k_ck",       &omap_32k_fck,  CK_3XXX),
-       CLK("omap_timer.7",     "32k_ck",       &omap_32k_fck,  CK_3XXX),
-       CLK("omap_timer.8",     "32k_ck",       &omap_32k_fck,  CK_3XXX),
-       CLK("omap_timer.9",     "32k_ck",       &omap_32k_fck,  CK_3XXX),
-       CLK("omap_timer.10",    "32k_ck",       &omap_32k_fck,  CK_3XXX),
-       CLK("omap_timer.11",    "32k_ck",       &omap_32k_fck,  CK_3XXX),
-       CLK("omap_timer.12",    "32k_ck",       &omap_32k_fck,  CK_3XXX),
-       CLK("omap_timer.1",     "sys_ck",       &sys_ck,        CK_3XXX),
-       CLK("omap_timer.2",     "sys_ck",       &sys_ck,        CK_3XXX),
-       CLK("omap_timer.3",     "sys_ck",       &sys_ck,        CK_3XXX),
-       CLK("omap_timer.4",     "sys_ck",       &sys_ck,        CK_3XXX),
-       CLK("omap_timer.5",     "sys_ck",       &sys_ck,        CK_3XXX),
-       CLK("omap_timer.6",     "sys_ck",       &sys_ck,        CK_3XXX),
-       CLK("omap_timer.7",     "sys_ck",       &sys_ck,        CK_3XXX),
-       CLK("omap_timer.8",     "sys_ck",       &sys_ck,        CK_3XXX),
-       CLK("omap_timer.9",     "sys_ck",       &sys_ck,        CK_3XXX),
-       CLK("omap_timer.10",    "sys_ck",       &sys_ck,        CK_3XXX),
-       CLK("omap_timer.11",    "sys_ck",       &sys_ck,        CK_3XXX),
-       CLK("omap_timer.12",    "sys_ck",       &sys_ck,        CK_3XXX),
+       CLK(NULL,       "timer_32k_ck", &omap_32k_fck,  CK_3XXX),
+       CLK(NULL,       "timer_sys_ck", &sys_ck,        CK_3XXX),
  };
  
  
index 892c7c740976698035d73a8b2590c58db87ce5e0,0ea53bcc7d18fd1eaeeb9b3034f1d8036c7e26d9..cdb9637aab19d26d5b1acf1a7601a122b963663c
@@@ -129,7 -129,6 +129,6 @@@ static struct omap_hwmod_class_sysconfi
  static struct omap_hwmod_class omap3xxx_timer_1ms_hwmod_class = {
        .name = "timer",
        .sysc = &omap3xxx_timer_1ms_sysc,
-       .rev = OMAP_TIMER_IP_VERSION_1,
  };
  
  static struct omap_hwmod_class_sysconfig omap3xxx_timer_sysc = {
  static struct omap_hwmod_class omap3xxx_timer_hwmod_class = {
        .name = "timer",
        .sysc = &omap3xxx_timer_sysc,
-       .rev =  OMAP_TIMER_IP_VERSION_1,
  };
  
  /* secure timers dev attribute */
  static struct omap_timer_capability_dev_attr capability_secure_dev_attr = {
-       .timer_capability       = OMAP_TIMER_SECURE,
+       .timer_capability       = OMAP_TIMER_ALWON | OMAP_TIMER_SECURE,
  };
  
  /* always-on timers dev attribute */
@@@ -195,7 -193,6 +193,6 @@@ static struct omap_hwmod omap3xxx_timer
                        .idlest_idle_bit = OMAP3430_ST_GPT2_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
        .class          = &omap3xxx_timer_1ms_hwmod_class,
  };
  
@@@ -213,7 -210,6 +210,6 @@@ static struct omap_hwmod omap3xxx_timer
                        .idlest_idle_bit = OMAP3430_ST_GPT3_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
        .class          = &omap3xxx_timer_hwmod_class,
  };
  
@@@ -231,7 -227,6 +227,6 @@@ static struct omap_hwmod omap3xxx_timer
                        .idlest_idle_bit = OMAP3430_ST_GPT4_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
        .class          = &omap3xxx_timer_hwmod_class,
  };
  
@@@ -249,7 -244,6 +244,6 @@@ static struct omap_hwmod omap3xxx_timer
                        .idlest_idle_bit = OMAP3430_ST_GPT5_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
        .class          = &omap3xxx_timer_hwmod_class,
  };
  
@@@ -267,7 -261,6 +261,6 @@@ static struct omap_hwmod omap3xxx_timer
                        .idlest_idle_bit = OMAP3430_ST_GPT6_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
        .class          = &omap3xxx_timer_hwmod_class,
  };
  
@@@ -285,7 -278,6 +278,6 @@@ static struct omap_hwmod omap3xxx_timer
                        .idlest_idle_bit = OMAP3430_ST_GPT7_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
        .class          = &omap3xxx_timer_hwmod_class,
  };
  
@@@ -527,27 -519,11 +519,27 @@@ static struct omap_hwmod omap36xx_uart4
  
  static struct omap_hwmod_irq_info am35xx_uart4_mpu_irqs[] = {
        { .irq = INT_35XX_UART4_IRQ, },
 +      { .irq = -1 }
  };
  
  static struct omap_hwmod_dma_info am35xx_uart4_sdma_reqs[] = {
        { .name = "rx", .dma_req = AM35XX_DMA_UART4_RX, },
        { .name = "tx", .dma_req = AM35XX_DMA_UART4_TX, },
 +      { .dma_req = -1 }
 +};
 +
 +/*
 + * XXX AM35xx UART4 cannot complete its softreset without uart1_fck or
 + * uart2_fck being enabled.  So we add uart1_fck as an optional clock,
 + * below, and set the HWMOD_CONTROL_OPT_CLKS_IN_RESET.  This really
 + * should not be needed.  The functional clock structure of the AM35xx
 + * UART4 is extremely unclear and opaque; it is unclear what the role
 + * of uart1/2_fck is for the UART4.  Any clarification from either
 + * empirical testing or the AM3505/3517 hardware designers would be
 + * most welcome.
 + */
 +static struct omap_hwmod_opt_clk am35xx_uart4_opt_clks[] = {
 +      { .role = "softreset_uart1_fck", .clk = "uart1_fck" },
  };
  
  static struct omap_hwmod am35xx_uart4_hwmod = {
                .omap2 = {
                        .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
 -                      .module_bit = OMAP3430_EN_UART4_SHIFT,
 +                      .module_bit = AM35XX_EN_UART4_SHIFT,
                        .idlest_reg_id = 1,
 -                      .idlest_idle_bit = OMAP3430_EN_UART4_SHIFT,
 +                      .idlest_idle_bit = AM35XX_ST_UART4_SHIFT,
                },
        },
 +      .opt_clks       = am35xx_uart4_opt_clks,
 +      .opt_clks_cnt   = ARRAY_SIZE(am35xx_uart4_opt_clks),
 +      .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
        .class          = &omap2_uart_class,
  };
  
@@@ -1093,17 -1066,6 +1085,17 @@@ static struct omap_hwmod_class omap3xxx
        .rev  = MCBSP_CONFIG_TYPE3,
  };
  
 +/* McBSP functional clock mapping */
 +static struct omap_hwmod_opt_clk mcbsp15_opt_clks[] = {
 +      { .role = "pad_fck", .clk = "mcbsp_clks" },
 +      { .role = "prcm_fck", .clk = "core_96m_fck" },
 +};
 +
 +static struct omap_hwmod_opt_clk mcbsp234_opt_clks[] = {
 +      { .role = "pad_fck", .clk = "mcbsp_clks" },
 +      { .role = "prcm_fck", .clk = "per_96m_fck" },
 +};
 +
  /* mcbsp1 */
  static struct omap_hwmod_irq_info omap3xxx_mcbsp1_irqs[] = {
        { .name = "common", .irq = 16 },
@@@ -1127,8 -1089,6 +1119,8 @@@ static struct omap_hwmod omap3xxx_mcbsp
                        .idlest_idle_bit = OMAP3430_ST_MCBSP1_SHIFT,
                },
        },
 +      .opt_clks       = mcbsp15_opt_clks,
 +      .opt_clks_cnt   = ARRAY_SIZE(mcbsp15_opt_clks),
  };
  
  /* mcbsp2 */
@@@ -1158,8 -1118,6 +1150,8 @@@ static struct omap_hwmod omap3xxx_mcbsp
                        .idlest_idle_bit = OMAP3430_ST_MCBSP2_SHIFT,
                },
        },
 +      .opt_clks       = mcbsp234_opt_clks,
 +      .opt_clks_cnt   = ARRAY_SIZE(mcbsp234_opt_clks),
        .dev_attr       = &omap34xx_mcbsp2_dev_attr,
  };
  
@@@ -1190,8 -1148,6 +1182,8 @@@ static struct omap_hwmod omap3xxx_mcbsp
                        .idlest_idle_bit = OMAP3430_ST_MCBSP3_SHIFT,
                },
        },
 +      .opt_clks       = mcbsp234_opt_clks,
 +      .opt_clks_cnt   = ARRAY_SIZE(mcbsp234_opt_clks),
        .dev_attr       = &omap34xx_mcbsp3_dev_attr,
  };
  
@@@ -1224,8 -1180,6 +1216,8 @@@ static struct omap_hwmod omap3xxx_mcbsp
                        .idlest_idle_bit = OMAP3430_ST_MCBSP4_SHIFT,
                },
        },
 +      .opt_clks       = mcbsp234_opt_clks,
 +      .opt_clks_cnt   = ARRAY_SIZE(mcbsp234_opt_clks),
  };
  
  /* mcbsp5 */
@@@ -1257,8 -1211,6 +1249,8 @@@ static struct omap_hwmod omap3xxx_mcbsp
                        .idlest_idle_bit = OMAP3430_ST_MCBSP5_SHIFT,
                },
        },
 +      .opt_clks       = mcbsp15_opt_clks,
 +      .opt_clks_cnt   = ARRAY_SIZE(mcbsp15_opt_clks),
  };
  
  /* 'mcbsp sidetone' class */
@@@ -1678,20 -1630,25 +1670,20 @@@ static struct omap_hwmod omap3xxx_usbhs
  
  /* usb_otg_hs */
  static struct omap_hwmod_irq_info am35xx_usbhsotg_mpu_irqs[] = {
 -
        { .name = "mc", .irq = 71 },
        { .irq = -1 }
  };
  
  static struct omap_hwmod_class am35xx_usbotg_class = {
        .name = "am35xx_usbotg",
 -      .sysc = NULL,
  };
  
  static struct omap_hwmod am35xx_usbhsotg_hwmod = {
        .name           = "am35x_otg_hs",
        .mpu_irqs       = am35xx_usbhsotg_mpu_irqs,
 -      .main_clk       = NULL,
 -      .prcm = {
 -              .omap2 = {
 -              },
 -      },
 +      .main_clk       = "hsotgusb_fck",
        .class          = &am35xx_usbotg_class,
 +      .flags          = HWMOD_NO_IDLEST,
  };
  
  /* MMC/SD/SDIO common */
@@@ -2132,10 -2089,9 +2124,10 @@@ static struct omap_hwmod_ocp_if omap3xx
  static struct omap_hwmod_ocp_if am35xx_usbhsotg__l3 = {
        .master         = &am35xx_usbhsotg_hwmod,
        .slave          = &omap3xxx_l3_main_hwmod,
 -      .clk            = "core_l3_ick",
 +      .clk            = "hsotgusb_ick",
        .user           = OCP_USER_MPU,
  };
 +
  /* L4_CORE -> L4_WKUP interface */
  static struct omap_hwmod_ocp_if omap3xxx_l4_core__l4_wkup = {
        .master = &omap3xxx_l4_core_hwmod,
@@@ -2279,7 -2235,6 +2271,7 @@@ static struct omap_hwmod_addr_space am3
                .pa_end         = OMAP3_UART4_AM35XX_BASE + SZ_1K - 1,
                .flags          = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
        },
 +      { }
  };
  
  static struct omap_hwmod_ocp_if am35xx_l4_core__uart4 = {
@@@ -2430,7 -2385,7 +2422,7 @@@ static struct omap_hwmod_addr_space am3
  static struct omap_hwmod_ocp_if am35xx_l4_core__usbhsotg = {
        .master         = &omap3xxx_l4_core_hwmod,
        .slave          = &am35xx_usbhsotg_hwmod,
 -      .clk            = "l4_ick",
 +      .clk            = "hsotgusb_ick",
        .addr           = am35xx_usbhsotg_addrs,
        .user           = OCP_USER_MPU,
  };
@@@ -3175,107 -3130,6 +3167,107 @@@ static struct omap_hwmod_ocp_if omap3xx
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
  };
  
 +/* am35xx has Davinci MDIO & EMAC */
 +static struct omap_hwmod_class am35xx_mdio_class = {
 +      .name = "davinci_mdio",
 +};
 +
 +static struct omap_hwmod am35xx_mdio_hwmod = {
 +      .name           = "davinci_mdio",
 +      .class          = &am35xx_mdio_class,
 +      .flags          = HWMOD_NO_IDLEST,
 +};
 +
 +/*
 + * XXX Should be connected to an IPSS hwmod, not the L3 directly;
 + * but this will probably require some additional hwmod core support,
 + * so is left as a future to-do item.
 + */
 +static struct omap_hwmod_ocp_if am35xx_mdio__l3 = {
 +      .master         = &am35xx_mdio_hwmod,
 +      .slave          = &omap3xxx_l3_main_hwmod,
 +      .clk            = "emac_fck",
 +      .user           = OCP_USER_MPU,
 +};
 +
 +static struct omap_hwmod_addr_space am35xx_mdio_addrs[] = {
 +      {
 +              .pa_start       = AM35XX_IPSS_MDIO_BASE,
 +              .pa_end         = AM35XX_IPSS_MDIO_BASE + SZ_4K - 1,
 +              .flags          = ADDR_TYPE_RT,
 +      },
 +      { }
 +};
 +
 +/* l4_core -> davinci mdio  */
 +/*
 + * XXX Should be connected to an IPSS hwmod, not the L4_CORE directly;
 + * but this will probably require some additional hwmod core support,
 + * so is left as a future to-do item.
 + */
 +static struct omap_hwmod_ocp_if am35xx_l4_core__mdio = {
 +      .master         = &omap3xxx_l4_core_hwmod,
 +      .slave          = &am35xx_mdio_hwmod,
 +      .clk            = "emac_fck",
 +      .addr           = am35xx_mdio_addrs,
 +      .user           = OCP_USER_MPU,
 +};
 +
 +static struct omap_hwmod_irq_info am35xx_emac_mpu_irqs[] = {
 +      { .name = "rxthresh",   .irq = INT_35XX_EMAC_C0_RXTHRESH_IRQ },
 +      { .name = "rx_pulse",   .irq = INT_35XX_EMAC_C0_RX_PULSE_IRQ },
 +      { .name = "tx_pulse",   .irq = INT_35XX_EMAC_C0_TX_PULSE_IRQ },
 +      { .name = "misc_pulse", .irq = INT_35XX_EMAC_C0_MISC_PULSE_IRQ },
 +      { .irq = -1 }
 +};
 +
 +static struct omap_hwmod_class am35xx_emac_class = {
 +      .name = "davinci_emac",
 +};
 +
 +static struct omap_hwmod am35xx_emac_hwmod = {
 +      .name           = "davinci_emac",
 +      .mpu_irqs       = am35xx_emac_mpu_irqs,
 +      .class          = &am35xx_emac_class,
 +      .flags          = HWMOD_NO_IDLEST,
 +};
 +
 +/* l3_core -> davinci emac interface */
 +/*
 + * XXX Should be connected to an IPSS hwmod, not the L3 directly;
 + * but this will probably require some additional hwmod core support,
 + * so is left as a future to-do item.
 + */
 +static struct omap_hwmod_ocp_if am35xx_emac__l3 = {
 +      .master         = &am35xx_emac_hwmod,
 +      .slave          = &omap3xxx_l3_main_hwmod,
 +      .clk            = "emac_ick",
 +      .user           = OCP_USER_MPU,
 +};
 +
 +static struct omap_hwmod_addr_space am35xx_emac_addrs[] = {
 +      {
 +              .pa_start       = AM35XX_IPSS_EMAC_BASE,
 +              .pa_end         = AM35XX_IPSS_EMAC_BASE + 0x30000 - 1,
 +              .flags          = ADDR_TYPE_RT,
 +      },
 +      { }
 +};
 +
 +/* l4_core -> davinci emac  */
 +/*
 + * XXX Should be connected to an IPSS hwmod, not the L4_CORE directly;
 + * but this will probably require some additional hwmod core support,
 + * so is left as a future to-do item.
 + */
 +static struct omap_hwmod_ocp_if am35xx_l4_core__emac = {
 +      .master         = &omap3xxx_l4_core_hwmod,
 +      .slave          = &am35xx_emac_hwmod,
 +      .clk            = "emac_ick",
 +      .addr           = am35xx_emac_addrs,
 +      .user           = OCP_USER_MPU,
 +};
 +
  static struct omap_hwmod_ocp_if *omap3xxx_hwmod_ocp_ifs[] __initdata = {
        &omap3xxx_l3_main__l4_core,
        &omap3xxx_l3_main__l4_per,
@@@ -3404,10 -3258,6 +3396,10 @@@ static struct omap_hwmod_ocp_if *am35xx
        &omap3xxx_l4_core__usb_tll_hs,
        &omap3xxx_l4_core__es3plus_mmc1,
        &omap3xxx_l4_core__es3plus_mmc2,
 +      &am35xx_mdio__l3,
 +      &am35xx_l4_core__mdio,
 +      &am35xx_emac__l3,
 +      &am35xx_l4_core__emac,
        NULL
  };
  
@@@ -3425,8 -3275,6 +3417,8 @@@ int __init omap3xxx_hwmod_init(void
        struct omap_hwmod_ocp_if **h = NULL;
        unsigned int rev;
  
 +      omap_hwmod_init();
 +
        /* Register hwmod links common to all OMAP3 */
        r = omap_hwmod_register_links(omap3xxx_hwmod_ocp_ifs);
        if (r < 0)
index 4cab6318d33e944b022898a66e41842e630ddea1,dfe9bc4d7b80c6e91195eb57e62470fc7ca64c80..5c2ce7e7783828737ab9abaf41f1b20325391ebe
@@@ -2544,12 -2544,14 +2544,12 @@@ static struct omap_hwmod omap44xx_prcm_
  static struct omap_hwmod omap44xx_cm_core_aon_hwmod = {
        .name           = "cm_core_aon",
        .class          = &omap44xx_prcm_hwmod_class,
 -      .clkdm_name     = "cm_clkdm",
  };
  
  /* cm_core */
  static struct omap_hwmod omap44xx_cm_core_hwmod = {
        .name           = "cm_core",
        .class          = &omap44xx_prcm_hwmod_class,
 -      .clkdm_name     = "cm_clkdm",
  };
  
  /* prm */
@@@ -2566,6 -2568,7 +2566,6 @@@ static struct omap_hwmod_rst_info omap4
  static struct omap_hwmod omap44xx_prm_hwmod = {
        .name           = "prm",
        .class          = &omap44xx_prcm_hwmod_class,
 -      .clkdm_name     = "prm_clkdm",
        .mpu_irqs       = omap44xx_prm_irqs,
        .rst_lines      = omap44xx_prm_resets,
        .rst_lines_cnt  = ARRAY_SIZE(omap44xx_prm_resets),
@@@ -2944,7 -2947,6 +2944,6 @@@ static struct omap_hwmod omap44xx_timer
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
  };
  
  /* timer3 */
@@@ -2966,7 -2968,6 +2965,6 @@@ static struct omap_hwmod omap44xx_timer
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
  };
  
  /* timer4 */
@@@ -2988,7 -2989,6 +2986,6 @@@ static struct omap_hwmod omap44xx_timer
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
  };
  
  /* timer5 */
@@@ -3010,7 -3010,6 +3007,6 @@@ static struct omap_hwmod omap44xx_timer
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
  };
  
  /* timer6 */
@@@ -3033,7 -3032,6 +3029,6 @@@ static struct omap_hwmod omap44xx_timer
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
  };
  
  /* timer7 */
@@@ -3055,7 -3053,6 +3050,6 @@@ static struct omap_hwmod omap44xx_timer
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
  };
  
  /* timer8 */
@@@ -6145,7 -6142,6 +6139,7 @@@ static struct omap_hwmod_ocp_if *omap44
  
  int __init omap44xx_hwmod_init(void)
  {
 +      omap_hwmod_init();
        return omap_hwmod_register_links(omap44xx_hwmod_ocp_ifs);
  }
  
index ea6a0eb13f053db8bd141ef0e1aecaa386bcb38d,8fe75a81e12db2415edc74e4ec19b4d8e0091df0..b5b5d92acd9df8695135f2f11ca5bc20ac67e73b
  #define OMAP3_SECURE_TIMER    1
  #endif
  
- /* MAX_GPTIMER_ID: number of GPTIMERs on the chip */
- #define MAX_GPTIMER_ID                12
- static u32 sys_timer_reserved;
  /* Clockevent code */
  
  static struct omap_dm_timer clkev;
@@@ -180,7 -175,8 +175,8 @@@ static int __init omap_dm_timer_init_on
  
        omap_hwmod_enable(oh);
  
-       sys_timer_reserved |= (1 << (gptimer_id - 1));
+       if (omap_dm_timer_reserve_systimer(gptimer_id))
+               return -ENODEV;
  
        if (gptimer_id != 12) {
                struct clk *src;
@@@ -368,11 -364,6 +364,11 @@@ OMAP_SYS_TIMER_INIT(3_secure, OMAP3_SEC
  OMAP_SYS_TIMER(3_secure)
  #endif
  
 +#ifdef CONFIG_SOC_AM33XX
 +OMAP_SYS_TIMER_INIT(3_am33xx, 1, OMAP4_MPU_SOURCE, 2, OMAP4_MPU_SOURCE)
 +OMAP_SYS_TIMER(3_am33xx)
 +#endif
 +
  #ifdef CONFIG_ARCH_OMAP4
  #ifdef CONFIG_LOCAL_TIMERS
  static DEFINE_TWD_LOCAL_TIMER(twd_local_timer,
@@@ -398,66 -389,6 +394,6 @@@ static void __init omap4_timer_init(voi
  OMAP_SYS_TIMER(4)
  #endif
  
- /**
-  * omap2_dm_timer_set_src - change the timer input clock source
-  * @pdev:     timer platform device pointer
-  * @source:   array index of parent clock source
-  */
- static int omap2_dm_timer_set_src(struct platform_device *pdev, int source)
- {
-       int ret;
-       struct dmtimer_platform_data *pdata = pdev->dev.platform_data;
-       struct clk *fclk, *parent;
-       char *parent_name = NULL;
-       fclk = clk_get(&pdev->dev, "fck");
-       if (IS_ERR_OR_NULL(fclk)) {
-               dev_err(&pdev->dev, "%s: %d: clk_get() FAILED\n",
-                               __func__, __LINE__);
-               return -EINVAL;
-       }
-       switch (source) {
-       case OMAP_TIMER_SRC_SYS_CLK:
-               parent_name = "sys_ck";
-               break;
-       case OMAP_TIMER_SRC_32_KHZ:
-               parent_name = "32k_ck";
-               break;
-       case OMAP_TIMER_SRC_EXT_CLK:
-               if (pdata->timer_ip_version == OMAP_TIMER_IP_VERSION_1) {
-                       parent_name = "alt_ck";
-                       break;
-               }
-               dev_err(&pdev->dev, "%s: %d: invalid clk src.\n",
-                       __func__, __LINE__);
-               clk_put(fclk);
-               return -EINVAL;
-       }
-       parent = clk_get(&pdev->dev, parent_name);
-       if (IS_ERR_OR_NULL(parent)) {
-               dev_err(&pdev->dev, "%s: %d: clk_get() %s FAILED\n",
-                       __func__, __LINE__, parent_name);
-               clk_put(fclk);
-               return -EINVAL;
-       }
-       ret = clk_set_parent(fclk, parent);
-       if (IS_ERR_VALUE(ret)) {
-               dev_err(&pdev->dev, "%s: clk_set_parent() to %s FAILED\n",
-                       __func__, parent_name);
-               ret = -EINVAL;
-       }
-       clk_put(parent);
-       clk_put(fclk);
-       return ret;
- }
  /**
   * omap_timer_init - build and register timer device with an
   * associated timer hwmod
@@@ -478,7 -409,6 +414,6 @@@ static int __init omap_timer_init(struc
        struct dmtimer_platform_data *pdata;
        struct platform_device *pdev;
        struct omap_timer_capability_dev_attr *timer_dev_attr;
-       struct powerdomain *pwrdm;
  
        pr_debug("%s: %s\n", __func__, oh->name);
  
         */
        sscanf(oh->name, "timer%2d", &id);
  
-       pdata->set_timer_src = omap2_dm_timer_set_src;
-       pdata->timer_ip_version = oh->class->rev;
-       /* Mark clocksource and clockevent timers as reserved */
-       if ((sys_timer_reserved >> (id - 1)) & 0x1)
-               pdata->reserved = 1;
+       if (timer_dev_attr)
+               pdata->timer_capability = timer_dev_attr->timer_capability;
  
-       pwrdm = omap_hwmod_get_pwrdm(oh);
-       pdata->loses_context = pwrdm_can_ever_lose_context(pwrdm);
- #ifdef CONFIG_PM
-       pdata->get_context_loss_count = omap_pm_get_dev_context_loss_count;
- #endif
        pdev = omap_device_build(name, id, oh, pdata, sizeof(*pdata),
                                 NULL, 0, 0);