Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 106852
b: refs/heads/master
c: 3fec18b
h: refs/heads/master
v: v3
  • Loading branch information
Magnus Damm authored and Paul Mundt committed Jul 28, 2008
1 parent 0ee8c01 commit 2b7fe2a
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 39 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5c8f9d94fea98596db255a579f5d02a0195abda7
refs/heads/master: 3fec18bd603c3a55aeb325121a3e752f647641be
47 changes: 9 additions & 38 deletions trunk/arch/sh/kernel/cpu/sh4a/clock-sh7722.c
Original file line number Diff line number Diff line change
Expand Up @@ -411,40 +411,16 @@ static struct clk_ops sh7722_frqcr_clk_ops = {
* clock ops methods for SIU A/B and IrDA clock
*
*/
static int sh7722_siu_which(struct clk *clk)
{
if (!strcmp(clk->name, "siu_a_clk"))
return 0;
if (!strcmp(clk->name, "siu_b_clk"))
return 1;
#if defined(CONFIG_CPU_SUBTYPE_SH7722)
if (!strcmp(clk->name, "irda_clk"))
return 2;
#endif
return -EINVAL;
}

static unsigned long sh7722_siu_regs[] = {
[0] = SCLKACR,
[1] = SCLKBCR,
#if defined(CONFIG_CPU_SUBTYPE_SH7722)
[2] = IrDACLKCR,
#endif
};

static int sh7722_siu_start_stop(struct clk *clk, int enable)
{
int siu = sh7722_siu_which(clk);
unsigned long r;

if (siu < 0)
return siu;
BUG_ON(siu > 2);
r = ctrl_inl(sh7722_siu_regs[siu]);
r = ctrl_inl(clk->arch_flags);
if (enable)
ctrl_outl(r & ~(1 << 8), sh7722_siu_regs[siu]);
ctrl_outl(r & ~(1 << 8), clk->arch_flags);
else
ctrl_outl(r | (1 << 8), sh7722_siu_regs[siu]);
ctrl_outl(r | (1 << 8), clk->arch_flags);
return 0;
}

Expand Down Expand Up @@ -496,31 +472,23 @@ static void sh7722_video_recalc(struct clk *clk)

static int sh7722_siu_set_rate(struct clk *clk, unsigned long rate, int algo_id)
{
int siu = sh7722_siu_which(clk);
unsigned long r;
int div;

if (siu < 0)
return siu;
BUG_ON(siu > 2);
r = ctrl_inl(sh7722_siu_regs[siu]);
r = ctrl_inl(clk->arch_flags);
div = sh7722_find_divisors(clk->parent->rate, rate);
if (div < 0)
return div;
r = (r & ~0xF) | div;
ctrl_outl(r, sh7722_siu_regs[siu]);
ctrl_outl(r, clk->arch_flags);
return 0;
}

static void sh7722_siu_recalc(struct clk *clk)
{
int siu = sh7722_siu_which(clk);
unsigned long r;

if (siu < 0)
return /* siu */ ;
BUG_ON(siu > 2);
r = ctrl_inl(sh7722_siu_regs[siu]);
r = ctrl_inl(clk->arch_flags);
clk->rate = clk->parent->rate * 2 / divisors2[r & 0xF];
}

Expand Down Expand Up @@ -567,17 +535,20 @@ static struct clk sh7722_sdram_clock = {
*/
static struct clk sh7722_siu_a_clock = {
.name = "siu_a_clk",
.arch_flags = SCLKACR,
.ops = &sh7722_siu_clk_ops,
};

static struct clk sh7722_siu_b_clock = {
.name = "siu_b_clk",
.arch_flags = SCLKBCR,
.ops = &sh7722_siu_clk_ops,
};

#if defined(CONFIG_CPU_SUBTYPE_SH7722)
static struct clk sh7722_irda_clock = {
.name = "irda_clk",
.arch_flags = IrDACLKCR,
.ops = &sh7722_siu_clk_ops,
};
#endif
Expand Down

0 comments on commit 2b7fe2a

Please sign in to comment.