* [PATCH] Temporary fix to boot OMAP1 based boards
@ 2008-09-23 15:23 Arun KS
2008-09-23 22:43 ` Felipe Balbi
2008-09-24 3:51 ` Hiroshi DOYU
0 siblings, 2 replies; 16+ messages in thread
From: Arun KS @ 2008-09-23 15:23 UTC (permalink / raw)
To: linux-omap@vger.kernel.org
This patch is a temporary fix for a kernel panic causing at omap1_clk_init
Signed-off-by: Arun KS <arunks@mistralsolutions.com>
---
arch/arm/plat-omap/include/mach/clock.h | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/arch/arm/plat-omap/include/mach/clock.h
b/arch/arm/plat-omap/include/mach/clock.h
index f26ad8c..b9c471e 100644
--- a/arch/arm/plat-omap/include/mach/clock.h
+++ b/arch/arm/plat-omap/include/mach/clock.h
@@ -67,7 +67,11 @@ struct clk {
struct clk *parent;
unsigned long rate;
__u32 flags;
+#if defined(CONFIG_ARCH_OMAP1)
+ void __iomem *enable_reg;
+#elif
u16 enable_reg;
+#endif
__u8 enable_bit;
__s8 usecount;
u8 idlest_bit;
--
1.5.3.4
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-23 15:23 [PATCH] Temporary fix to boot OMAP1 based boards Arun KS
@ 2008-09-23 22:43 ` Felipe Balbi
2008-09-24 4:50 ` Arun KS
2008-09-24 3:51 ` Hiroshi DOYU
1 sibling, 1 reply; 16+ messages in thread
From: Felipe Balbi @ 2008-09-23 22:43 UTC (permalink / raw)
To: Arun KS; +Cc: linux-omap@vger.kernel.org
On Tue, Sep 23, 2008 at 08:53:09PM +0530, Arun KS wrote:
> This patch is a temporary fix for a kernel panic causing at omap1_clk_init
>
> Signed-off-by: Arun KS <arunks@mistralsolutions.com>
> ---
> arch/arm/plat-omap/include/mach/clock.h | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/plat-omap/include/mach/clock.h
> b/arch/arm/plat-omap/include/mach/clock.h
> index f26ad8c..b9c471e 100644
> --- a/arch/arm/plat-omap/include/mach/clock.h
> +++ b/arch/arm/plat-omap/include/mach/clock.h
> @@ -67,7 +67,11 @@ struct clk {
> struct clk *parent;
> unsigned long rate;
> __u32 flags;
> +#if defined(CONFIG_ARCH_OMAP1)
> + void __iomem *enable_reg;
> +#elif
> u16 enable_reg;
> +#endif
Did you try removing those (void __iomem *) casts from
arch/arm/mach-omap1/clock.h ??
with vim you can fix it by:
:%s/(void\ __iomem\ \*)//g
--
balbi
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-23 15:23 [PATCH] Temporary fix to boot OMAP1 based boards Arun KS
2008-09-23 22:43 ` Felipe Balbi
@ 2008-09-24 3:51 ` Hiroshi DOYU
2008-09-24 7:05 ` Arun KS
1 sibling, 1 reply; 16+ messages in thread
From: Hiroshi DOYU @ 2008-09-24 3:51 UTC (permalink / raw)
To: arunks, Paul Walmsley; +Cc: linux-omap
Hi,
How about introducing a new typedef in order to accommodate the
different size of enable_regs without ifdefs?
I think that this is apparently the case categorized into (a) in
'CodyingStyle'.
Hiroshi DOYU
From: "ext Arun KS" <arunks@mistralsolutions.com>
Subject: [PATCH] Temporary fix to boot OMAP1 based boards
Date: Tue, 23 Sep 2008 20:53:09 +0530
> This patch is a temporary fix for a kernel panic causing at omap1_clk_init
>
> Signed-off-by: Arun KS <arunks@mistralsolutions.com>
> ---
> arch/arm/plat-omap/include/mach/clock.h | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/plat-omap/include/mach/clock.h
> b/arch/arm/plat-omap/include/mach/clock.h
> index f26ad8c..b9c471e 100644
> --- a/arch/arm/plat-omap/include/mach/clock.h
> +++ b/arch/arm/plat-omap/include/mach/clock.h
> @@ -67,7 +67,11 @@ struct clk {
> struct clk *parent;
> unsigned long rate;
> __u32 flags;
> +#if defined(CONFIG_ARCH_OMAP1)
> + void __iomem *enable_reg;
> +#elif
> u16 enable_reg;
> +#endif
> __u8 enable_bit;
> __s8 usecount;
> u8 idlest_bit;
> --
> 1.5.3.4
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-23 22:43 ` Felipe Balbi
@ 2008-09-24 4:50 ` Arun KS
0 siblings, 0 replies; 16+ messages in thread
From: Arun KS @ 2008-09-24 4:50 UTC (permalink / raw)
To: me; +Cc: linux-omap@vger.kernel.org
On Wed, Sep 24, 2008 at 4:13 AM, Felipe Balbi <me@felipebalbi.com> wrote:
> On Tue, Sep 23, 2008 at 08:53:09PM +0530, Arun KS wrote:
>> This patch is a temporary fix for a kernel panic causing at omap1_clk_init
>>
>> Signed-off-by: Arun KS <arunks@mistralsolutions.com>
>> ---
>> arch/arm/plat-omap/include/mach/clock.h | 4 ++++
>> 1 files changed, 4 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/plat-omap/include/mach/clock.h
>> b/arch/arm/plat-omap/include/mach/clock.h
>> index f26ad8c..b9c471e 100644
>> --- a/arch/arm/plat-omap/include/mach/clock.h
>> +++ b/arch/arm/plat-omap/include/mach/clock.h
>> @@ -67,7 +67,11 @@ struct clk {
>> struct clk *parent;
>> unsigned long rate;
>> __u32 flags;
>> +#if defined(CONFIG_ARCH_OMAP1)
>> + void __iomem *enable_reg;
>> +#elif
>> u16 enable_reg;
>> +#endif
>
> Did you try removing those (void __iomem *) casts from
> arch/arm/mach-omap1/clock.h ??
>
> with vim you can fix it by:
>
> :%s/(void\ __iomem\ \*)//g
>
This is not working, still panic.
enable_reg variable is u16 now(which is offset). clock.c file of omap2
is modified to support this, but clock.c of omap1 is not.
> --
> balbi
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-24 3:51 ` Hiroshi DOYU
@ 2008-09-24 7:05 ` Arun KS
2008-09-24 7:12 ` Tony Lindgren
0 siblings, 1 reply; 16+ messages in thread
From: Arun KS @ 2008-09-24 7:05 UTC (permalink / raw)
To: Hiroshi DOYU; +Cc: Paul Walmsley, linux-omap
On Wed, Sep 24, 2008 at 9:21 AM, Hiroshi DOYU <Hiroshi.DOYU@nokia.com> wrote:
> Hi,
>
> How about introducing a new typedef in order to accommodate the
> different size of enable_regs without ifdefs?
>
> I think that this is apparently the case categorized into (a) in
> 'CodyingStyle'.
I am not sure which is the right way to do. Is this what you meant?
arch/arm/plat-omap/include/mach/clock.h | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/arch/arm/plat-omap/include/mach/clock.h
b/arch/arm/plat-omap/include/mach/clock.h
index f26ad8c..122532e 100644
--- a/arch/arm/plat-omap/include/mach/clock.h
+++ b/arch/arm/plat-omap/include/mach/clock.h
@@ -59,6 +59,12 @@ struct dpll_data {
#endif
+#if defined(CONFIG_ARCH_OMAP1)
+typedef void __iomem *reg_t;
+#elif
+typedef u16 reg_t;
+#endif
+
struct clk {
struct list_head node;
struct module *owner;
@@ -67,7 +73,7 @@ struct clk {
struct clk *parent;
unsigned long rate;
__u32 flags;
- u16 enable_reg;
+ reg_t enable_reg;
__u8 enable_bit;
__s8 usecount;
u8 idlest_bit;
Regards
Arun
>
> Hiroshi DOYU
>
> From: "ext Arun KS" <arunks@mistralsolutions.com>
> Subject: [PATCH] Temporary fix to boot OMAP1 based boards
> Date: Tue, 23 Sep 2008 20:53:09 +0530
>
>> This patch is a temporary fix for a kernel panic causing at omap1_clk_init
>>
>> Signed-off-by: Arun KS <arunks@mistralsolutions.com>
>> ---
>> arch/arm/plat-omap/include/mach/clock.h | 4 ++++
>> 1 files changed, 4 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/plat-omap/include/mach/clock.h
>> b/arch/arm/plat-omap/include/mach/clock.h
>> index f26ad8c..b9c471e 100644
>> --- a/arch/arm/plat-omap/include/mach/clock.h
>> +++ b/arch/arm/plat-omap/include/mach/clock.h
>> @@ -67,7 +67,11 @@ struct clk {
>> struct clk *parent;
>> unsigned long rate;
>> __u32 flags;
>> +#if defined(CONFIG_ARCH_OMAP1)
>> + void __iomem *enable_reg;
>> +#elif
>> u16 enable_reg;
>> +#endif
>> __u8 enable_bit;
>> __s8 usecount;
>> u8 idlest_bit;
>> --
>> 1.5.3.4
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-24 7:05 ` Arun KS
@ 2008-09-24 7:12 ` Tony Lindgren
2008-09-24 8:00 ` Tony Lindgren
0 siblings, 1 reply; 16+ messages in thread
From: Tony Lindgren @ 2008-09-24 7:12 UTC (permalink / raw)
To: Arun KS; +Cc: Hiroshi DOYU, Paul Walmsley, linux-omap
* Arun KS <arunks@mistralsolutions.com> [080924 10:05]:
> On Wed, Sep 24, 2008 at 9:21 AM, Hiroshi DOYU <Hiroshi.DOYU@nokia.com> wrote:
> > Hi,
> >
> > How about introducing a new typedef in order to accommodate the
> > different size of enable_regs without ifdefs?
> >
> > I think that this is apparently the case categorized into (a) in
> > 'CodyingStyle'.
>
> I am not sure which is the right way to do. Is this what you meant?
No, let's not do this. It should be void __iomem * for sure. Most of
the omap1 clock registers looks just fine for void __iomem *, let's
figure out which registers are broken.
Tony
>
>
> arch/arm/plat-omap/include/mach/clock.h | 8 +++++++-
> 1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/plat-omap/include/mach/clock.h
> b/arch/arm/plat-omap/include/mach/clock.h
> index f26ad8c..122532e 100644
> --- a/arch/arm/plat-omap/include/mach/clock.h
> +++ b/arch/arm/plat-omap/include/mach/clock.h
> @@ -59,6 +59,12 @@ struct dpll_data {
>
> #endif
>
> +#if defined(CONFIG_ARCH_OMAP1)
> +typedef void __iomem *reg_t;
> +#elif
> +typedef u16 reg_t;
> +#endif
> +
> struct clk {
> struct list_head node;
> struct module *owner;
> @@ -67,7 +73,7 @@ struct clk {
> struct clk *parent;
> unsigned long rate;
> __u32 flags;
> - u16 enable_reg;
> + reg_t enable_reg;
> __u8 enable_bit;
> __s8 usecount;
> u8 idlest_bit;
>
> Regards
> Arun
> >
> > Hiroshi DOYU
> >
> > From: "ext Arun KS" <arunks@mistralsolutions.com>
> > Subject: [PATCH] Temporary fix to boot OMAP1 based boards
> > Date: Tue, 23 Sep 2008 20:53:09 +0530
> >
> >> This patch is a temporary fix for a kernel panic causing at omap1_clk_init
> >>
> >> Signed-off-by: Arun KS <arunks@mistralsolutions.com>
> >> ---
> >> arch/arm/plat-omap/include/mach/clock.h | 4 ++++
> >> 1 files changed, 4 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/arch/arm/plat-omap/include/mach/clock.h
> >> b/arch/arm/plat-omap/include/mach/clock.h
> >> index f26ad8c..b9c471e 100644
> >> --- a/arch/arm/plat-omap/include/mach/clock.h
> >> +++ b/arch/arm/plat-omap/include/mach/clock.h
> >> @@ -67,7 +67,11 @@ struct clk {
> >> struct clk *parent;
> >> unsigned long rate;
> >> __u32 flags;
> >> +#if defined(CONFIG_ARCH_OMAP1)
> >> + void __iomem *enable_reg;
> >> +#elif
> >> u16 enable_reg;
> >> +#endif
> >> __u8 enable_bit;
> >> __s8 usecount;
> >> u8 idlest_bit;
> >> --
> >> 1.5.3.4
> >> --
> >> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> >> the body of a message to majordomo@vger.kernel.org
> >> More majordomo info at http://vger.kernel.org/majordomo-info.html
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-24 7:12 ` Tony Lindgren
@ 2008-09-24 8:00 ` Tony Lindgren
2008-09-24 8:03 ` Paul Walmsley
0 siblings, 1 reply; 16+ messages in thread
From: Tony Lindgren @ 2008-09-24 8:00 UTC (permalink / raw)
To: Arun KS; +Cc: Hiroshi DOYU, Paul Walmsley, linux-omap
[-- Attachment #1: Type: text/plain, Size: 889 bytes --]
* Tony Lindgren <tony@atomide.com> [080924 10:12]:
> * Arun KS <arunks@mistralsolutions.com> [080924 10:05]:
> > On Wed, Sep 24, 2008 at 9:21 AM, Hiroshi DOYU <Hiroshi.DOYU@nokia.com> wrote:
> > > Hi,
> > >
> > > How about introducing a new typedef in order to accommodate the
> > > different size of enable_regs without ifdefs?
> > >
> > > I think that this is apparently the case categorized into (a) in
> > > 'CodyingStyle'.
> >
> > I am not sure which is the right way to do. Is this what you meant?
>
> No, let's not do this. It should be void __iomem * for sure. Most of
> the omap1 clock registers looks just fine for void __iomem *, let's
> figure out which registers are broken.
I've pushed a fix for this. Turns out I missed some conversions to
void __iomem * while merging code from arm-devel branch. Fix also
attached.
Can you please check that it works for you now?
Tony
[-- Attachment #2: omap1-clock-fix.patch --]
[-- Type: text/x-diff, Size: 1664 bytes --]
>From 3fa3f8c8f56d0013b3802319c601581d73882ff4 Mon Sep 17 00:00:00 2001
From: Tony Lindgren <tony@atomide.com>
Date: Wed, 24 Sep 2008 10:56:18 +0300
Subject: [PATCH] Fix booting of omap1
This got broken because of mismerge from arm-devel.
Signed-off-by: Tony Lindgren <tony@atomide.com>
diff --git a/arch/arm/plat-omap/include/mach/clock.h b/arch/arm/plat-omap/include/mach/clock.h
index f26ad8c..24552b2 100644
--- a/arch/arm/plat-omap/include/mach/clock.h
+++ b/arch/arm/plat-omap/include/mach/clock.h
@@ -31,7 +31,7 @@ struct clksel {
};
struct dpll_data {
- u16 mult_div1_reg;
+ void __iomem *mult_div1_reg;
u32 mult_mask;
u32 div1_mask;
u16 last_rounded_m;
@@ -41,18 +41,18 @@ struct dpll_data {
u16 max_multiplier;
u8 max_divider;
u32 max_tolerance;
- u16 idlest_reg;
+ void __iomem *idlest_reg;
u32 idlest_mask;
struct clk *bypass_clk;
# if defined(CONFIG_ARCH_OMAP3)
u32 freqsel_mask;
u8 modes;
- u16 control_reg;
+ void __iomem *control_reg;
u32 enable_mask;
u8 auto_recal_bit;
u8 recal_en_bit;
u8 recal_st_bit;
- u16 autoidle_reg;
+ void __iomem *autoidle_reg;
u32 autoidle_mask;
# endif
};
@@ -67,7 +67,7 @@ struct clk {
struct clk *parent;
unsigned long rate;
__u32 flags;
- u16 enable_reg;
+ void __iomem *enable_reg;
__u8 enable_bit;
__s8 usecount;
u8 idlest_bit;
@@ -79,7 +79,7 @@ struct clk {
void (*disable)(struct clk *);
#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
u8 fixed_div;
- u16 clksel_reg;
+ void __iomem *clksel_reg;
u32 clksel_mask;
const struct clksel *clksel;
struct dpll_data *dpll_data;
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-24 8:00 ` Tony Lindgren
@ 2008-09-24 8:03 ` Paul Walmsley
2008-09-24 8:06 ` Tony Lindgren
0 siblings, 1 reply; 16+ messages in thread
From: Paul Walmsley @ 2008-09-24 8:03 UTC (permalink / raw)
To: Tony Lindgren; +Cc: Arun KS, Hiroshi DOYU, linux-omap
On Wed, 24 Sep 2008, Tony Lindgren wrote:
> * Tony Lindgren <tony@atomide.com> [080924 10:12]:
> > * Arun KS <arunks@mistralsolutions.com> [080924 10:05]:
> > > On Wed, Sep 24, 2008 at 9:21 AM, Hiroshi DOYU <Hiroshi.DOYU@nokia.com> wrote:
> > > > Hi,
> > > >
> > > > How about introducing a new typedef in order to accommodate the
> > > > different size of enable_regs without ifdefs?
> > > >
> > > > I think that this is apparently the case categorized into (a) in
> > > > 'CodyingStyle'.
> > >
> > > I am not sure which is the right way to do. Is this what you meant?
> >
> > No, let's not do this. It should be void __iomem * for sure. Most of
> > the omap1 clock registers looks just fine for void __iomem *, let's
> > figure out which registers are broken.
>
> I've pushed a fix for this. Turns out I missed some conversions to
> void __iomem * while merging code from arm-devel branch. Fix also
> attached.
Those registers should be u16 for OMAP2/3. OMAP1 needs something similar,
which will also get rid of those casts to void __iomem * - hacking on
something now ...
.
- Paul
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-24 8:03 ` Paul Walmsley
@ 2008-09-24 8:06 ` Tony Lindgren
2008-09-24 8:08 ` Paul Walmsley
0 siblings, 1 reply; 16+ messages in thread
From: Tony Lindgren @ 2008-09-24 8:06 UTC (permalink / raw)
To: Paul Walmsley; +Cc: Arun KS, Hiroshi DOYU, linux-omap
* Paul Walmsley <paul@booyaka.com> [080924 11:03]:
> On Wed, 24 Sep 2008, Tony Lindgren wrote:
>
> > * Tony Lindgren <tony@atomide.com> [080924 10:12]:
> > > * Arun KS <arunks@mistralsolutions.com> [080924 10:05]:
> > > > On Wed, Sep 24, 2008 at 9:21 AM, Hiroshi DOYU <Hiroshi.DOYU@nokia.com> wrote:
> > > > > Hi,
> > > > >
> > > > > How about introducing a new typedef in order to accommodate the
> > > > > different size of enable_regs without ifdefs?
> > > > >
> > > > > I think that this is apparently the case categorized into (a) in
> > > > > 'CodyingStyle'.
> > > >
> > > > I am not sure which is the right way to do. Is this what you meant?
> > >
> > > No, let's not do this. It should be void __iomem * for sure. Most of
> > > the omap1 clock registers looks just fine for void __iomem *, let's
> > > figure out which registers are broken.
> >
> > I've pushed a fix for this. Turns out I missed some conversions to
> > void __iomem * while merging code from arm-devel branch. Fix also
> > attached.
>
> Those registers should be u16 for OMAP2/3. OMAP1 needs something similar,
> which will also get rid of those casts to void __iomem * - hacking on
> something now ...
Argh, sorry. Yeah it's an offset for omap2/3.. Will revert immediately.
Tony
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-24 8:06 ` Tony Lindgren
@ 2008-09-24 8:08 ` Paul Walmsley
2008-09-24 8:34 ` Tony Lindgren
0 siblings, 1 reply; 16+ messages in thread
From: Paul Walmsley @ 2008-09-24 8:08 UTC (permalink / raw)
To: Tony Lindgren; +Cc: Arun KS, Hiroshi DOYU, linux-omap
On Wed, 24 Sep 2008, Tony Lindgren wrote:
> * Paul Walmsley <paul@booyaka.com> [080924 11:03]:
> > On Wed, 24 Sep 2008, Tony Lindgren wrote:
> >
> > > * Tony Lindgren <tony@atomide.com> [080924 10:12]:
> > > > * Arun KS <arunks@mistralsolutions.com> [080924 10:05]:
> > > > > On Wed, Sep 24, 2008 at 9:21 AM, Hiroshi DOYU <Hiroshi.DOYU@nokia.com> wrote:
> > > > > > Hi,
> > > > > >
> > > > > > How about introducing a new typedef in order to accommodate the
> > > > > > different size of enable_regs without ifdefs?
> > > > > >
> > > > > > I think that this is apparently the case categorized into (a) in
> > > > > > 'CodyingStyle'.
> > > > >
> > > > > I am not sure which is the right way to do. Is this what you meant?
> > > >
> > > > No, let's not do this. It should be void __iomem * for sure. Most of
> > > > the omap1 clock registers looks just fine for void __iomem *, let's
> > > > figure out which registers are broken.
> > >
> > > I've pushed a fix for this. Turns out I missed some conversions to
> > > void __iomem * while merging code from arm-devel branch. Fix also
> > > attached.
> >
> > Those registers should be u16 for OMAP2/3. OMAP1 needs something similar,
> > which will also get rid of those casts to void __iomem * - hacking on
> > something now ...
>
> Argh, sorry. Yeah it's an offset for omap2/3.. Will revert immediately.
No problem, it's really my fault - I need to start testing on OMAP1 also.
- Paul
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-24 8:08 ` Paul Walmsley
@ 2008-09-24 8:34 ` Tony Lindgren
2008-09-24 9:03 ` Arun KS
2008-09-24 14:06 ` Paul Walmsley
0 siblings, 2 replies; 16+ messages in thread
From: Tony Lindgren @ 2008-09-24 8:34 UTC (permalink / raw)
To: Paul Walmsley; +Cc: Arun KS, Hiroshi DOYU, linux-omap
[-- Attachment #1: Type: text/plain, Size: 1664 bytes --]
* Paul Walmsley <paul@booyaka.com> [080924 11:08]:
> On Wed, 24 Sep 2008, Tony Lindgren wrote:
>
> > * Paul Walmsley <paul@booyaka.com> [080924 11:03]:
> > > On Wed, 24 Sep 2008, Tony Lindgren wrote:
> > >
> > > > * Tony Lindgren <tony@atomide.com> [080924 10:12]:
> > > > > * Arun KS <arunks@mistralsolutions.com> [080924 10:05]:
> > > > > > On Wed, Sep 24, 2008 at 9:21 AM, Hiroshi DOYU <Hiroshi.DOYU@nokia.com> wrote:
> > > > > > > Hi,
> > > > > > >
> > > > > > > How about introducing a new typedef in order to accommodate the
> > > > > > > different size of enable_regs without ifdefs?
> > > > > > >
> > > > > > > I think that this is apparently the case categorized into (a) in
> > > > > > > 'CodyingStyle'.
> > > > > >
> > > > > > I am not sure which is the right way to do. Is this what you meant?
> > > > >
> > > > > No, let's not do this. It should be void __iomem * for sure. Most of
> > > > > the omap1 clock registers looks just fine for void __iomem *, let's
> > > > > figure out which registers are broken.
> > > >
> > > > I've pushed a fix for this. Turns out I missed some conversions to
> > > > void __iomem * while merging code from arm-devel branch. Fix also
> > > > attached.
> > >
> > > Those registers should be u16 for OMAP2/3. OMAP1 needs something similar,
> > > which will also get rid of those casts to void __iomem * - hacking on
> > > something now ...
> >
> > Argh, sorry. Yeah it's an offset for omap2/3.. Will revert immediately.
>
> No problem, it's really my fault - I need to start testing on OMAP1 also.
How about this for a quick fix? It produces now a bunch of warnings
until omap1 clock uses offsets too.
Tony
[-- Attachment #2: omap1-clock-fix-v2.patch --]
[-- Type: text/x-diff, Size: 18134 bytes --]
>From fff89ca6ab98a359ff114da7db3803b700258319 Mon Sep 17 00:00:00 2001
From: Tony Lindgren <tony@atomide.com>
Date: Wed, 24 Sep 2008 11:31:03 +0300
Subject: [PATCH] Fix omap1 clock issues
This fixes booting, and is a step toward fixing things properly:
- Make enable_reg u32 instead of u16
- Get rid of VIRTUAL_IO_ADDRESS for clocks
- Use __raw_read/write instead of omap_read/write for clock registers
This patch adds a bunch of compile warnings until omap1 clock
also uses offsets.
Signed-off-by: Tony Lindgren <tony@atomide.com>
diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c
index 90ae0ef..799867c 100644
--- a/arch/arm/mach-omap1/clock.c
+++ b/arch/arm/mach-omap1/clock.c
@@ -41,7 +41,7 @@ static void omap1_watchdog_recalc(struct clk * clk)
static void omap1_uart_recalc(struct clk * clk)
{
- unsigned int val = omap_readl(clk->enable_reg);
+ unsigned int val = __raw_readl(clk->enable_reg);
if (val & clk->enable_bit)
clk->rate = 48000000;
else
@@ -372,14 +372,14 @@ static int omap1_set_uart_rate(struct clk * clk, unsigned long rate)
{
unsigned int val;
- val = omap_readl(clk->enable_reg);
+ val = __raw_readl(clk->enable_reg);
if (rate == 12000000)
val &= ~(1 << clk->enable_bit);
else if (rate == 48000000)
val |= (1 << clk->enable_bit);
else
return -EINVAL;
- omap_writel(val, clk->enable_reg);
+ __raw_writel(val, clk->enable_reg);
clk->rate = rate;
return 0;
@@ -398,8 +398,8 @@ static int omap1_set_ext_clk_rate(struct clk * clk, unsigned long rate)
else
ratio_bits = (dsor - 2) << 2;
- ratio_bits |= omap_readw(clk->enable_reg) & ~0xfd;
- omap_writew(ratio_bits, clk->enable_reg);
+ ratio_bits |= __raw_readw(clk->enable_reg) & ~0xfd;
+ __raw_writew(ratio_bits, clk->enable_reg);
return 0;
}
@@ -440,8 +440,8 @@ static void omap1_init_ext_clk(struct clk * clk)
__u16 ratio_bits;
/* Determine current rate and ensure clock is based on 96MHz APLL */
- ratio_bits = omap_readw(clk->enable_reg) & ~1;
- omap_writew(ratio_bits, clk->enable_reg);
+ ratio_bits = __raw_readw(clk->enable_reg) & ~1;
+ __raw_writew(ratio_bits, clk->enable_reg);
ratio_bits = (ratio_bits & 0xfc) >> 2;
if (ratio_bits > 6)
@@ -506,25 +506,13 @@ static int omap1_clk_enable_generic(struct clk *clk)
}
if (clk->flags & ENABLE_REG_32BIT) {
- if (clk->flags & VIRTUAL_IO_ADDRESS) {
- regval32 = __raw_readl(clk->enable_reg);
- regval32 |= (1 << clk->enable_bit);
- __raw_writel(regval32, clk->enable_reg);
- } else {
- regval32 = omap_readl(clk->enable_reg);
- regval32 |= (1 << clk->enable_bit);
- omap_writel(regval32, clk->enable_reg);
- }
+ regval32 = __raw_readl(clk->enable_reg);
+ regval32 |= (1 << clk->enable_bit);
+ __raw_writel(regval32, clk->enable_reg);
} else {
- if (clk->flags & VIRTUAL_IO_ADDRESS) {
- regval16 = __raw_readw(clk->enable_reg);
- regval16 |= (1 << clk->enable_bit);
- __raw_writew(regval16, clk->enable_reg);
- } else {
- regval16 = omap_readw(clk->enable_reg);
- regval16 |= (1 << clk->enable_bit);
- omap_writew(regval16, clk->enable_reg);
- }
+ regval16 = __raw_readw(clk->enable_reg);
+ regval16 |= (1 << clk->enable_bit);
+ __raw_writew(regval16, clk->enable_reg);
}
return 0;
@@ -539,25 +527,13 @@ static void omap1_clk_disable_generic(struct clk *clk)
return;
if (clk->flags & ENABLE_REG_32BIT) {
- if (clk->flags & VIRTUAL_IO_ADDRESS) {
- regval32 = __raw_readl(clk->enable_reg);
- regval32 &= ~(1 << clk->enable_bit);
- __raw_writel(regval32, clk->enable_reg);
- } else {
- regval32 = omap_readl(clk->enable_reg);
- regval32 &= ~(1 << clk->enable_bit);
- omap_writel(regval32, clk->enable_reg);
- }
+ regval32 = __raw_readl(clk->enable_reg);
+ regval32 &= ~(1 << clk->enable_bit);
+ __raw_writel(regval32, clk->enable_reg);
} else {
- if (clk->flags & VIRTUAL_IO_ADDRESS) {
- regval16 = __raw_readw(clk->enable_reg);
- regval16 &= ~(1 << clk->enable_bit);
- __raw_writew(regval16, clk->enable_reg);
- } else {
- regval16 = omap_readw(clk->enable_reg);
- regval16 &= ~(1 << clk->enable_bit);
- omap_writew(regval16, clk->enable_reg);
- }
+ regval16 = __raw_readw(clk->enable_reg);
+ regval16 &= ~(1 << clk->enable_bit);
+ __raw_writew(regval16, clk->enable_reg);
}
}
@@ -632,17 +608,10 @@ static void __init omap1_clk_disable_unused(struct clk *clk)
}
/* Is the clock already disabled? */
- if (clk->flags & ENABLE_REG_32BIT) {
- if (clk->flags & VIRTUAL_IO_ADDRESS)
- regval32 = __raw_readl(clk->enable_reg);
- else
- regval32 = omap_readl(clk->enable_reg);
- } else {
- if (clk->flags & VIRTUAL_IO_ADDRESS)
- regval32 = __raw_readw(clk->enable_reg);
- else
- regval32 = omap_readw(clk->enable_reg);
- }
+ if (clk->flags & ENABLE_REG_32BIT)
+ regval32 = __raw_readl(clk->enable_reg);
+ else
+ regval32 = __raw_readw(clk->enable_reg);
if ((regval32 & (1 << clk->enable_bit)) == 0)
return;
diff --git a/arch/arm/mach-omap1/clock.h b/arch/arm/mach-omap1/clock.h
index 5635b51..6d4f77d 100644
--- a/arch/arm/mach-omap1/clock.h
+++ b/arch/arm/mach-omap1/clock.h
@@ -174,7 +174,7 @@ static struct arm_idlect1_clk ck_dpll1out = {
.parent = &ck_dpll1,
.flags = CLOCK_IN_OMAP16XX | CLOCK_IDLE_CONTROL |
ENABLE_REG_32BIT | RATE_PROPAGATES,
- .enable_reg = (void __iomem *)ARM_IDLECT2,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
.enable_bit = EN_CKOUT_ARM,
.recalc = &followparent_recalc,
.enable = &omap1_clk_enable_generic,
@@ -188,7 +188,7 @@ static struct clk sossi_ck = {
.parent = &ck_dpll1out.clk,
.flags = CLOCK_IN_OMAP16XX | CLOCK_NO_IDLE_PARENT |
ENABLE_REG_32BIT,
- .enable_reg = (void __iomem *)MOD_CONF_CTRL_1,
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_1),
.enable_bit = 16,
.recalc = &omap1_sossi_recalc,
.set_rate = &omap1_set_sossi_rate,
@@ -215,7 +215,7 @@ static struct arm_idlect1_clk armper_ck = {
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
CLOCK_IN_OMAP310 | RATE_CKCTL |
CLOCK_IDLE_CONTROL,
- .enable_reg = (void __iomem *)ARM_IDLECT2,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
.enable_bit = EN_PERCK,
.rate_offset = CKCTL_PERDIV_OFFSET,
.recalc = &omap1_ckctl_recalc,
@@ -229,7 +229,7 @@ static struct clk arm_gpio_ck = {
.name = "arm_gpio_ck",
.parent = &ck_dpll1,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,
- .enable_reg = (void __iomem *)ARM_IDLECT2,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
.enable_bit = EN_GPIOCK,
.recalc = &followparent_recalc,
.enable = &omap1_clk_enable_generic,
@@ -242,7 +242,7 @@ static struct arm_idlect1_clk armxor_ck = {
.parent = &ck_ref,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
CLOCK_IN_OMAP310 | CLOCK_IDLE_CONTROL,
- .enable_reg = (void __iomem *)ARM_IDLECT2,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
.enable_bit = EN_XORPCK,
.recalc = &followparent_recalc,
.enable = &omap1_clk_enable_generic,
@@ -257,7 +257,7 @@ static struct arm_idlect1_clk armtim_ck = {
.parent = &ck_ref,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
CLOCK_IN_OMAP310 | CLOCK_IDLE_CONTROL,
- .enable_reg = (void __iomem *)ARM_IDLECT2,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
.enable_bit = EN_TIMCK,
.recalc = &followparent_recalc,
.enable = &omap1_clk_enable_generic,
@@ -272,7 +272,7 @@ static struct arm_idlect1_clk armwdt_ck = {
.parent = &ck_ref,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
CLOCK_IN_OMAP310 | CLOCK_IDLE_CONTROL,
- .enable_reg = (void __iomem *)ARM_IDLECT2,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
.enable_bit = EN_WDTCK,
.recalc = &omap1_watchdog_recalc,
.enable = &omap1_clk_enable_generic,
@@ -300,7 +300,7 @@ static struct clk dsp_ck = {
.parent = &ck_dpll1,
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
RATE_CKCTL,
- .enable_reg = (void __iomem *)ARM_CKCTL,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_CKCTL),
.enable_bit = EN_DSPCK,
.rate_offset = CKCTL_DSPDIV_OFFSET,
.recalc = &omap1_ckctl_recalc,
@@ -323,7 +323,7 @@ static struct clk dspper_ck = {
.name = "dspper_ck",
.parent = &ck_dpll1,
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
- RATE_CKCTL | VIRTUAL_IO_ADDRESS,
+ RATE_CKCTL,
.enable_reg = DSP_IDLECT2,
.enable_bit = EN_PERCK,
.rate_offset = CKCTL_PERDIV_OFFSET,
@@ -336,8 +336,7 @@ static struct clk dspper_ck = {
static struct clk dspxor_ck = {
.name = "dspxor_ck",
.parent = &ck_ref,
- .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
- VIRTUAL_IO_ADDRESS,
+ .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,
.enable_reg = DSP_IDLECT2,
.enable_bit = EN_XORPCK,
.recalc = &followparent_recalc,
@@ -348,8 +347,7 @@ static struct clk dspxor_ck = {
static struct clk dsptim_ck = {
.name = "dsptim_ck",
.parent = &ck_ref,
- .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
- VIRTUAL_IO_ADDRESS,
+ .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,
.enable_reg = DSP_IDLECT2,
.enable_bit = EN_DSPTIMCK,
.recalc = &followparent_recalc,
@@ -404,7 +402,7 @@ static struct clk l3_ocpi_ck = {
.name = "l3_ocpi_ck",
.parent = &tc_ck.clk,
.flags = CLOCK_IN_OMAP16XX,
- .enable_reg = (void __iomem *)ARM_IDLECT3,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT3),
.enable_bit = EN_OCPI_CK,
.recalc = &followparent_recalc,
.enable = &omap1_clk_enable_generic,
@@ -415,7 +413,7 @@ static struct clk tc1_ck = {
.name = "tc1_ck",
.parent = &tc_ck.clk,
.flags = CLOCK_IN_OMAP16XX,
- .enable_reg = (void __iomem *)ARM_IDLECT3,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT3),
.enable_bit = EN_TC1_CK,
.recalc = &followparent_recalc,
.enable = &omap1_clk_enable_generic,
@@ -426,7 +424,7 @@ static struct clk tc2_ck = {
.name = "tc2_ck",
.parent = &tc_ck.clk,
.flags = CLOCK_IN_OMAP16XX,
- .enable_reg = (void __iomem *)ARM_IDLECT3,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT3),
.enable_bit = EN_TC2_CK,
.recalc = &followparent_recalc,
.enable = &omap1_clk_enable_generic,
@@ -459,7 +457,7 @@ static struct arm_idlect1_clk api_ck = {
.parent = &tc_ck.clk,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
CLOCK_IN_OMAP310 | CLOCK_IDLE_CONTROL,
- .enable_reg = (void __iomem *)ARM_IDLECT2,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
.enable_bit = EN_APICK,
.recalc = &followparent_recalc,
.enable = &omap1_clk_enable_generic,
@@ -474,7 +472,7 @@ static struct arm_idlect1_clk lb_ck = {
.parent = &tc_ck.clk,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 |
CLOCK_IDLE_CONTROL,
- .enable_reg = (void __iomem *)ARM_IDLECT2,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
.enable_bit = EN_LBCK,
.recalc = &followparent_recalc,
.enable = &omap1_clk_enable_generic,
@@ -505,7 +503,7 @@ static struct clk lcd_ck_16xx = {
.name = "lcd_ck",
.parent = &ck_dpll1,
.flags = CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP730 | RATE_CKCTL,
- .enable_reg = (void __iomem *)ARM_IDLECT2,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
.enable_bit = EN_LCDCK,
.rate_offset = CKCTL_LCDDIV_OFFSET,
.recalc = &omap1_ckctl_recalc,
@@ -519,7 +517,7 @@ static struct arm_idlect1_clk lcd_ck_1510 = {
.parent = &ck_dpll1,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 |
RATE_CKCTL | CLOCK_IDLE_CONTROL,
- .enable_reg = (void __iomem *)ARM_IDLECT2,
+ .enable_reg = OMAP1_IO_ADDRESS(ARM_IDLECT2),
.enable_bit = EN_LCDCK,
.rate_offset = CKCTL_LCDDIV_OFFSET,
.recalc = &omap1_ckctl_recalc,
@@ -537,7 +535,7 @@ static struct clk uart1_1510 = {
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 |
ENABLE_REG_32BIT | ALWAYS_ENABLED |
CLOCK_NO_IDLE_PARENT,
- .enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
.enable_bit = 29, /* Chooses between 12MHz and 48MHz */
.set_rate = &omap1_set_uart_rate,
.recalc = &omap1_uart_recalc,
@@ -553,7 +551,7 @@ static struct uart_clk uart1_16xx = {
.rate = 48000000,
.flags = CLOCK_IN_OMAP16XX | RATE_FIXED |
ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
- .enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
.enable_bit = 29,
.enable = &omap1_clk_enable_uart_functional,
.disable = &omap1_clk_disable_uart_functional,
@@ -569,7 +567,7 @@ static struct clk uart2_ck = {
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
CLOCK_IN_OMAP310 | ENABLE_REG_32BIT |
ALWAYS_ENABLED | CLOCK_NO_IDLE_PARENT,
- .enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
.enable_bit = 30, /* Chooses between 12MHz and 48MHz */
.set_rate = &omap1_set_uart_rate,
.recalc = &omap1_uart_recalc,
@@ -585,7 +583,7 @@ static struct clk uart3_1510 = {
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 |
ENABLE_REG_32BIT | ALWAYS_ENABLED |
CLOCK_NO_IDLE_PARENT,
- .enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
.enable_bit = 31, /* Chooses between 12MHz and 48MHz */
.set_rate = &omap1_set_uart_rate,
.recalc = &omap1_uart_recalc,
@@ -601,7 +599,7 @@ static struct uart_clk uart3_16xx = {
.rate = 48000000,
.flags = CLOCK_IN_OMAP16XX | RATE_FIXED |
ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
- .enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
.enable_bit = 31,
.enable = &omap1_clk_enable_uart_functional,
.disable = &omap1_clk_disable_uart_functional,
@@ -615,7 +613,7 @@ static struct clk usb_clko = { /* 6 MHz output on W4_USB_CLKO */
.rate = 6000000,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
CLOCK_IN_OMAP310 | RATE_FIXED | ENABLE_REG_32BIT,
- .enable_reg = (void __iomem *)ULPD_CLOCK_CTRL,
+ .enable_reg = OMAP1_IO_ADDRESS(ULPD_CLOCK_CTRL),
.enable_bit = USB_MCLK_EN_BIT,
.enable = &omap1_clk_enable_generic,
.disable = &omap1_clk_disable_generic,
@@ -627,7 +625,7 @@ static struct clk usb_hhc_ck1510 = {
.rate = 48000000, /* Actually 2 clocks, 12MHz and 48MHz */
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 |
RATE_FIXED | ENABLE_REG_32BIT,
- .enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
.enable_bit = USB_HOST_HHC_UHOST_EN,
.enable = &omap1_clk_enable_generic,
.disable = &omap1_clk_disable_generic,
@@ -640,7 +638,7 @@ static struct clk usb_hhc_ck16xx = {
/* OTG_SYSCON_2.OTG_PADEN == 0 (not 1510-compatible) */
.flags = CLOCK_IN_OMAP16XX |
RATE_FIXED | ENABLE_REG_32BIT,
- .enable_reg = (void __iomem *)OTG_BASE + 0x08 /* OTG_SYSCON_2 */,
+ .enable_reg = OMAP1_IO_ADDRESS(OTG_BASE + 0x08), /* OTG_SYSCON_2 */
.enable_bit = 8 /* UHOST_EN */,
.enable = &omap1_clk_enable_generic,
.disable = &omap1_clk_disable_generic,
@@ -651,7 +649,7 @@ static struct clk usb_dc_ck = {
/* Direct from ULPD, no parent */
.rate = 48000000,
.flags = CLOCK_IN_OMAP16XX | RATE_FIXED,
- .enable_reg = (void __iomem *)SOFT_REQ_REG,
+ .enable_reg = OMAP1_IO_ADDRESS(SOFT_REQ_REG),
.enable_bit = 4,
.enable = &omap1_clk_enable_generic,
.disable = &omap1_clk_disable_generic,
@@ -662,7 +660,7 @@ static struct clk mclk_1510 = {
/* Direct from ULPD, no parent. May be enabled by ext hardware. */
.rate = 12000000,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | RATE_FIXED,
- .enable_reg = (void __iomem *)SOFT_REQ_REG,
+ .enable_reg = OMAP1_IO_ADDRESS(SOFT_REQ_REG),
.enable_bit = 6,
.enable = &omap1_clk_enable_generic,
.disable = &omap1_clk_disable_generic,
@@ -672,7 +670,7 @@ static struct clk mclk_16xx = {
.name = "mclk",
/* Direct from ULPD, no parent. May be enabled by ext hardware. */
.flags = CLOCK_IN_OMAP16XX,
- .enable_reg = (void __iomem *)COM_CLK_DIV_CTRL_SEL,
+ .enable_reg = OMAP1_IO_ADDRESS(COM_CLK_DIV_CTRL_SEL),
.enable_bit = COM_ULPD_PLL_CLK_REQ,
.set_rate = &omap1_set_ext_clk_rate,
.round_rate = &omap1_round_ext_clk_rate,
@@ -694,7 +692,7 @@ static struct clk bclk_16xx = {
.name = "bclk",
/* Direct from ULPD, no parent. May be enabled by ext hardware. */
.flags = CLOCK_IN_OMAP16XX,
- .enable_reg = (void __iomem *)SWD_CLK_DIV_CTRL_SEL,
+ .enable_reg = OMAP1_IO_ADDRESS(SWD_CLK_DIV_CTRL_SEL),
.enable_bit = SWD_ULPD_PLL_CLK_REQ,
.set_rate = &omap1_set_ext_clk_rate,
.round_rate = &omap1_round_ext_clk_rate,
@@ -712,7 +710,7 @@ static struct clk mmc1_ck = {
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
CLOCK_IN_OMAP310 | RATE_FIXED | ENABLE_REG_32BIT |
CLOCK_NO_IDLE_PARENT,
- .enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
.enable_bit = 23,
.enable = &omap1_clk_enable_generic,
.disable = &omap1_clk_disable_generic,
@@ -726,7 +724,7 @@ static struct clk mmc2_ck = {
.rate = 48000000,
.flags = CLOCK_IN_OMAP16XX |
RATE_FIXED | ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
- .enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
.enable_bit = 20,
.enable = &omap1_clk_enable_generic,
.disable = &omap1_clk_disable_generic,
diff --git a/arch/arm/plat-omap/include/mach/clock.h b/arch/arm/plat-omap/include/mach/clock.h
index f26ad8c..9088925 100644
--- a/arch/arm/plat-omap/include/mach/clock.h
+++ b/arch/arm/plat-omap/include/mach/clock.h
@@ -67,7 +67,7 @@ struct clk {
struct clk *parent;
unsigned long rate;
__u32 flags;
- u16 enable_reg;
+ u32 enable_reg;
__u8 enable_bit;
__s8 usecount;
u8 idlest_bit;
@@ -137,7 +137,7 @@ extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table);
#define VIRTUAL_CLOCK (1 << 3) /* Composite clock from table */
#define ALWAYS_ENABLED (1 << 4) /* Clock cannot be disabled */
#define ENABLE_REG_32BIT (1 << 5) /* Use 32-bit access */
-#define VIRTUAL_IO_ADDRESS (1 << 6) /* Clock in virtual address */
+
#define CLOCK_IDLE_CONTROL (1 << 7)
#define CLOCK_NO_IDLE_PARENT (1 << 8)
#define DELAYED_APP (1 << 9) /* Delay application of clock */
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-24 8:34 ` Tony Lindgren
@ 2008-09-24 9:03 ` Arun KS
2008-09-24 14:06 ` Paul Walmsley
1 sibling, 0 replies; 16+ messages in thread
From: Arun KS @ 2008-09-24 9:03 UTC (permalink / raw)
To: Tony Lindgren; +Cc: Paul Walmsley, Hiroshi DOYU, linux-omap
On Wed, Sep 24, 2008 at 2:04 PM, Tony Lindgren <tony@atomide.com> wrote:
> * Paul Walmsley <paul@booyaka.com> [080924 11:08]:
>> On Wed, 24 Sep 2008, Tony Lindgren wrote:
>>
>> > * Paul Walmsley <paul@booyaka.com> [080924 11:03]:
>> > > On Wed, 24 Sep 2008, Tony Lindgren wrote:
>> > >
>> > > > * Tony Lindgren <tony@atomide.com> [080924 10:12]:
>> > > > > * Arun KS <arunks@mistralsolutions.com> [080924 10:05]:
>> > > > > > On Wed, Sep 24, 2008 at 9:21 AM, Hiroshi DOYU <Hiroshi.DOYU@nokia.com> wrote:
>> > > > > > > Hi,
>> > > > > > >
>> > > > > > > How about introducing a new typedef in order to accommodate the
>> > > > > > > different size of enable_regs without ifdefs?
>> > > > > > >
>> > > > > > > I think that this is apparently the case categorized into (a) in
>> > > > > > > 'CodyingStyle'.
>> > > > > >
>> > > > > > I am not sure which is the right way to do. Is this what you meant?
>> > > > >
>> > > > > No, let's not do this. It should be void __iomem * for sure. Most of
>> > > > > the omap1 clock registers looks just fine for void __iomem *, let's
>> > > > > figure out which registers are broken.
>> > > >
>> > > > I've pushed a fix for this. Turns out I missed some conversions to
>> > > > void __iomem * while merging code from arm-devel branch. Fix also
>> > > > attached.
>> > >
>> > > Those registers should be u16 for OMAP2/3. OMAP1 needs something similar,
>> > > which will also get rid of those casts to void __iomem * - hacking on
>> > > something now ...
>> >
>> > Argh, sorry. Yeah it's an offset for omap2/3.. Will revert immediately.
>>
>> No problem, it's really my fault - I need to start testing on OMAP1 also.
>
> How about this for a quick fix? It produces now a bunch of warnings
> until omap1 clock uses offsets too.
Tested, it works.
Its good to have this fix till omap1 clock uses offsets.
Arun
>
> Tony
>
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-24 8:34 ` Tony Lindgren
2008-09-24 9:03 ` Arun KS
@ 2008-09-24 14:06 ` Paul Walmsley
2008-09-24 14:27 ` Tony Lindgren
1 sibling, 1 reply; 16+ messages in thread
From: Paul Walmsley @ 2008-09-24 14:06 UTC (permalink / raw)
To: Tony Lindgren; +Cc: Arun KS, Hiroshi DOYU, linux-omap
On Wed, 24 Sep 2008, Tony Lindgren wrote:
> How about this for a quick fix? It produces now a bunch of warnings
> until omap1 clock uses offsets too.
Looks good to me. Good to see that VIRTUAL_IO_ADDRESS flag gone --
- Paul
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-24 14:06 ` Paul Walmsley
@ 2008-09-24 14:27 ` Tony Lindgren
2008-09-24 14:35 ` Paul Walmsley
0 siblings, 1 reply; 16+ messages in thread
From: Tony Lindgren @ 2008-09-24 14:27 UTC (permalink / raw)
To: Paul Walmsley; +Cc: Arun KS, Hiroshi DOYU, linux-omap
* Paul Walmsley <paul@booyaka.com> [080924 17:06]:
> On Wed, 24 Sep 2008, Tony Lindgren wrote:
>
> > How about this for a quick fix? It produces now a bunch of warnings
> > until omap1 clock uses offsets too.
>
> Looks good to me. Good to see that VIRTUAL_IO_ADDRESS flag gone --
OK, pushed with a minror change. I've marked DSP addresses as IOMEM.
Tony
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-24 14:27 ` Tony Lindgren
@ 2008-09-24 14:35 ` Paul Walmsley
2008-09-24 14:43 ` Tony Lindgren
0 siblings, 1 reply; 16+ messages in thread
From: Paul Walmsley @ 2008-09-24 14:35 UTC (permalink / raw)
To: Tony Lindgren; +Cc: Arun KS, Hiroshi DOYU, linux-omap
On Wed, 24 Sep 2008, Tony Lindgren wrote:
> * Paul Walmsley <paul@booyaka.com> [080924 17:06]:
> > On Wed, 24 Sep 2008, Tony Lindgren wrote:
> >
> > > How about this for a quick fix? It produces now a bunch of warnings
> > > until omap1 clock uses offsets too.
> >
> > Looks good to me. Good to see that VIRTUAL_IO_ADDRESS flag gone --
>
> OK, pushed with a minror change. I've marked DSP addresses as IOMEM.
Are those marked as IOMEM() already in
arch/arm/plat-omap/include/mach/hardware.h ?
- Paul
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Temporary fix to boot OMAP1 based boards
2008-09-24 14:35 ` Paul Walmsley
@ 2008-09-24 14:43 ` Tony Lindgren
0 siblings, 0 replies; 16+ messages in thread
From: Tony Lindgren @ 2008-09-24 14:43 UTC (permalink / raw)
To: Paul Walmsley; +Cc: Arun KS, Hiroshi DOYU, linux-omap
* Paul Walmsley <paul@booyaka.com> [080924 17:35]:
> On Wed, 24 Sep 2008, Tony Lindgren wrote:
>
> > * Paul Walmsley <paul@booyaka.com> [080924 17:06]:
> > > On Wed, 24 Sep 2008, Tony Lindgren wrote:
> > >
> > > > How about this for a quick fix? It produces now a bunch of warnings
> > > > until omap1 clock uses offsets too.
> > >
> > > Looks good to me. Good to see that VIRTUAL_IO_ADDRESS flag gone --
> >
> > OK, pushed with a minror change. I've marked DSP addresses as IOMEM.
>
> Are those marked as IOMEM() already in
> arch/arm/plat-omap/include/mach/hardware.h ?
No, but they could since it does not change the offset. Marking anything
OMAP1_IO_ADDRESS would require grepping for that register naturally..
Tony
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2008-09-24 14:43 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-23 15:23 [PATCH] Temporary fix to boot OMAP1 based boards Arun KS
2008-09-23 22:43 ` Felipe Balbi
2008-09-24 4:50 ` Arun KS
2008-09-24 3:51 ` Hiroshi DOYU
2008-09-24 7:05 ` Arun KS
2008-09-24 7:12 ` Tony Lindgren
2008-09-24 8:00 ` Tony Lindgren
2008-09-24 8:03 ` Paul Walmsley
2008-09-24 8:06 ` Tony Lindgren
2008-09-24 8:08 ` Paul Walmsley
2008-09-24 8:34 ` Tony Lindgren
2008-09-24 9:03 ` Arun KS
2008-09-24 14:06 ` Paul Walmsley
2008-09-24 14:27 ` Tony Lindgren
2008-09-24 14:35 ` Paul Walmsley
2008-09-24 14:43 ` Tony Lindgren
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox