Skip to content

Commit

Permalink
sh: use arch_flags for sh_mobile mstpcr clock bits
Browse files Browse the repository at this point in the history
Use arch_flags to keep track of register and flag number.

Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
  • Loading branch information
Magnus Damm authored and Paul Mundt committed Dec 22, 2008
1 parent d902d04 commit 1dc7b77
Showing 1 changed file with 30 additions and 42 deletions.
72 changes: 30 additions & 42 deletions arch/sh/kernel/cpu/sh4a/clock-sh7722.c
Original file line number Diff line number Diff line change
Expand Up @@ -567,12 +567,30 @@ static struct clk sh7722_video_clock = {
.ops = &sh7722_video_clk_ops,
};

static int sh7722_mstpcr_start_stop(struct clk *clk, unsigned long reg,
int enable)
#define MSTPCR_ARCH_FLAGS(reg, bit) (((reg) << 8) | (bit))
#define MSTPCR_ARCH_FLAGS_REG(value) ((value) >> 8)
#define MSTPCR_ARCH_FLAGS_BIT(value) ((value) & 0xff)

static int sh7722_mstpcr_start_stop(struct clk *clk, int enable)
{
unsigned long bit = clk->arch_flags;
unsigned long bit = MSTPCR_ARCH_FLAGS_BIT(clk->arch_flags);
unsigned long reg;
unsigned long r;

switch(MSTPCR_ARCH_FLAGS_REG(clk->arch_flags)) {
case 0:
reg = MSTPCR0;
break;
case 1:
reg = MSTPCR1;
break;
case 2:
reg = MSTPCR2;
break;
default:
return -EINVAL;
}

r = ctrl_inl(reg);

if (enable)
Expand All @@ -584,56 +602,26 @@ static int sh7722_mstpcr_start_stop(struct clk *clk, unsigned long reg,
return 0;
}

static void sh7722_mstpcr0_enable(struct clk *clk)
{
sh7722_mstpcr_start_stop(clk, MSTPCR0, 1);
}

static void sh7722_mstpcr0_disable(struct clk *clk)
static void sh7722_mstpcr_enable(struct clk *clk)
{
sh7722_mstpcr_start_stop(clk, MSTPCR0, 0);
sh7722_mstpcr_start_stop(clk, 1);
}

static void sh7722_mstpcr1_enable(struct clk *clk)
static void sh7722_mstpcr_disable(struct clk *clk)
{
sh7722_mstpcr_start_stop(clk, MSTPCR1, 1);
sh7722_mstpcr_start_stop(clk, 0);
}

static void sh7722_mstpcr1_disable(struct clk *clk)
{
sh7722_mstpcr_start_stop(clk, MSTPCR1, 0);
}

static void sh7722_mstpcr2_enable(struct clk *clk)
{
sh7722_mstpcr_start_stop(clk, MSTPCR2, 1);
}

static void sh7722_mstpcr2_disable(struct clk *clk)
{
sh7722_mstpcr_start_stop(clk, MSTPCR2, 0);
}

static struct clk_ops sh7722_mstpcr0_clk_ops = {
.enable = sh7722_mstpcr0_enable,
.disable = sh7722_mstpcr0_disable,
};

static struct clk_ops sh7722_mstpcr1_clk_ops = {
.enable = sh7722_mstpcr1_enable,
.disable = sh7722_mstpcr1_disable,
};

static struct clk_ops sh7722_mstpcr2_clk_ops = {
.enable = sh7722_mstpcr2_enable,
.disable = sh7722_mstpcr2_disable,
static struct clk_ops sh7722_mstpcr_clk_ops = {
.enable = sh7722_mstpcr_enable,
.disable = sh7722_mstpcr_disable,
};

#define DECLARE_MSTPCRN(regnr, bitnr, bitstr) \
{ \
.name = "mstp" __stringify(regnr) bitstr, \
.arch_flags = bitnr, \
.ops = &sh7722_mstpcr ## regnr ## _clk_ops, \
.arch_flags = MSTPCR_ARCH_FLAGS(regnr, bitnr), \
.ops = &sh7722_mstpcr_clk_ops, \
}

#define DECLARE_MSTPCR(regnr) \
Expand Down

0 comments on commit 1dc7b77

Please sign in to comment.