Loading arch/arm/mach-omap2/powerdomains.h +14 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,10 @@ static struct pwrdm_dep gfx_sgx_wkdeps[] = { { NULL }, }; #include "powerdomains24xx.h" /* * OMAP2/3 common powerdomains */ Loading Loading @@ -140,6 +144,16 @@ static struct powerdomain *powerdomains_omap[] __initdata = { &gfx_pwrdm, &wkup_pwrdm, #ifdef CONFIG_ARCH_OMAP24XX &dsp_pwrdm, &mpu_24xx_pwrdm, &core_24xx_pwrdm, #endif #ifdef CONFIG_ARCH_OMAP2430 &mdm_pwrdm, #endif NULL }; Loading arch/arm/mach-omap2/powerdomains24xx.h 0 → 100644 +200 −0 Original line number Diff line number Diff line /* * OMAP24XX powerdomain definitions * * Copyright (C) 2007-2008 Texas Instruments, Inc. * Copyright (C) 2007-2008 Nokia Corporation * * 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_POWERDOMAINS24XX #define ARCH_ARM_MACH_OMAP2_POWERDOMAINS24XX /* * N.B. If powerdomains are added or removed from this file, update * the array in mach-omap2/powerdomains.h. */ #include <mach/powerdomain.h> #include "prcm-common.h" #include "prm.h" #include "prm-regbits-24xx.h" #include "cm.h" #include "cm-regbits-24xx.h" /* 24XX powerdomains and dependencies */ #ifdef CONFIG_ARCH_OMAP24XX /* Wakeup dependency source arrays */ /* * 2420/2430 PM_WKDEP_DSP: CORE, MPU, WKUP * 2430 PM_WKDEP_MDM: same as above */ static struct pwrdm_dep dsp_mdm_24xx_wkdeps[] = { { .pwrdm_name = "core_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "mpu_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "wkup_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { NULL }, }; /* * 2420 PM_WKDEP_MPU: CORE, DSP, WKUP * 2430 adds MDM */ static struct pwrdm_dep mpu_24xx_wkdeps[] = { { .pwrdm_name = "core_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "dsp_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "wkup_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "mdm_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430) }, { NULL }, }; /* * 2420 PM_WKDEP_CORE: DSP, GFX, MPU, WKUP * 2430 adds MDM */ static struct pwrdm_dep core_24xx_wkdeps[] = { { .pwrdm_name = "dsp_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "gfx_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "mpu_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "wkup_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "mdm_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430) }, { NULL }, }; /* Powerdomains */ static struct powerdomain dsp_pwrdm = { .name = "dsp_pwrdm", .prcm_offs = OMAP24XX_DSP_MOD, .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), .dep_bit = OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT, .wkdep_srcs = dsp_mdm_24xx_wkdeps, .pwrsts = PWRSTS_OFF_RET_ON, .pwrsts_logic_ret = PWRDM_POWER_RET, .banks = 1, .pwrsts_mem_ret = { [0] = PWRDM_POWER_RET, }, .pwrsts_mem_on = { [0] = PWRDM_POWER_ON, }, }; static struct powerdomain mpu_24xx_pwrdm = { .name = "mpu_pwrdm", .prcm_offs = MPU_MOD, .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), .dep_bit = OMAP24XX_EN_MPU_SHIFT, .wkdep_srcs = mpu_24xx_wkdeps, .pwrsts = PWRSTS_OFF_RET_ON, .pwrsts_logic_ret = PWRSTS_OFF_RET, .banks = 1, .pwrsts_mem_ret = { [0] = PWRDM_POWER_RET, }, .pwrsts_mem_on = { [0] = PWRDM_POWER_ON, }, }; static struct powerdomain core_24xx_pwrdm = { .name = "core_pwrdm", .prcm_offs = CORE_MOD, .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), .wkdep_srcs = core_24xx_wkdeps, .pwrsts = PWRSTS_OFF_RET_ON, .dep_bit = OMAP24XX_EN_CORE_SHIFT, .banks = 3, .pwrsts_mem_ret = { [0] = PWRSTS_OFF_RET, /* MEM1RETSTATE */ [1] = PWRSTS_OFF_RET, /* MEM2RETSTATE */ [2] = PWRSTS_OFF_RET, /* MEM3RETSTATE */ }, .pwrsts_mem_on = { [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */ [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */ [2] = PWRSTS_OFF_RET_ON, /* MEM3ONSTATE */ }, }; #endif /* CONFIG_ARCH_OMAP24XX */ /* * 2430-specific powerdomains */ #ifdef CONFIG_ARCH_OMAP2430 /* XXX 2430 KILLDOMAINWKUP bit? No current users apparently */ /* Another case of bit name collisions between several registers: EN_MDM */ static struct powerdomain mdm_pwrdm = { .name = "mdm_pwrdm", .prcm_offs = OMAP2430_MDM_MOD, .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), .dep_bit = OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT, .wkdep_srcs = dsp_mdm_24xx_wkdeps, .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 */ }, }; #endif /* CONFIG_ARCH_OMAP2430 */ #endif arch/arm/mach-omap2/prm-regbits-24xx.h +8 −4 Original line number Diff line number Diff line Loading @@ -29,8 +29,10 @@ #define OMAP24XX_WKUP1_EN (1 << 0) /* PM_WKDEP_GFX, PM_WKDEP_MPU, PM_WKDEP_DSP, PM_WKDEP_MDM shared bits */ #define OMAP24XX_EN_MPU (1 << 1) #define OMAP24XX_EN_CORE (1 << 0) #define OMAP24XX_EN_MPU_SHIFT 1 #define OMAP24XX_EN_MPU_MASK (1 << 1) #define OMAP24XX_EN_CORE_SHIFT 0 #define OMAP24XX_EN_CORE_MASK (1 << 0) /* * PM_PWSTCTRL_MPU, PM_PWSTCTRL_GFX, PM_PWSTCTRL_DSP, PM_PWSTCTRL_MDM Loading Loading @@ -140,8 +142,10 @@ /* 2430 calls GLOBALWMPU_RST "GLOBALWARM_RST" instead */ /* PM_WKDEP_MPU specific bits */ #define OMAP2430_PM_WKDEP_MPU_EN_MDM (1 << 5) #define OMAP24XX_PM_WKDEP_MPU_EN_DSP (1 << 2) #define OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT 5 #define OMAP2430_PM_WKDEP_MPU_EN_MDM_MASK (1 << 5) #define OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT 2 #define OMAP24XX_PM_WKDEP_MPU_EN_DSP_MASK (1 << 2) /* PM_EVGENCTRL_MPU specific bits */ Loading Loading
arch/arm/mach-omap2/powerdomains.h +14 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,10 @@ static struct pwrdm_dep gfx_sgx_wkdeps[] = { { NULL }, }; #include "powerdomains24xx.h" /* * OMAP2/3 common powerdomains */ Loading Loading @@ -140,6 +144,16 @@ static struct powerdomain *powerdomains_omap[] __initdata = { &gfx_pwrdm, &wkup_pwrdm, #ifdef CONFIG_ARCH_OMAP24XX &dsp_pwrdm, &mpu_24xx_pwrdm, &core_24xx_pwrdm, #endif #ifdef CONFIG_ARCH_OMAP2430 &mdm_pwrdm, #endif NULL }; Loading
arch/arm/mach-omap2/powerdomains24xx.h 0 → 100644 +200 −0 Original line number Diff line number Diff line /* * OMAP24XX powerdomain definitions * * Copyright (C) 2007-2008 Texas Instruments, Inc. * Copyright (C) 2007-2008 Nokia Corporation * * 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_POWERDOMAINS24XX #define ARCH_ARM_MACH_OMAP2_POWERDOMAINS24XX /* * N.B. If powerdomains are added or removed from this file, update * the array in mach-omap2/powerdomains.h. */ #include <mach/powerdomain.h> #include "prcm-common.h" #include "prm.h" #include "prm-regbits-24xx.h" #include "cm.h" #include "cm-regbits-24xx.h" /* 24XX powerdomains and dependencies */ #ifdef CONFIG_ARCH_OMAP24XX /* Wakeup dependency source arrays */ /* * 2420/2430 PM_WKDEP_DSP: CORE, MPU, WKUP * 2430 PM_WKDEP_MDM: same as above */ static struct pwrdm_dep dsp_mdm_24xx_wkdeps[] = { { .pwrdm_name = "core_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "mpu_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "wkup_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { NULL }, }; /* * 2420 PM_WKDEP_MPU: CORE, DSP, WKUP * 2430 adds MDM */ static struct pwrdm_dep mpu_24xx_wkdeps[] = { { .pwrdm_name = "core_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "dsp_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "wkup_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "mdm_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430) }, { NULL }, }; /* * 2420 PM_WKDEP_CORE: DSP, GFX, MPU, WKUP * 2430 adds MDM */ static struct pwrdm_dep core_24xx_wkdeps[] = { { .pwrdm_name = "dsp_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "gfx_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "mpu_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "wkup_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX) }, { .pwrdm_name = "mdm_pwrdm", .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430) }, { NULL }, }; /* Powerdomains */ static struct powerdomain dsp_pwrdm = { .name = "dsp_pwrdm", .prcm_offs = OMAP24XX_DSP_MOD, .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), .dep_bit = OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT, .wkdep_srcs = dsp_mdm_24xx_wkdeps, .pwrsts = PWRSTS_OFF_RET_ON, .pwrsts_logic_ret = PWRDM_POWER_RET, .banks = 1, .pwrsts_mem_ret = { [0] = PWRDM_POWER_RET, }, .pwrsts_mem_on = { [0] = PWRDM_POWER_ON, }, }; static struct powerdomain mpu_24xx_pwrdm = { .name = "mpu_pwrdm", .prcm_offs = MPU_MOD, .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), .dep_bit = OMAP24XX_EN_MPU_SHIFT, .wkdep_srcs = mpu_24xx_wkdeps, .pwrsts = PWRSTS_OFF_RET_ON, .pwrsts_logic_ret = PWRSTS_OFF_RET, .banks = 1, .pwrsts_mem_ret = { [0] = PWRDM_POWER_RET, }, .pwrsts_mem_on = { [0] = PWRDM_POWER_ON, }, }; static struct powerdomain core_24xx_pwrdm = { .name = "core_pwrdm", .prcm_offs = CORE_MOD, .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX), .wkdep_srcs = core_24xx_wkdeps, .pwrsts = PWRSTS_OFF_RET_ON, .dep_bit = OMAP24XX_EN_CORE_SHIFT, .banks = 3, .pwrsts_mem_ret = { [0] = PWRSTS_OFF_RET, /* MEM1RETSTATE */ [1] = PWRSTS_OFF_RET, /* MEM2RETSTATE */ [2] = PWRSTS_OFF_RET, /* MEM3RETSTATE */ }, .pwrsts_mem_on = { [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */ [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */ [2] = PWRSTS_OFF_RET_ON, /* MEM3ONSTATE */ }, }; #endif /* CONFIG_ARCH_OMAP24XX */ /* * 2430-specific powerdomains */ #ifdef CONFIG_ARCH_OMAP2430 /* XXX 2430 KILLDOMAINWKUP bit? No current users apparently */ /* Another case of bit name collisions between several registers: EN_MDM */ static struct powerdomain mdm_pwrdm = { .name = "mdm_pwrdm", .prcm_offs = OMAP2430_MDM_MOD, .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), .dep_bit = OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT, .wkdep_srcs = dsp_mdm_24xx_wkdeps, .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 */ }, }; #endif /* CONFIG_ARCH_OMAP2430 */ #endif
arch/arm/mach-omap2/prm-regbits-24xx.h +8 −4 Original line number Diff line number Diff line Loading @@ -29,8 +29,10 @@ #define OMAP24XX_WKUP1_EN (1 << 0) /* PM_WKDEP_GFX, PM_WKDEP_MPU, PM_WKDEP_DSP, PM_WKDEP_MDM shared bits */ #define OMAP24XX_EN_MPU (1 << 1) #define OMAP24XX_EN_CORE (1 << 0) #define OMAP24XX_EN_MPU_SHIFT 1 #define OMAP24XX_EN_MPU_MASK (1 << 1) #define OMAP24XX_EN_CORE_SHIFT 0 #define OMAP24XX_EN_CORE_MASK (1 << 0) /* * PM_PWSTCTRL_MPU, PM_PWSTCTRL_GFX, PM_PWSTCTRL_DSP, PM_PWSTCTRL_MDM Loading Loading @@ -140,8 +142,10 @@ /* 2430 calls GLOBALWMPU_RST "GLOBALWARM_RST" instead */ /* PM_WKDEP_MPU specific bits */ #define OMAP2430_PM_WKDEP_MPU_EN_MDM (1 << 5) #define OMAP24XX_PM_WKDEP_MPU_EN_DSP (1 << 2) #define OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT 5 #define OMAP2430_PM_WKDEP_MPU_EN_MDM_MASK (1 << 5) #define OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT 2 #define OMAP24XX_PM_WKDEP_MPU_EN_DSP_MASK (1 << 2) /* PM_EVGENCTRL_MPU specific bits */ Loading