This patch moves and simplifies the code used to enable/disable
all the requested peripheral clocks.

Signed-off-by: Omar Ramirez Luna <[email protected]>
---
 arch/arm/plat-omap/include/dspbridge/clk.h |    4 ++
 drivers/dsp/bridge/wmd/_tiomap_pwr.h       |   17 -----------
 drivers/dsp/bridge/wmd/dsp-clock.c         |   41 +++++++++++++++++++++++++++
 drivers/dsp/bridge/wmd/tiomap3430_pwr.c    |   42 +--------------------------
 drivers/dsp/bridge/wmd/tiomap_io.c         |    4 +-
 drivers/dsp/bridge/wmd/ue_deh.c            |    2 +-
 6 files changed, 50 insertions(+), 60 deletions(-)

diff --git a/arch/arm/plat-omap/include/dspbridge/clk.h 
b/arch/arm/plat-omap/include/dspbridge/clk.h
index da2549d..7b43852 100644
--- a/arch/arm/plat-omap/include/dspbridge/clk.h
+++ b/arch/arm/plat-omap/include/dspbridge/clk.h
@@ -47,6 +47,8 @@ enum dsp_clk_id {
  */
 extern dsp_status dsp_clk_enable(IN enum dsp_clk_id clk_id);
 
+u32 dsp_clock_enable_all(u32 dsp_per_clocks);
+
 /*
  *  ======== dsp_clk_disable ========
  *  Purpose:
@@ -60,6 +62,8 @@ extern dsp_status dsp_clk_enable(IN enum dsp_clk_id clk_id);
  */
 extern dsp_status dsp_clk_disable(IN enum dsp_clk_id clk_id);
 
+u32 dsp_clock_disable_all(u32 dsp_per_clocks);
+
 void ssi_clk_exit(void);
 
 void ssi_clk_init(void);
diff --git a/drivers/dsp/bridge/wmd/_tiomap_pwr.h 
b/drivers/dsp/bridge/wmd/_tiomap_pwr.h
index a7a4fc2..1948e83 100644
--- a/drivers/dsp/bridge/wmd/_tiomap_pwr.h
+++ b/drivers/dsp/bridge/wmd/_tiomap_pwr.h
@@ -64,23 +64,6 @@ dsp_status pre_scale_dsp(struct wmd_dev_context 
*dev_context, IN void *pargs);
  */
 dsp_status handle_constraints_set(struct wmd_dev_context *dev_context,
                                  IN void *pargs);
-/*
- *  ======== dsp_peripheral_clocks_disable ========
- *     This function disables all the peripheral clocks that
- *     were enabled by DSP. Call this function only when
- *     DSP is entering Hibernation or when DSP is in
- *     Error state
- */
-dsp_status dsp_peripheral_clocks_disable(struct wmd_dev_context *dev_context,
-                                        IN void *pargs);
-
-/*
- *  ======== dsp_peripheral_clocks_enable ========
- *     This function enables all the peripheral clocks that
- *     were requested by DSP.
- */
-dsp_status dsp_peripheral_clocks_enable(struct wmd_dev_context *dev_context,
-                                       IN void *pargs);
 
 /*
  *  ======== dsp_clk_wakeup_event_ctrl ========
diff --git a/drivers/dsp/bridge/wmd/dsp-clock.c 
b/drivers/dsp/bridge/wmd/dsp-clock.c
index 8f539fd..187c71c 100644
--- a/drivers/dsp/bridge/wmd/dsp-clock.c
+++ b/drivers/dsp/bridge/wmd/dsp-clock.c
@@ -242,6 +242,25 @@ out:
        return status;
 }
 
+/**
+ * dsp_clock_enable_all - Enable clocks used by the DSP
+ * @dev_context                Driver's device context strucure
+ *
+ * This function enables all the peripheral clocks that were requested by DSP.
+ */
+u32 dsp_clock_enable_all(u32 dsp_per_clocks)
+{
+       u32 clk_id;
+       u32 status = DSP_EFAIL;
+
+       for (clk_id = 0; clk_id < DSP_CLK_NOT_DEFINED; clk_id++) {
+               if (is_dsp_clk_active(dsp_per_clocks, clk_id))
+                       status = dsp_clk_enable(clk_id);
+       }
+
+       return status;
+}
+
 /*
  *  ======== dsp_clk_disable ========
  *  Purpose:
@@ -287,3 +306,25 @@ dsp_status dsp_clk_disable(IN enum dsp_clk_id clk_id)
 out:
        return status;
 }
+
+/**
+ * dsp_clock_disable_all - Disable all active clocks
+ * @dev_context                Driver's device context structure
+ *
+ * This function disables all the peripheral clocks that were enabled by DSP.
+ * It is meant to be called only when DSP is entering hibernation or when DSP
+ * is in error state.
+ */
+u32 dsp_clock_disable_all(u32 dsp_per_clocks)
+{
+       u32 clk_id;
+       u32 status = DSP_EFAIL;
+
+       for (clk_id = 0; clk_id < DSP_CLK_NOT_DEFINED; clk_id++) {
+               if (is_dsp_clk_active(dsp_per_clocks, clk_id))
+                       status = dsp_clk_disable(clk_id);
+       }
+
+       return status;
+}
+
diff --git a/drivers/dsp/bridge/wmd/tiomap3430_pwr.c 
b/drivers/dsp/bridge/wmd/tiomap3430_pwr.c
index a6e8e57..5db2076 100644
--- a/drivers/dsp/bridge/wmd/tiomap3430_pwr.c
+++ b/drivers/dsp/bridge/wmd/tiomap3430_pwr.c
@@ -123,7 +123,7 @@ dsp_status handle_hibernation_from_dsp(struct 
wmd_dev_context *dev_context)
                omap_mbox_save_ctx(dev_context->mbox);
 
                /* Turn off DSP Peripheral clocks and DSP Load monitor timer */
-               status = dsp_peripheral_clocks_disable(dev_context, NULL);
+               status = dsp_clock_disable_all(dev_context->dsp_per_clks);
 
                if (DSP_SUCCEEDED(status)) {
                        /* Update the Bridger Driver state */
@@ -240,7 +240,7 @@ dsp_status sleep_dsp(struct wmd_dev_context *dev_context, 
IN u32 dw_cmd,
                        dev_context->dw_brd_state = BRD_RETENTION;
 
                /* Turn off DSP Peripheral clocks */
-               status = dsp_peripheral_clocks_disable(dev_context, NULL);
+               status = dsp_clock_disable_all(dev_context->dsp_per_clks);
                if (DSP_FAILED(status)) {
                        return status;
                }
@@ -422,44 +422,6 @@ dsp_status post_scale_dsp(struct wmd_dev_context 
*dev_context, IN void *pargs)
        return status;
 }
 
-/*
- *  ========dsp_peripheral_clocks_disable========
- *  Disables all the peripheral clocks that were requested by DSP
- */
-dsp_status dsp_peripheral_clocks_disable(struct wmd_dev_context *dev_context,
-                                        IN void *pargs)
-{
-       u32 clk_idx;
-       dsp_status status = DSP_SOK;
-
-       for (clk_idx = 0; clk_idx < MBX_PM_MAX_RESOURCES; clk_idx++) {
-               if (((dev_context->dsp_per_clks) >> clk_idx) & 0x01) {
-                       /* Disables the clocks of the peripheral */
-                       status = dsp_clk_disable(bpwr_clks[clk_idx].clk);
-               }
-       }
-       return status;
-}
-
-/*
- *  ========dsp_peripheral_clocks_enable========
- *  Enables all the peripheral clocks that were requested by DSP
- */
-dsp_status dsp_peripheral_clocks_enable(struct wmd_dev_context *dev_context,
-                                       IN void *pargs)
-{
-       u32 clk_idx;
-       dsp_status clk_status = DSP_EFAIL;
-
-       for (clk_idx = 0; clk_idx < MBX_PM_MAX_RESOURCES; clk_idx++) {
-               if (((dev_context->dsp_per_clks) >> clk_idx) & 0x01) {
-                       /* Enable the clocks of the peripheral */
-                       clk_status = dsp_clk_enable(bpwr_clks[clk_idx].clk);
-               }
-       }
-       return clk_status;
-}
-
 void dsp_clk_wakeup_event_ctrl(u32 ClkId, bool enable)
 {
        struct cfg_hostres resources;
diff --git a/drivers/dsp/bridge/wmd/tiomap_io.c 
b/drivers/dsp/bridge/wmd/tiomap_io.c
index b5504a9..b4c30be 100644
--- a/drivers/dsp/bridge/wmd/tiomap_io.c
+++ b/drivers/dsp/bridge/wmd/tiomap_io.c
@@ -425,7 +425,7 @@ dsp_status sm_interrupt_dsp(struct wmd_dev_context 
*dev_context, u16 mb_val)
                }
 #endif
                /* Restart the peripheral clocks */
-               dsp_peripheral_clocks_enable(dev_context, NULL);
+               dsp_clock_enable_all(dev_context->dsp_per_clks);
 
                /*
                 * 2:0 AUTO_IVA2_DPLL - Enabling IVA2 DPLL auto control
@@ -451,7 +451,7 @@ dsp_status sm_interrupt_dsp(struct wmd_dev_context 
*dev_context, u16 mb_val)
                dev_context->dw_brd_state = BRD_RUNNING;
        } else if (dev_context->dw_brd_state == BRD_RETENTION) {
                /* Restart the peripheral clocks */
-               dsp_peripheral_clocks_enable(dev_context, NULL);
+               dsp_clock_enable_all(dev_context->dsp_per_clks);
        }
 
        status = omap_mbox_msg_send(dev_context->mbox, mb_val);
diff --git a/drivers/dsp/bridge/wmd/ue_deh.c b/drivers/dsp/bridge/wmd/ue_deh.c
index b88112e..68d6b22 100644
--- a/drivers/dsp/bridge/wmd/ue_deh.c
+++ b/drivers/dsp/bridge/wmd/ue_deh.c
@@ -283,7 +283,7 @@ void bridge_deh_notify(struct deh_mgr *hdeh_mgr, u32 
ulEventMask, u32 dwErrInfo)
                /* Set the Board state as ERROR */
                dev_context->dw_brd_state = BRD_ERROR;
                /* Disable all the clocks that were enabled by DSP */
-               (void)dsp_peripheral_clocks_disable(dev_context, NULL);
+               dsp_clock_disable_all(dev_context->dsp_per_clks);
                /* Call DSP Trace Buffer */
                print_dsp_trace_buffer(hdeh_mgr->hwmd_context);
 
-- 
1.6.2.4

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

Reply via email to