Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b099474a authored by Abhijit Pagare's avatar Abhijit Pagare Committed by Paul Walmsley
Browse files

ARM: OMAP4: PM: Modify Clock-domain interfaces for OMAP4 compatibility.



Here the APIs are modified to use absolute addresses instead of module offsets.

Signed-off-by: default avatarAbhijit Pagare <abhijitpagare@ti.com>
Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
Cc: Benoit Cousson <b-cousson@ti.com>
Cc: Rajendra Nayak <rnayak@ti.com>
parent 84c0c39a
Loading
Loading
Loading
Loading
+25 −19
Original line number Diff line number Diff line
@@ -145,25 +145,29 @@ static void _clkdm_del_autodeps(struct clockdomain *clkdm)
 */
static void _omap2_clkdm_set_hwsup(struct clockdomain *clkdm, int enable)
{
	u32 v;
	u32 bits, v;

	if (cpu_is_omap24xx()) {
		if (enable)
			v = OMAP24XX_CLKSTCTRL_ENABLE_AUTO;
			bits = OMAP24XX_CLKSTCTRL_ENABLE_AUTO;
		else
			v = OMAP24XX_CLKSTCTRL_DISABLE_AUTO;
			bits = OMAP24XX_CLKSTCTRL_DISABLE_AUTO;
	} else if (cpu_is_omap34xx()) {
		if (enable)
			v = OMAP34XX_CLKSTCTRL_ENABLE_AUTO;
			bits = OMAP34XX_CLKSTCTRL_ENABLE_AUTO;
		else
			v = OMAP34XX_CLKSTCTRL_DISABLE_AUTO;
			bits = OMAP34XX_CLKSTCTRL_DISABLE_AUTO;
	} else {
		BUG();
	}

	cm_rmw_mod_reg_bits(clkdm->clktrctrl_mask,
			    v << __ffs(clkdm->clktrctrl_mask),
			    clkdm->pwrdm.ptr->prcm_offs, OMAP2_CM_CLKSTCTRL);
	bits = bits << __ffs(clkdm->clktrctrl_mask);

	v = __raw_readl(clkdm->clkstctrl_reg);
	v &= ~(clkdm->clktrctrl_mask);
	v |= bits;
	__raw_writel(v, clkdm->clkstctrl_reg);

}

static struct clockdomain *_clkdm_lookup(const char *name)
@@ -381,7 +385,7 @@ static int omap2_clkdm_clktrctrl_read(struct clockdomain *clkdm)
	if (!clkdm)
		return -EINVAL;

	v = cm_read_mod_reg(clkdm->pwrdm.ptr->prcm_offs, OMAP2_CM_CLKSTCTRL);
	v = __raw_readl(clkdm->clkstctrl_reg);
	v &= clkdm->clktrctrl_mask;
	v >>= __ffs(clkdm->clktrctrl_mask);

@@ -417,12 +421,13 @@ int omap2_clkdm_sleep(struct clockdomain *clkdm)

	} else if (cpu_is_omap34xx()) {

		u32 v = (OMAP34XX_CLKSTCTRL_FORCE_SLEEP <<
		u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_SLEEP <<
			 __ffs(clkdm->clktrctrl_mask));

		cm_rmw_mod_reg_bits(clkdm->clktrctrl_mask, v,
				    clkdm->pwrdm.ptr->prcm_offs,
							 OMAP2_CM_CLKSTCTRL);
		u32 v = __raw_readl(clkdm->clkstctrl_reg);
		v &= ~(clkdm->clktrctrl_mask);
		v |= bits;
		__raw_writel(v, clkdm->clkstctrl_reg);

	} else {
		BUG();
@@ -460,12 +465,13 @@ int omap2_clkdm_wakeup(struct clockdomain *clkdm)

	} else if (cpu_is_omap34xx()) {

		u32 v = (OMAP34XX_CLKSTCTRL_FORCE_WAKEUP <<
		u32 bits = (OMAP34XX_CLKSTCTRL_FORCE_WAKEUP <<
			 __ffs(clkdm->clktrctrl_mask));

		cm_rmw_mod_reg_bits(clkdm->clktrctrl_mask, v,
				    clkdm->pwrdm.ptr->prcm_offs,
						 OMAP2_CM_CLKSTCTRL);
		u32 v = __raw_readl(clkdm->clkstctrl_reg);
		v &= ~(clkdm->clktrctrl_mask);
		v |= bits;
		__raw_writel(v, clkdm->clkstctrl_reg);

	} else {
		BUG();
@@ -561,7 +567,7 @@ int omap2_clkdm_clk_enable(struct clockdomain *clkdm, struct clk *clk)
	 * downstream clocks for debugging purposes?
	 */

	if (!clkdm || !clk || !clkdm->clktrctrl_mask)
	if (!clkdm || !clk || !clkdm->clkstctrl_reg)
		return -EINVAL;

	if (atomic_inc_return(&clkdm->usecount) > 1)
@@ -612,7 +618,7 @@ int omap2_clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk)
	 * downstream clocks for debugging purposes?
	 */

	if (!clkdm || !clk || !clkdm->clktrctrl_mask)
	if (!clkdm || !clk || !clkdm->clkstctrl_reg)
		return -EINVAL;

#ifdef DEBUG