From: Paul Walmsley <paul@pwsan.com>
To: linux-omap@vger.kernel.org
Subject: [PATCH 4/5] Powerdomains: add OMAP2 powerdomains
Date: Thu, 10 Apr 2008 08:46:28 -0600 [thread overview]
Message-ID: <20080410153344.157299727@pwsan.com> (raw)
In-Reply-To: 20080410144624.246788469@pwsan.com
[-- Attachment #1: add_omap2_powerdomains.patch --]
[-- Type: TEXT/PLAIN, Size: 7791 bytes --]
Add OMAP2-specific powerdomains.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
---
arch/arm/mach-omap2/powerdomains.h | 16 ++-
arch/arm/mach-omap2/powerdomains24xx.h | 176 +++++++++++++++++++++++++++++++++
arch/arm/mach-omap2/prm-regbits-24xx.h | 12 +-
3 files changed, 199 insertions(+), 5 deletions(-)
Index: linux-omap/arch/arm/mach-omap2/powerdomains.h
===================================================================
--- linux-omap.orig/arch/arm/mach-omap2/powerdomains.h 2008-04-10 07:55:34.000000000 -0600
+++ linux-omap/arch/arm/mach-omap2/powerdomains.h 2008-04-10 07:58:09.000000000 -0600
@@ -79,7 +79,6 @@
static struct powerdomain mpu_34xx_pwrdm;
static struct powerdomain iva2_pwrdm;
-
/* OMAP2/3-common powerdomains and wakeup dependencies */
/*
@@ -96,6 +95,11 @@
{ NULL },
};
+/* Include 24XX-specific powerdomains (which may reference the above wkdeps) */
+
+#include "powerdomains24xx.h"
+
+
/*
* OMAP2/3 common powerdomains
*/
@@ -137,6 +141,16 @@
&gfx_pwrdm,
&wkup_pwrdm,
+#ifdef CONFIG_ARCH_OMAP24XX
+ &dsp_pwrdm,
+ &mpu_24xx_pwrdm,
+ &core_24xx_pwrdm,
+#endif
+
+#ifdef CONFIG_ARCH_OMAP243X
+ &mdm_pwrdm,
+#endif
+
NULL
};
Index: linux-omap/arch/arm/mach-omap2/powerdomains24xx.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-omap/arch/arm/mach-omap2/powerdomains24xx.h 2008-04-10 07:58:23.000000000 -0600
@@ -0,0 +1,176 @@
+/*
+ * OMAP24XX powerdomain definitions
+ *
+ * Copyright (C) 2007-8 Texas Instruments, Inc.
+ * Copyright (C) 2007-8 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 <asm/arch/powerdomain.h>
+
+#include "prcm-common.h"
+#include "prm.h"
+#include "prm-regbits-24xx.h"
+#include "cm.h"
+#include "cm-regbits-24xx.h"
+
+/* Forward declarations - so powerdomain dependencies can be encoded */
+
+#ifdef CONFIG_ARCH_OMAP24XX
+static struct powerdomain dsp_pwrdm;
+static struct powerdomain mpu_24xx_pwrdm;
+static struct powerdomain core_24xx_pwrdm;
+static struct powerdomain iva2_pwrdm;
+static struct powerdomain mdm_pwrdm;
+#endif
+
+
+/* 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 = &core_24xx_pwrdm, .omap_chip = CHIP_IS_OMAP24XX },
+ { .pwrdm = &mpu_24xx_pwrdm, .omap_chip = CHIP_IS_OMAP24XX },
+ { .pwrdm = &wkup_pwrdm, .omap_chip = CHIP_IS_OMAP24XX },
+ { NULL },
+};
+
+/*
+ * 2420 PM_WKDEP_MPU: CORE, DSP, WKUP
+ * 2430 adds MDM
+ */
+static struct pwrdm_dep mpu_24xx_wkdeps[] = {
+ { .pwrdm = &core_24xx_pwrdm, .omap_chip = CHIP_IS_OMAP24XX },
+ { .pwrdm = &dsp_pwrdm, .omap_chip = CHIP_IS_OMAP24XX },
+ { .pwrdm = &wkup_pwrdm, .omap_chip = CHIP_IS_OMAP24XX },
+ { .pwrdm = &mdm_pwrdm, .omap_chip = CHIP_IS_OMAP2430 },
+ { NULL },
+};
+
+/*
+ * 2420 PM_WKDEP_CORE: DSP, GFX, MPU, WKUP
+ * 2430 adds MDM
+ */
+static struct pwrdm_dep core_24xx_wkdeps[] = {
+ { .pwrdm = &dsp_pwrdm, .omap_chip = CHIP_IS_OMAP24XX },
+ { .pwrdm = &gfx_pwrdm, .omap_chip = CHIP_IS_OMAP24XX },
+ { .pwrdm = &mpu_24xx_pwrdm, .omap_chip = CHIP_IS_OMAP24XX },
+ { .pwrdm = &wkup_pwrdm, .omap_chip = CHIP_IS_OMAP24XX },
+ { .pwrdm = &mdm_pwrdm, .omap_chip = CHIP_IS_OMAP2430 },
+ { NULL },
+};
+
+
+/* Powerdomains */
+
+static struct powerdomain dsp_pwrdm = {
+ .name = "dsp_pwrdm",
+ .prcm_offs = OMAP24XX_DSP_MOD,
+ .omap_chip = 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 = 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 = 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 = CHIP_IS_OMAP2430,
+ .dep_bit = OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT,
+ .wkdep_srcs = dsp_mdm_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
Index: linux-omap/arch/arm/mach-omap2/prm-regbits-24xx.h
===================================================================
--- linux-omap.orig/arch/arm/mach-omap2/prm-regbits-24xx.h 2008-04-10 07:54:32.000000000 -0600
+++ linux-omap/arch/arm/mach-omap2/prm-regbits-24xx.h 2008-04-10 07:55:56.000000000 -0600
@@ -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
@@ -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 */
--
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2008-04-10 17:15 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-10 14:46 [PATCH 0/5] Powerdomains: add OMAP2/3 powerdomain code, and common OMAP type bitfield Paul Walmsley
2008-04-10 14:46 ` [PATCH 1/5] Powerdomains: add OMAP chip type global bitfield; clean up mach-omap2/id.c Paul Walmsley
2008-04-16 21:20 ` Tony Lindgren
2008-04-18 5:48 ` Högander Jouni
2008-04-18 5:53 ` Paul Walmsley
2008-04-10 14:46 ` [PATCH 2/5] Powerdomains: add base OMAP2/3 powerdomain code Paul Walmsley
2008-04-16 21:31 ` Tony Lindgren
2008-04-10 14:46 ` [PATCH 3/5] Powerdomains: add OMAP2/3 common powerdomains Paul Walmsley
2008-04-10 14:46 ` Paul Walmsley [this message]
2008-04-10 14:46 ` [PATCH 5/5] Powerdomains: Add OMAP3 powerdomains Paul Walmsley
2008-04-16 21:42 ` Tony Lindgren
2008-04-17 16:23 ` Paul Walmsley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080410153344.157299727@pwsan.com \
--to=paul@pwsan.com \
--cc=linux-omap@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.