2010-01-26 20:12:52 -07:00
/*
* OMAP4 Power domains framework
*
2010-05-20 12:31:11 -06:00
* Copyright ( C ) 2009 - 2010 Texas Instruments , Inc .
* Copyright ( C ) 2009 - 2010 Nokia Corporation
2010-01-26 20:12:52 -07:00
*
* Abhijit Pagare ( abhijitpagare @ ti . com )
* Benoit Cousson ( b - cousson @ ti . com )
2010-05-20 12:31:11 -06:00
* Paul Walmsley ( paul @ pwsan . com )
2010-01-26 20:12:52 -07:00
*
* This file is automatically generated from the OMAP hardware databases .
* We respectfully ask that any modifications to this file be coordinated
* with the public linux - omap @ vger . kernel . org mailing list and the
* authors above to ensure that the autogeneration scripts are kept
* up - to - date with the file contents .
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# ifndef __ARCH_ARM_MACH_OMAP2_POWERDOMAINS44XX_H
# define __ARCH_ARM_MACH_OMAP2_POWERDOMAINS44XX_H
# include <plat/powerdomain.h>
# include "prcm-common.h"
# include "cm.h"
# include "cm-regbits-44xx.h"
# include "prm.h"
# include "prm-regbits-44xx.h"
# if defined(CONFIG_ARCH_OMAP4)
/* core_44xx_pwrdm: CORE power domain */
static struct powerdomain core_44xx_pwrdm = {
. name = " core_pwrdm " ,
. prcm_offs = OMAP4430_PRM_CORE_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_RET_ON ,
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
. banks = 5 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_OFF , /* core_nret_bank */
[ 1 ] = PWRSTS_OFF_RET , /* core_ocmram */
[ 2 ] = PWRDM_POWER_RET , /* core_other_bank */
[ 3 ] = PWRSTS_OFF_RET , /* ducati_l2ram */
[ 4 ] = PWRSTS_OFF_RET , /* ducati_unicache */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* core_nret_bank */
[ 1 ] = PWRSTS_OFF_RET , /* core_ocmram */
[ 2 ] = PWRDM_POWER_ON , /* core_other_bank */
[ 3 ] = PWRDM_POWER_ON , /* ducati_l2ram */
[ 4 ] = PWRDM_POWER_ON , /* ducati_unicache */
} ,
2010-05-18 20:24:03 -06:00
. flags = PWRDM_HAS_LOWPOWERSTATECHANGE ,
2010-01-26 20:12:52 -07:00
} ;
/* gfx_44xx_pwrdm: 3D accelerator power domain */
static struct powerdomain gfx_44xx_pwrdm = {
. name = " gfx_pwrdm " ,
. prcm_offs = OMAP4430_PRM_GFX_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_ON ,
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_OFF , /* gfx_mem */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* gfx_mem */
} ,
2010-05-18 20:24:03 -06:00
. flags = PWRDM_HAS_LOWPOWERSTATECHANGE ,
2010-01-26 20:12:52 -07:00
} ;
/* abe_44xx_pwrdm: Audio back end power domain */
static struct powerdomain abe_44xx_pwrdm = {
. name = " abe_pwrdm " ,
. prcm_offs = OMAP4430_PRM_ABE_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRDM_POWER_OFF ,
. banks = 2 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_RET , /* aessmem */
[ 1 ] = PWRDM_POWER_OFF , /* periphmem */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* aessmem */
[ 1 ] = PWRDM_POWER_ON , /* periphmem */
} ,
2010-05-18 20:24:03 -06:00
. flags = PWRDM_HAS_LOWPOWERSTATECHANGE ,
2010-01-26 20:12:52 -07:00
} ;
/* dss_44xx_pwrdm: Display subsystem power domain */
static struct powerdomain dss_44xx_pwrdm = {
. name = " dss_pwrdm " ,
. prcm_offs = OMAP4430_PRM_DSS_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_OFF , /* dss_mem */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* dss_mem */
} ,
2010-05-18 20:24:03 -06:00
. flags = PWRDM_HAS_LOWPOWERSTATECHANGE ,
2010-01-26 20:12:52 -07:00
} ;
/* tesla_44xx_pwrdm: Tesla processor power domain */
static struct powerdomain tesla_44xx_pwrdm = {
. name = " tesla_pwrdm " ,
. prcm_offs = OMAP4430_PRM_TESLA_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
. banks = 3 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_RET , /* tesla_edma */
[ 1 ] = PWRSTS_OFF_RET , /* tesla_l1 */
[ 2 ] = PWRSTS_OFF_RET , /* tesla_l2 */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* tesla_edma */
[ 1 ] = PWRDM_POWER_ON , /* tesla_l1 */
[ 2 ] = PWRDM_POWER_ON , /* tesla_l2 */
} ,
2010-05-18 20:24:03 -06:00
. flags = PWRDM_HAS_LOWPOWERSTATECHANGE ,
2010-01-26 20:12:52 -07:00
} ;
/* wkup_44xx_pwrdm: Wake-up power domain */
static struct powerdomain wkup_44xx_pwrdm = {
. name = " wkup_pwrdm " ,
. prcm_offs = OMAP4430_PRM_WKUP_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
2010-05-18 20:24:01 -06:00
. pwrsts = PWRSTS_ON ,
2010-01-26 20:12:52 -07:00
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_OFF , /* wkup_bank */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* wkup_bank */
} ,
} ;
/* cpu0_44xx_pwrdm: MPU0 processor and Neon coprocessor power domain */
static struct powerdomain cpu0_44xx_pwrdm = {
. name = " cpu0_pwrdm " ,
2010-05-20 12:31:11 -06:00
. prcm_offs = OMAP4430_PRCM_MPU_CPU0_MOD ,
2010-01-26 20:12:52 -07:00
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRSTS_OFF_RET , /* cpu0_l1 */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* cpu0_l1 */
} ,
} ;
/* cpu1_44xx_pwrdm: MPU1 processor and Neon coprocessor power domain */
static struct powerdomain cpu1_44xx_pwrdm = {
. name = " cpu1_pwrdm " ,
2010-05-20 12:31:11 -06:00
. prcm_offs = OMAP4430_PRCM_MPU_CPU1_MOD ,
2010-01-26 20:12:52 -07:00
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRSTS_OFF_RET , /* cpu1_l1 */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* cpu1_l1 */
} ,
} ;
/* emu_44xx_pwrdm: Emulation power domain */
static struct powerdomain emu_44xx_pwrdm = {
. name = " emu_pwrdm " ,
. prcm_offs = OMAP4430_PRM_EMU_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_ON ,
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_OFF , /* emu_bank */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* emu_bank */
} ,
} ;
/* mpu_44xx_pwrdm: Modena processor and the Neon coprocessor power domain */
static struct powerdomain mpu_44xx_pwrdm = {
. name = " mpu_pwrdm " ,
. prcm_offs = OMAP4430_PRM_MPU_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
. banks = 3 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRSTS_OFF_RET , /* mpu_l1 */
[ 1 ] = PWRSTS_OFF_RET , /* mpu_l2 */
[ 2 ] = PWRDM_POWER_RET , /* mpu_ram */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* mpu_l1 */
[ 1 ] = PWRDM_POWER_ON , /* mpu_l2 */
[ 2 ] = PWRDM_POWER_ON , /* mpu_ram */
} ,
} ;
/* ivahd_44xx_pwrdm: IVA-HD power domain */
static struct powerdomain ivahd_44xx_pwrdm = {
. name = " ivahd_pwrdm " ,
. prcm_offs = OMAP4430_PRM_IVAHD_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRDM_POWER_OFF ,
. banks = 4 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_OFF , /* hwa_mem */
[ 1 ] = PWRSTS_OFF_RET , /* sl2_mem */
[ 2 ] = PWRSTS_OFF_RET , /* tcm1_mem */
[ 3 ] = PWRSTS_OFF_RET , /* tcm2_mem */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* hwa_mem */
[ 1 ] = PWRDM_POWER_ON , /* sl2_mem */
[ 2 ] = PWRDM_POWER_ON , /* tcm1_mem */
[ 3 ] = PWRDM_POWER_ON , /* tcm2_mem */
} ,
2010-05-18 20:24:03 -06:00
. flags = PWRDM_HAS_LOWPOWERSTATECHANGE ,
2010-01-26 20:12:52 -07:00
} ;
/* cam_44xx_pwrdm: Camera subsystem power domain */
static struct powerdomain cam_44xx_pwrdm = {
. name = " cam_pwrdm " ,
. prcm_offs = OMAP4430_PRM_CAM_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_ON ,
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_OFF , /* cam_mem */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* cam_mem */
} ,
2010-05-18 20:24:03 -06:00
. flags = PWRDM_HAS_LOWPOWERSTATECHANGE ,
2010-01-26 20:12:52 -07:00
} ;
/* l3init_44xx_pwrdm: L3 initators pheripherals power domain */
static struct powerdomain l3init_44xx_pwrdm = {
. name = " l3init_pwrdm " ,
. prcm_offs = OMAP4430_PRM_L3INIT_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_OFF , /* l3init_bank1 */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* l3init_bank1 */
} ,
2010-05-18 20:24:03 -06:00
. flags = PWRDM_HAS_LOWPOWERSTATECHANGE ,
2010-01-26 20:12:52 -07:00
} ;
/* l4per_44xx_pwrdm: Target peripherals power domain */
static struct powerdomain l4per_44xx_pwrdm = {
. name = " l4per_pwrdm " ,
. prcm_offs = OMAP4430_PRM_L4PER_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
. banks = 2 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_OFF , /* nonretained_bank */
[ 1 ] = PWRDM_POWER_RET , /* retained_bank */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* nonretained_bank */
[ 1 ] = PWRDM_POWER_ON , /* retained_bank */
} ,
2010-05-18 20:24:03 -06:00
. flags = PWRDM_HAS_LOWPOWERSTATECHANGE ,
2010-01-26 20:12:52 -07:00
} ;
/*
* always_on_core_44xx_pwrdm : Always ON logic that sits in VDD_CORE voltage
* domain
*/
static struct powerdomain always_on_core_44xx_pwrdm = {
. name = " always_on_core_pwrdm " ,
. prcm_offs = OMAP4430_PRM_ALWAYS_ON_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
2010-05-18 20:24:01 -06:00
. pwrsts = PWRSTS_ON ,
2010-01-26 20:12:52 -07:00
} ;
/* cefuse_44xx_pwrdm: Customer efuse controller power domain */
static struct powerdomain cefuse_44xx_pwrdm = {
. name = " cefuse_pwrdm " ,
. prcm_offs = OMAP4430_PRM_CEFUSE_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP4430 ) ,
. pwrsts = PWRSTS_OFF_ON ,
} ;
/*
* The following power domains are not under SW control
*
* always_on_iva
* always_on_mpu
* stdefuse
*/
# endif
# endif