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 1772e06d08SPaul Walmsley #include "powerdomain.h" 186e01478aSPaul Walmsley #include "powerdomains2xxx_3xxx_data.h" 196e01478aSPaul Walmsley 206e01478aSPaul Walmsley #include "prcm-common.h" 2159fb659bSPaul Walmsley #include "prm2xxx_3xxx.h" 226e01478aSPaul Walmsley #include "prm-regbits-24xx.h" 236e01478aSPaul Walmsley 246e01478aSPaul Walmsley /* 24XX powerdomains and dependencies */ 256e01478aSPaul Walmsley 266e01478aSPaul Walmsley /* Powerdomains */ 276e01478aSPaul Walmsley 286e01478aSPaul Walmsley static struct powerdomain dsp_pwrdm = { 296e01478aSPaul Walmsley .name = "dsp_pwrdm", 306e01478aSPaul Walmsley .prcm_offs = OMAP24XX_DSP_MOD, 316e01478aSPaul Walmsley .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 326e01478aSPaul Walmsley .pwrsts = PWRSTS_OFF_RET_ON, 336e01478aSPaul Walmsley .pwrsts_logic_ret = PWRDM_POWER_RET, 346e01478aSPaul Walmsley .banks = 1, 356e01478aSPaul Walmsley .pwrsts_mem_ret = { 366e01478aSPaul Walmsley [0] = PWRDM_POWER_RET, 376e01478aSPaul Walmsley }, 386e01478aSPaul Walmsley .pwrsts_mem_on = { 396e01478aSPaul Walmsley [0] = PWRDM_POWER_ON, 406e01478aSPaul Walmsley }, 416e01478aSPaul Walmsley }; 426e01478aSPaul Walmsley 436e01478aSPaul Walmsley static struct powerdomain mpu_24xx_pwrdm = { 446e01478aSPaul Walmsley .name = "mpu_pwrdm", 456e01478aSPaul Walmsley .prcm_offs = MPU_MOD, 466e01478aSPaul Walmsley .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 476e01478aSPaul Walmsley .pwrsts = PWRSTS_OFF_RET_ON, 486e01478aSPaul Walmsley .pwrsts_logic_ret = PWRSTS_OFF_RET, 496e01478aSPaul Walmsley .banks = 1, 506e01478aSPaul Walmsley .pwrsts_mem_ret = { 516e01478aSPaul Walmsley [0] = PWRDM_POWER_RET, 526e01478aSPaul Walmsley }, 536e01478aSPaul Walmsley .pwrsts_mem_on = { 546e01478aSPaul Walmsley [0] = PWRDM_POWER_ON, 556e01478aSPaul Walmsley }, 566e01478aSPaul Walmsley }; 576e01478aSPaul Walmsley 586e01478aSPaul Walmsley static struct powerdomain core_24xx_pwrdm = { 596e01478aSPaul Walmsley .name = "core_pwrdm", 606e01478aSPaul Walmsley .prcm_offs = CORE_MOD, 616e01478aSPaul Walmsley .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), 626e01478aSPaul Walmsley .pwrsts = PWRSTS_OFF_RET_ON, 636e01478aSPaul Walmsley .banks = 3, 646e01478aSPaul Walmsley .pwrsts_mem_ret = { 656e01478aSPaul Walmsley [0] = PWRSTS_OFF_RET, /* MEM1RETSTATE */ 666e01478aSPaul Walmsley [1] = PWRSTS_OFF_RET, /* MEM2RETSTATE */ 676e01478aSPaul Walmsley [2] = PWRSTS_OFF_RET, /* MEM3RETSTATE */ 686e01478aSPaul Walmsley }, 696e01478aSPaul Walmsley .pwrsts_mem_on = { 706e01478aSPaul Walmsley [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */ 716e01478aSPaul Walmsley [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */ 726e01478aSPaul Walmsley [2] = PWRSTS_OFF_RET_ON, /* MEM3ONSTATE */ 736e01478aSPaul Walmsley }, 746e01478aSPaul Walmsley }; 756e01478aSPaul Walmsley 766e01478aSPaul Walmsley 776e01478aSPaul Walmsley /* 786e01478aSPaul Walmsley * 2430-specific powerdomains 796e01478aSPaul Walmsley */ 806e01478aSPaul Walmsley 8159b479e0STony Lindgren #ifdef CONFIG_SOC_OMAP2430 826e01478aSPaul Walmsley 836e01478aSPaul Walmsley /* XXX 2430 KILLDOMAINWKUP bit? No current users apparently */ 846e01478aSPaul Walmsley 856e01478aSPaul Walmsley static struct powerdomain mdm_pwrdm = { 866e01478aSPaul Walmsley .name = "mdm_pwrdm", 876e01478aSPaul Walmsley .prcm_offs = OMAP2430_MDM_MOD, 886e01478aSPaul Walmsley .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), 896e01478aSPaul Walmsley .pwrsts = PWRSTS_OFF_RET_ON, 906e01478aSPaul Walmsley .pwrsts_logic_ret = PWRDM_POWER_RET, 916e01478aSPaul Walmsley .banks = 1, 926e01478aSPaul Walmsley .pwrsts_mem_ret = { 936e01478aSPaul Walmsley [0] = PWRDM_POWER_RET, /* MEMRETSTATE */ 946e01478aSPaul Walmsley }, 956e01478aSPaul Walmsley .pwrsts_mem_on = { 966e01478aSPaul Walmsley [0] = PWRDM_POWER_ON, /* MEMONSTATE */ 976e01478aSPaul Walmsley }, 986e01478aSPaul Walmsley }; 996e01478aSPaul Walmsley 10059b479e0STony Lindgren #endif /* CONFIG_SOC_OMAP2430 */ 1016e01478aSPaul Walmsley 1026e01478aSPaul Walmsley /* As powerdomains are added or removed above, this list must also be changed */ 1036e01478aSPaul Walmsley static struct powerdomain *powerdomains_omap2xxx[] __initdata = { 1046e01478aSPaul Walmsley 1056e01478aSPaul Walmsley &wkup_omap2_pwrdm, 1066e01478aSPaul Walmsley &gfx_omap2_pwrdm, 1076e01478aSPaul Walmsley 1086e01478aSPaul Walmsley #ifdef CONFIG_ARCH_OMAP2 1096e01478aSPaul Walmsley &dsp_pwrdm, 1106e01478aSPaul Walmsley &mpu_24xx_pwrdm, 1116e01478aSPaul Walmsley &core_24xx_pwrdm, 1126e01478aSPaul Walmsley #endif 1136e01478aSPaul Walmsley 11459b479e0STony Lindgren #ifdef CONFIG_SOC_OMAP2430 1156e01478aSPaul Walmsley &mdm_pwrdm, 1166e01478aSPaul Walmsley #endif 1176e01478aSPaul Walmsley NULL 1186e01478aSPaul Walmsley }; 1196e01478aSPaul Walmsley 1206e01478aSPaul Walmsley void __init omap2xxx_powerdomains_init(void) 1216e01478aSPaul Walmsley { 1226e01478aSPaul Walmsley pwrdm_init(powerdomains_omap2xxx, &omap2_pwrdm_operations); 1236e01478aSPaul Walmsley } 124