From: Omar Ramirez Luna <omar.ramirez@ti.com>
To: linux-omap@vger.kernel.org
Cc: Paul Walmsley <paul@pwsan.com>,
Hiroshi DOYU <Hiroshi.DOYU@nokia.com>,
Felipe Contreras <felipe.contreras@gmail.com>,
Ameya Palande <ameya.palande@nokia.com>,
Guzman Lugo Fernando <x0095840@ti.com>,
Nishanth Menon <nm@ti.com>,
Omar Ramirez Luna <omar.ramirez@ti.com>
Subject: [PATCH 15/19] DSPBRIDGE: use one call for both ick and fck clocks
Date: Thu, 8 Apr 2010 18:16:04 -0500 [thread overview]
Message-ID: <1270768568-10712-16-git-send-email-omar.ramirez@ti.com> (raw)
In-Reply-To: <1270768568-10712-15-git-send-email-omar.ramirez@ti.com>
Instead of two calls to enable/disable for ick and fck use
one call to enable/disable both.
Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
---
arch/arm/plat-omap/include/dspbridge/clk.h | 33 ++++++++-----------------
drivers/dsp/bridge/services/clk.c | 12 ++++----
drivers/dsp/bridge/wmd/_tiomap.h | 25 +++++++++----------
drivers/dsp/bridge/wmd/tiomap3430_pwr.c | 35 ++++++++--------------------
4 files changed, 39 insertions(+), 66 deletions(-)
diff --git a/arch/arm/plat-omap/include/dspbridge/clk.h b/arch/arm/plat-omap/include/dspbridge/clk.h
index a51308e..da2549d 100644
--- a/arch/arm/plat-omap/include/dspbridge/clk.h
+++ b/arch/arm/plat-omap/include/dspbridge/clk.h
@@ -20,28 +20,17 @@
#define _CLK_H
enum dsp_clk_id {
- DSP_CLK_GPT5_FCK,
- DSP_CLK_GPT5_ICK,
- DSP_CLK_GPT6_FCK,
- DSP_CLK_GPT6_ICK,
- DSP_CLK_GPT7_FCK,
- DSP_CLK_GPT7_ICK,
- DSP_CLK_GPT8_FCK,
- DSP_CLK_GPT8_ICK,
- DSP_CLK_WDT3_FCK,
- DSP_CLK_WDT3_ICK,
- DSP_CLK_MCBSP1_FCK,
- DSP_CLK_MCBSP1_ICK,
- DSP_CLK_MCBSP2_FCK,
- DSP_CLK_MCBSP2_ICK,
- DSP_CLK_MCBSP3_FCK,
- DSP_CLK_MCBSP3_ICK,
- DSP_CLK_MCBSP4_FCK,
- DSP_CLK_MCBSP4_ICK,
- DSP_CLK_MCBSP5_FCK,
- DSP_CLK_MCBSP5_ICK,
- DSP_CLK_SSI_FCK,
- DSP_CLK_SSI_ICK,
+ DSP_CLK_GPT5,
+ DSP_CLK_GPT6,
+ DSP_CLK_GPT7,
+ DSP_CLK_GPT8,
+ DSP_CLK_WDT3,
+ DSP_CLK_MCBSP1,
+ DSP_CLK_MCBSP2,
+ DSP_CLK_MCBSP3,
+ DSP_CLK_MCBSP4,
+ DSP_CLK_MCBSP5,
+ DSP_CLK_SSI,
DSP_CLK_NOT_DEFINED
};
diff --git a/drivers/dsp/bridge/services/clk.c b/drivers/dsp/bridge/services/clk.c
index af3c5a2..aa706ce 100644
--- a/drivers/dsp/bridge/services/clk.c
+++ b/drivers/dsp/bridge/services/clk.c
@@ -54,8 +54,8 @@
/* Bridge GPT id (0 - 3), DM Timer id (5 - 8) */
#define DMT_ID(id) ((id) + 5)
-/* Bridge MCBSP id (5 - 9), OMAP Mcbsp id (1 - 5) */
-#define MCBSP_ID(id) ((id) - 12)
+/* Bridge MCBSP id (5 - 9), OMAP Mcbsp id (0 - 4) */
+#define MCBSP_ID(id) ((id) - 5)
static struct omap_dm_timer *timer[4];
@@ -71,13 +71,13 @@ static s8 get_clk_type(u8 id)
{
s8 type;
- if (id <= DSP_CLK_GPT8_ICK)
+ if (id <= DSP_CLK_GPT8)
type = GPT_CLK;
- else if (id <= DSP_CLK_WDT3_ICK)
+ else if (id == DSP_CLK_WDT3)
type = WDT_CLK;
- else if (id <= DSP_CLK_MCBSP5_ICK)
+ else if (id <= DSP_CLK_MCBSP5)
type = MCBSP_CLK;
- else if (id < DSP_CLK_SSI_ICK)
+ else if (id == DSP_CLK_SSI)
type = SSI_CLK;
else
type = -1;
diff --git a/drivers/dsp/bridge/wmd/_tiomap.h b/drivers/dsp/bridge/wmd/_tiomap.h
index 5e4e518..927fc6a 100644
--- a/drivers/dsp/bridge/wmd/_tiomap.h
+++ b/drivers/dsp/bridge/wmd/_tiomap.h
@@ -242,22 +242,21 @@ static const u32 bpwr_clkid[] = {
struct bpwr_clk_t {
u32 clk_id;
- enum dsp_clk_id fun_clk;
- enum dsp_clk_id int_clk;
+ enum dsp_clk_id clk;
};
static const struct bpwr_clk_t bpwr_clks[] = {
- {(u32) BPWR_GP_TIMER5, DSP_CLK_GPT5_FCK, DSP_CLK_GPT5_ICK},
- {(u32) BPWR_GP_TIMER6, DSP_CLK_GPT6_FCK, DSP_CLK_GPT6_ICK},
- {(u32) BPWR_GP_TIMER7, DSP_CLK_GPT7_FCK, DSP_CLK_GPT7_ICK},
- {(u32) BPWR_GP_TIMER8, DSP_CLK_GPT8_FCK, DSP_CLK_GPT8_ICK},
- {(u32) BPWR_WD_TIMER3, DSP_CLK_WDT3_FCK, DSP_CLK_WDT3_ICK},
- {(u32) BPWR_MCBSP1, DSP_CLK_MCBSP1_FCK, DSP_CLK_MCBSP1_ICK},
- {(u32) BPWR_MCBSP2, DSP_CLK_MCBSP2_FCK, DSP_CLK_MCBSP2_ICK},
- {(u32) BPWR_MCBSP3, DSP_CLK_MCBSP3_FCK, DSP_CLK_MCBSP3_ICK},
- {(u32) BPWR_MCBSP4, DSP_CLK_MCBSP4_FCK, DSP_CLK_MCBSP4_ICK},
- {(u32) BPWR_MCBSP5, DSP_CLK_MCBSP5_FCK, DSP_CLK_MCBSP5_ICK},
- {(u32) BPWR_SSI, DSP_CLK_SSI_FCK, DSP_CLK_SSI_ICK}
+ {(u32) BPWR_GP_TIMER5, DSP_CLK_GPT5},
+ {(u32) BPWR_GP_TIMER6, DSP_CLK_GPT6},
+ {(u32) BPWR_GP_TIMER7, DSP_CLK_GPT7},
+ {(u32) BPWR_GP_TIMER8, DSP_CLK_GPT8},
+ {(u32) BPWR_WD_TIMER3, DSP_CLK_WDT3},
+ {(u32) BPWR_MCBSP1, DSP_CLK_MCBSP1},
+ {(u32) BPWR_MCBSP2, DSP_CLK_MCBSP2},
+ {(u32) BPWR_MCBSP3, DSP_CLK_MCBSP3},
+ {(u32) BPWR_MCBSP4, DSP_CLK_MCBSP4},
+ {(u32) BPWR_MCBSP5, DSP_CLK_MCBSP5},
+ {(u32) BPWR_SSI, DSP_CLK_SSI}
};
/* Interrupt Register Offsets */
diff --git a/drivers/dsp/bridge/wmd/tiomap3430_pwr.c b/drivers/dsp/bridge/wmd/tiomap3430_pwr.c
index 087a416..5c518d0 100644
--- a/drivers/dsp/bridge/wmd/tiomap3430_pwr.c
+++ b/drivers/dsp/bridge/wmd/tiomap3430_pwr.c
@@ -300,7 +300,6 @@ dsp_status dsp_peripheral_clk_ctrl(struct wmd_dev_context *dev_context,
u32 tmp_index;
u32 dsp_per_clks_before;
dsp_status status = DSP_SOK;
- dsp_status status1 = DSP_SOK;
struct cfg_hostres resources;
u32 value;
@@ -334,9 +333,6 @@ dsp_status dsp_peripheral_clk_ctrl(struct wmd_dev_context *dev_context,
ext_clk_cmd = (ext_clk >> MBX_PM_CLK_CMDSHIFT) & MBX_PM_CLK_CMDMASK;
switch (ext_clk_cmd) {
case BPWR_DISABLE_CLOCK:
- /* Call BP to disable the needed clock */
- status1 = dsp_clk_disable(bpwr_clks[clk_id_index].int_clk);
- status = dsp_clk_disable(bpwr_clks[clk_id_index].fun_clk);
if (bpwr_clkid[clk_id_index] == BPWR_MCBSP1) {
/* clear MCBSP1_CLKS, on McBSP1 OFF */
value = __raw_readl(resources.dw_sys_ctrl_base + 0x274);
@@ -348,16 +344,16 @@ dsp_status dsp_peripheral_clk_ctrl(struct wmd_dev_context *dev_context,
value &= ~(1 << 6);
__raw_writel(value, resources.dw_sys_ctrl_base + 0x274);
}
+ status = dsp_clk_disable(bpwr_clks[clk_id_index].clk);
dsp_clk_wakeup_event_ctrl(bpwr_clks[clk_id_index].clk_id,
false);
- if ((DSP_SUCCEEDED(status)) && (DSP_SUCCEEDED(status1))) {
+ if (DSP_SUCCEEDED(status)) {
(dev_context->dsp_per_clks) &=
(~((u32) (1 << clk_id_index)));
}
break;
case BPWR_ENABLE_CLOCK:
- status1 = dsp_clk_enable(bpwr_clks[clk_id_index].int_clk);
- status = dsp_clk_enable(bpwr_clks[clk_id_index].fun_clk);
+ status = dsp_clk_enable(bpwr_clks[clk_id_index].clk);
if (bpwr_clkid[clk_id_index] == BPWR_MCBSP1) {
/* set MCBSP1_CLKS, on McBSP1 ON */
value = __raw_readl(resources.dw_sys_ctrl_base + 0x274);
@@ -370,9 +366,8 @@ dsp_status dsp_peripheral_clk_ctrl(struct wmd_dev_context *dev_context,
__raw_writel(value, resources.dw_sys_ctrl_base + 0x274);
}
dsp_clk_wakeup_event_ctrl(bpwr_clks[clk_id_index].clk_id, true);
- if ((DSP_SUCCEEDED(status)) && (DSP_SUCCEEDED(status1))) {
+ if (DSP_SUCCEEDED(status))
(dev_context->dsp_per_clks) |= (1 << clk_id_index);
- }
break;
default:
dev_dbg(bridge, "%s: Unsupported CMD\n", __func__);
@@ -476,9 +471,6 @@ dsp_status dsp_peripheral_clocks_disable(struct wmd_dev_context *dev_context,
for (clk_idx = 0; clk_idx < MBX_PM_MAX_RESOURCES; clk_idx++) {
if (((dev_context->dsp_per_clks) >> clk_idx) & 0x01) {
- /* Disables the interface clock of the peripheral */
- status =
- dsp_clk_disable(bpwr_clks[clk_idx].int_clk);
if (bpwr_clkid[clk_idx] == BPWR_MCBSP1) {
/* clear MCBSP1_CLKS, on McBSP1 OFF */
value = __raw_readl(resources.dw_sys_ctrl_base
@@ -495,9 +487,8 @@ dsp_status dsp_peripheral_clocks_disable(struct wmd_dev_context *dev_context,
+ 0x274);
}
- /* Disables the functional clock of the periphearl */
- status =
- dsp_clk_disable(bpwr_clks[clk_idx].fun_clk);
+ /* Disables the clocks of the peripheral */
+ status = dsp_clk_disable(bpwr_clks[clk_idx].clk);
}
}
return status;
@@ -511,7 +502,7 @@ dsp_status dsp_peripheral_clocks_enable(struct wmd_dev_context *dev_context,
IN void *pargs)
{
u32 clk_idx;
- dsp_status int_clk_status = DSP_EFAIL, fun_clk_status = DSP_EFAIL;
+ dsp_status clk_status = DSP_EFAIL;
struct cfg_hostres resources;
u32 value;
@@ -520,9 +511,8 @@ dsp_status dsp_peripheral_clocks_enable(struct wmd_dev_context *dev_context,
for (clk_idx = 0; clk_idx < MBX_PM_MAX_RESOURCES; clk_idx++) {
if (((dev_context->dsp_per_clks) >> clk_idx) & 0x01) {
- /* Enable the interface clock of the peripheral */
- int_clk_status =
- dsp_clk_enable(bpwr_clks[clk_idx].int_clk);
+ /* Enable the clocks of the peripheral */
+ clk_status = dsp_clk_enable(bpwr_clks[clk_idx].clk);
if (bpwr_clkid[clk_idx] == BPWR_MCBSP1) {
/* set MCBSP1_CLKS, on McBSP1 ON */
value = __raw_readl(resources.dw_sys_ctrl_base
@@ -538,14 +528,9 @@ dsp_status dsp_peripheral_clocks_enable(struct wmd_dev_context *dev_context,
__raw_writel(value, resources.dw_sys_ctrl_base
+ 0x274);
}
- /* Enable the functional clock of the periphearl */
- fun_clk_status =
- dsp_clk_enable(bpwr_clks[clk_idx].fun_clk);
}
}
- if ((int_clk_status | fun_clk_status) != DSP_SOK)
- return DSP_EFAIL;
- return DSP_SOK;
+ return clk_status;
}
void dsp_clk_wakeup_event_ctrl(u32 ClkId, bool enable)
--
1.6.2.4
next prev parent reply other threads:[~2010-04-08 23:00 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-08 23:15 [PATCH 00/19] generic clk module removal Omar Ramirez Luna
2010-04-08 23:15 ` [PATCH 01/19] DSPBRIDGE: rename generic clk_handle for iva2_clk Omar Ramirez Luna
2010-04-08 23:15 ` [PATCH 02/19] DSPBRIDGE: remove iva2 clk control from custom framework Omar Ramirez Luna
2010-04-08 23:15 ` [PATCH 03/19] DSPBRIDGE: fail if clk handle is NULL Omar Ramirez Luna
2010-04-08 23:15 ` [PATCH 04/19] DSPBRIDGE: Now actually fail if a clk handle is wrong Omar Ramirez Luna
2010-04-08 23:15 ` [PATCH 05/19] DSPBRIDGE: Rename services_clk_* to dsp_clk_* Omar Ramirez Luna
2010-04-08 23:15 ` [PATCH 06/19] DSPBRIDGE: remove unused clock sys_ck Omar Ramirez Luna
2010-04-08 23:15 ` [PATCH 07/19] DSPBRIDGE: remove function clk_set32k_hz Omar Ramirez Luna
2010-04-08 23:15 ` [PATCH 08/19] DSPBRIDGE: remove clk_get_use_cnt Omar Ramirez Luna
2010-04-08 23:15 ` [PATCH 09/19] DSPBRIDGE: trivial clock cleanup for unused code Omar Ramirez Luna
2010-04-08 23:15 ` [PATCH 10/19] DSPBRIDGE: function to get the type of clock requested by dsp Omar Ramirez Luna
2010-04-08 23:16 ` [PATCH 11/19] DSPBRIDGE: use dm timer framework for gpt timers Omar Ramirez Luna
2010-04-08 23:16 ` [PATCH 12/19] DSPBRIDGE: use omap mcbsp to enable mcbsp clocks Omar Ramirez Luna
2010-04-08 23:16 ` [PATCH 13/19] DSPBRIDGE: remove wdt3 from dsp control Omar Ramirez Luna
2010-04-08 23:16 ` [PATCH 14/19] DSPBRIDGE: ssi clock fixes Omar Ramirez Luna
2010-04-08 23:16 ` Omar Ramirez Luna [this message]
2010-04-08 23:16 ` [PATCH 16/19] DSPBRIDGE: Move MCBSP_CLOCKS code to a common place Omar Ramirez Luna
2010-04-08 23:16 ` [PATCH 17/19] DSPBRIDGE: Balance the number of enable/disable Omar Ramirez Luna
2010-04-08 23:16 ` [PATCH 18/19] DSPBRIDGE: move clk to dsp-clock Omar Ramirez Luna
2010-04-08 23:16 ` [PATCH 19/19] DSPBRIDGE: reorganize the code to handle peripheral clocks Omar Ramirez Luna
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1270768568-10712-16-git-send-email-omar.ramirez@ti.com \
--to=omar.ramirez@ti.com \
--cc=Hiroshi.DOYU@nokia.com \
--cc=ameya.palande@nokia.com \
--cc=felipe.contreras@gmail.com \
--cc=linux-omap@vger.kernel.org \
--cc=nm@ti.com \
--cc=paul@pwsan.com \
--cc=x0095840@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox