Merge branch 'misc_2.6.37' of git://git.pwsan.com/linux-2.6 into omap-for-linus
This commit is contained in:
Коммит
d58cc92bda
|
@ -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,8 +51,10 @@ 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) ||
|
||||||
|
(((__raw_readl(clkctrl_reg) & OMAP4430_IDLEST_MASK) >>
|
||||||
|
OMAP4430_IDLEST_SHIFT) == 0x2)),
|
||||||
MAX_MODULE_READY_TIME, i);
|
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)
|
||||||
_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)
|
||||||
/* 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,
|
||||||
*/
|
*/
|
||||||
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)
|
||||||
*/
|
*/
|
||||||
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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
*/
|
*/
|
||||||
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)
|
||||||
*/
|
*/
|
||||||
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)
|
||||||
*/
|
*/
|
||||||
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)
|
||||||
*/
|
*/
|
||||||
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;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче