Commit 192383d8 authored by Tero Kristo's avatar Tero Kristo

ARM: OMAP2+: clock: add support for specific CM ops to ti_clk_ll_ops

Clock driver requires access to some CM API functions once the code
is being moved under the clock driver from the platform directory.
Gate type clock requires access to cm_wait_module_ready and
cm_split_idlest_reg functions, which are both used for waiting until
the module being clocked has been successfully activated. These CM
APIs are now exported through the ti_clk_ll_ops struct.
Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
parent 9a356d62
...@@ -122,6 +122,8 @@ static struct ti_clk_ll_ops omap_clk_ll_ops = { ...@@ -122,6 +122,8 @@ static struct ti_clk_ll_ops omap_clk_ll_ops = {
.clk_writel = clk_memmap_writel, .clk_writel = clk_memmap_writel,
.clkdm_clk_enable = clkdm_clk_enable, .clkdm_clk_enable = clkdm_clk_enable,
.clkdm_clk_disable = clkdm_clk_disable, .clkdm_clk_disable = clkdm_clk_disable,
.cm_wait_module_ready = omap_cm_wait_module_ready,
.cm_split_idlest_reg = cm_split_idlest_reg,
}; };
/** /**
......
...@@ -243,6 +243,8 @@ struct clk_omap_reg { ...@@ -243,6 +243,8 @@ struct clk_omap_reg {
* @clk_writel: pointer to register write function * @clk_writel: pointer to register write function
* @clkdm_clk_enable: pointer to clockdomain enable function * @clkdm_clk_enable: pointer to clockdomain enable function
* @clkdm_clk_disable: pointer to clockdomain disable function * @clkdm_clk_disable: pointer to clockdomain disable function
* @cm_wait_module_ready: pointer to CM module wait ready function
* @cm_split_idlest_reg: pointer to CM module function to split idlest reg
* *
* Low-level ops are generally used by the basic clock types (clk-gate, * Low-level ops are generally used by the basic clock types (clk-gate,
* clk-mux, clk-divider etc.) to provide support for various low-level * clk-mux, clk-divider etc.) to provide support for various low-level
...@@ -256,6 +258,10 @@ struct ti_clk_ll_ops { ...@@ -256,6 +258,10 @@ struct ti_clk_ll_ops {
int (*clkdm_clk_enable)(struct clockdomain *clkdm, struct clk *clk); int (*clkdm_clk_enable)(struct clockdomain *clkdm, struct clk *clk);
int (*clkdm_clk_disable)(struct clockdomain *clkdm, int (*clkdm_clk_disable)(struct clockdomain *clkdm,
struct clk *clk); struct clk *clk);
int (*cm_wait_module_ready)(u8 part, s16 prcm_mod, u16 idlest_reg,
u8 idlest_shift);
int (*cm_split_idlest_reg)(void __iomem *idlest_reg, s16 *prcm_inst,
u8 *idlest_reg_id);
}; };
extern struct ti_clk_ll_ops *ti_clk_ll_ops; extern struct ti_clk_ll_ops *ti_clk_ll_ops;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment