@ -20,9 +20,9 @@
# include "pm-rmobile.h"
/* SYSC */
# define SPDCR IOMEM(0xe6180008)
# define SWUCR IOMEM(0xe6180014)
# define PSTR IOMEM(0xe6180080)
# define SPDCR 0x08 /* SYS Power Down Control Register */
# define SWUCR 0x14 /* SYS Wakeup Control Register */
# define PSTR 0x80 /* Power Status Register */
# define PSTR_RETRIES 100
# define PSTR_DELAY_US 10
@ -39,12 +39,12 @@ static int rmobile_pd_power_down(struct generic_pm_domain *genpd)
return ret ;
}
if ( __raw_readl ( PSTR ) & mask ) {
if ( __raw_readl ( rmobile_pd - > base + PSTR ) & mask ) {
unsigned int retry_count ;
__raw_writel ( mask , SPDCR ) ;
__raw_writel ( mask , rmobile_pd - > base + SPDCR ) ;
for ( retry_count = PSTR_RETRIES ; retry_count ; retry_count - - ) {
if ( ! ( __raw_readl ( SPDCR ) & mask ) )
if ( ! ( __raw_readl ( rmobile_pd - > base + SPDCR ) & mask ) )
break ;
cpu_relax ( ) ;
}
@ -52,7 +52,8 @@ static int rmobile_pd_power_down(struct generic_pm_domain *genpd)
if ( ! rmobile_pd - > no_debug )
pr_debug ( " %s: Power off, 0x%08x -> PSTR = 0x%08x \n " ,
genpd - > name , mask , __raw_readl ( PSTR ) ) ;
genpd - > name , mask ,
__raw_readl ( rmobile_pd - > base + PSTR ) ) ;
return 0 ;
}
@ -64,13 +65,13 @@ static int __rmobile_pd_power_up(struct rmobile_pm_domain *rmobile_pd,
unsigned int retry_count ;
int ret = 0 ;
if ( __raw_readl ( PSTR ) & mask )
if ( __raw_readl ( rmobile_pd - > base + PSTR ) & mask )
goto out ;
__raw_writel ( mask , SWUCR ) ;
__raw_writel ( mask , rmobile_pd - > base + SWUCR ) ;
for ( retry_count = 2 * PSTR_RETRIES ; retry_count ; retry_count - - ) {
if ( ! ( __raw_readl ( SWUCR ) & mask ) )
if ( ! ( __raw_readl ( rmobile_pd - > base + SWUCR ) & mask ) )
break ;
if ( retry_count > PSTR_RETRIES )
udelay ( PSTR_DELAY_US ) ;
@ -82,7 +83,8 @@ static int __rmobile_pd_power_up(struct rmobile_pm_domain *rmobile_pd,
if ( ! rmobile_pd - > no_debug )
pr_debug ( " %s: Power on, 0x%08x -> PSTR = 0x%08x \n " ,
rmobile_pd - > genpd . name , mask , __raw_readl ( PSTR ) ) ;
rmobile_pd - > genpd . name , mask ,
__raw_readl ( rmobile_pd - > base + PSTR ) ) ;
out :
if ( ret = = 0 & & rmobile_pd - > resume & & do_resume )