]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/arm/mach-tegra/flowctrl.c
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
[karo-tx-linux.git] / arch / arm / mach-tegra / flowctrl.c
index 5393eb2cae216767b7fe5b3fdab33a551ffd3531..b477ef310dcd1781cab7df8b3c51eba950342e06 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "flowctrl.h"
 #include "iomap.h"
+#include "fuse.h"
 
 static u8 flowctrl_offset_halt_cpu[] = {
        FLOW_CTRL_HALT_CPU0_EVENTS,
@@ -75,11 +76,26 @@ void flowctrl_cpu_suspend_enter(unsigned int cpuid)
        int i;
 
        reg = flowctrl_read_cpu_csr(cpuid);
-       reg &= ~TEGRA30_FLOW_CTRL_CSR_WFE_BITMAP;       /* clear wfe bitmap */
-       reg &= ~TEGRA30_FLOW_CTRL_CSR_WFI_BITMAP;       /* clear wfi bitmap */
+       switch (tegra_chip_id) {
+       case TEGRA20:
+               /* clear wfe bitmap */
+               reg &= ~TEGRA20_FLOW_CTRL_CSR_WFE_BITMAP;
+               /* clear wfi bitmap */
+               reg &= ~TEGRA20_FLOW_CTRL_CSR_WFI_BITMAP;
+               /* pwr gating on wfe */
+               reg |= TEGRA20_FLOW_CTRL_CSR_WFE_CPU0 << cpuid;
+               break;
+       case TEGRA30:
+               /* clear wfe bitmap */
+               reg &= ~TEGRA30_FLOW_CTRL_CSR_WFE_BITMAP;
+               /* clear wfi bitmap */
+               reg &= ~TEGRA30_FLOW_CTRL_CSR_WFI_BITMAP;
+               /* pwr gating on wfi */
+               reg |= TEGRA30_FLOW_CTRL_CSR_WFI_CPU0 << cpuid;
+               break;
+       }
        reg |= FLOW_CTRL_CSR_INTR_FLAG;                 /* clear intr flag */
        reg |= FLOW_CTRL_CSR_EVENT_FLAG;                /* clear event flag */
-       reg |= TEGRA30_FLOW_CTRL_CSR_WFI_CPU0 << cpuid; /* pwr gating on wfi */
        reg |= FLOW_CTRL_CSR_ENABLE;                    /* pwr gating */
        flowctrl_write_cpu_csr(cpuid, reg);
 
@@ -99,8 +115,20 @@ void flowctrl_cpu_suspend_exit(unsigned int cpuid)
 
        /* Disable powergating via flow controller for CPU0 */
        reg = flowctrl_read_cpu_csr(cpuid);
-       reg &= ~TEGRA30_FLOW_CTRL_CSR_WFE_BITMAP;       /* clear wfe bitmap */
-       reg &= ~TEGRA30_FLOW_CTRL_CSR_WFI_BITMAP;       /* clear wfi bitmap */
+       switch (tegra_chip_id) {
+       case TEGRA20:
+               /* clear wfe bitmap */
+               reg &= ~TEGRA20_FLOW_CTRL_CSR_WFE_BITMAP;
+               /* clear wfi bitmap */
+               reg &= ~TEGRA20_FLOW_CTRL_CSR_WFI_BITMAP;
+               break;
+       case TEGRA30:
+               /* clear wfe bitmap */
+               reg &= ~TEGRA30_FLOW_CTRL_CSR_WFE_BITMAP;
+               /* clear wfi bitmap */
+               reg &= ~TEGRA30_FLOW_CTRL_CSR_WFI_BITMAP;
+               break;
+       }
        reg &= ~FLOW_CTRL_CSR_ENABLE;                   /* clear enable */
        reg |= FLOW_CTRL_CSR_INTR_FLAG;                 /* clear intr */
        reg |= FLOW_CTRL_CSR_EVENT_FLAG;                /* clear event */