Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-24 Thread Paul Walmsley
On Thu, 23 Apr 2009, Tony Lindgren wrote:

 * Paul Walmsley p...@pwsan.com [090423 20:13]:
  On Thu, 23 Apr 2009, Tony Lindgren wrote:
  
   * Russell King - ARM Linux li...@arm.linux.org.uk [090423 15:26]:
On Thu, Apr 23, 2009 at 11:00:31AM -0700, Tony Lindgren wrote:
 * Paul Walmsley p...@pwsan.com [090423 01:35]:
  Hello Russell,
  
  On Thu, 23 Apr 2009, Russell King - ARM Linux wrote:
  
   On Wed, Apr 22, 2009 at 08:01:29PM -0600, Paul Walmsley wrote:
The patch also renames clk_init_one() to clk_preinit() to
distinguish its function from clk_init() and the individual 
struct clk
init functions.
   
   That's rather unnecessary.  'clk_init_one' is already unique.  In 
   the
   long run, it's clk_init that needs to go.
  
  Even if clk_init() were to disappear, the struct clk .init function 
  pointer would still be present.  clk-init() performs a very 
  different 
  kind of initialization than clk_init_one().
 
 I'm OK doing the rename in this fix. The original naming can cause
 confusion while reading the code.

Well I'm not, and I want to discuss it some more.  And I'm sending Linus
a pull request tonight, so I'm dropping the OMAP stuff from that.
   
   OK. Paul, can you please separate out the rename part into a separate
   patch so we only have a minimal fix  then repost it here?
   
   That way we'll get the necessary fixes in and you guys can schedule
   other changes for next merge window.
  
  The omap-clock-fixes branch has been updated to remove the rename.
  
  Not that this should stop the discussion, but at least this should no 
  longer prevent these needed fixes from going upstream.
 
 Care to post the updated patch here too? Temporay git branches are 
 not too readable by most people..

Here you go:

- Paul


From: Paul Walmsley p...@pwsan.com
Date: Wed, 22 Apr 2009 19:48:53 -0600
Subject: [PATCH] OMAP2xxx clock: pre-initialize struct clks early

Commit 3f0a820c4c0b4670fb5f164baa5582e23c2ef118 breaks OMAP2xxx boot
during initial propagate_rate() on osc_ck and sys_ck.  Fix by
pre-initializing all struct clks before running any other clock init
code.  Incorporates review comments from Russell King
rmk+ker...@arm.linux.org.uk.

Resolves

1Unable to handle kernel NULL pointer dereference at virtual address 
1pgd = c0004000
1[] *pgd=
Internal error: Oops: 5 [#1]
Modules linked in:
CPU: 0Not tainted  (2.6.29-omap1 #37)
PC is at propagate_rate+0x10/0x60
LR is at omap2_clk_init+0x30/0x218
...

Signed-off-by: Paul Walmsley p...@pwsan.com
Tested-by: Jarkko Nikula jarkko.nik...@nokia.com
Cc: Russell King rmk+ker...@arm.linux.org.uk
---
 arch/arm/mach-omap2/clock24xx.c |6 +++---
 arch/arm/plat-omap/clock.c  |7 +++
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
index 1e839c5..984fb86 100644
--- a/arch/arm/mach-omap2/clock24xx.c
+++ b/arch/arm/mach-omap2/clock24xx.c
@@ -720,14 +720,14 @@ int __init omap2_clk_init(void)
 
clk_init(omap2_clk_functions);
 
+   for (c = omap24xx_clks; c  omap24xx_clks + ARRAY_SIZE(omap24xx_clks); 
c++)
+   clk_init_one(c-lk.clk);
+
osc_ck.rate = omap2_osc_clk_recalc(osc_ck);
propagate_rate(osc_ck);
sys_ck.rate = omap2_sys_clk_recalc(sys_ck);
propagate_rate(sys_ck);
 
-   for (c = omap24xx_clks; c  omap24xx_clks + ARRAY_SIZE(omap24xx_clks); 
c++)
-   clk_init_one(c-lk.clk);
-
cpu_mask = 0;
if (cpu_is_omap2420())
cpu_mask |= CK_242X;
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
index 2e06145..29efc27 100644
--- a/arch/arm/plat-omap/clock.c
+++ b/arch/arm/plat-omap/clock.c
@@ -239,6 +239,13 @@ void recalculate_root_clocks(void)
}
 }
 
