ARM: OMAP2+: am33xx: Add clocktree and hwmod data
Subsystems (6)
v2 cover ARM: OMAP2+: am33xx: Add clocktree and hwmod data
This patch adds complete clockctree and hwmod data for the AM33XX family of devices.
This patch-series is cleaned up further from Paul's cleanup activity on AM33xx clocktree, where all leaf nodes have been removed and now modules enable/disable is controlled only using hwmod framework interface.
There are certain modules, like clkdiv32k, debugss, etc..., for which we still doesn't have hwmod_data present, so in order to disable these modules during boot time, we still have to maintain clk node for them. Comment has been added to highlight this, and in the future we will cleanup this.
As far as, CLKDIV32K module, in reality is not module but still we have MODULEMODE to control it, so we may have to keep this node alone in the clocktree.
This patch is created on top of recently submitted patches (accepted on the list) for am33xx voltage/powerdomain/clockcomain patch-series -
http://www.mail-archive.com/linux-omap at vger.kernel.org/msg69023.html
All the patches are also available at
https://github.com/hvaibhav/am335x-linux am335x-upstream-staging
This patch has been boot tested on BeagleBone platform.
History:
========
ClockTree: http://www.mail-archive.com/linux-omap at vger.kernel.org/msg67095.html
Hwmod: http://www.spinics.net/lists/linux-omap/msg69189.html
Changes from V1:
- Removed all leaf nodes from clocktree, and migrated hwmod data to use parent clock of module's funtional clock as main_clk.
- Rebased patches against Kevin's omap_hwmod cleanup patch-series, where, cpu_is_xxx is no longer needed and platform specific api's will be registered during init call itself.
-
Paul Walmsley (1):
ARM: OMAP3+: clock: Move common clksel_rate & clock data to common
file
Vaibhav Hiremath (3):
ARM: OMAP2+: hwmod: Hook-up am33xx support in omap_hwmod framework
ARM: OMAP3+: clock33xx: Add AM33XX clock tree data
ARM: OMAP3+: hwmod: Add AM33XX HWMOD data
arch/arm/mach-omap2/Makefile | 2 + arch/arm/mach-omap2/clock.h | 14 + arch/arm/mach-omap2/clock33xx_data.c | 1105 ++++++++ arch/arm/mach-omap2/clock3xxx_data.c | 20 +- arch/arm/mach-omap2/clock44xx_data.c | 72 - arch/arm/mach-omap2/clock_common_data.c | 77 + arch/arm/mach-omap2/io.c | 4 + arch/arm/mach-omap2/omap_hwmod.c | 180 ++ arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 3368 +++++++++++++++++++++++++ arch/arm/plat-omap/include/plat/clkdev_omap.h | 1 + arch/arm/plat-omap/include/plat/omap_hwmod.h | 1 + 11 files changed, 4756 insertions(+), 88 deletions(-) create mode 100644 arch/arm/mach-omap2/clock33xx_data.c create mode 100644 arch/arm/mach-omap2/omap_hwmod_33xx_data.c
PATCH v2 1/4 ARM: OMAP2+: hwmod: Hook-up am33xx support in omap_hwmod framework
AM33XX PRCM architecture is different that any OMAP family of devices, so it is required to have separate implementation to handle AM33XX module enable/disable, reset assert/deassert functionality.
This patch adds wrapper api's in omap_hwmod framework to access prm/cm for AM33XX family of devices.
--- arch/arm/mach-omap2/omap_hwmod.c | 180 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 180 insertions(+), 0 deletions(-)
arch/arm/mach-omap2/omap_hwmod.c +180 -0
@@ -149,8 +149,10 @@#include "cm2xxx_3xxx.h" #include "cminst44xx.h" +#include "cm33xx.h" #include "prm2xxx_3xxx.h" #include "prm44xx.h" +#include "prm33xx.h" #include "prminst44xx.h" #include "mux.h"
@@ -821,6 +823,27 @@ static void _omap4_enable_module(struct omap_hwmod *oh) }/** +* _am33xx_enable_module - enable CLKCTRL modulemode on AM33XX +* @oh: struct omap_hwmod * +* +* Enables the PRCM module mode related to the hwmod @oh. +* No return value. +*/ +static void _am33xx_enable_module (struct omap_hwmod *oh) +{ +if (!oh->clkdm || !oh->prcm.omap4.modulemode) +return ; + +pr_debug ("omap_hwmod: %s: %s: %d\n" , + oh->name, __func__, oh->prcm.omap4.modulemode); + +am33xx_cm_module_enable (oh->prcm.omap4.modulemode, + oh->clkdm->cm_inst, + oh->clkdm->clkdm_offs, + oh->prcm.omap4.clkctrl_offs); +} + +/** * _omap4_wait_target_disable - wait for a module to be disabled on OMAP4 * @oh: struct omap_hwmod * *
@@ -847,6 +870,31 @@ static int _omap4_wait_target_disable(struct omap_hwmod *oh) }/** +* _am33xx_wait_target_disable - wait for a module to be disabled on AM33XX +* @oh: struct omap_hwmod * +* +* Wait for a module @oh to enter slave idle. Returns 0 if the module +* does not have an IDLEST bit or if the module successfully enters +* slave idle; otherwise, pass along the return value of the +* appropriate *_cm*_wait_module_idle() function. +*/ +static int _am33xx_wait_target_disable (struct omap_hwmod *oh) +{ +if (!oh) +return -EINVAL ; + +if (oh->_int_flags & _HWMOD_NO_MPU_PORT) +return 0 ; + +if (oh->flags &HWMOD_NO_IDLEST ) +return 0 ; + +return am33xx_cm_wait_module_idle (oh->clkdm->cm_inst, + oh->clkdm->clkdm_offs, + oh->prcm.omap4.clkctrl_offs); +} + +/** * _count_mpu_irqs - count the number of MPU IRQ lines associated with @oh * @oh: struct omap_hwmod *oh *
@@ -1552,6 +1600,37 @@ static int _omap4_disable_module(struct omap_hwmod *oh) }/** +* _am33xx_disable_module - enable CLKCTRL modulemode on AM33XX +* @oh: struct omap_hwmod * +* +* Disable the PRCM module mode related to the hwmod @oh. +* Return EINVAL if the modulemode is not supported and 0 in case of success. +*/ +static int _am33xx_disable_module (struct omap_hwmod *oh) +{ +int v; + +if (!oh->clkdm || !oh->prcm.omap4.modulemode) +return -EINVAL ; + +pr_debug ("omap_hwmod: %s: %s\n" , oh->name, __func__); + +am33xx_cm_module_disable (oh->clkdm->cm_inst, + oh->clkdm->clkdm_offs, + oh->prcm.omap4.clkctrl_offs); + +if (_are_any_hardreset_lines_asserted (oh)) +return 0 ; + + v =_am33xx_wait_target_disable (oh); +if (v) +pr_warn ("omap_hwmod: %s: _wait_target_disable failed\n" , + oh->name); + +return 0 ; +} + +/** * _ocp_softreset - reset an omap_hwmod via the OCP_SYSCONFIG bit * @oh: struct omap_hwmod * *
@@ -2448,6 +2527,33 @@ static int _omap4_wait_target_ready(struct omap_hwmod *oh) }/** +* _am33xx_wait_target_ready - wait for a module to leave slave idle +* @oh: struct omap_hwmod * +* +* Wait for a module @oh to leave slave idle. Returns 0 if the module +* does not have an IDLEST bit or if the module successfully leaves +* slave idle; otherwise, pass along the return value of the +* appropriate *_cm*_wait_module_ready() function. +*/ +static int _am33xx_wait_target_ready (struct omap_hwmod *oh) +{ +if (!oh || !oh->clkdm) +return -EINVAL ; + +if (oh->flags &HWMOD_NO_IDLEST ) +return 0 ; + +if (!_find_mpu_rt_port (oh)) +return 0 ; + +/* XXX check module SIDLEMODE, hardreset status */ + +return am33xx_cm_wait_module_ready (oh->clkdm->cm_inst, + oh->clkdm->clkdm_offs, + oh->prcm.omap4.clkctrl_offs); +} + +/** * _omap2_assert_hardreset - call OMAP2 PRM hardreset fn with hwmod args * @oh: struct omap_hwmod * to assert hardreset * @ohri: hardreset line data
@@ -2570,6 +2676,72 @@ static int _omap4_is_hardreset_asserted(struct omap_hwmod *oh, oh->prcm.omap4.rstctrl_offs); } +/** +* _am33xx_assert_hardreset - call AM33XX PRM hardreset fn with hwmod args +* @oh: struct omap_hwmod * to assert hardreset +* @ohri: hardreset line data +* +* Call am33xx_prminst_assert_hardreset() with parameters extracted +* from the hwmod @oh and the hardreset line data @ohri. Only +* intended for use as an soc_ops function pointer. Passes along the +* return value from am33xx_prminst_assert_hardreset(). XXX This +* function is scheduled for removal when the PRM code is moved into +* drivers/. +*/ +static int _am33xx_assert_hardreset (struct omap_hwmod *oh, +struct omap_hwmod_rst_info *ohri) + +{ +return am33xx_prm_assert_hardreset (ohri->rst_shift, + oh->clkdm->pwrdm.ptr->prcm_offs, + oh->prcm.omap4.rstctrl_offs); +} + +/** +* _am33xx_deassert_hardreset - call AM33XX PRM hardreset fn with hwmod args +* @oh: struct omap_hwmod * to deassert hardreset +* @ohri: hardreset line data +* +* Call am33xx_prminst_deassert_hardreset() with parameters extracted +* from the hwmod @oh and the hardreset line data @ohri. Only +* intended for use as an soc_ops function pointer. Passes along the +* return value from am33xx_prminst_deassert_hardreset(). XXX This +* function is scheduled for removal when the PRM code is moved into +* drivers/. +*/ +static int _am33xx_deassert_hardreset (struct omap_hwmod *oh, +struct omap_hwmod_rst_info *ohri) +{ +if (ohri->st_shift) +pr_err ("omap_hwmod: %s: %s: hwmod data error: OMAP4 does not support st_shift\n" , + oh->name, ohri->name); + +return am33xx_prm_deassert_hardreset (ohri->rst_shift, + oh->clkdm->pwrdm.ptr->prcm_offs, + oh->prcm.omap4.rstctrl_offs, + oh->prcm.omap4.rstst_offs); +} + +/** +* _am33xx_is_hardreset_asserted - call AM33XX PRM hardreset fn with hwmod args +* @oh: struct omap_hwmod * to test hardreset +* @ohri: hardreset line data +* +* Call am33xx_prminst_is_hardreset_asserted() with parameters +* extracted from the hwmod @oh and the hardreset line data @ohri. +* Only intended for use as an soc_ops function pointer. Passes along +* the return value from am33xx_prminst_is_hardreset_asserted(). XXX +* This function is scheduled for removal when the PRM code is moved +* into drivers/. +*/ +static int _am33xx_is_hardreset_asserted (struct omap_hwmod *oh, +struct omap_hwmod_rst_info *ohri) +{ +return am33xx_prm_is_hardreset_asserted (ohri->rst_shift, + oh->clkdm->pwrdm.ptr->prcm_offs, + oh->prcm.omap4.rstctrl_offs); +} +/* Public functions */ u32 omap_hwmod_read (struct omap_hwmod *oh,u16 reg_offs)
@@ -3569,6 +3741,14 @@ void __init omap_hwmod_init(void) soc_ops.deassert_hardreset = _omap4_deassert_hardreset; soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted; soc_ops.init_clkdm = _init_clkdm; + }else if (soc_is_am33xx ()) { + soc_ops.enable_module = _am33xx_enable_module; + soc_ops.disable_module = _am33xx_disable_module; + soc_ops.wait_target_ready = _am33xx_wait_target_ready; + soc_ops.assert_hardreset = _am33xx_assert_hardreset; + soc_ops.deassert_hardreset = _am33xx_deassert_hardreset; + soc_ops.is_hardreset_asserted = _am33xx_is_hardreset_asserted; + soc_ops.init_clkdm = _init_clkdm; }else {WARN (1 ,"omap_hwmod: unknown SoC type\n" ); }
--
1.7.0.4
PATCH v2 2/4 ARM: OMAP3+: clock: Move common clksel_rate & clock data to common file
In reply to Vaibhav HiremathFrom: Paul Walmsley <[email protected]>
OMAP3, OMAP4 and AM33xx share some common data like, clksel_rate oscillator clock input (Virtual clock nodes), required for clock tree; so move common data to common data file so that it can be reused.
[hvaibhav at ti.com: Created separate commit from Paul's developement
branch]
---
I would like propose further data moment from clock tree perspective,
- Move all "clksel_rate" to common clock data, since one or the multiple clocktree's will use them.
- Move virtual clk data structures to common clock data.
- Move 32k clk structure to common clock data.
arch/arm/mach-omap2/clock.h | 12 +++++ arch/arm/mach-omap2/clock3xxx_data.c | 20 ++------ arch/arm/mach-omap2/clock44xx_data.c | 72 ----------------------------- arch/arm/mach-omap2/clock_common_data.c | 77 +++++++++++++++++++++++++++++++ 4 files changed, 93 insertions(+), 88 deletions(-)
arch/arm/mach-omap2/clock.h +12 -0
@@ -155,4 +155,16 @@ extern const struct clkops clkops_omap3_noncore_dpll_ops;extern const struct clkops clkops_omap3_core_dpll_ops;extern const struct clkops clkops_omap4_dpllmx_ops; +/* clksel_rate blocks shared between OMAP44xx and AM33xx */ +extern const struct clksel_rate div_1_0_rates[]; +extern const struct clksel_rate div_1_1_rates[]; +extern const struct clksel_rate div_1_2_rates[]; +extern const struct clksel_rate div_1_3_rates[]; +extern const struct clksel_rate div_1_4_rates[]; +extern const struct clksel_rate div31_1to31_rates[]; + +/* clocks shared between various OMAP SoCs */ +extern struct clk virt_19200000_ck; +extern struct clk virt_26000000_ck; +#endif
arch/arm/mach-omap2/clock3xxx_data.c +4 -16
@@ -93,18 +93,6 @@ static struct clk virt_16_8m_ck = { .rate = 16800000, }; -static struct clk virt_19_2m_ck = { - .name ="virt_19_2m_ck" , - .ops = &clkops_null, - .rate =19200000 , -}; - -static struct clk virt_26m_ck = { - .name ="virt_26m_ck" , - .ops = &clkops_null, - .rate =26000000 , -}; -static struct clk virt_38_4m_ck = { .name ="virt_38_4m_ck" , .ops = &clkops_null,
@@ -145,8 +133,8 @@ static const struct clksel osc_sys_clksel[] = { { .parent = &virt_12m_ck, .rates = osc_sys_12m_rates }, { .parent = &virt_13m_ck, .rates = osc_sys_13m_rates }, { .parent = &virt_16_8m_ck, .rates = osc_sys_16_8m_rates }, - { .parent = &virt_19_2m_ck, .rates = osc_sys_19_2m_rates }, - { .parent = &virt_26m_ck, .rates = osc_sys_26m_rates }, + { .parent = &virt_19200000_ck, .rates = osc_sys_19_2m_rates }, + { .parent = &virt_26000000_ck, .rates = osc_sys_26m_rates }, { .parent = &virt_38_4m_ck, .rates = osc_sys_38_4m_rates }, { .parent = NULL }, };
@@ -3230,8 +3218,8 @@ static struct omap_clk omap3xxx_clks[] = {CLK (NULL ,"virt_12m_ck" , &virt_12m_ck,CK_3XXX ),CLK (NULL ,"virt_13m_ck" , &virt_13m_ck,CK_3XXX ),CLK (NULL ,"virt_16_8m_ck" , &virt_16_8m_ck,CK_3430ES2PLUS |CK_AM35XX |CK_36XX ), -CLK (NULL ,"virt_19_2m_ck" , &virt_19_2m_ck,CK_3XXX ), -CLK (NULL ,"virt_26m_ck" , &virt_26m_ck,CK_3XXX ), +CLK (NULL ,"virt_19200000_ck" , &virt_19200000_ck,CK_3XXX ), +CLK (NULL ,"virt_26000000_ck" , &virt_26000000_ck,CK_3XXX ),CLK (NULL ,"virt_38_4m_ck" , &virt_38_4m_ck,CK_3XXX ),CLK (NULL ,"osc_sys_ck" , &osc_sys_ck,CK_3XXX ), CLK(NULL, "sys_ck", &sys_ck, CK_3XXX),
arch/arm/mach-omap2/clock44xx_data.c +0 -72
90 lines not on this page · raw message
arch/arm/mach-omap2/clock_common_data.c +77 -0
80 lines not on this page · raw message
--
1.7.0.4
PATCH v2 2/4 ARM: OMAP3+: clock: Move common clksel_rate & clock data to common file
Quoted 11 lines · Vaibhav
From: Paul Walmsley <[email protected]>
OMAP3, OMAP4 and AM33xx share some common data like,
clksel_rateoscillator clock input (Virtual clock nodes), required for clock tree; so move common data to common data file so that it can be reused.Signed-off-by Paul Walmsley <[email protected]>[hvaibhav at ti.com: Created separate commit from Paul's developement
branch]Signed-off-by Vaibhav Hiremath <[email protected]>
Paul,
Any comments on this approach? If you are ok, I would want to split this patch and take it forward separately.
Thanks,
Vaibhav
Quoted 266 lines
---
I would like propose further data moment from clock tree perspective,- Move all "
clksel_rate" to common clock data, since one or the multiple clocktree's will use them.
- Move virtual clk data structures to common clock data.
- Move 32k clk structure to common clock data.arch/arm/mach-omap2/clock.h | 12 +++++ arch/arm/mach-omap2/clock3xxx_data.c | 20 ++------ arch/arm/mach-omap2/clock44xx_data.c | 72 ----------------------------- arch/arm/mach-omap2/clock_common_data.c | 77 +++++++++++++++++++++++++++++++ 4 files changed, 93 insertions(+), 88 deletions(-)arch/arm/mach-omap2/clock.h +12
-0@@ -155,4 +155,16 @@ extern const struct clkops clkops_omap3_noncore_dpll_ops;extern const struct clkops clkops_omap3_core_dpll_ops;extern const struct clkops clkops_omap4_dpllmx_ops; +/* clksel_rate blocks shared between OMAP44xx and AM33xx */ +extern const struct clksel_rate div_1_0_rates[]; +extern const struct clksel_rate div_1_1_rates[]; +extern const struct clksel_rate div_1_2_rates[]; +extern const struct clksel_rate div_1_3_rates[]; +extern const struct clksel_rate div_1_4_rates[]; +extern const struct clksel_rate div31_1to31_rates[]; + +/* clocks shared between various OMAP SoCs */ +extern struct clk virt_19200000_ck; +extern struct clk virt_26000000_ck; +#endif arch/arm/mach-omap2/clock3xxx_data.c +4
-16@@ -93,18 +93,6 @@ static struct clk virt_16_8m_ck = { .rate = 16800000, }; -static struct clk virt_19_2m_ck = { - .name ="virt_19_2m_ck" , - .ops = &clkops_null, - .rate =19200000 , -}; - -static struct clk virt_26m_ck = { - .name ="virt_26m_ck" , - .ops = &clkops_null, - .rate =26000000 , -}; -static struct clk virt_38_4m_ck = { .name ="virt_38_4m_ck" , .ops = &clkops_null,@@ -145,8 +133,8 @@ static const struct clksel osc_sys_clksel[] = { { .parent = &virt_12m_ck, .rates = osc_sys_12m_rates }, { .parent = &virt_13m_ck, .rates = osc_sys_13m_rates }, { .parent = &virt_16_8m_ck, .rates = osc_sys_16_8m_rates }, - { .parent = &virt_19_2m_ck, .rates = osc_sys_19_2m_rates }, - { .parent = &virt_26m_ck, .rates = osc_sys_26m_rates }, + { .parent = &virt_19200000_ck, .rates = osc_sys_19_2m_rates }, + { .parent = &virt_26000000_ck, .rates = osc_sys_26m_rates }, { .parent = &virt_38_4m_ck, .rates = osc_sys_38_4m_rates }, { .parent = NULL }, };@@ -3230,8 +3218,8 @@ static struct omap_clk omap3xxx_clks[] = {CLK (NULL ,"virt_12m_ck" , &virt_12m_ck,CK_3XXX ),CLK (NULL ,"virt_13m_ck" , &virt_13m_ck,CK_3XXX ),CLK (NULL ,"virt_16_8m_ck" , &virt_16_8m_ck,CK_3430ES2PLUS |CK_AM35XX |CK_36XX ), -CLK (NULL ,"virt_19_2m_ck" , &virt_19_2m_ck,CK_3XXX ), -CLK (NULL ,"virt_26m_ck" , &virt_26m_ck,CK_3XXX ), +CLK (NULL ,"virt_19200000_ck" , &virt_19200000_ck,CK_3XXX ), +CLK (NULL ,"virt_26000000_ck" , &virt_26000000_ck,CK_3XXX ),CLK (NULL ,"virt_38_4m_ck" , &virt_38_4m_ck,CK_3XXX ),CLK (NULL ,"osc_sys_ck" , &osc_sys_ck,CK_3XXX ), CLK(NULL, "sys_ck", &sys_ck, CK_3XXX),arch/arm/mach-omap2/clock44xx_data.c +0
-72@@ -106,18 +106,6 @@ static struct clk virt_16800000_ck = { .rate = 16800000, }; -static struct clk virt_19200000_ck = { - .name ="virt_19200000_ck" , - .ops = &clkops_null, - .rate =19200000 , -}; - -static struct clk virt_26000000_ck = { - .name ="virt_26000000_ck" , - .ops = &clkops_null, - .rate =26000000 , -}; -static struct clk virt_27000000_ck = { .name ="virt_27000000_ck" , .ops = &clkops_null,@@ -130,31 +118,6 @@ static struct clk virt_38400000_ck = { .rate = 38400000, }; -static const struct clksel_rate div_1_0_rates[] = { - { .div =1 , .val =0 , .flags =RATE_IN_4430 }, - { .div =0 }, -}; - -static const struct clksel_rate div_1_1_rates[] = { - { .div =1 , .val =1 , .flags =RATE_IN_4430 }, - { .div =0 }, -}; - -static const struct clksel_rate div_1_2_rates[] = { - { .div =1 , .val =2 , .flags =RATE_IN_4430 }, - { .div =0 }, -}; - -static const struct clksel_rate div_1_3_rates[] = { - { .div =1 , .val =3 , .flags =RATE_IN_4430 }, - { .div =0 }, -}; - -static const struct clksel_rate div_1_4_rates[] = { - { .div =1 , .val =4 , .flags =RATE_IN_4430 }, - { .div =0 }, -}; -static const struct clksel_rate div_1_5_rates[] = { { .div =1 , .val =5 , .flags =RATE_IN_4430 }, { .div =0 },@@ -288,41 +251,6 @@ static struct clk dpll_abe_x2_ck = { .recalc = &omap3_clkoutx2_recalc, }; -static const struct clksel_rate div31_1to31_rates[] = { - { .div =1 , .val =1 , .flags =RATE_IN_4430 }, - { .div =2 , .val =2 , .flags =RATE_IN_4430 }, - { .div =3 , .val =3 , .flags =RATE_IN_4430 }, - { .div =4 , .val =4 , .flags =RATE_IN_4430 }, - { .div =5 , .val =5 , .flags =RATE_IN_4430 }, - { .div =6 , .val =6 , .flags =RATE_IN_4430 }, - { .div =7 , .val =7 , .flags =RATE_IN_4430 }, - { .div =8 , .val =8 , .flags =RATE_IN_4430 }, - { .div =9 , .val =9 , .flags =RATE_IN_4430 }, - { .div =10 , .val =10 , .flags =RATE_IN_4430 }, - { .div =11 , .val =11 , .flags =RATE_IN_4430 }, - { .div =12 , .val =12 , .flags =RATE_IN_4430 }, - { .div =13 , .val =13 , .flags =RATE_IN_4430 }, - { .div =14 , .val =14 , .flags =RATE_IN_4430 }, - { .div =15 , .val =15 , .flags =RATE_IN_4430 }, - { .div =16 , .val =16 , .flags =RATE_IN_4430 }, - { .div =17 , .val =17 , .flags =RATE_IN_4430 }, - { .div =18 , .val =18 , .flags =RATE_IN_4430 }, - { .div =19 , .val =19 , .flags =RATE_IN_4430 }, - { .div =20 , .val =20 , .flags =RATE_IN_4430 }, - { .div =21 , .val =21 , .flags =RATE_IN_4430 }, - { .div =22 , .val =22 , .flags =RATE_IN_4430 }, - { .div =23 , .val =23 , .flags =RATE_IN_4430 }, - { .div =24 , .val =24 , .flags =RATE_IN_4430 }, - { .div =25 , .val =25 , .flags =RATE_IN_4430 }, - { .div =26 , .val =26 , .flags =RATE_IN_4430 }, - { .div =27 , .val =27 , .flags =RATE_IN_4430 }, - { .div =28 , .val =28 , .flags =RATE_IN_4430 }, - { .div =29 , .val =29 , .flags =RATE_IN_4430 }, - { .div =30 , .val =30 , .flags =RATE_IN_4430 }, - { .div =31 , .val =31 , .flags =RATE_IN_4430 }, - { .div =0 }, -}; -static const struct clksel dpll_abe_m2x2_div[] = { { .parent = &dpll_abe_x2_ck, .rates = div31_1to31_rates }, { .parent =NULL },arch/arm/mach-omap2/clock_common_data.c +77
-1@@ -43,3 +43,80 @@ const struct clksel_rate dsp_ick_rates[] = { { .div = 3, .val = 3, .flags = RATE_IN_243X }, { .div = 0 }, }; + + +/* clksel_rate blocks shared between OMAP44xx and AM33xx */ + +const struct clksel_rate div_1_0_rates[] = { + { .div =1 , .val =0 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =0 }, +}; + +const struct clksel_rate div_1_1_rates[] = { + { .div =1 , .val =1 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =0 }, +}; + +const struct clksel_rate div_1_2_rates[] = { + { .div =1 , .val =2 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =0 }, +}; + +const struct clksel_rate div_1_3_rates[] = { + { .div =1 , .val =3 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =0 }, +}; + +const struct clksel_rate div_1_4_rates[] = { + { .div =1 , .val =4 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =0 }, +}; + +const struct clksel_rate div31_1to31_rates[] = { + { .div =1 , .val =1 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =2 , .val =2 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =3 , .val =3 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =4 , .val =4 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =5 , .val =5 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =6 , .val =6 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =7 , .val =7 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =8 , .val =8 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =9 , .val =9 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =10 , .val =10 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =11 , .val =11 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =12 , .val =12 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =13 , .val =13 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =14 , .val =14 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =15 , .val =15 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =16 , .val =16 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =17 , .val =17 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =18 , .val =18 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =19 , .val =19 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =20 , .val =20 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =21 , .val =21 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =22 , .val =22 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =23 , .val =23 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =24 , .val =24 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =25 , .val =25 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =26 , .val =26 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =27 , .val =27 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =28 , .val =28 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =29 , .val =29 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =30 , .val =30 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =31 , .val =31 , .flags =RATE_IN_4430 |RATE_IN_AM33XX }, + { .div =0 }, +}; + +/* Clocks shared between various OMAP SoCs */ + +struct clk virt_19200000_ck = { + .name ="virt_19200000_ck" , + .ops = &clkops_null, + .rate =19200000 , +}; + +struct clk virt_26000000_ck = { + .name ="virt_26000000_ck" , + .ops = &clkops_null, + .rate =26000000 , +}; --1.7.0.4
PATCH v2 3/4 ARM: OMAP3+: clock33xx: Add AM33XX clock tree data
In reply to Vaibhav HiremathAM33XX clock implementation is different than any existing OMAP family of devices. Although DPLL module is similar to OMAP4 device, but the usage is very much different than OMAP4. AM33XX has different peripheral set and each module gets integrated to the clock framework differently than OMAP family of devices.
This patch adds full Clock tree data for AM33XX family of devices and also integrates it into existing OMAP framework.
---
NOTE: Please note that, the clock tree needs to be migrated
to common-clock framework.
arch/arm/mach-omap2/Makefile | 1 + arch/arm/mach-omap2/clock.h | 2 + arch/arm/mach-omap2/clock33xx_data.c | 1105 +++++++++++++++++++++++++ arch/arm/mach-omap2/io.c | 2 + arch/arm/plat-omap/include/plat/clkdev_omap.h | 1 + 5 files changed, 1111 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-omap2/clock33xx_data.c
arch/arm/mach-omap2/Makefile +1 -0
@@ -158,6 +158,7 @@ obj-$(CONFIG_ARCH_OMAP3) += clkt_iclk.o obj-$(CONFIG_ARCH_OMAP4) += $(clock-common) clock44xx_data.o obj-$(CONFIG_ARCH_OMAP4) += dpll3xxx.o dpll44xx.o obj-$(CONFIG_SOC_AM33XX) += $(clock-common) dpll3xxx.o +obj-$(CONFIG_SOC_AM33XX) += clock33xx_data.o # OMAP2 clock rate set data (old "OPP" data) obj-$(CONFIG_SOC_OMAP2420) += opp2420_data.o
arch/arm/mach-omap2/clock.h +2 -0
@@ -167,4 +167,6 @@ extern const struct clksel_rate div31_1to31_rates[];extern struct clk virt_19200000_ck;extern struct clk virt_26000000_ck; +extern int am33xx_clk_init (void ); +#endif
arch/arm/mach-omap2/clock33xx_data.c new file +1105 -0
1,105 lines not on this page · raw message
arch/arm/mach-omap2/io.c +2 -0
@@ -38,6 +38,7 @@#include "powerdomain.h" #include "clockdomain.h" #include "common.h" +#include "clock.h" #include "clock2xxx.h" #include "clock3xxx.h" #include "clock44xx.h"
@@ -431,6 +432,7 @@ void __init am33xx_init_early(void)am33xx_voltagedomains_init ();am33xx_powerdomains_init ();am33xx_clockdomains_init (); + am33xx_clk_init(); }#endif
arch/arm/plat-omap/include/plat/clkdev_omap.h +1 -0
@@ -39,6 +39,7 @@ struct omap_clk {#define CK_443X (1 << 11)#define CK_TI816X (1 << 12)#define CK_446X (1 << 13) +#define CK_AM33XX (1 << 14)/* AM33xx specific clocks */ #define CK_1710 (1 << 15)/* 1710 extra for rate selection */
--
1.7.0.4
PATCH v2 4/4 ARM: OMAP3+: hwmod: Add AM33XX HWMOD data
In reply to Vaibhav HiremathThis patch adds HWMOD data for all the peripherals of AM335X device and also hooks up to the existing OMAP framework.
hwmod data has been already been cleaned up for the recent changes in clocktree, where all leaf nodes have been removed, since, with modulemode based control, both clock and hwmod interface does same thing. This reduces the code size to large extent and also avoids duplication of same control.
So instead of specifying module's leaf node as a main_clk, now we are relying on parent clock of module's functional clock.
--- arch/arm/mach-omap2/Makefile | 1 + arch/arm/mach-omap2/io.c | 2 + arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 3368 ++++++++++++++++++++++++++ arch/arm/plat-omap/include/plat/omap_hwmod.h | 1 + 4 files changed, 3372 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-omap2/omap_hwmod_33xx_data.c
arch/arm/mach-omap2/Makefile +1 -0
@@ -178,6 +178,7 @@ obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2430_data.o obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_2xxx_3xxx_ipblock_data.o obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_2xxx_3xxx_interconnect_data.o obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_3xxx_data.o +obj-$(CONFIG_SOC_AM33XX) += omap_hwmod_33xx_data.o obj-$(CONFIG_ARCH_OMAP4) += omap_hwmod_44xx_data.o # EMU peripherals
arch/arm/mach-omap2/io.c +2 -0
@@ -432,6 +432,8 @@ void __init am33xx_init_early(void)am33xx_voltagedomains_init ();am33xx_powerdomains_init ();am33xx_clockdomains_init (); +am33xx_hwmod_init (); +omap_hwmod_init_postsetup (); am33xx_clk_init(); }#endif
arch/arm/mach-omap2/omap_hwmod_33xx_data.c new file +3368 -0
2,985 lines not on this page · raw message
arch/arm/plat-omap/include/plat/omap_hwmod.h +1 -0
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
--
1.7.0.4
Part of the diff is not shown here. View the raw message.
Paul Walmsley
maintainerPATCH v2 4/4 ARM: OMAP3+: hwmod: Add AM33XX HWMOD data
Hi Vaibhav
a comment.
Quoted 2 lines · Vaibhav Hiremath
This patch adds HWMOD data for all the peripherals of AM335X device and also hooks up to the existing OMAP framework.
...
Quoted 6 lines
arch/arm/mach-omap2/omap_hwmod_33xx_data.c new file +0
-0@@ -0,0 +1,3368 @@
...
arch/arm/mach-omap2/omap_hwmod_33xx_data.c line 75
Quoted 4 lines
arch/arm/mach-omap2/omap_hwmod_33xx_data.c new file +4
-0+static struct omap_hwmod_irq_info am33xx_emif_irqs[] = { + { .name ="ddrerr0" , .irq =101 }, + { .irq =-1 } +};
So the above array of struct omap_hwmod_irq_info records has a terminator (which is correct), but many similar arrays do not, such as:
arch/arm/mach-omap2/omap_hwmod_33xx_data.c line 105
Quoted 5 lines
arch/arm/mach-omap2/omap_hwmod_33xx_data.c new file +5
-0+/* l3_main (l3_fast) */ +static struct omap_hwmod_irq_info am33xx_l3_main_irqs[] = { + { .name ="l3debug" , .irq =9 }, + { .name ="l3appint" , .irq =10 }, +};
and
arch/arm/mach-omap2/omap_hwmod_33xx_data.c line 224
Quoted 6 lines
arch/arm/mach-omap2/omap_hwmod_33xx_data.c new file +6
-0+static struct omap_hwmod_irq_info am33xx_mpu_irqs[] = { + { .name ="emuint" , .irq =0 }, + { .name ="commtx" , .irq =1 }, + { .name ="commrx" , .irq =2 }, + { .name ="bench" , .irq =3 }, +};
and
arch/arm/mach-omap2/omap_hwmod_33xx_data.c line 255
Quoted 7 lines
arch/arm/mach-omap2/omap_hwmod_33xx_data.c new file +7
-0+static struct omap_hwmod_rst_info am33xx_wkup_m3_resets[] = { + { .name ="wkup_m3" , .rst_shift =3 , .st_shift =5 }, +}; + +static struct omap_hwmod_irq_info am33xx_wkup_m3_irqs[] = { + { .name ="txev" , .irq =78 }, +};
and several others.
Could you add those, please?
The omap_hwmod_dma_info arrays look clean to me.
- Paul
PATCH v2 4/4 ARM: OMAP3+: hwmod: Add AM33XX HWMOD data
Quoted 56 lines · Paul Walmsley
Hi Vaibhav
a comment.
Quoted 2 lines · Vaibhav Hiremath
This patch adds HWMOD data for all the peripherals of AM335X device and also hooks up to the existing OMAP framework.
...
Quoted 6 lines
arch/arm/mach-omap2/omap_hwmod_33xx_data.c new file +0
-0@@ -0,0 +1,3368 @@...
arch/arm/mach-omap2/omap_hwmod_33xx_data.c line 75
Quoted 4 lines
arch/arm/mach-omap2/omap_hwmod_33xx_data.c new file +4
-0+static struct omap_hwmod_irq_info am33xx_emif_irqs[] = { + { .name ="ddrerr0" , .irq =101 }, + { .irq =-1 } +};So the above array of struct
omap_hwmod_irq_inforecords has a terminator (which is correct), but many similar arrays do not, such as:arch/arm/mach-omap2/omap_hwmod_33xx_data.c line 105
Quoted 5 lines
arch/arm/mach-omap2/omap_hwmod_33xx_data.c new file +5
-0+/* l3_main (l3_fast) */ +static struct omap_hwmod_irq_info am33xx_l3_main_irqs[] = { + { .name ="l3debug" , .irq =9 }, + { .name ="l3appint" , .irq =10 }, +};and
arch/arm/mach-omap2/omap_hwmod_33xx_data.c line 224
Quoted 6 lines
arch/arm/mach-omap2/omap_hwmod_33xx_data.c new file +6
-0+static struct omap_hwmod_irq_info am33xx_mpu_irqs[] = { + { .name ="emuint" , .irq =0 }, + { .name ="commtx" , .irq =1 }, + { .name ="commrx" , .irq =2 }, + { .name ="bench" , .irq =3 }, +};and
arch/arm/mach-omap2/omap_hwmod_33xx_data.c line 255
Quoted 7 lines
arch/arm/mach-omap2/omap_hwmod_33xx_data.c new file +7
-0+static struct omap_hwmod_rst_info am33xx_wkup_m3_resets[] = { + { .name ="wkup_m3" , .rst_shift =3 , .st_shift =5 }, +}; + +static struct omap_hwmod_irq_info am33xx_wkup_m3_irqs[] = { + { .name ="txev" , .irq =78 }, +};and several others.
Quoted 2 lines
Could you add those, please?
Thanks Paul for the review, I will fix it next version.
Quoted 2 lines
The
omap_hwmod_dma_infoarrays look clean to me.
Have you done with review? Should I wait for further comments or submit the next version?
Thanks,
Vaibhav
Paul Walmsley
maintainerPATCH v2 4/4 ARM: OMAP3+: hwmod: Add AM33XX HWMOD data
Quoted 2 lines · Vaibhav
Have you done with review? Should I wait for further comments or submit the next version?
Please go ahead and post the next version, I haven't found any other issues with it yet.
- Paul
Tony Lindgren
maintainerv2 cover ARM: OMAP2+: am33xx: Add clocktree and hwmod data
In reply to Vaibhav HiremathQuoted 8 lines · Vaibhav Hiremath
This patch adds complete clockctree and hwmod data for the AM33XX family of devices.
This patch-series is cleaned up further from Paul's cleanup activity on AM33xx clocktree, where all leaf nodes have been removed and now modules enable/disable is controlled only using hwmod framework interface.
Quoted 8 lines
There are certain modules, like clkdiv32k, debugss, etc..., for which we still doesn't have
hwmod_datapresent, so in order to disable these modules during boot time, we still have to maintain clk node for them. Comment has been added to highlight this, and in the future we will cleanup this.
As far as, CLKDIV32K module, in reality is not module but still we have MODULEMODE to control it, so we may have to keep this node alone in the clocktree.
Considering that we have the RFC patches available for common clk fwk, we should probably avoid the extra churn and have this use the common clk fwk instead. Of course that is assuming the common clk fwk patches will be mergeable soonish.
Regards,
Tony
v2 cover ARM: OMAP2+: am33xx: Add clocktree and hwmod data
Quoted 18 lines · Tony Lindgren
Quoted 8 lines · Vaibhav Hiremath
This patch adds complete clockctree and hwmod data for the AM33XX family of devices.
This patch-series is cleaned up further from Paul's cleanup activity on AM33xx clocktree, where all leaf nodes have been removed and now modules enable/disable is controlled only using hwmod framework interface.
Quoted 8 lines
There are certain modules, like clkdiv32k, debugss, etc..., for which we still doesn't have
hwmod_datapresent, so in order to disable these modules during boot time, we still have to maintain clk node for them. Comment has been added to highlight this, and in the future we will cleanup this.
As far as, CLKDIV32K module, in reality is not module but still we have MODULEMODE to control it, so we may have to keep this node alone in the clocktree.
Quoted 5 lines
Considering that we have the RFC patches available for common clk fwk, we should probably avoid the extra churn and have this use the common clk fwk instead. Of course that is assuming the common clk fwk patches will be mergeable soonish.
Tony,
I am not quite sure how much time it will take to merge common clock changes from Rajendra, since it is still in RFC stage and may take couple merge windows. I would recommend to merge clock-tree and hwmod patches atleast to the linux-next, so that it gets validated for some time and we atleast would be able to boot the BeagleBone (community board) from linux-next/master. People can start further development using this on BeagleBone platform.
Based on common-clock migration activity on OMAP, we can certainly make decision on pushing it to Mainline (Linus's) tree. And also I will start basing AM33XX clocktree on Rajendra's patches, so that it will get merged at the same time.
Thanks,
Vaibhav
Tony Lindgren
maintainerv2 cover ARM: OMAP2+: am33xx: Add clocktree and hwmod data
Quoted 34 lines · Hiremath, Vaibhav
Quoted 18 lines · Tony Lindgren
Quoted 8 lines · Vaibhav Hiremath
This patch adds complete clockctree and hwmod data for the AM33XX family of devices.
This patch-series is cleaned up further from Paul's cleanup activity on AM33xx clocktree, where all leaf nodes have been removed and now modules enable/disable is controlled only using hwmod framework interface.
Quoted 8 lines
There are certain modules, like clkdiv32k, debugss, etc..., for which we still doesn't have
hwmod_datapresent, so in order to disable these modules during boot time, we still have to maintain clk node for them. Comment has been added to highlight this, and in the future we will cleanup this.
As far as, CLKDIV32K module, in reality is not module but still we have MODULEMODE to control it, so we may have to keep this node alone in the clocktree.Quoted 5 lines
Considering that we have the RFC patches available for common clk fwk, we should probably avoid the extra churn and have this use the common clk fwk instead. Of course that is assuming the common clk fwk patches will be mergeable soonish.
Tony,
I am not quite sure how much time it will take to merge common clock changes from Rajendra, since it is still in RFC stage and may take couple merge windows. I would recommend to merge clock-tree and hwmod patches atleast to the linux-next, so that it gets validated for some time and we atleast would be able to boot the BeagleBone (community board) from linux-next/master. People can start further development using this on BeagleBone platform.
Quoted 4 lines
Based on common-clock migration activity on OMAP, we can certainly make decision on pushing it to Mainline (Linus's) tree. And also I will start basing AM33XX clocktree on Rajendra's patches, so that it will get merged at the same time.
OK that sounds fair to me. Let's see what Paul and Rajendra say, it's really up to them to make the call. We need minimize the extra load for Paul and Rajendra here as it's already a big effort.
Regards,
Tony
v2 cover ARM: OMAP2+: am33xx: Add clocktree and hwmod data
Quoted 11 lines
Quoted 11 lines
Quoted 6 lines
Considering that we have the RFC patches available for common clk fwk, we should probably avoid the extra churn and have this use the common clk fwk instead. Of course that is assuming the common clk fwk patches will be mergeable soonish.
Tony,
I am not quite sure how much time it will take to merge common clock changes from Rajendra, since it is still in RFC stage and may take couple merge
I am certainly hoping it does not take couple of merge windows and plan to get it in good shape for 3.6.
Quoted 14 lines
Quoted 9 lines
windows. I would recommend to merge clock-tree and hwmod patches atleast to the linux-next, so that it gets validated for some time and we atleast would be able to boot the BeagleBone (community board) from linux-next/master. People can start further development using this on BeagleBone platform.
Based on common-clock migration activity on OMAP, we can certainly make decision on pushing it to Mainline (Linus's) tree. And also I will start basing AM33XX clocktree on Rajendra's patches, so that it will get merged at the same time.
OK that sounds fair to me. Let's see what Paul and Rajendra say, it's really up to them to make the call. We need minimize the extra load for Paul and Rajendra here as it's already a big effort.
v2 cover ARM: OMAP2+: am33xx: Add clocktree and hwmod data
In reply to Tony LindgrenQuoted 18 lines · Tony Lindgren
Quoted 8 lines · Vaibhav Hiremath
This patch adds complete clockctree and hwmod data for the AM33XX family of devices.
This patch-series is cleaned up further from Paul's cleanup activity on AM33xx clocktree, where all leaf nodes have been removed and now modules enable/disable is controlled only using hwmod framework interface.
Quoted 8 lines
There are certain modules, like clkdiv32k, debugss, etc..., for which we still doesn't have
hwmod_datapresent, so in order to disable these modules during boot time, we still have to maintain clk node for them. Comment has been added to highlight this, and in the future we will cleanup this.
As far as, CLKDIV32K module, in reality is not module but still we have MODULEMODE to control it, so we may have to keep this node alone in the clocktree.
Quoted 5 lines
Considering that we have the RFC patches available for common clk fwk, we should probably avoid the extra churn and have this use the common clk fwk instead. Of course that is assuming the common clk fwk patches will be mergeable soonish.
I will try to make sure that, their effort is only required for review (nothing else).
Lets here from Paul and Rajendra on this.
It would be really great if we decide to merge them to linux next, People really can start using linux-next/master for further development on BeagleBone.
Thanks,
Vaibhav
v2 cover ARM: OMAP2+: am33xx: Add clocktree and hwmod data
In reply to Vaibhav HiremathQuoted 41 lines · Vaibhav
This patch adds complete clockctree and hwmod data for the AM33XX family of devices.
This patch-series is cleaned up further from Paul's cleanup activity on AM33xx clocktree, where all leaf nodes have been removed and now modules enable/disable is controlled only using hwmod framework interface.
There are certain modules, like clkdiv32k, debugss, etc..., for which we still doesn't have
hwmod_datapresent, so in order to disable these modules during boot time, we still have to maintain clk node for them. Comment has been added to highlight this, and in the future we will cleanup this.
As far as, CLKDIV32K module, in reality is not module but still we have MODULEMODE to control it, so we may have to keep this node alone in the clocktree.This patch is created on top of recently submitted patches (accepted on the list) for am33xx voltage/powerdomain/clockcomain patch-series -
http://www.mail-archive.com/linux-omap at vger.kernel.org/msg69023.htmlAll the patches are also available at
https://github.com/hvaibhav/am335x-linux am335x-upstream-stagingThis patch has been boot tested on BeagleBone platform.
History:
========
ClockTree: http://www.mail-archive.com/linux-omap at vger.kernel.org/msg67095.html
Hwmod: http://www.spinics.net/lists/linux-omap/msg69189.htmlChanges from V1:
- Removed all leaf nodes from clocktree, and migrated hwmod data to use parent clock of module's funtional clock asmain_clk.
- Rebased patches against Kevin'somap_hwmodcleanup patch-series, where,cpu_is_xxxis no longer needed and platform specific api's will be registered during init call itself.
-
Quoted 7 lines
Paul Walmsley (1):
ARM: OMAP3+: clock: Move commonclksel_rate& clock data to common
fileVaibhav Hiremath (3):
ARM: OMAP2+: hwmod: Hook-up am33xx support inomap_hwmodframework
ARM: OMAP3+: clock33xx: Add AM33XX clock tree data
Kevin and Paul,
Leaving HWMOD data patch aside, both the above patches should be considered for acceptance, can you please review the same and if there are no review comments, can it be merged?
Thanks,
Vaibhav
Quoted 18 lines
ARM: OMAP3+: hwmod: Add AM33XX HWMOD data
arch/arm/mach-omap2/Makefile | 2 + arch/arm/mach-omap2/clock.h | 14 + arch/arm/mach-omap2/clock33xx_data.c | 1105 ++++++++ arch/arm/mach-omap2/clock3xxx_data.c | 20 +- arch/arm/mach-omap2/clock44xx_data.c | 72 - arch/arm/mach-omap2/clock_common_data.c | 77 + arch/arm/mach-omap2/io.c | 4 + arch/arm/mach-omap2/omap_hwmod.c | 180 ++ arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 3368 +++++++++++++++++++++++++ arch/arm/plat-omap/include/plat/clkdev_omap.h | 1 + arch/arm/plat-omap/include/plat/omap_hwmod.h | 1 + 11 files changed, 4756 insertions(+), 88 deletions(-) create mode 100644 arch/arm/mach-omap2/clock33xx_data.c create mode 100644 arch/arm/mach-omap2/omap_hwmod_33xx_data.c
Paul Walmsley
maintainerv2 cover ARM: OMAP2+: am33xx: Add clocktree and hwmod data
Hi Vaibhav,
Quoted 3 lines · Vaibhav
Leaving HWMOD data patch aside, both the above patches should be considered for acceptance, can you please review the same and if there are no review comments, can it be merged?
I don't quite understand the part about leaving the hwmod data patch aside. Is that one not ready? Or does it need to be modified pending some other series?
- Paul
v2 cover ARM: OMAP2+: am33xx: Add clocktree and hwmod data
Quoted 4 lines · Paul Walmsley
Hi Vaibhav,
On Thu, 14 Jun 2012, Hiremath, Vaibhav wrote:
Quoted 8 lines
Quoted 3 lines
Leaving HWMOD data patch aside, both the above patches should be considered for acceptance, can you please review the same and if there are no review comments, can it be merged?
I don't quite understand the part about leaving the hwmod data patch aside. Is that one not ready? Or does it need to be modified pending some other series?
It is ready, since I did not get your acked-by or reviewed-by on the patche- series, so I wanted to get trivial patches merged.
Paul,
I would really recommend you to look at the proposal of getting the clock- tree and hwmod patches to the linux-next until merge window, so that it will get tested for some time.
Also, I am in the process of converting to common-clock framework on top of Rajendra's patch-series.
Thanks,
Vaibhav
Paul Walmsley
maintainerv2 cover ARM: OMAP2+: am33xx: Add clocktree and hwmod data
Quoted 3 lines · Vaibhav
I would really recommend you to look at the proposal of getting the clock- tree and hwmod patches to the linux-next until merge window, so that it will get tested for some time.
I've thought about this, but I'm not sure it has much point unless Tony's tree goes to linux-next, since that's where the OMAP integration happens.
- Paul
v2 cover ARM: OMAP2+: am33xx: Add clocktree and hwmod data
Quoted 9 lines · Paul Walmsley
Quoted 3 lines · Vaibhav
I would really recommend you to look at the proposal of getting the clock- tree and hwmod patches to the linux-next until merge window, so that it will get tested for some time.
I've thought about this, but I'm not sure it has much point unless Tony's tree goes to linux-next, since that's where the OMAP integration happens.
Yes, make sense. I also meant same thing, it should be along with Tony's pull request -
Tony's Tree (for linux-next) + Your Branch (AM335x prm/cm/clkdm/pwrdm) + AM335x Clock Tree and HWMOD.
Thanks,
Vaibhav