diff options
| author | Paul Walmsley <paul@pwsan.com> | 2012-06-19 15:01:02 -0600 | 
|---|---|---|
| committer | Paul Walmsley <paul@pwsan.com> | 2012-06-19 15:01:02 -0600 | 
| commit | 868c157df9721675c19729eed2c96bac6c3f1d01 (patch) | |
| tree | e5483f335c18967895014d8a61ebfe6eb4801eb3 /arch/arm/mach-omap2/omap_hwmod.c | |
| parent | 485802a6c524e62b5924849dd727ddbb1497cc71 (diff) | |
| download | olio-linux-3.10-868c157df9721675c19729eed2c96bac6c3f1d01.tar.xz olio-linux-3.10-868c157df9721675c19729eed2c96bac6c3f1d01.zip  | |
ARM: OMAP2+: hwmod: remove prm_clkdm, cm_clkdm; allow hwmods to have no clockdomain
Remove prm_clkdm and cm_clkdm and allow hwmods to have no clockdomain.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: BenoƮt Cousson <b-cousson@ti.com>
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod.c | 28 | 
1 files changed, 19 insertions, 9 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index bf86f7e8f91..32a5e08ffb9 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -810,7 +810,7 @@ static int _omap4_wait_target_disable(struct omap_hwmod *oh)  	if (!cpu_is_omap44xx())  		return 0; -	if (!oh) +	if (!oh || !oh->clkdm)  		return -EINVAL;  	if (oh->_int_flags & _HWMOD_NO_MPU_PORT) @@ -1285,23 +1285,22 @@ static struct omap_hwmod *_lookup(const char *name)  	return oh;  } +  /**   * _init_clkdm - look up a clockdomain name, store pointer in omap_hwmod   * @oh: struct omap_hwmod *   *   * Convert a clockdomain name stored in a struct omap_hwmod into a   * clockdomain pointer, and save it into the struct omap_hwmod. - * return -EINVAL if clkdm_name does not exist or if the lookup failed. + * Return -EINVAL if the clkdm_name lookup failed.   */  static int _init_clkdm(struct omap_hwmod *oh)  {  	if (cpu_is_omap24xx() || cpu_is_omap34xx())  		return 0; -	if (!oh->clkdm_name) { -		pr_warning("omap_hwmod: %s: no clkdm_name\n", oh->name); -		return -EINVAL; -	} +	if (!oh->clkdm_name) +		return 0;  	oh->clkdm = clkdm_lookup(oh->clkdm_name);  	if (!oh->clkdm) { @@ -1447,16 +1446,20 @@ static int _assert_hardreset(struct omap_hwmod *oh, const char *name)  	if (IS_ERR_VALUE(ret))  		return ret; -	if (cpu_is_omap24xx() || cpu_is_omap34xx()) +	if (cpu_is_omap24xx() || cpu_is_omap34xx()) {  		return omap2_prm_assert_hardreset(oh->prcm.omap2.module_offs,  						  ohri.rst_shift); -	else if (cpu_is_omap44xx()) +	} else if (cpu_is_omap44xx()) { +		if (!oh->clkdm) +			return -EINVAL; +  		return omap4_prminst_assert_hardreset(ohri.rst_shift,  				  oh->clkdm->pwrdm.ptr->prcm_partition,  				  oh->clkdm->pwrdm.ptr->prcm_offs,  				  oh->prcm.omap4.rstctrl_offs); -	else +	} else {  		return -EINVAL; +	}  }  /** @@ -1489,6 +1492,10 @@ static int _deassert_hardreset(struct omap_hwmod *oh, const char *name)  		if (ohri.st_shift)  			pr_err("omap_hwmod: %s: %s: hwmod data error: OMAP4 does not support st_shift\n",  			       oh->name, name); + +		if (!oh->clkdm) +			return -EINVAL; +  		ret = omap4_prminst_deassert_hardreset(ohri.rst_shift,  				  oh->clkdm->pwrdm.ptr->prcm_partition,  				  oh->clkdm->pwrdm.ptr->prcm_offs, @@ -1527,6 +1534,9 @@ static int _read_hardreset(struct omap_hwmod *oh, const char *name)  		return omap2_prm_is_hardreset_asserted(oh->prcm.omap2.module_offs,  						       ohri.st_shift);  	} else if (cpu_is_omap44xx()) { +		if (!oh->clkdm) +			return -EINVAL; +  		return omap4_prminst_is_hardreset_asserted(ohri.rst_shift,  				  oh->clkdm->pwrdm.ptr->prcm_partition,  				  oh->clkdm->pwrdm.ptr->prcm_offs,  |