Message ID | 1398375849-6017-2-git-send-email-joelf@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
* Joel Fernandes <joelf@ti.com> [140424 14:44]: > There is a platform specific hook just for OMAP1 to set its clk parent. Remove > this hook and have OMAP1 set its parent in omap1_dm_timer_init. If OMAP1 is > ever migrated to clock framework, the correct way to do this would be through > clk_set_parent like other platforms. > > Signed-off-by: Joel Fernandes <joelf@ti.com> > --- > arch/arm/mach-omap1/timer.c | 8 +++++++- > arch/arm/plat-omap/dmtimer.c | 8 +++----- > include/linux/platform_data/dmtimer-omap.h | 2 -- > 3 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/arch/arm/mach-omap1/timer.c b/arch/arm/mach-omap1/timer.c > index bde7a35..4b9c604 100644 > --- a/arch/arm/mach-omap1/timer.c > +++ b/arch/arm/mach-omap1/timer.c > @@ -140,7 +140,13 @@ static int __init omap1_dm_timer_init(void) > goto err_free_pdata; > } > > - pdata->set_timer_src = omap1_dm_timer_set_src; > + /* > + * Since OMAP1 doesn't support clock framework, set timer clock > + * source to 32KHz here instead of expecting it to be set by > + * dmtimer code. > + */ > + omap1_dm_timer_set_src(pdev, 0x01); > + > pdata->timer_capability = OMAP_TIMER_ALWON | > OMAP_TIMER_NEEDS_RESET | OMAP_TIMER_HAS_DSP_IRQ; > This does not sound right, omap1 does support clock framework just fine. It is not using the common clock framework though. This breaks omap_dm_timer_set_source() for sure. Setting the source during init is not a right solution here. Probably best to keep the pdata hook around, drivers can support pdata and DT data together just fine. Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 05/07/2014 10:19 AM, Tony Lindgren wrote: > * Joel Fernandes <joelf@ti.com> [140424 14:44]: >> There is a platform specific hook just for OMAP1 to set its clk parent. Remove >> this hook and have OMAP1 set its parent in omap1_dm_timer_init. If OMAP1 is >> ever migrated to clock framework, the correct way to do this would be through >> clk_set_parent like other platforms. >> >> Signed-off-by: Joel Fernandes <joelf@ti.com> >> --- >> arch/arm/mach-omap1/timer.c | 8 +++++++- >> arch/arm/plat-omap/dmtimer.c | 8 +++----- >> include/linux/platform_data/dmtimer-omap.h | 2 -- >> 3 files changed, 10 insertions(+), 8 deletions(-) >> >> diff --git a/arch/arm/mach-omap1/timer.c b/arch/arm/mach-omap1/timer.c >> index bde7a35..4b9c604 100644 >> --- a/arch/arm/mach-omap1/timer.c >> +++ b/arch/arm/mach-omap1/timer.c >> @@ -140,7 +140,13 @@ static int __init omap1_dm_timer_init(void) >> goto err_free_pdata; >> } >> >> - pdata->set_timer_src = omap1_dm_timer_set_src; >> + /* >> + * Since OMAP1 doesn't support clock framework, set timer clock >> + * source to 32KHz here instead of expecting it to be set by >> + * dmtimer code. >> + */ >> + omap1_dm_timer_set_src(pdev, 0x01); >> + >> pdata->timer_capability = OMAP_TIMER_ALWON | >> OMAP_TIMER_NEEDS_RESET | OMAP_TIMER_HAS_DSP_IRQ; >> > > This does not sound right, omap1 does support clock framework just fine. > It is not using the common clock framework though. > > This breaks omap_dm_timer_set_source() for sure. Setting the source > during init is not a right solution here. Probably best to keep the > pdata hook around, drivers can support pdata and DT data together > just fine. Actually pdata hook in this case is used only in 1 place, and is OMAP1 specific so I felt its better to clean it up. Can you elaborate a bit more on why it breaks? I have no way of testing OMAP1 without hardware. What difference is it to set MOD_CONF_CTRL_1 in omap1's arch_initcall(omap1_dm_timer_init) versus doing so later? -Joel -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
* Joel Fernandes <joelf@ti.com> [140507 14:44]: > On 05/07/2014 10:19 AM, Tony Lindgren wrote: > > * Joel Fernandes <joelf@ti.com> [140424 14:44]: > >> There is a platform specific hook just for OMAP1 to set its clk parent. Remove > >> this hook and have OMAP1 set its parent in omap1_dm_timer_init. If OMAP1 is > >> ever migrated to clock framework, the correct way to do this would be through > >> clk_set_parent like other platforms. > >> > >> Signed-off-by: Joel Fernandes <joelf@ti.com> > >> --- > >> arch/arm/mach-omap1/timer.c | 8 +++++++- > >> arch/arm/plat-omap/dmtimer.c | 8 +++----- > >> include/linux/platform_data/dmtimer-omap.h | 2 -- > >> 3 files changed, 10 insertions(+), 8 deletions(-) > >> > >> diff --git a/arch/arm/mach-omap1/timer.c b/arch/arm/mach-omap1/timer.c > >> index bde7a35..4b9c604 100644 > >> --- a/arch/arm/mach-omap1/timer.c > >> +++ b/arch/arm/mach-omap1/timer.c > >> @@ -140,7 +140,13 @@ static int __init omap1_dm_timer_init(void) > >> goto err_free_pdata; > >> } > >> > >> - pdata->set_timer_src = omap1_dm_timer_set_src; > >> + /* > >> + * Since OMAP1 doesn't support clock framework, set timer clock > >> + * source to 32KHz here instead of expecting it to be set by > >> + * dmtimer code. > >> + */ > >> + omap1_dm_timer_set_src(pdev, 0x01); > >> + > >> pdata->timer_capability = OMAP_TIMER_ALWON | > >> OMAP_TIMER_NEEDS_RESET | OMAP_TIMER_HAS_DSP_IRQ; > >> > > > > This does not sound right, omap1 does support clock framework just fine. > > It is not using the common clock framework though. > > > > This breaks omap_dm_timer_set_source() for sure. Setting the source > > during init is not a right solution here. Probably best to keep the > > pdata hook around, drivers can support pdata and DT data together > > just fine. > > Actually pdata hook in this case is used only in 1 place, and is OMAP1 > specific so I felt its better to clean it up. > > Can you elaborate a bit more on why it breaks? I have no way of testing > OMAP1 without hardware. > > What difference is it to set MOD_CONF_CTRL_1 in omap1's > arch_initcall(omap1_dm_timer_init) versus doing so later? You're making a driver behave in a different way for omap1 compared to omap2+ where selecting the clock source won't work for omap1. Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 05/07/2014 05:04 PM, Tony Lindgren wrote: > * Joel Fernandes <joelf@ti.com> [140507 14:44]: >> On 05/07/2014 10:19 AM, Tony Lindgren wrote: >>> * Joel Fernandes <joelf@ti.com> [140424 14:44]: >>>> There is a platform specific hook just for OMAP1 to set its clk parent. Remove >>>> this hook and have OMAP1 set its parent in omap1_dm_timer_init. If OMAP1 is >>>> ever migrated to clock framework, the correct way to do this would be through >>>> clk_set_parent like other platforms. >>>> >>>> Signed-off-by: Joel Fernandes <joelf@ti.com> >>>> --- >>>> arch/arm/mach-omap1/timer.c | 8 +++++++- >>>> arch/arm/plat-omap/dmtimer.c | 8 +++----- >>>> include/linux/platform_data/dmtimer-omap.h | 2 -- >>>> 3 files changed, 10 insertions(+), 8 deletions(-) >>>> >>>> diff --git a/arch/arm/mach-omap1/timer.c b/arch/arm/mach-omap1/timer.c >>>> index bde7a35..4b9c604 100644 >>>> --- a/arch/arm/mach-omap1/timer.c >>>> +++ b/arch/arm/mach-omap1/timer.c >>>> @@ -140,7 +140,13 @@ static int __init omap1_dm_timer_init(void) >>>> goto err_free_pdata; >>>> } >>>> >>>> - pdata->set_timer_src = omap1_dm_timer_set_src; >>>> + /* >>>> + * Since OMAP1 doesn't support clock framework, set timer clock >>>> + * source to 32KHz here instead of expecting it to be set by >>>> + * dmtimer code. >>>> + */ >>>> + omap1_dm_timer_set_src(pdev, 0x01); >>>> + >>>> pdata->timer_capability = OMAP_TIMER_ALWON | >>>> OMAP_TIMER_NEEDS_RESET | OMAP_TIMER_HAS_DSP_IRQ; >>>> >>> >>> This does not sound right, omap1 does support clock framework just fine. >>> It is not using the common clock framework though. >>> >>> This breaks omap_dm_timer_set_source() for sure. Setting the source >>> during init is not a right solution here. Probably best to keep the >>> pdata hook around, drivers can support pdata and DT data together >>> just fine. >> >> Actually pdata hook in this case is used only in 1 place, and is OMAP1 >> specific so I felt its better to clean it up. >> >> Can you elaborate a bit more on why it breaks? I have no way of testing >> OMAP1 without hardware. >> >> What difference is it to set MOD_CONF_CTRL_1 in omap1's >> arch_initcall(omap1_dm_timer_init) versus doing so later? > > You're making a driver behave in a different way for omap1 > compared to omap2+ where selecting the clock source won't work > for omap1. Ok, I'll drop this patch and leave the hook as-is. Thanks. Regards, -Joel -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/mach-omap1/timer.c b/arch/arm/mach-omap1/timer.c index bde7a35..4b9c604 100644 --- a/arch/arm/mach-omap1/timer.c +++ b/arch/arm/mach-omap1/timer.c @@ -140,7 +140,13 @@ static int __init omap1_dm_timer_init(void) goto err_free_pdata; } - pdata->set_timer_src = omap1_dm_timer_set_src; + /* + * Since OMAP1 doesn't support clock framework, set timer clock + * source to 32KHz here instead of expecting it to be set by + * dmtimer code. + */ + omap1_dm_timer_set_src(pdev, 0x01); + pdata->timer_capability = OMAP_TIMER_ALWON | OMAP_TIMER_NEEDS_RESET | OMAP_TIMER_HAS_DSP_IRQ; diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c index 869254c..ecd3f97 100644 --- a/arch/arm/plat-omap/dmtimer.c +++ b/arch/arm/plat-omap/dmtimer.c @@ -494,12 +494,10 @@ int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source) return -EINVAL; /* - * FIXME: Used for OMAP1 devices only because they do not currently - * use the clock framework to set the parent clock. To be removed - * once OMAP1 migrated to using clock framework for dmtimers + * For OMAP1, timer source is already set during omap1_dm_timer_init. */ - if (pdata && pdata->set_timer_src) - return pdata->set_timer_src(timer->pdev, source); + if (timer->capability & OMAP_TIMER_NEEDS_RESET) + return 0; if (IS_ERR(timer->fclk)) return -EINVAL; diff --git a/include/linux/platform_data/dmtimer-omap.h b/include/linux/platform_data/dmtimer-omap.h index a19b78d..9f42b06 100644 --- a/include/linux/platform_data/dmtimer-omap.h +++ b/include/linux/platform_data/dmtimer-omap.h @@ -21,8 +21,6 @@ #define __PLATFORM_DATA_DMTIMER_OMAP_H__ struct dmtimer_platform_data { - /* set_timer_src - Only used for OMAP1 devices */ - int (*set_timer_src)(struct platform_device *pdev, int source); u32 timer_capability; u32 timer_errata; int (*get_context_loss_count)(struct device *);
There is a platform specific hook just for OMAP1 to set its clk parent. Remove this hook and have OMAP1 set its parent in omap1_dm_timer_init. If OMAP1 is ever migrated to clock framework, the correct way to do this would be through clk_set_parent like other platforms. Signed-off-by: Joel Fernandes <joelf@ti.com> --- arch/arm/mach-omap1/timer.c | 8 +++++++- arch/arm/plat-omap/dmtimer.c | 8 +++----- include/linux/platform_data/dmtimer-omap.h | 2 -- 3 files changed, 10 insertions(+), 8 deletions(-)