提交 d58cc92b 编写于 作者: T Tony Lindgren

Merge branch 'misc_2.6.37' of git://git.pwsan.com/linux-2.6 into omap-for-linus

...@@ -43,7 +43,6 @@ ...@@ -43,7 +43,6 @@
* using separate functional clock * using separate functional clock
* 0x3 disabled: Module is disabled and cannot be accessed * 0x3 disabled: Module is disabled and cannot be accessed
* *
* TODO: Need to handle module accessible in idle state
*/ */
int omap4_cm_wait_module_ready(void __iomem *clkctrl_reg) int omap4_cm_wait_module_ready(void __iomem *clkctrl_reg)
{ {
...@@ -52,9 +51,11 @@ int omap4_cm_wait_module_ready(void __iomem *clkctrl_reg) ...@@ -52,9 +51,11 @@ int omap4_cm_wait_module_ready(void __iomem *clkctrl_reg)
if (!clkctrl_reg) if (!clkctrl_reg)
return 0; return 0;
omap_test_timeout(((__raw_readl(clkctrl_reg) & omap_test_timeout((
OMAP4430_IDLEST_MASK) == 0), ((__raw_readl(clkctrl_reg) & OMAP4430_IDLEST_MASK) == 0) ||
MAX_MODULE_READY_TIME, i); (((__raw_readl(clkctrl_reg) & OMAP4430_IDLEST_MASK) >>
OMAP4430_IDLEST_SHIFT) == 0x2)),
MAX_MODULE_READY_TIME, i);
return (i < MAX_MODULE_READY_TIME) ? 0 : -EBUSY; return (i < MAX_MODULE_READY_TIME) ? 0 : -EBUSY;
} }
......
...@@ -777,12 +777,6 @@ static void _enable_sysc(struct omap_hwmod *oh) ...@@ -777,12 +777,6 @@ static void _enable_sysc(struct omap_hwmod *oh)
_set_master_standbymode(oh, idlemode, &v); _set_master_standbymode(oh, idlemode, &v);
} }
if (sf & SYSC_HAS_AUTOIDLE) {
idlemode = (oh->flags & HWMOD_NO_OCP_AUTOIDLE) ?
0 : 1;
_set_module_autoidle(oh, idlemode, &v);
}
/* /*
* XXX The clock framework should handle this, by * XXX The clock framework should handle this, by
* calling into this code. But this must wait until the * calling into this code. But this must wait until the
...@@ -797,6 +791,17 @@ static void _enable_sysc(struct omap_hwmod *oh) ...@@ -797,6 +791,17 @@ static void _enable_sysc(struct omap_hwmod *oh)
/* If slave is in SMARTIDLE, also enable wakeup */ /* If slave is in SMARTIDLE, also enable wakeup */
if ((sf & SYSC_HAS_SIDLEMODE) && !(oh->flags & HWMOD_SWSUP_SIDLE)) if ((sf & SYSC_HAS_SIDLEMODE) && !(oh->flags & HWMOD_SWSUP_SIDLE))
_enable_wakeup(oh); _enable_wakeup(oh);
/*
* Set the autoidle bit only after setting the smartidle bit
* Setting this will not have any impact on the other modules.
*/
if (sf & SYSC_HAS_AUTOIDLE) {
idlemode = (oh->flags & HWMOD_NO_OCP_AUTOIDLE) ?
0 : 1;
_set_module_autoidle(oh, idlemode, &v);
_write_sysconfig(v, oh);
}
} }
/** /**
......
...@@ -290,12 +290,11 @@ static void _add_optional_clock_alias(struct omap_device *od, ...@@ -290,12 +290,11 @@ static void _add_optional_clock_alias(struct omap_device *od,
*/ */
int omap_device_count_resources(struct omap_device *od) int omap_device_count_resources(struct omap_device *od)
{ {
struct omap_hwmod *oh;
int c = 0; int c = 0;
int i; int i;
for (i = 0, oh = *od->hwmods; i < od->hwmods_cnt; i++, oh++) for (i = 0; i < od->hwmods_cnt; i++)
c += omap_hwmod_count_resources(oh); c += omap_hwmod_count_resources(od->hwmods[i]);
pr_debug("omap_device: %s: counted %d total resources across %d " pr_debug("omap_device: %s: counted %d total resources across %d "
"hwmods\n", od->pdev.name, c, od->hwmods_cnt); "hwmods\n", od->pdev.name, c, od->hwmods_cnt);
...@@ -322,12 +321,11 @@ int omap_device_count_resources(struct omap_device *od) ...@@ -322,12 +321,11 @@ int omap_device_count_resources(struct omap_device *od)
*/ */
int omap_device_fill_resources(struct omap_device *od, struct resource *res) int omap_device_fill_resources(struct omap_device *od, struct resource *res)
{ {
struct omap_hwmod *oh;
int c = 0; int c = 0;
int i, r; int i, r;
for (i = 0, oh = *od->hwmods; i < od->hwmods_cnt; i++, oh++) { for (i = 0; i < od->hwmods_cnt; i++) {
r = omap_hwmod_fill_resources(oh, res); r = omap_hwmod_fill_resources(od->hwmods[i], res);
res += r; res += r;
c += r; c += r;
} }
...@@ -600,7 +598,6 @@ int omap_device_shutdown(struct platform_device *pdev) ...@@ -600,7 +598,6 @@ int omap_device_shutdown(struct platform_device *pdev)
{ {
int ret, i; int ret, i;
struct omap_device *od; struct omap_device *od;
struct omap_hwmod *oh;
od = _find_by_pdev(pdev); od = _find_by_pdev(pdev);
...@@ -613,8 +610,8 @@ int omap_device_shutdown(struct platform_device *pdev) ...@@ -613,8 +610,8 @@ int omap_device_shutdown(struct platform_device *pdev)
ret = _omap_device_deactivate(od, IGNORE_WAKEUP_LAT); ret = _omap_device_deactivate(od, IGNORE_WAKEUP_LAT);
for (i = 0, oh = *od->hwmods; i < od->hwmods_cnt; i++, oh++) for (i = 0; i < od->hwmods_cnt; i++)
omap_hwmod_shutdown(oh); omap_hwmod_shutdown(od->hwmods[i]);
od->_state = OMAP_DEVICE_STATE_SHUTDOWN; od->_state = OMAP_DEVICE_STATE_SHUTDOWN;
...@@ -714,11 +711,10 @@ void __iomem *omap_device_get_rt_va(struct omap_device *od) ...@@ -714,11 +711,10 @@ void __iomem *omap_device_get_rt_va(struct omap_device *od)
*/ */
int omap_device_enable_hwmods(struct omap_device *od) int omap_device_enable_hwmods(struct omap_device *od)
{ {
struct omap_hwmod *oh;
int i; int i;
for (i = 0, oh = *od->hwmods; i < od->hwmods_cnt; i++, oh++) for (i = 0; i < od->hwmods_cnt; i++)
omap_hwmod_enable(oh); omap_hwmod_enable(od->hwmods[i]);
/* XXX pass along return value here? */ /* XXX pass along return value here? */
return 0; return 0;
...@@ -732,11 +728,10 @@ int omap_device_enable_hwmods(struct omap_device *od) ...@@ -732,11 +728,10 @@ int omap_device_enable_hwmods(struct omap_device *od)
*/ */
int omap_device_idle_hwmods(struct omap_device *od) int omap_device_idle_hwmods(struct omap_device *od)
{ {
struct omap_hwmod *oh;
int i; int i;
for (i = 0, oh = *od->hwmods; i < od->hwmods_cnt; i++, oh++) for (i = 0; i < od->hwmods_cnt; i++)
omap_hwmod_idle(oh); omap_hwmod_idle(od->hwmods[i]);
/* XXX pass along return value here? */ /* XXX pass along return value here? */
return 0; return 0;
...@@ -751,11 +746,10 @@ int omap_device_idle_hwmods(struct omap_device *od) ...@@ -751,11 +746,10 @@ int omap_device_idle_hwmods(struct omap_device *od)
*/ */
int omap_device_disable_clocks(struct omap_device *od) int omap_device_disable_clocks(struct omap_device *od)
{ {
struct omap_hwmod *oh;
int i; int i;
for (i = 0, oh = *od->hwmods; i < od->hwmods_cnt; i++, oh++) for (i = 0; i < od->hwmods_cnt; i++)
omap_hwmod_disable_clocks(oh); omap_hwmod_disable_clocks(od->hwmods[i]);
/* XXX pass along return value here? */ /* XXX pass along return value here? */
return 0; return 0;
...@@ -770,11 +764,10 @@ int omap_device_disable_clocks(struct omap_device *od) ...@@ -770,11 +764,10 @@ int omap_device_disable_clocks(struct omap_device *od)
*/ */
int omap_device_enable_clocks(struct omap_device *od) int omap_device_enable_clocks(struct omap_device *od)
{ {
struct omap_hwmod *oh;
int i; int i;
for (i = 0, oh = *od->hwmods; i < od->hwmods_cnt; i++, oh++) for (i = 0; i < od->hwmods_cnt; i++)
omap_hwmod_enable_clocks(oh); omap_hwmod_enable_clocks(od->hwmods[i]);
/* XXX pass along return value here? */ /* XXX pass along return value here? */
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册