@ -45,6 +45,13 @@ static int tegra_num_cpu_domains;
static const u8 * tegra_cpu_domains ;
static const u8 tegra30_cpu_domains [ ] = {
TEGRA_POWERGATE_CPU ,
TEGRA_POWERGATE_CPU1 ,
TEGRA_POWERGATE_CPU2 ,
TEGRA_POWERGATE_CPU3 ,
} ;
static const u8 tegra114_cpu_domains [ ] = {
TEGRA_POWERGATE_CPU0 ,
TEGRA_POWERGATE_CPU1 ,
TEGRA_POWERGATE_CPU2 ,
@ -190,6 +197,11 @@ int __init tegra_powergate_init(void)
tegra_num_cpu_domains = 4 ;
tegra_cpu_domains = tegra30_cpu_domains ;
break ;
case TEGRA114 :
tegra_num_powerdomains = 23 ;
tegra_num_cpu_domains = 4 ;
tegra_cpu_domains = tegra114_cpu_domains ;
break ;
default :
/* Unknown Tegra variant. Disable powergating */
tegra_num_powerdomains = 0 ;
@ -230,6 +242,27 @@ static const char * const powergate_name_t30[] = {
[ TEGRA_POWERGATE_3D1 ] = " 3d1 " ,
} ;
static const char * const powergate_name_t114 [ ] = {
[ TEGRA_POWERGATE_CPU ] = " cpu0 " ,
[ TEGRA_POWERGATE_3D ] = " 3d " ,
[ TEGRA_POWERGATE_VENC ] = " venc " ,
[ TEGRA_POWERGATE_VDEC ] = " vdec " ,
[ TEGRA_POWERGATE_MPE ] = " mpe " ,
[ TEGRA_POWERGATE_HEG ] = " heg " ,
[ TEGRA_POWERGATE_CPU1 ] = " cpu1 " ,
[ TEGRA_POWERGATE_CPU2 ] = " cpu2 " ,
[ TEGRA_POWERGATE_CPU3 ] = " cpu3 " ,
[ TEGRA_POWERGATE_CELP ] = " celp " ,
[ TEGRA_POWERGATE_CPU0 ] = " cpu0 " ,
[ TEGRA_POWERGATE_C0NC ] = " c0nc " ,
[ TEGRA_POWERGATE_C1NC ] = " c1nc " ,
[ TEGRA_POWERGATE_DIS ] = " dis " ,
[ TEGRA_POWERGATE_DISB ] = " disb " ,
[ TEGRA_POWERGATE_XUSBA ] = " xusba " ,
[ TEGRA_POWERGATE_XUSBB ] = " xusbb " ,
[ TEGRA_POWERGATE_XUSBC ] = " xusbc " ,
} ;
static int powergate_show ( struct seq_file * s , void * data )
{
int i ;
@ -237,9 +270,14 @@ static int powergate_show(struct seq_file *s, void *data)
seq_printf ( s , " powergate powered \n " ) ;
seq_printf ( s , " ------------------ \n " ) ;
for ( i = 0 ; i < tegra_num_powerdomains ; i + + )
for ( i = 0 ; i < tegra_num_powerdomains ; i + + ) {
if ( ! powergate_name [ i ] )
continue ;
seq_printf ( s , " %9s %7s \n " , powergate_name [ i ] ,
tegra_powergate_is_powered ( i ) ? " yes " : " no " ) ;
}
return 0 ;
}
@ -266,6 +304,9 @@ int __init tegra_powergate_debugfs_init(void)
case TEGRA30 :
powergate_name = powergate_name_t30 ;
break ;
case TEGRA114 :
powergate_name = powergate_name_t114 ;
break ;
}
if ( powergate_name ) {