16e01478aSPaul Walmsley /* 26e01478aSPaul Walmsley * OMAP2XXX powerdomain definitions 36e01478aSPaul Walmsley * 48179488aSPaul Walmsley * Copyright (C) 2007-2008, 2011 Texas Instruments, Inc. 54cb49fecSPaul Walmsley * Copyright (C) 2007-2011 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 17e4c060dbSTony Lindgren #include "soc.h" 1872e06d08SPaul Walmsley #include "powerdomain.h" 196e01478aSPaul Walmsley #include "powerdomains2xxx_3xxx_data.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 .pwrsts = PWRSTS_OFF_RET_ON, 334cb49fecSPaul Walmsley .pwrsts_logic_ret = PWRSTS_RET, 346e01478aSPaul Walmsley .banks = 1, 356e01478aSPaul Walmsley .pwrsts_mem_ret = { 364cb49fecSPaul Walmsley [0] = PWRSTS_RET, 376e01478aSPaul Walmsley }, 386e01478aSPaul Walmsley .pwrsts_mem_on = { 394cb49fecSPaul Walmsley [0] = PWRSTS_ON, 406e01478aSPaul Walmsley }, 41aae030faSKevin Hilman .voltdm = { .name = "core" }, 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 .pwrsts = PWRSTS_OFF_RET_ON, 486e01478aSPaul Walmsley .pwrsts_logic_ret = PWRSTS_OFF_RET, 496e01478aSPaul Walmsley .banks = 1, 506e01478aSPaul Walmsley .pwrsts_mem_ret = { 514cb49fecSPaul Walmsley [0] = PWRSTS_RET, 526e01478aSPaul Walmsley }, 536e01478aSPaul Walmsley .pwrsts_mem_on = { 544cb49fecSPaul Walmsley [0] = PWRSTS_ON, 556e01478aSPaul Walmsley }, 56aae030faSKevin Hilman .voltdm = { .name = "core" }, 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 .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 }, 74aae030faSKevin Hilman .voltdm = { .name = "core" }, 756e01478aSPaul Walmsley }; 766e01478aSPaul Walmsley 776e01478aSPaul Walmsley 786e01478aSPaul Walmsley /* 796e01478aSPaul Walmsley * 2430-specific powerdomains 806e01478aSPaul Walmsley */ 816e01478aSPaul Walmsley 826e01478aSPaul Walmsley /* XXX 2430 KILLDOMAINWKUP bit? No current users apparently */ 836e01478aSPaul Walmsley 846e01478aSPaul Walmsley static struct powerdomain mdm_pwrdm = { 856e01478aSPaul Walmsley .name = "mdm_pwrdm", 866e01478aSPaul Walmsley .prcm_offs = OMAP2430_MDM_MOD, 876e01478aSPaul Walmsley .pwrsts = PWRSTS_OFF_RET_ON, 884cb49fecSPaul Walmsley .pwrsts_logic_ret = PWRSTS_RET, 896e01478aSPaul Walmsley .banks = 1, 906e01478aSPaul Walmsley .pwrsts_mem_ret = { 914cb49fecSPaul Walmsley [0] = PWRSTS_RET, /* MEMRETSTATE */ 926e01478aSPaul Walmsley }, 936e01478aSPaul Walmsley .pwrsts_mem_on = { 944cb49fecSPaul Walmsley [0] = PWRSTS_ON, /* MEMONSTATE */ 956e01478aSPaul Walmsley }, 96aae030faSKevin Hilman .voltdm = { .name = "core" }, 976e01478aSPaul Walmsley }; 986e01478aSPaul Walmsley 998179488aSPaul Walmsley /* 1008179488aSPaul Walmsley * 1018179488aSPaul Walmsley */ 1026e01478aSPaul Walmsley 1038179488aSPaul Walmsley static struct powerdomain *powerdomains_omap24xx[] __initdata = { 1046e01478aSPaul Walmsley &wkup_omap2_pwrdm, 1056e01478aSPaul Walmsley &gfx_omap2_pwrdm, 1066e01478aSPaul Walmsley &dsp_pwrdm, 1076e01478aSPaul Walmsley &mpu_24xx_pwrdm, 1086e01478aSPaul Walmsley &core_24xx_pwrdm, 1096e01478aSPaul Walmsley NULL 1106e01478aSPaul Walmsley }; 1116e01478aSPaul Walmsley 1128179488aSPaul Walmsley static struct powerdomain *powerdomains_omap2430[] __initdata = { 1138179488aSPaul Walmsley &mdm_pwrdm, 1148179488aSPaul Walmsley NULL 1158179488aSPaul Walmsley }; 1168179488aSPaul Walmsley 1178179488aSPaul Walmsley void __init omap242x_powerdomains_init(void) 1186e01478aSPaul Walmsley { 1198179488aSPaul Walmsley if (!cpu_is_omap2420()) 1208179488aSPaul Walmsley return; 1218179488aSPaul Walmsley 122129c65eeSPaul Walmsley pwrdm_register_platform_funcs(&omap2_pwrdm_operations); 1238179488aSPaul Walmsley pwrdm_register_pwrdms(powerdomains_omap24xx); 1248179488aSPaul Walmsley pwrdm_complete_init(); 1258179488aSPaul Walmsley } 1268179488aSPaul Walmsley 1278179488aSPaul Walmsley void __init omap243x_powerdomains_init(void) 1288179488aSPaul Walmsley { 1298179488aSPaul Walmsley if (!cpu_is_omap2430()) 1308179488aSPaul Walmsley return; 1318179488aSPaul Walmsley 1328179488aSPaul Walmsley pwrdm_register_platform_funcs(&omap2_pwrdm_operations); 1338179488aSPaul Walmsley pwrdm_register_pwrdms(powerdomains_omap24xx); 1348179488aSPaul Walmsley pwrdm_register_pwrdms(powerdomains_omap2430); 135129c65eeSPaul Walmsley pwrdm_complete_init(); 1366e01478aSPaul Walmsley } 137