ARM: OMAP3: clock: add API to enable/disable autoidle for a single clock
Some drivers require direct access to the autoidle functionality of the interface clocks. Added clock APIs for these, so that the drivers do not need to access CM registers directly. Signed-off-by: Tero Kristo <t-kristo@ti.com> Signed-off-by: Paul Walmsley <paul@pwsan.com>
This commit is contained in:
Родитель
cd6e9db277
Коммит
818b40e500
|
@ -542,6 +542,44 @@ int omap2_clk_disable_autoidle_all(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* omap2_clk_deny_idle - disable autoidle on an OMAP clock
|
||||
* @clk: struct clk * to disable autoidle for
|
||||
*
|
||||
* Disable autoidle on an OMAP clock.
|
||||
*/
|
||||
int omap2_clk_deny_idle(struct clk *clk)
|
||||
{
|
||||
struct clk_hw_omap *c;
|
||||
|
||||
if (__clk_get_flags(clk) & CLK_IS_BASIC)
|
||||
return -EINVAL;
|
||||
|
||||
c = to_clk_hw_omap(__clk_get_hw(clk));
|
||||
if (c->ops && c->ops->deny_idle)
|
||||
c->ops->deny_idle(c);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* omap2_clk_allow_idle - enable autoidle on an OMAP clock
|
||||
* @clk: struct clk * to enable autoidle for
|
||||
*
|
||||
* Enable autoidle on an OMAP clock.
|
||||
*/
|
||||
int omap2_clk_allow_idle(struct clk *clk)
|
||||
{
|
||||
struct clk_hw_omap *c;
|
||||
|
||||
if (__clk_get_flags(clk) & CLK_IS_BASIC)
|
||||
return -EINVAL;
|
||||
|
||||
c = to_clk_hw_omap(__clk_get_hw(clk));
|
||||
if (c->ops && c->ops->allow_idle)
|
||||
c->ops->allow_idle(c);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* omap2_clk_enable_init_clocks - prepare & enable a list of clocks
|
||||
* @clk_names: ptr to an array of strings of clock names to enable
|
||||
|
|
|
@ -411,6 +411,8 @@ void omap2_clk_dflt_find_idlest(struct clk_hw_omap *clk,
|
|||
void omap2_init_clk_hw_omap_clocks(struct clk *clk);
|
||||
int omap2_clk_enable_autoidle_all(void);
|
||||
int omap2_clk_disable_autoidle_all(void);
|
||||
int omap2_clk_allow_idle(struct clk *clk);
|
||||
int omap2_clk_deny_idle(struct clk *clk);
|
||||
void omap2_clk_enable_init_clocks(const char **clk_names, u8 num_clocks);
|
||||
int omap2_clk_switch_mpurate_at_boot(const char *mpurate_ck_name);
|
||||
void omap2_clk_print_new_rates(const char *hfclkin_ck_name,
|
||||
|
|
Загрузка…
Ссылка в новой задаче