clocksource: timer-ti-dm: Consolidate set source
Reorder omap_dm_timer_set_source internals to get source verification more straightforward. Signed-off-by: Ladislav Michl <ladis@linux-mips.org> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
592ea6bd1f
commit
ad6e4b6fdc
@ -166,18 +166,29 @@ static int omap_dm_timer_of_set_source(struct omap_dm_timer *timer)
|
|||||||
static int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source)
|
static int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char *parent_name = NULL;
|
const char *parent_name;
|
||||||
struct clk *parent;
|
struct clk *parent;
|
||||||
struct dmtimer_platform_data *pdata;
|
struct dmtimer_platform_data *pdata;
|
||||||
|
|
||||||
if (unlikely(!timer))
|
if (unlikely(!timer) || IS_ERR(timer->fclk))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
switch (source) {
|
||||||
|
case OMAP_TIMER_SRC_SYS_CLK:
|
||||||
|
parent_name = "timer_sys_ck";
|
||||||
|
break;
|
||||||
|
case OMAP_TIMER_SRC_32_KHZ:
|
||||||
|
parent_name = "timer_32k_ck";
|
||||||
|
break;
|
||||||
|
case OMAP_TIMER_SRC_EXT_CLK:
|
||||||
|
parent_name = "timer_ext_ck";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
pdata = timer->pdev->dev.platform_data;
|
pdata = timer->pdev->dev.platform_data;
|
||||||
|
|
||||||
if (source < 0 || source >= 3)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FIXME: Used for OMAP1 devices only because they do not currently
|
* FIXME: Used for OMAP1 devices only because they do not currently
|
||||||
* use the clock framework to set the parent clock. To be removed
|
* use the clock framework to set the parent clock. To be removed
|
||||||
@ -186,29 +197,12 @@ static int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source)
|
|||||||
if (pdata && pdata->set_timer_src)
|
if (pdata && pdata->set_timer_src)
|
||||||
return pdata->set_timer_src(timer->pdev, source);
|
return pdata->set_timer_src(timer->pdev, source);
|
||||||
|
|
||||||
if (IS_ERR(timer->fclk))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
#if defined(CONFIG_COMMON_CLK)
|
#if defined(CONFIG_COMMON_CLK)
|
||||||
/* Check if the clock has configurable parents */
|
/* Check if the clock has configurable parents */
|
||||||
if (clk_hw_get_num_parents(__clk_get_hw(timer->fclk)) < 2)
|
if (clk_hw_get_num_parents(__clk_get_hw(timer->fclk)) < 2)
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch (source) {
|
|
||||||
case OMAP_TIMER_SRC_SYS_CLK:
|
|
||||||
parent_name = "timer_sys_ck";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAP_TIMER_SRC_32_KHZ:
|
|
||||||
parent_name = "timer_32k_ck";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAP_TIMER_SRC_EXT_CLK:
|
|
||||||
parent_name = "timer_ext_ck";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
parent = clk_get(&timer->pdev->dev, parent_name);
|
parent = clk_get(&timer->pdev->dev, parent_name);
|
||||||
if (IS_ERR(parent)) {
|
if (IS_ERR(parent)) {
|
||||||
pr_err("%s: %s not found\n", __func__, parent_name);
|
pr_err("%s: %s not found\n", __func__, parent_name);
|
||||||
|
Loading…
Reference in New Issue
Block a user