]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
arm: tegra14: bb: use mem_req_soon for emc dvfs
authorVinayak Pane <vpane@nvidia.com>
Tue, 16 Jul 2013 00:33:29 +0000 (17:33 -0700)
committerDan Willemsen <dwillemsen@nvidia.com>
Sat, 14 Sep 2013 20:37:40 +0000 (13:37 -0700)
Use mem_req_soon signal instead of mem_req signal to
remove EMC clock request. This prevent EMC drops for
short BB hibernate periods.

Bug 1323192

Change-Id: I6dc2e6a4069e5fcbfad0481860b8a9a691e3c0ab
Signed-off-by: Vinayak Pane <vpane@nvidia.com>
Reviewed-on: http://git-master/r/249419
(cherry picked from commit a23b66a54bc335e426cebf2441ec8382b5b50e06)
Reviewed-on: http://git-master/r/254496
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Steve Lin <stlin@nvidia.com>
arch/arm/mach-tegra/tegra_bb.c

index 54a37f5f1b45f516bc2126f175c4609324176e83..1684f821be36aa3ce90fc2bb4b6661c7c8d7e77a 100644 (file)
@@ -887,22 +887,22 @@ static irqreturn_t tegra_pmc_wake_intr(int irq, void *data)
        void __iomem *pmc = IO_ADDRESS(TEGRA_PMC_BASE);
        static void __iomem *tert_ictlr = IO_ADDRESS(TEGRA_TERTIARY_ICTLR_BASE);
        u32 lic, sts;
-       int mem_req;
+       int mem_req_soon;
 
        spin_lock(&bb->lock);
        sts = readl(pmc + APBDEV_PMC_IPC_PMC_IPC_STS_0);
-       mem_req = (sts >> APBDEV_PMC_IPC_PMC_IPC_STS_0_BB2AP_MEM_REQ_SHIFT) & 1;
+       mem_req_soon =
+               (sts >> APBDEV_PMC_IPC_PMC_IPC_STS_0_BB2AP_MEM_REQ_SOON_SHIFT)
+               & 1;
 
        /* clear interrupt */
        lic = readl(tert_ictlr + TRI_ICTLR_VIRQ_CPU);
-       if (lic & TRI_ICTLR_PMC_WAKE_INT) {
-               pr_debug("clear pmc_wake sts %x mem_req %d\n", sts, mem_req);
+       if (lic & TRI_ICTLR_PMC_WAKE_INT)
                writel(TRI_ICTLR_PMC_WAKE_INT,
                                tert_ictlr + TRI_ICTLR_CPU_IER_CLR);
-       }
 
        irq_set_irq_type(INT_PMC_WAKE_INT, IRQF_TRIGGER_RISING);
-       if (!mem_req) {
+       if (!mem_req_soon) {
 
                bb->state = BBC_REMOVE_FLOOR;
                queue_work(bb->workqueue, &bb->work);