+/**
+ * clk_init_one - initialize any fields in the struct clk before clk init
+ * @clk: struct clk * to initialize
+ *
+ * Initialize any struct clk fields needed before normal clk initialization
+ * can run.  No return value.
+ */
 void clk_init_one(struct clk *clk)
 {
INIT_LIST_HEAD(clk-children);
-- 
1.6.3.rc1.51.gea0b7

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


Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-24 Thread Tony Lindgren
* Paul Walmsley p...@pwsan.com [090423 23:29]:
 On Thu, 23 Apr 2009, Tony Lindgren wrote:
 
  * Paul Walmsley p...@pwsan.com [090423 20:13]:
   On Thu, 23 Apr 2009, Tony Lindgren wrote:
   
* Russell King - ARM Linux li...@arm.linux.org.uk [090423 15:26]:
 On Thu, Apr 23, 2009 at 11:00:31AM -0700, Tony Lindgren wrote:
  * Paul Walmsley p...@pwsan.com [090423 01:35]:
   Hello Russell,
   
   On Thu, 23 Apr 2009, Russell King - ARM Linux wrote:
   
On Wed, Apr 22, 2009 at 08:01:29PM -0600, Paul Walmsley wrote:
 The patch also renames clk_init_one() to clk_preinit() to
 distinguish its function from clk_init() and the individual 
 struct clk
 init functions.

That's rather unnecessary.  'clk_init_one' is already unique.  
In the
long run, it's clk_init that needs to go.
   
   Even if clk_init() were to disappear, the struct clk .init 
   function 
   pointer would still be present.  clk-init() performs a very 
   different 
   kind of initialization than clk_init_one().
  
  I'm OK doing the rename in this fix. The original naming can cause
  confusion while reading the code.
 
 Well I'm not, and I want to discuss it some more.  And I'm sending 
 Linus
 a pull request tonight, so I'm dropping the OMAP stuff from that.

OK. Paul, can you please separate out the rename part into a separate
patch so we only have a minimal fix  then repost it here?

That way we'll get the necessary fixes in and you guys can schedule
other changes for next merge window.
   
   The omap-clock-fixes branch has been updated to remove the rename.
   
   Not that this should stop the discussion, but at least this should no 
   longer prevent these needed fixes from going upstream.
  
  Care to post the updated patch here too? Temporay git branches are 
  not too readable by most people..
 
 Here you go:

Thanks, I've updated omap-fixes again and will post a new pull request.

Tony

 
 - Paul
 
 
 From: Paul Walmsley p...@pwsan.com
 Date: Wed, 22 Apr 2009 19:48:53 -0600
 Subject: [PATCH] OMAP2xxx clock: pre-initialize struct clks early
 
 Commit 3f0a820c4c0b4670fb5f164baa5582e23c2ef118 breaks OMAP2xxx boot
 during initial propagate_rate() on osc_ck and sys_ck.  Fix by
 pre-initializing all struct clks before running any other clock init
 code.  Incorporates review comments from Russell King
 rmk+ker...@arm.linux.org.uk.
 
 Resolves
 
 1Unable to handle kernel NULL pointer dereference at virtual address 
 
 1pgd = c0004000
 1[] *pgd=
 Internal error: Oops: 5 [#1]
 Modules linked in:
 CPU: 0Not tainted  (2.6.29-omap1 #37)
 PC is at propagate_rate+0x10/0x60
 LR is at omap2_clk_init+0x30/0x218
 ...
 
 Signed-off-by: Paul Walmsley p...@pwsan.com
 Tested-by: Jarkko Nikula jarkko.nik...@nokia.com
 Cc: Russell King rmk+ker...@arm.linux.org.uk
 ---
  arch/arm/mach-omap2/clock24xx.c |6 +++---
  arch/arm/plat-omap/clock.c  |7 +++
  2 files changed, 10 insertions(+), 3 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
 index 1e839c5..984fb86 100644
 --- a/arch/arm/mach-omap2/clock24xx.c
 +++ b/arch/arm/mach-omap2/clock24xx.c
 @@ -720,14 +720,14 @@ int __init omap2_clk_init(void)
  
   clk_init(omap2_clk_functions);
  
 + for (c = omap24xx_clks; c  omap24xx_clks + ARRAY_SIZE(omap24xx_clks); 
 c++)
 + clk_init_one(c-lk.clk);
 +
   osc_ck.rate = omap2_osc_clk_recalc(osc_ck);
   propagate_rate(osc_ck);
   sys_ck.rate = omap2_sys_clk_recalc(sys_ck);
   propagate_rate(sys_ck);
  
 - for (c = omap24xx_clks; c  omap24xx_clks + ARRAY_SIZE(omap24xx_clks); 
 c++)
 - clk_init_one(c-lk.clk);
 -
   cpu_mask = 0;
   if (cpu_is_omap2420())
   cpu_mask |= CK_242X;
 diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
 index 2e06145..29efc27 100644
 --- a/arch/arm/plat-omap/clock.c
 +++ b/arch/arm/plat-omap/clock.c
 @@ -239,6 +239,13 @@ void recalculate_root_clocks(void)
   }
  }
  
 +/**
 + * clk_init_one - initialize any fields in the struct clk before clk init
 + * @clk: struct clk * to initialize
 + *
 + * Initialize any struct clk fields needed before normal clk initialization
 + * can run.  No return value.
 + */
  void clk_init_one(struct clk *clk)
  {
   INIT_LIST_HEAD(clk-children);
 -- 
 1.6.3.rc1.51.gea0b7
 
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-23 Thread Russell King - ARM Linux
On Wed, Apr 22, 2009 at 08:01:29PM -0600, Paul Walmsley wrote:
 The patch also renames clk_init_one() to clk_preinit() to
 distinguish its function from clk_init() and the individual struct clk
 init functions.

That's rather unnecessary.  'clk_init_one' is already unique.  In the
long run, it's clk_init that needs to go.

  Incorporates review comments from Russell King
 li...@arm.linux.org.uk.

Please don't add this email address to git commit comments.  Thanks.
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-23 Thread Paul Walmsley
Hello Russell,

On Thu, 23 Apr 2009, Russell King - ARM Linux wrote:

 On Wed, Apr 22, 2009 at 08:01:29PM -0600, Paul Walmsley wrote:
  The patch also renames clk_init_one() to clk_preinit() to
  distinguish its function from clk_init() and the individual struct clk
  init functions.
 
 That's rather unnecessary.  'clk_init_one' is already unique.  In the
 long run, it's clk_init that needs to go.

Even if clk_init() were to disappear, the struct clk .init function 
pointer would still be present.  clk-init() performs a very different 
kind of initialization than clk_init_one().

   Incorporates review comments from Russell King
  li...@arm.linux.org.uk.
 
 Please don't add this email address to git commit comments.  Thanks.

Updated in the git branch to rmk+kernel.


- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-23 Thread Tony Lindgren
* Paul Walmsley p...@pwsan.com [090423 01:35]:
 Hello Russell,
 
 On Thu, 23 Apr 2009, Russell King - ARM Linux wrote:
 
  On Wed, Apr 22, 2009 at 08:01:29PM -0600, Paul Walmsley wrote:
   The patch also renames clk_init_one() to clk_preinit() to
   distinguish its function from clk_init() and the individual struct clk
   init functions.
  
  That's rather unnecessary.  'clk_init_one' is already unique.  In the
  long run, it's clk_init that needs to go.
 
 Even if clk_init() were to disappear, the struct clk .init function 
 pointer would still be present.  clk-init() performs a very different 
 kind of initialization than clk_init_one().

I'm OK doing the rename in this fix. The original naming can cause
confusion while reading the code.

Tony
 
Incorporates review comments from Russell King
   li...@arm.linux.org.uk.
  
  Please don't add this email address to git commit comments.  Thanks.
 
 Updated in the git branch to rmk+kernel.
 
 
 - Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-23 Thread Russell King - ARM Linux
On Thu, Apr 23, 2009 at 11:00:31AM -0700, Tony Lindgren wrote:
 * Paul Walmsley p...@pwsan.com [090423 01:35]:
  Hello Russell,
  
  On Thu, 23 Apr 2009, Russell King - ARM Linux wrote:
  
   On Wed, Apr 22, 2009 at 08:01:29PM -0600, Paul Walmsley wrote:
The patch also renames clk_init_one() to clk_preinit() to
distinguish its function from clk_init() and the individual struct clk
init functions.
   
   That's rather unnecessary.  'clk_init_one' is already unique.  In the
   long run, it's clk_init that needs to go.
  
  Even if clk_init() were to disappear, the struct clk .init function 
  pointer would still be present.  clk-init() performs a very different 
  kind of initialization than clk_init_one().
 
 I'm OK doing the rename in this fix. The original naming can cause
 confusion while reading the code.

Well I'm not, and I want to discuss it some more.  And I'm sending Linus
a pull request tonight, so I'm dropping the OMAP stuff from that.
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-23 Thread Tony Lindgren
* Russell King - ARM Linux li...@arm.linux.org.uk [090423 15:26]:
 On Thu, Apr 23, 2009 at 11:00:31AM -0700, Tony Lindgren wrote:
  * Paul Walmsley p...@pwsan.com [090423 01:35]:
   Hello Russell,
   
   On Thu, 23 Apr 2009, Russell King - ARM Linux wrote:
   
On Wed, Apr 22, 2009 at 08:01:29PM -0600, Paul Walmsley wrote:
 The patch also renames clk_init_one() to clk_preinit() to
 distinguish its function from clk_init() and the individual struct clk
 init functions.

That's rather unnecessary.  'clk_init_one' is already unique.  In the
long run, it's clk_init that needs to go.
   
   Even if clk_init() were to disappear, the struct clk .init function 
   pointer would still be present.  clk-init() performs a very different 
   kind of initialization than clk_init_one().
  
  I'm OK doing the rename in this fix. The original naming can cause
  confusion while reading the code.
 
 Well I'm not, and I want to discuss it some more.  And I'm sending Linus
 a pull request tonight, so I'm dropping the OMAP stuff from that.

OK. Paul, can you please separate out the rename part into a separate
patch so we only have a minimal fix  then repost it here?

That way we'll get the necessary fixes in and you guys can schedule
other changes for next merge window.

Thanks,

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-23 Thread Paul Walmsley
On Thu, 23 Apr 2009, Tony Lindgren wrote:

 * Russell King - ARM Linux li...@arm.linux.org.uk [090423 15:26]:
  On Thu, Apr 23, 2009 at 11:00:31AM -0700, Tony Lindgren wrote:
   * Paul Walmsley p...@pwsan.com [090423 01:35]:
Hello Russell,

On Thu, 23 Apr 2009, Russell King - ARM Linux wrote:

 On Wed, Apr 22, 2009 at 08:01:29PM -0600, Paul Walmsley wrote:
  The patch also renames clk_init_one() to clk_preinit() to
  distinguish its function from clk_init() and the individual struct 
  clk
  init functions.
 
 That's rather unnecessary.  'clk_init_one' is already unique.  In the
 long run, it's clk_init that needs to go.

Even if clk_init() were to disappear, the struct clk .init function 
pointer would still be present.  clk-init() performs a very different 
kind of initialization than clk_init_one().
   
   I'm OK doing the rename in this fix. The original naming can cause
   confusion while reading the code.
  
  Well I'm not, and I want to discuss it some more.  And I'm sending Linus
  a pull request tonight, so I'm dropping the OMAP stuff from that.
 
 OK. Paul, can you please separate out the rename part into a separate
 patch so we only have a minimal fix  then repost it here?
 
 That way we'll get the necessary fixes in and you guys can schedule
 other changes for next merge window.

The omap-clock-fixes branch has been updated to remove the rename.

Not that this should stop the discussion, but at least this should no 
longer prevent these needed fixes from going upstream.


- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-23 Thread Tony Lindgren
* Paul Walmsley p...@pwsan.com [090423 20:13]:
 On Thu, 23 Apr 2009, Tony Lindgren wrote:
 
  * Russell King - ARM Linux li...@arm.linux.org.uk [090423 15:26]:
   On Thu, Apr 23, 2009 at 11:00:31AM -0700, Tony Lindgren wrote:
* Paul Walmsley p...@pwsan.com [090423 01:35]:
 Hello Russell,
 
 On Thu, 23 Apr 2009, Russell King - ARM Linux wrote:
 
  On Wed, Apr 22, 2009 at 08:01:29PM -0600, Paul Walmsley wrote:
   The patch also renames clk_init_one() to clk_preinit() to
   distinguish its function from clk_init() and the individual 
   struct clk
   init functions.
  
  That's rather unnecessary.  'clk_init_one' is already unique.  In 
  the
  long run, it's clk_init that needs to go.
 
 Even if clk_init() were to disappear, the struct clk .init function 
 pointer would still be present.  clk-init() performs a very 
 different 
 kind of initialization than clk_init_one().

I'm OK doing the rename in this fix. The original naming can cause
confusion while reading the code.
   
   Well I'm not, and I want to discuss it some more.  And I'm sending Linus
   a pull request tonight, so I'm dropping the OMAP stuff from that.
  
  OK. Paul, can you please separate out the rename part into a separate
  patch so we only have a minimal fix  then repost it here?
  
  That way we'll get the necessary fixes in and you guys can schedule
  other changes for next merge window.
 
 The omap-clock-fixes branch has been updated to remove the rename.
 
 Not that this should stop the discussion, but at least this should no 
 longer prevent these needed fixes from going upstream.

Care to post the updated patch here too? Temporay git branches are 
not too readable by most people..

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-22 Thread Paul Walmsley
Hello Russell,

On Tue, 21 Apr 2009, Russell King - ARM Linux wrote:

 On Tue, Apr 14, 2009 at 12:31:47PM -0600, Paul Walmsley wrote:
  On Tue, 14 Apr 2009, Paul Walmsley wrote:
   Commit 3f0a820c4c0b4670fb5f164baa5582e23c2ef118 breaks OMAP2xxx boot
   during initial propagate_rate() on osc_ck and sys_ck.  Fix by calling
   clk_init_one() for these clocks first.
 
 A better fix would be to move the loop initializing all clocks to be
 immediately after the call to clk_init().

thanks for the comment.  Here's a revised patch:


- Paul

From: Paul Walmsley p...@pwsan.com
Date: Wed, 22 Apr 2009 19:48:53 -0600
Subject: [PATCH] OMAP2xxx clock: pre-initialize struct clks early

Commit 3f0a820c4c0b4670fb5f164baa5582e23c2ef118 breaks OMAP2xxx boot
during initial propagate_rate() on osc_ck and sys_ck.  Fix by
pre-initializing all struct clks before running any other clock init
code.  The patch also renames clk_init_one() to clk_preinit() to
distinguish its function from clk_init() and the individual struct clk
init functions.  Incorporates review comments from Russell King
li...@arm.linux.org.uk.

Resolves

1Unable to handle kernel NULL pointer dereference at virtual address 
1pgd = c0004000
1[] *pgd=
Internal error: Oops: 5 [#1]
Modules linked in:
CPU: 0Not tainted  (2.6.29-omap1 #37)
PC is at propagate_rate+0x10/0x60
LR is at omap2_clk_init+0x30/0x218
...

Signed-off-by: Paul Walmsley p...@pwsan.com
Tested-by: Jarkko Nikula jarkko.nik...@nokia.com
Cc: Russell King li...@arm.linux.org.uk
---
 arch/arm/mach-omap1/clock.c |2 +-
 arch/arm/mach-omap2/clock24xx.c |6 +++---
 arch/arm/mach-omap2/clock34xx.c |2 +-
 arch/arm/plat-omap/clock.c  |9 -
 arch/arm/plat-omap/include/mach/clock.h |2 +-
 5 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c
index dafe4f7..571d33d 100644
--- a/arch/arm/mach-omap1/clock.c
+++ b/arch/arm/mach-omap1/clock.c
@@ -775,7 +775,7 @@ int __init omap1_clk_init(void)
arm_idlect1_mask = ~0;
 
for (c = omap_clks; c  omap_clks + ARRAY_SIZE(omap_clks); c++)
-   clk_init_one(c-lk.clk);
+   clk_preinit(c-lk.clk);
 
cpu_mask = 0;
if (cpu_is_omap16xx())
diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
index 1e839c5..61dcc22 100644
--- a/arch/arm/mach-omap2/clock24xx.c
+++ b/arch/arm/mach-omap2/clock24xx.c
@@ -720,14 +720,14 @@ int __init omap2_clk_init(void)
 
clk_init(omap2_clk_functions);
 
+   for (c = omap24xx_clks; c  omap24xx_clks + ARRAY_SIZE(omap24xx_clks); 
c++)
+   clk_preinit(c-lk.clk);
+
osc_ck.rate = omap2_osc_clk_recalc(osc_ck);
propagate_rate(osc_ck);
sys_ck.rate = omap2_sys_clk_recalc(sys_ck);
propagate_rate(sys_ck);
 
-   for (c = omap24xx_clks; c  omap24xx_clks + ARRAY_SIZE(omap24xx_clks); 
c++)
-   clk_init_one(c-lk.clk);
-
cpu_mask = 0;
if (cpu_is_omap2420())
cpu_mask |= CK_242X;
diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
index 0a14dca..430c6a0 100644
--- a/arch/arm/mach-omap2/clock34xx.c
+++ b/arch/arm/mach-omap2/clock34xx.c
@@ -956,7 +956,7 @@ int __init omap2_clk_init(void)
clk_init(omap2_clk_functions);
 
for (c = omap34xx_clks; c  omap34xx_clks + ARRAY_SIZE(omap34xx_clks); 
c++)
-   clk_init_one(c-lk.clk);
+   clk_preinit(c-lk.clk);
 
for (c = omap34xx_clks; c  omap34xx_clks + ARRAY_SIZE(omap34xx_clks); 
c++)
if (c-cpu  cpu_clkflg) {
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
index 2e06145..508c96a 100644
--- a/arch/arm/plat-omap/clock.c
+++ b/arch/arm/plat-omap/clock.c
@@ -239,7 +239,14 @@ void recalculate_root_clocks(void)
}
 }
 
-void clk_init_one(struct clk *clk)
+/**
+ * clk_preinit - initialize any fields in the struct clk before clk init
+ * @clk: struct clk * to initialize
+ *
+ * Initialize any struct clk fields needed before normal clk initialization
+ * can run.  No return value.
+ */
+void clk_preinit(struct clk *clk)
 {
INIT_LIST_HEAD(clk-children);
 }
diff --git a/arch/arm/plat-omap/include/mach/clock.h 
b/arch/arm/plat-omap/include/mach/clock.h
index 073a2c5..793fbc0 100644
--- a/arch/arm/plat-omap/include/mach/clock.h
+++ b/arch/arm/plat-omap/include/mach/clock.h
@@ -118,8 +118,8 @@ struct clk_functions {
 
 extern unsigned int mpurate;
 
+extern void clk_preinit(struct clk *clk);
 extern int clk_init(struct clk_functions *custom_clocks);
-extern void clk_init_one(struct clk *clk);
 extern int clk_register(struct clk *clk);
 extern void clk_reparent(struct clk *child, struct clk *parent);
 extern void clk_unregister(struct clk *clk);
-- 
1.6.2.1.307.g91408

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to 

Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-21 Thread Russell King - ARM Linux
On Tue, Apr 14, 2009 at 12:31:47PM -0600, Paul Walmsley wrote:
 On Tue, 14 Apr 2009, Paul Walmsley wrote:
  Commit 3f0a820c4c0b4670fb5f164baa5582e23c2ef118 breaks OMAP2xxx boot
  during initial propagate_rate() on osc_ck and sys_ck.  Fix by calling
  clk_init_one() for these clocks first.

A better fix would be to move the loop initializing all clocks to be
immediately after the call to clk_init().
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-14 Thread Paul Walmsley

Modifying subject line since lists.arm.linux.org.uk mail server bounces 
subjects containing xxx.

- Paul

On Tue, 14 Apr 2009, Paul Walmsley wrote:

 Commit 3f0a820c4c0b4670fb5f164baa5582e23c2ef118 breaks OMAP2xxx boot
 during initial propagate_rate() on osc_ck and sys_ck.  Fix by calling
 clk_init_one() for these clocks first.
 
 Resolves
 
 1Unable to handle kernel NULL pointer dereference at virtual address 
 
 1pgd = c0004000
 1[] *pgd=
 Internal error: Oops: 5 [#1]
 Modules linked in:
 CPU: 0Not tainted  (2.6.29-omap1 #37)
 PC is at propagate_rate+0x10/0x60
 LR is at omap2_clk_init+0x30/0x218
 ...
 
 Signed-off-by: Paul Walmsley p...@pwsan.com
 Tested-by: Jarkko Nikula jarkko.nik...@nokia.com
 Cc: Russell King li...@arm.linux.org.uk
 ---
  arch/arm/mach-omap2/clock24xx.c |2 ++
  1 files changed, 2 insertions(+), 0 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
 index 1e839c5..3b7ecc6 100644
 --- a/arch/arm/mach-omap2/clock24xx.c
 +++ b/arch/arm/mach-omap2/clock24xx.c
 @@ -720,6 +720,8 @@ int __init omap2_clk_init(void)
  
   clk_init(omap2_clk_functions);
  
 + clk_init_one(osc_ck);
 + clk_init_one(sys_ck);
   osc_ck.rate = omap2_osc_clk_recalc(osc_ck);
   propagate_rate(osc_ck);
   sys_ck.rate = omap2_sys_clk_recalc(sys_ck);
 
 
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/7] OMAP24xx/25xx clock: init osc_ck, sys_ck internal lists early

2009-04-14 Thread Russell King - ARM Linux
On Tue, Apr 14, 2009 at 12:31:47PM -0600, Paul Walmsley wrote:
 Modifying subject line since lists.arm.linux.org.uk mail server bounces 
 subjects containing xxx.

And quite rightly too.
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html