This patch cleans SSI clock preparation and also removes
the dependency on IO_ADDRESS variants for easier maintenance.

Signed-off-by: Omar Ramirez Luna <omar.rami...@ti.com>
---
 arch/arm/plat-omap/include/dspbridge/drv.h |    7 ++++++
 drivers/dsp/bridge/services/clk.c          |   30 ++++++++++++++-------------
 2 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/arch/arm/plat-omap/include/dspbridge/drv.h 
b/arch/arm/plat-omap/include/dspbridge/drv.h
index d14613f..59c26fc 100644
--- a/arch/arm/plat-omap/include/dspbridge/drv.h
+++ b/arch/arm/plat-omap/include/dspbridge/drv.h
@@ -115,6 +115,13 @@
 #define OMAP_DMMU_BASE 0x5D000000
 #define OMAP_DMMU_SIZE 0x1000
 
+#define OMAP_SSI_BASE          0x48058000
+#define OMAP_SSI_SIZE          0x1000
+
+#define SSI_AUTOIDLE                   (1 << 0)
+#define SSI_SIDLE_SMARTIDLE    (2 << 3)
+#define SSI_MIDLE_NOIDLE               (1 << 12)
+
 #define OMAP_PRCM_VDD1_DOMAIN 1
 #define OMAP_PRCM_VDD2_DOMAIN 2
 
diff --git a/drivers/dsp/bridge/services/clk.c 
b/drivers/dsp/bridge/services/clk.c
index d1c68fc..dbe3988 100644
--- a/drivers/dsp/bridge/services/clk.c
+++ b/drivers/dsp/bridge/services/clk.c
@@ -39,6 +39,7 @@
 #include <dspbridge/std.h>
 #include <dspbridge/dbdefs.h>
 #include <dspbridge/errbase.h>
+#include <dspbridge/drv.h>
 
 /*  ----------------------------------- Trace & Debug */
 #include <dspbridge/dbc.h>
@@ -54,11 +55,6 @@
 
 typedef volatile unsigned long  REG_UWORD32;
 
-#define SSI_Base        0x48058000
-
-#define SSI_BASE                     IO_ADDRESS(SSI_Base)
-
-
 struct SERVICES_Clk_t {
        struct clk *clk_handle;
        const char *clk_name;
@@ -354,19 +350,25 @@ s32 CLK_Get_UseCnt(IN enum SERVICES_ClkId clk_id)
 
 void SSI_Clk_Prepare(bool FLAG)
 {
-       u32 ssi_sysconfig;
-       ssi_sysconfig = __raw_readl((SSI_BASE) + 0x10);
+       void __iomem *ssi_base;
+       unsigned int value;
+
+       ssi_base = ioremap(OMAP_SSI_BASE, OMAP_SSI_SIZE);
 
        if (FLAG) {
-               /* Set Autoidle, SIDLEMode to smart idle, and MIDLEmode to
-                * no idle
+               /*
+                * Set Autoidle, SIDLEMode to smart idle, and MIDLEmode to
+                * no idle.
                 */
-               ssi_sysconfig = 0x1011;
+               value = SSI_AUTOIDLE | SSI_SIDLE_SMARTIDLE | SSI_MIDLE_NOIDLE;
        } else {
-               /* Set Autoidle, SIDLEMode to forced idle, and MIDLEmode to
-                * forced idle
+               /*
+                * Set Autoidle, SIDLEMode to forced idle, and MIDLEmode to
+                * forced idle.
                 */
-               ssi_sysconfig = 0x1;
+               value = SSI_AUTOIDLE;
        }
-       __raw_writel((u32)ssi_sysconfig, SSI_BASE + 0x10);
+
+       __raw_writel(value, ssi_base + 0x10);
+       iounmap(ssi_base);
 }
-- 
1.6.2.4

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to