2008-08-19 11:08:43 +03:00
/*
2010-01-26 20:13:13 -07:00
* OMAP3 powerdomain definitions
2008-08-19 11:08:43 +03:00
*
* Copyright ( C ) 2007 - 2008 Texas Instruments , Inc .
2010-01-26 20:13:13 -07:00
* Copyright ( C ) 2007 - 2010 Nokia Corporation
2008-08-19 11:08:43 +03:00
*
* Written by Paul Walmsley
* Debugging and integration fixes by Jouni Högander
*
* 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_POWERDOMAINS34XX
# define ARCH_ARM_MACH_OMAP2_POWERDOMAINS34XX
/*
* N . B . If powerdomains are added or removed from this file , update
* the array in mach - omap2 / powerdomains . h .
*/
2009-10-20 09:40:47 -07:00
# include <plat/powerdomain.h>
2008-08-19 11:08:43 +03:00
# include "prcm-common.h"
# include "prm.h"
# include "prm-regbits-34xx.h"
# include "cm.h"
# include "cm-regbits-34xx.h"
/*
* 34 XX - specific powerdomains , dependencies
*/
2010-01-26 20:13:13 -07:00
# ifdef CONFIG_ARCH_OMAP3
2008-08-19 11:08:43 +03:00
/*
* Powerdomains
*/
static struct powerdomain iva2_pwrdm = {
. name = " iva2_pwrdm " ,
. prcm_offs = OMAP3430_IVA2_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP3430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
. banks = 4 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRSTS_OFF_RET ,
[ 1 ] = PWRSTS_OFF_RET ,
[ 2 ] = PWRSTS_OFF_RET ,
[ 3 ] = PWRSTS_OFF_RET ,
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON ,
[ 1 ] = PWRDM_POWER_ON ,
[ 2 ] = PWRSTS_OFF_ON ,
[ 3 ] = PWRDM_POWER_ON ,
} ,
} ;
2010-01-26 20:13:13 -07:00
static struct powerdomain mpu_3xxx_pwrdm = {
2008-08-19 11:08:43 +03:00
. name = " mpu_pwrdm " ,
. prcm_offs = MPU_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP3430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
2009-12-08 16:33:15 -07:00
. flags = PWRDM_HAS_MPU_QUIRK ,
2008-08-19 11:08:43 +03:00
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRSTS_OFF_RET ,
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRSTS_OFF_ON ,
} ,
} ;
2010-01-26 20:13:13 -07:00
static struct powerdomain core_3xxx_pre_es3_1_pwrdm = {
2008-08-19 11:08:43 +03:00
. name = " core_pwrdm " ,
. prcm_offs = CORE_MOD ,
2009-02-05 20:45:28 -07:00
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP3430ES1 |
CHIP_IS_OMAP3430ES2 |
CHIP_IS_OMAP3430ES3_0 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
2010-02-24 12:05:50 -07:00
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
2009-02-05 20:45:28 -07:00
. banks = 2 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRSTS_OFF_RET , /* MEM1RETSTATE */
[ 1 ] = PWRSTS_OFF_RET , /* MEM2RETSTATE */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRSTS_OFF_RET_ON , /* MEM1ONSTATE */
[ 1 ] = PWRSTS_OFF_RET_ON , /* MEM2ONSTATE */
} ,
} ;
2010-01-26 20:13:13 -07:00
static struct powerdomain core_3xxx_es3_1_pwrdm = {
2009-02-05 20:45:28 -07:00
. name = " core_pwrdm " ,
. prcm_offs = CORE_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_GE_OMAP3430ES3_1 ) ,
2008-08-19 11:08:43 +03:00
. pwrsts = PWRSTS_OFF_RET_ON ,
2010-02-24 12:05:50 -07:00
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
2009-02-05 20:45:28 -07:00
. flags = PWRDM_HAS_HDWR_SAR , /* for USBTLL only */
2008-08-19 11:08:43 +03:00
. banks = 2 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRSTS_OFF_RET , /* MEM1RETSTATE */
[ 1 ] = PWRSTS_OFF_RET , /* MEM2RETSTATE */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRSTS_OFF_RET_ON , /* MEM1ONSTATE */
[ 1 ] = PWRSTS_OFF_RET_ON , /* MEM2ONSTATE */
} ,
} ;
static struct powerdomain dss_pwrdm = {
. name = " dss_pwrdm " ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP3430 ) ,
. prcm_offs = OMAP3430_DSS_MOD ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRDM_POWER_RET ,
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_RET , /* MEMRETSTATE */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* MEMONSTATE */
} ,
} ;
2009-01-27 19:44:28 -07:00
/*
* Although the 34 XX TRM Rev K Table 4 - 371 notes that retention is a
* possible SGX powerstate , the SGX device itself does not support
* retention .
*/
2008-08-19 11:08:43 +03:00
static struct powerdomain sgx_pwrdm = {
. name = " sgx_pwrdm " ,
. prcm_offs = OMAP3430ES2_SGX_MOD ,
2009-02-05 20:45:25 -07:00
. omap_chip = OMAP_CHIP_INIT ( CHIP_GE_OMAP3430ES2 ) ,
2008-08-19 11:08:43 +03:00
/* XXX This is accurate for 3430 SGX, but what about GFX? */
2009-01-27 19:44:28 -07:00
. pwrsts = PWRSTS_OFF_ON ,
2008-08-19 11:08:43 +03:00
. pwrsts_logic_ret = PWRDM_POWER_RET ,
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_RET , /* MEMRETSTATE */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* MEMONSTATE */
} ,
} ;
static struct powerdomain cam_pwrdm = {
. name = " cam_pwrdm " ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP3430 ) ,
. prcm_offs = OMAP3430_CAM_MOD ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRDM_POWER_RET ,
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_RET , /* MEMRETSTATE */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* MEMONSTATE */
} ,
} ;
static struct powerdomain per_pwrdm = {
. name = " per_pwrdm " ,
. prcm_offs = OMAP3430_PER_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP3430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRSTS_OFF_RET ,
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_RET , /* MEMRETSTATE */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* MEMONSTATE */
} ,
} ;
static struct powerdomain emu_pwrdm = {
. name = " emu_pwrdm " ,
. prcm_offs = OMAP3430_EMU_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP3430 ) ,
} ;
static struct powerdomain neon_pwrdm = {
. name = " neon_pwrdm " ,
. prcm_offs = OMAP3430_NEON_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP3430 ) ,
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRDM_POWER_RET ,
} ;
static struct powerdomain usbhost_pwrdm = {
. name = " usbhost_pwrdm " ,
. prcm_offs = OMAP3430ES2_USBHOST_MOD ,
2009-02-05 20:45:25 -07:00
. omap_chip = OMAP_CHIP_INIT ( CHIP_GE_OMAP3430ES2 ) ,
2008-08-19 11:08:43 +03:00
. pwrsts = PWRSTS_OFF_RET_ON ,
. pwrsts_logic_ret = PWRDM_POWER_RET ,
2009-04-23 13:58:51 +03:00
/*
* REVISIT : Enabling usb host save and restore mechanism seems to
* leave the usb host domain permanently in ACTIVE mode after
* changing the usb host power domain state from OFF to active once .
* Disabling for now .
*/
/*.flags = PWRDM_HAS_HDWR_SAR,*/ /* for USBHOST ctrlr only */
2008-08-19 11:08:43 +03:00
. banks = 1 ,
. pwrsts_mem_ret = {
[ 0 ] = PWRDM_POWER_RET , /* MEMRETSTATE */
} ,
. pwrsts_mem_on = {
[ 0 ] = PWRDM_POWER_ON , /* MEMONSTATE */
} ,
} ;
2009-01-27 19:44:18 -07:00
static struct powerdomain dpll1_pwrdm = {
. name = " dpll1_pwrdm " ,
. prcm_offs = MPU_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP3430 ) ,
} ;
static struct powerdomain dpll2_pwrdm = {
. name = " dpll2_pwrdm " ,
. prcm_offs = OMAP3430_IVA2_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP3430 ) ,
} ;
static struct powerdomain dpll3_pwrdm = {
. name = " dpll3_pwrdm " ,
. prcm_offs = PLL_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP3430 ) ,
} ;
static struct powerdomain dpll4_pwrdm = {
. name = " dpll4_pwrdm " ,
. prcm_offs = PLL_MOD ,
. omap_chip = OMAP_CHIP_INIT ( CHIP_IS_OMAP3430 ) ,
} ;
static struct powerdomain dpll5_pwrdm = {
. name = " dpll5_pwrdm " ,
. prcm_offs = PLL_MOD ,
2009-02-05 20:45:25 -07:00
. omap_chip = OMAP_CHIP_INIT ( CHIP_GE_OMAP3430ES2 ) ,
2009-01-27 19:44:18 -07:00
} ;
2010-01-26 20:13:13 -07:00
# endif /* CONFIG_ARCH_OMAP3 */
2008-08-19 11:08:43 +03:00
# endif