]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ARM: OMAP: TI816X: add powerdomains for TI816x
authorAida Mynzhasova <aida.mynzhasova@skitlab.ru>
Thu, 30 May 2013 15:04:50 +0000 (19:04 +0400)
committerTony Lindgren <tony@atomide.com>
Tue, 18 Jun 2013 08:17:26 +0000 (01:17 -0700)
This patch adds required structures for powerdomain initialization on
the ti816x. It is impossible to use omap3430 structures in order to
initialize powerdomains on ti816x, because there are big differences
between PRCM module base address offsets on these CPUs.

Signed-off-by: Aida Mynzhasova <aida.mynzhasova@skitlab.ru>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap2/powerdomains3xxx_data.c
arch/arm/mach-omap2/prcm-common.h

index f0e14e9efe5a18bccff639a6894480a7120c43a3..e2d4bd804523316e5b9400d4870916a01827834c 100644 (file)
@@ -336,6 +336,54 @@ static struct powerdomain dpll5_pwrdm = {
        .voltdm           = { .name = "core" },
 };
 
+static struct powerdomain device_81xx_pwrdm = {
+       .name             = "device_pwrdm",
+       .prcm_offs        = TI81XX_PRM_DEVICE_MOD,
+       .voltdm           = { .name = "core" },
+};
+
+static struct powerdomain active_816x_pwrdm = {
+       .name             = "active_pwrdm",
+       .prcm_offs        = TI816X_PRM_ACTIVE_MOD,
+       .pwrsts           = PWRSTS_OFF_ON,
+       .voltdm           = { .name = "core" },
+};
+
+static struct powerdomain default_816x_pwrdm = {
+       .name             = "default_pwrdm",
+       .prcm_offs        = TI81XX_PRM_DEFAULT_MOD,
+       .pwrsts           = PWRSTS_OFF_ON,
+       .voltdm           = { .name = "core" },
+};
+
+static struct powerdomain ivahd0_816x_pwrdm = {
+       .name             = "ivahd0_pwrdm",
+       .prcm_offs        = TI816X_PRM_IVAHD0_MOD,
+       .pwrsts           = PWRSTS_OFF_ON,
+       .voltdm           = { .name = "mpu_iva" },
+};
+
+static struct powerdomain ivahd1_816x_pwrdm = {
+       .name             = "ivahd1_pwrdm",
+       .prcm_offs        = TI816X_PRM_IVAHD1_MOD,
+       .pwrsts           = PWRSTS_OFF_ON,
+       .voltdm           = { .name = "mpu_iva" },
+};
+
+static struct powerdomain ivahd2_816x_pwrdm = {
+       .name             = "ivahd2_pwrdm",
+       .prcm_offs        = TI816X_PRM_IVAHD2_MOD,
+       .pwrsts           = PWRSTS_OFF_ON,
+       .voltdm           = { .name = "mpu_iva" },
+};
+
+static struct powerdomain sgx_816x_pwrdm = {
+       .name             = "sgx_pwrdm",
+       .prcm_offs        = TI816X_PRM_SGX_MOD,
+       .pwrsts           = PWRSTS_OFF_ON,
+       .voltdm           = { .name = "core" },
+};
+
 /* As powerdomains are added or removed above, this list must also be changed */
 static struct powerdomain *powerdomains_omap3430_common[] __initdata = {
        &wkup_omap2_pwrdm,
@@ -393,6 +441,17 @@ static struct powerdomain *powerdomains_am35x[] __initdata = {
        NULL
 };
 
+static struct powerdomain *powerdomains_ti81xx[] __initdata = {
+       &device_81xx_pwrdm,
+       &active_816x_pwrdm,
+       &default_816x_pwrdm,
+       &ivahd0_816x_pwrdm,
+       &ivahd1_816x_pwrdm,
+       &ivahd2_816x_pwrdm,
+       &sgx_816x_pwrdm,
+       NULL
+};
+
 void __init omap3xxx_powerdomains_init(void)
 {
        unsigned int rev;
@@ -406,6 +465,9 @@ void __init omap3xxx_powerdomains_init(void)
 
        if (rev == AM35XX_REV_ES1_0 || rev == AM35XX_REV_ES1_1) {
                pwrdm_register_pwrdms(powerdomains_am35x);
+       } else if (rev == TI8168_REV_ES1_0 || rev == TI8168_REV_ES1_1
+                       || rev == TI8168_REV_ES2_0 || rev == TI8168_REV_ES2_1) {
+               pwrdm_register_pwrdms(powerdomains_ti81xx);
        } else {
                pwrdm_register_pwrdms(powerdomains_omap3430_common);
 
index c7d355fafd24ef27b363e44fbc3220ffd13ab7c8..ff1ac4a82a04a036b15e6a5f33c9f645ffb7d2f3 100644 (file)
 #define OMAP3430_NEON_MOD                              0xb00
 #define OMAP3430ES2_USBHOST_MOD                                0xc00
 
+/*
+ * TI81XX PRM module offsets
+ */
+#define TI81XX_PRM_DEVICE_MOD                  0x0000
+#define TI816X_PRM_ACTIVE_MOD                  0x0a00
+#define TI81XX_PRM_DEFAULT_MOD                 0x0b00
+#define TI816X_PRM_IVAHD0_MOD                  0x0c00
+#define TI816X_PRM_IVAHD1_MOD                  0x0d00
+#define TI816X_PRM_IVAHD2_MOD                  0x0e00
+#define TI816X_PRM_SGX_MOD                             0x0f00
+
 /* 24XX register bits shared between CM & PRM registers */
 
 /* CM_FCLKEN1_CORE, CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */