ARM: OMAP2+: CM: add support for getting phys address for a clkctrl register
Add a new CM API for fetching the physical address of a hwmod clkctrl register. This is needed to map omap hwmods against clkctrl clocks, the existing support for clkdm address translation was not sufficient to handle the mutant cases where the clockdomain offset is completely off from the clkctrl ones. Signed-off-by: Tero Kristo <t-kristo@ti.com>
This commit is contained in:
parent
4fbd8d194f
commit
5fa4a3cc58
|
@ -52,6 +52,7 @@ extern void omap2_set_globals_cm(void __iomem *cm, void __iomem *cm2);
|
|||
* @wait_module_idle: ptr to the SoC CM-specific wait_module_idle impl
|
||||
* @module_enable: ptr to the SoC CM-specific module_enable impl
|
||||
* @module_disable: ptr to the SoC CM-specific module_disable impl
|
||||
* @xlate_clkctrl: ptr to the SoC CM-specific clkctrl xlate addr impl
|
||||
*/
|
||||
struct cm_ll_data {
|
||||
int (*split_idlest_reg)(struct clk_omap_reg *idlest_reg, s16 *prcm_inst,
|
||||
|
@ -62,6 +63,7 @@ struct cm_ll_data {
|
|||
u8 idlest_shift);
|
||||
void (*module_enable)(u8 mode, u8 part, u16 inst, u16 clkctrl_offs);
|
||||
void (*module_disable)(u8 part, u16 inst, u16 clkctrl_offs);
|
||||
u32 (*xlate_clkctrl)(u8 part, u16 inst, u16 clkctrl_offs);
|
||||
};
|
||||
|
||||
extern int cm_split_idlest_reg(struct clk_omap_reg *idlest_reg, s16 *prcm_inst,
|
||||
|
@ -72,6 +74,7 @@ int omap_cm_wait_module_idle(u8 part, s16 prcm_mod, u16 idlest_reg,
|
|||
u8 idlest_shift);
|
||||
int omap_cm_module_enable(u8 mode, u8 part, u16 inst, u16 clkctrl_offs);
|
||||
int omap_cm_module_disable(u8 part, u16 inst, u16 clkctrl_offs);
|
||||
u32 omap_cm_xlate_clkctrl(u8 part, u16 inst, u16 clkctrl_offs);
|
||||
extern int cm_register(struct cm_ll_data *cld);
|
||||
extern int cm_unregister(struct cm_ll_data *cld);
|
||||
int omap_cm_init(void);
|
||||
|
|
|
@ -175,6 +175,16 @@ int omap_cm_module_disable(u8 part, u16 inst, u16 clkctrl_offs)
|
|||
return 0;
|
||||
}
|
||||
|
||||
u32 omap_cm_xlate_clkctrl(u8 part, u16 inst, u16 clkctrl_offs)
|
||||
{
|
||||
if (!cm_ll_data->xlate_clkctrl) {
|
||||
WARN_ONCE(1, "cm: %s: no low-level function defined\n",
|
||||
__func__);
|
||||
return 0;
|
||||
}
|
||||
return cm_ll_data->xlate_clkctrl(part, inst, clkctrl_offs);
|
||||
}
|
||||
|
||||
/**
|
||||
* cm_register - register per-SoC low-level data with the CM
|
||||
* @cld: low-level per-SoC OMAP CM data & function pointers to register
|
||||
|
|
Loading…
Reference in New Issue