]> 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 a2250ddae797bdfecc705cf6f389c924aaed4981..b477ef310dcd1781cab7df8b3c51eba950342e06 100644 (file)
 
 #include "flowctrl.h"
 #include "iomap.h"
+#include "fuse.h"
 
-u8 flowctrl_offset_halt_cpu[] = {
+static u8 flowctrl_offset_halt_cpu[] = {
        FLOW_CTRL_HALT_CPU0_EVENTS,
        FLOW_CTRL_HALT_CPU1_EVENTS,
        FLOW_CTRL_HALT_CPU1_EVENTS + 8,
        FLOW_CTRL_HALT_CPU1_EVENTS + 16,
 };
 
-u8 flowctrl_offset_cpu_csr[] = {
+static u8 flowctrl_offset_cpu_csr[] = {
        FLOW_CTRL_CPU0_CSR,
        FLOW_CTRL_CPU1_CSR,
        FLOW_CTRL_CPU1_CSR + 8,
@@ -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 */