16e01478aSPaul Walmsley /* 26e01478aSPaul Walmsley * OMAP2XXX powerdomain definitions 36e01478aSPaul Walmsley * 46e01478aSPaul Walmsley * Copyright (C) 2007-2008 Texas Instruments, Inc. 56e01478aSPaul Walmsley * Copyright (C) 2007-2010 Nokia Corporation 66e01478aSPaul Walmsley * 76e01478aSPaul Walmsley * Paul Walmsley, Jouni Högander 86e01478aSPaul Walmsley * 96e01478aSPaul Walmsley * This program is free software; you can redistribute it and/or modify 106e01478aSPaul Walmsley * it under the terms of the GNU General Public License version 2 as 116e01478aSPaul Walmsley * published by the Free Software Foundation. 126e01478aSPaul Walmsley */ 136e01478aSPaul Walmsley 146e01478aSPaul Walmsley #include <linux/kernel.h> 156e01478aSPaul Walmsley #include <linux/init.h> 166e01478aSPaul Walmsley 176e01478aSPaul Walmsley #include <plat/powerdomain.h> 186e01478aSPaul Walmsley #include "powerdomains2xxx_3xxx_data.h" 196e01478aSPaul Walmsley #include "powerdomains.h" 206e01478aSPaul Walmsley 216e01478aSPaul Walmsley #include "prcm-common.h" 2259fb659bSPaul Walmsley #include "prm2xxx_3xxx.h" 236e01478aSPaul Walmsley #include "prm-regbits-24xx.h" 246e01478aSPaul Walmsley 256e01478aSPaul Walmsley /* 24XX powerdomains and dependencies */ 266e01478aSPaul Walmsley 276e01478aSPaul Walmsley /* Powerdomains */ 286e01478aSPaul Walmsley 296e01478aSPaul Walmsley static struct powerdomain dsp_pwrdm = { 306e01478aSPaul Walmsley .name = "dsp_pwrdm", 316e01478aSPaul Walmsley .prcm_offs = OMAP24XX_DSP_MOD, 326e01478aSPaul Walmsley .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 336e01478aSPaul Walmsley .pwrsts = PWRSTS_OFF_RET_ON, 346e01478aSPaul Walmsley .pwrsts_logic_ret = PWRDM_POWER_RET, 356e01478aSPaul Walmsley .banks = 1, 366e01478aSPaul Walmsley .pwrsts_mem_ret = { 376e01478aSPaul Walmsley [0] = PWRDM_POWER_RET, 386e01478aSPaul Walmsley }, 396e01478aSPaul Walmsley .pwrsts_mem_on = { 406e01478aSPaul Walmsley [0] = PWRDM_POWER_ON, 416e01478aSPaul Walmsley }, 426e01478aSPaul Walmsley }; 436e01478aSPaul Walmsley 446e01478aSPaul Walmsley static struct powerdomain mpu_24xx_pwrdm = { 456e01478aSPaul Walmsley .name = "mpu_pwrdm", 466e01478aSPaul Walmsley .prcm_offs = MPU_MOD, 476e01478aSPaul Walmsley .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 486e01478aSPaul Walmsley .pwrsts = PWRSTS_OFF_RET_ON, 496e01478aSPaul Walmsley .pwrsts_logic_ret = PWRSTS_OFF_RET, 506e01478aSPaul Walmsley .banks = 1, 516e01478aSPaul Walmsley .pwrsts_mem_ret = { 526e01478aSPaul Walmsley [0] = PWRDM_POWER_RET, 536e01478aSPaul Walmsley }, 546e01478aSPaul Walmsley .pwrsts_mem_on = { 556e01478aSPaul Walmsley [0] = PWRDM_POWER_ON, 566e01478aSPaul Walmsley }, 576e01478aSPaul Walmsley }; 586e01478aSPaul Walmsley 596e01478aSPaul Walmsley static struct powerdomain core_24xx_pwrdm = { 606e01478aSPaul Walmsley .name = "core_pwrdm", 616e01478aSPaul Walmsley .prcm_offs = CORE_MOD, 626e01478aSPaul Walmsley .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 636e01478aSPaul Walmsley .pwrsts = PWRSTS_OFF_RET_ON, 646e01478aSPaul Walmsley .banks = 3, 656e01478aSPaul Walmsley .pwrsts_mem_ret = { 666e01478aSPaul Walmsley [0] = PWRSTS_OFF_RET, /* MEM1RETSTATE */ 676e01478aSPaul Walmsley [1] = PWRSTS_OFF_RET, /* MEM2RETSTATE */ 686e01478aSPaul Walmsley [2] = PWRSTS_OFF_RET, /* MEM3RETSTATE */ 696e01478aSPaul Walmsley }, 706e01478aSPaul Walmsley .pwrsts_mem_on = { 716e01478aSPaul Walmsley [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */ 726e01478aSPaul Walmsley [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */ 736e01478aSPaul Walmsley [2] = PWRSTS_OFF_RET_ON, /* MEM3ONSTATE */ 746e01478aSPaul Walmsley }, 756e01478aSPaul Walmsley }; 766e01478aSPaul Walmsley 776e01478aSPaul Walmsley 786e01478aSPaul Walmsley /* 796e01478aSPaul Walmsley * 2430-specific powerdomains 806e01478aSPaul Walmsley */ 816e01478aSPaul Walmsley 826e01478aSPaul Walmsley #ifdef CONFIG_ARCH_OMAP2430 836e01478aSPaul Walmsley 846e01478aSPaul Walmsley /* XXX 2430 KILLDOMAINWKUP bit? No current users apparently */ 856e01478aSPaul Walmsley 866e01478aSPaul Walmsley static struct powerdomain mdm_pwrdm = { 876e01478aSPaul Walmsley .name = "mdm_pwrdm", 886e01478aSPaul Walmsley .prcm_offs = OMAP2430_MDM_MOD, 896e01478aSPaul Walmsley .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), 906e01478aSPaul Walmsley .pwrsts = PWRSTS_OFF_RET_ON, 916e01478aSPaul Walmsley .pwrsts_logic_ret = PWRDM_POWER_RET, 926e01478aSPaul Walmsley .banks = 1, 936e01478aSPaul Walmsley .pwrsts_mem_ret = { 946e01478aSPaul Walmsley [0] = PWRDM_POWER_RET, /* MEMRETSTATE */ 956e01478aSPaul Walmsley }, 966e01478aSPaul Walmsley .pwrsts_mem_on = { 976e01478aSPaul Walmsley [0] = PWRDM_POWER_ON, /* MEMONSTATE */ 986e01478aSPaul Walmsley }, 996e01478aSPaul Walmsley }; 1006e01478aSPaul Walmsley 1016e01478aSPaul Walmsley #endif /* CONFIG_ARCH_OMAP2430 */ 1026e01478aSPaul Walmsley 1036e01478aSPaul Walmsley /* As powerdomains are added or removed above, this list must also be changed */ 1046e01478aSPaul Walmsley static struct powerdomain *powerdomains_omap2xxx[] __initdata = { 1056e01478aSPaul Walmsley 1066e01478aSPaul Walmsley &wkup_omap2_pwrdm, 1076e01478aSPaul Walmsley &gfx_omap2_pwrdm, 1086e01478aSPaul Walmsley 1096e01478aSPaul Walmsley #ifdef CONFIG_ARCH_OMAP2 1106e01478aSPaul Walmsley &dsp_pwrdm, 1116e01478aSPaul Walmsley &mpu_24xx_pwrdm, 1126e01478aSPaul Walmsley &core_24xx_pwrdm, 1136e01478aSPaul Walmsley #endif 1146e01478aSPaul Walmsley 1156e01478aSPaul Walmsley #ifdef CONFIG_ARCH_OMAP2430 1166e01478aSPaul Walmsley &mdm_pwrdm, 1176e01478aSPaul Walmsley #endif 1186e01478aSPaul Walmsley NULL 1196e01478aSPaul Walmsley }; 1206e01478aSPaul Walmsley 1216e01478aSPaul Walmsley void __init omap2xxx_powerdomains_init(void) 1226e01478aSPaul Walmsley { 1236e01478aSPaul Walmsley pwrdm_init(powerdomains_omap2xxx, &omap2_pwrdm_operations); 1246e01478aSPaul Walmsley } 125