* [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation
@ 2013-08-07 5:52 Simon Glass
2013-08-07 16:20 ` Stephen Warren
0 siblings, 1 reply; 11+ messages in thread
From: Simon Glass @ 2013-08-07 5:52 UTC (permalink / raw)
To: u-boot
Tegra recently moved to the new I2C framework, which sets up I2C prior to
relocation, and prior to calling i2c_init_board(). This causes a crash on
Tegra boards.
note:
There are many ways to fix this. I believe this is one. It disables i2c_init()
until relocation is complete. I have been unable to test it so far due to
problems getting my Seaboard to work. I will try another Tegra board, but
send this for comment in the meantime.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
drivers/i2c/tegra_i2c.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/i2c/tegra_i2c.c b/drivers/i2c/tegra_i2c.c
index 9ac3969..9847cf1 100644
--- a/drivers/i2c/tegra_i2c.c
+++ b/drivers/i2c/tegra_i2c.c
@@ -453,6 +453,10 @@ void i2c_init_board(void)
static void tegra_i2c_init(struct i2c_adapter *adap, int speed, int slaveaddr)
{
+ /* No i2c support prior to relocation */
+ if (!(gd->flags & GD_FLG_RELOC))
+ return;
+
/* This will override the speed selected in the fdt for that port */
debug("i2c_init(speed=%u, slaveaddr=0x%x)\n", speed, slaveaddr);
i2c_set_bus_speed(speed);
--
1.8.3
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation
2013-08-07 5:52 [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation Simon Glass
@ 2013-08-07 16:20 ` Stephen Warren
2013-08-07 21:03 ` Simon Glass
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Stephen Warren @ 2013-08-07 16:20 UTC (permalink / raw)
To: u-boot
On 08/06/2013 11:52 PM, Simon Glass wrote:
> Tegra recently moved to the new I2C framework, which sets up I2C prior to
> relocation, and prior to calling i2c_init_board(). This causes a crash on
> Tegra boards.
>
> note:
>
> There are many ways to fix this. I believe this is one. It disables i2c_init()
> until relocation is complete. I have been unable to test it so far due to
> problems getting my Seaboard to work. I will try another Tegra board, but
> send this for comment in the meantime.
Tested-by: Stephen Warren <swarren@nvidia.com>
(On Beaver and Dalmore, tested booting to U-Boot command prompt followed
by "i2c dev 0; i2c probe")
Note: I believe this is an enormous hack that hacks around the problem
of dynamic device initialization just not being well thought out
relative to the restrictions of U-Boot's various boot stages. I'd still
prefer an outright revert of the broken code.
In other words, tegra_i2c_init() simply shouldn't be called at the wrong
time; it shouldn't have to handle being called at the wrong time and
null itself out when that happens.
However, if this is what it takes to get U-Boot working again, then
let's apply it ASAP.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation
2013-08-07 16:20 ` Stephen Warren
@ 2013-08-07 21:03 ` Simon Glass
2013-08-09 23:17 ` Stephen Warren
2013-08-13 21:12 ` Tom Rini
2 siblings, 0 replies; 11+ messages in thread
From: Simon Glass @ 2013-08-07 21:03 UTC (permalink / raw)
To: u-boot
Hi Stephen,
On Wed, Aug 7, 2013 at 10:20 AM, Stephen Warren <swarren@wwwdotorg.org>wrote:
> On 08/06/2013 11:52 PM, Simon Glass wrote:
> > Tegra recently moved to the new I2C framework, which sets up I2C prior to
> > relocation, and prior to calling i2c_init_board(). This causes a crash on
> > Tegra boards.
> >
> > note:
> >
> > There are many ways to fix this. I believe this is one. It disables
> i2c_init()
> > until relocation is complete. I have been unable to test it so far due to
> > problems getting my Seaboard to work. I will try another Tegra board, but
> > send this for comment in the meantime.
>
> Tested-by: Stephen Warren <swarren@nvidia.com>
>
> (On Beaver and Dalmore, tested booting to U-Boot command prompt followed
> by "i2c dev 0; i2c probe")
>
> Note: I believe this is an enormous hack that hacks around the problem
> of dynamic device initialization just not being well thought out
> relative to the restrictions of U-Boot's various boot stages. I'd still
> prefer an outright revert of the broken code.
>
> In other words, tegra_i2c_init() simply shouldn't be called at the wrong
> time; it shouldn't have to handle being called at the wrong time and
> null itself out when that happens.
>
> However, if this is what it takes to get U-Boot working again, then
> let's apply it ASAP.
>
Fair enough.
Restricting my comments to I2C only, I think that we could have (at least
until driver model happens) an I2C init for each driver (in this case it is
i2c_init_board() that is called by the I2C subsystem twice during init
(once from board_init_f() and once from board_init_r()). The i2c_init()
call is odd because it does an init of a single I2C bus, which isn't really
necessary for most hardware. But I'm not sure it is worth worrying about
this until we have driver model.
Regards,
Simon
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation
2013-08-07 16:20 ` Stephen Warren
2013-08-07 21:03 ` Simon Glass
@ 2013-08-09 23:17 ` Stephen Warren
2013-08-10 4:03 ` Simon Glass
2013-08-13 21:12 ` Tom Rini
2 siblings, 1 reply; 11+ messages in thread
From: Stephen Warren @ 2013-08-09 23:17 UTC (permalink / raw)
To: u-boot
On 08/07/2013 10:20 AM, Stephen Warren wrote:
> On 08/06/2013 11:52 PM, Simon Glass wrote:
>> Tegra recently moved to the new I2C framework, which sets up I2C prior to
>> relocation, and prior to calling i2c_init_board(). This causes a crash on
>> Tegra boards.
>>
>> note:
>>
>> There are many ways to fix this. I believe this is one. It disables i2c_init()
>> until relocation is complete. I have been unable to test it so far due to
>> problems getting my Seaboard to work. I will try another Tegra board, but
>> send this for comment in the meantime.
>
> Tested-by: Stephen Warren <swarren@nvidia.com>
>
> (On Beaver and Dalmore, tested booting to U-Boot command prompt followed
> by "i2c dev 0; i2c probe")
>
> Note: I believe this is an enormous hack that hacks around the problem
> of dynamic device initialization just not being well thought out
> relative to the restrictions of U-Boot's various boot stages. I'd still
> prefer an outright revert of the broken code.
>
> In other words, tegra_i2c_init() simply shouldn't be called at the wrong
> time; it shouldn't have to handle being called at the wrong time and
> null itself out when that happens.
>
> However, if this is what it takes to get U-Boot working again, then
> let's apply it ASAP.
This doesn't seem to have been applied yet. Are you expecting this to go
through the main U-boot Tree, I2C tree, or Tegra tree? I just noticed
that you only CC'd the Tegra maintainer...
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation
2013-08-09 23:17 ` Stephen Warren
@ 2013-08-10 4:03 ` Simon Glass
2013-08-11 1:21 ` Tom Warren
0 siblings, 1 reply; 11+ messages in thread
From: Simon Glass @ 2013-08-10 4:03 UTC (permalink / raw)
To: u-boot
+Tom Rini
Hi Stephen,
On Fri, Aug 9, 2013 at 5:17 PM, Stephen Warren <swarren@wwwdotorg.org>wrote:
> On 08/07/2013 10:20 AM, Stephen Warren wrote:
> > On 08/06/2013 11:52 PM, Simon Glass wrote:
> >> Tegra recently moved to the new I2C framework, which sets up I2C prior
> to
> >> relocation, and prior to calling i2c_init_board(). This causes a crash
> on
> >> Tegra boards.
> >>
> >> note:
> >>
> >> There are many ways to fix this. I believe this is one. It disables
> i2c_init()
> >> until relocation is complete. I have been unable to test it so far due
> to
> >> problems getting my Seaboard to work. I will try another Tegra board,
> but
> >> send this for comment in the meantime.
> >
> > Tested-by: Stephen Warren <swarren@nvidia.com>
> >
> > (On Beaver and Dalmore, tested booting to U-Boot command prompt followed
> > by "i2c dev 0; i2c probe")
> >
> > Note: I believe this is an enormous hack that hacks around the problem
> > of dynamic device initialization just not being well thought out
> > relative to the restrictions of U-Boot's various boot stages. I'd still
> > prefer an outright revert of the broken code.
> >
> > In other words, tegra_i2c_init() simply shouldn't be called at the wrong
> > time; it shouldn't have to handle being called at the wrong time and
> > null itself out when that happens.
> >
> > However, if this is what it takes to get U-Boot working again, then
> > let's apply it ASAP.
>
> This doesn't seem to have been applied yet. Are you expecting this to go
> through the main U-boot Tree, I2C tree, or Tegra tree? I just noticed
> that you only CC'd the Tegra maintainer...
>
>
I put tegra: on the front expecting it to go that way, but it doesn't
matter. Also your comments did not exactly represent a glowing
recommendation.
Tom (Rini) are you willing to pick this up as a bug fix please?
Regards,
Simon
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation
2013-08-10 4:03 ` Simon Glass
@ 2013-08-11 1:21 ` Tom Warren
2013-08-13 19:34 ` Simon Glass
0 siblings, 1 reply; 11+ messages in thread
From: Tom Warren @ 2013-08-11 1:21 UTC (permalink / raw)
To: u-boot
Simon,
From: sjg@google.com [mailto:sjg at google.com] On Behalf Of Simon Glass
Sent: Friday, August 09, 2013 9:04 PM
To: Stephen Warren
Cc: U-Boot Mailing List; Tom Warren; Stephen Warren; trini at ti.com
Subject: Re: [PATCH] RFC: tegra: Avoid using I2C prior to relocation
+Tom Rini
Hi Stephen,
On Fri, Aug 9, 2013 at 5:17 PM, Stephen Warren <swarren at wwwdotorg.org<mailto:swarren@wwwdotorg.org>> wrote:
On 08/07/2013 10:20 AM, Stephen Warren wrote:
> On 08/06/2013 11:52 PM, Simon Glass wrote:
>> Tegra recently moved to the new I2C framework, which sets up I2C prior to
>> relocation, and prior to calling i2c_init_board(). This causes a crash on
>> Tegra boards.
>>
>> note:
>>
>> There are many ways to fix this. I believe this is one. It disables i2c_init()
>> until relocation is complete. I have been unable to test it so far due to
>> problems getting my Seaboard to work. I will try another Tegra board, but
>> send this for comment in the meantime.
>
> Tested-by: Stephen Warren <swarren at nvidia.com<mailto:swarren@nvidia.com>>
>
> (On Beaver and Dalmore, tested booting to U-Boot command prompt followed
> by "i2c dev 0; i2c probe")
>
> Note: I believe this is an enormous hack that hacks around the problem
> of dynamic device initialization just not being well thought out
> relative to the restrictions of U-Boot's various boot stages. I'd still
> prefer an outright revert of the broken code.
>
> In other words, tegra_i2c_init() simply shouldn't be called at the wrong
> time; it shouldn't have to handle being called at the wrong time and
> null itself out when that happens.
>
> However, if this is what it takes to get U-Boot working again, then
> let's apply it ASAP.
This doesn't seem to have been applied yet. Are you expecting this to go
through the main U-boot Tree, I2C tree, or Tegra tree? I just noticed
that you only CC'd the Tegra maintainer...
I put tegra: on the front expecting it to go that way, but it doesn't matter. Also your comments did not exactly represent a glowing recommendation.
[Tom] It's still marked RFC - doesn't that have to go away before anyone can pick it up / apply it?
Tom (Rini) are you willing to pick this up as a bug fix please?
Regards,
Simon
--
nvpublic
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation
2013-08-11 1:21 ` Tom Warren
@ 2013-08-13 19:34 ` Simon Glass
2013-08-13 19:42 ` Stephen Warren
0 siblings, 1 reply; 11+ messages in thread
From: Simon Glass @ 2013-08-13 19:34 UTC (permalink / raw)
To: u-boot
Hi Tom,
On Sat, Aug 10, 2013 at 7:21 PM, Tom Warren <TWarren@nvidia.com> wrote:
>
> Simon,
>
>
>
> From: sjg at google.com [mailto:sjg at google.com] On Behalf Of Simon Glass
> Sent: Friday, August 09, 2013 9:04 PM
> To: Stephen Warren
> Cc: U-Boot Mailing List; Tom Warren; Stephen Warren; trini at ti.com
> Subject: Re: [PATCH] RFC: tegra: Avoid using I2C prior to relocation
>
>
>
> +Tom Rini
>
>
>
> Hi Stephen,
>
>
>
> On Fri, Aug 9, 2013 at 5:17 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
>
> On 08/07/2013 10:20 AM, Stephen Warren wrote:
> > On 08/06/2013 11:52 PM, Simon Glass wrote:
> >> Tegra recently moved to the new I2C framework, which sets up I2C prior to
> >> relocation, and prior to calling i2c_init_board(). This causes a crash on
> >> Tegra boards.
> >>
> >> note:
> >>
> >> There are many ways to fix this. I believe this is one. It disables i2c_init()
> >> until relocation is complete. I have been unable to test it so far due to
> >> problems getting my Seaboard to work. I will try another Tegra board, but
> >> send this for comment in the meantime.
> >
> > Tested-by: Stephen Warren <swarren@nvidia.com>
> >
> > (On Beaver and Dalmore, tested booting to U-Boot command prompt followed
> > by "i2c dev 0; i2c probe")
> >
> > Note: I believe this is an enormous hack that hacks around the problem
> > of dynamic device initialization just not being well thought out
> > relative to the restrictions of U-Boot's various boot stages. I'd still
> > prefer an outright revert of the broken code.
> >
> > In other words, tegra_i2c_init() simply shouldn't be called at the wrong
> > time; it shouldn't have to handle being called at the wrong time and
> > null itself out when that happens.
> >
> > However, if this is what it takes to get U-Boot working again, then
> > let's apply it ASAP.
>
> This doesn't seem to have been applied yet. Are you expecting this to go
> through the main U-boot Tree, I2C tree, or Tegra tree? I just noticed
> that you only CC'd the Tegra maintainer...
>
>
>
> I put tegra: on the front expecting it to go that way, but it doesn't matter. Also your comments did not exactly represent a glowing recommendation.
>
> [Tom] It?s still marked RFC ? doesn?t that have to go away before anyone can pick it up / apply it?
Sorry, I missed this in first reading due to the quoting. I will
re-issue without RFC.
Regards,
Simon
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation
2013-08-13 19:34 ` Simon Glass
@ 2013-08-13 19:42 ` Stephen Warren
0 siblings, 0 replies; 11+ messages in thread
From: Stephen Warren @ 2013-08-13 19:42 UTC (permalink / raw)
To: u-boot
On 08/13/2013 01:34 PM, Simon Glass wrote:
> Hi Tom,
>
> On Sat, Aug 10, 2013 at 7:21 PM, Tom Warren <TWarren@nvidia.com> wrote:
>>
>> Simon,
>>
>> From: sjg at google.com [mailto:sjg at google.com] On Behalf Of Simon Glass
...
>> I put tegra: on the front expecting it to go that way, but it doesn't matter. Also your comments did not exactly represent a glowing recommendation.
>>
>> [Tom] It?s still marked RFC ? doesn?t that have to go away before anyone can pick it up / apply it?
>
> Sorry, I missed this in first reading due to the quoting. I will
> re-issue without RFC.
If that's the only change, you hardly need to repost it to edit the
patch subject; there are many ways of fixing that when applying the patch...
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation
2013-08-07 16:20 ` Stephen Warren
2013-08-07 21:03 ` Simon Glass
2013-08-09 23:17 ` Stephen Warren
@ 2013-08-13 21:12 ` Tom Rini
2013-08-14 15:59 ` Stephen Warren
2 siblings, 1 reply; 11+ messages in thread
From: Tom Rini @ 2013-08-13 21:12 UTC (permalink / raw)
To: u-boot
On Wed, Aug 07, 2013 at 10:20:01AM -0600, Stephen Warren wrote:
> On 08/06/2013 11:52 PM, Simon Glass wrote:
> > Tegra recently moved to the new I2C framework, which sets up I2C prior to
> > relocation, and prior to calling i2c_init_board(). This causes a crash on
> > Tegra boards.
> >
> > note:
> >
> > There are many ways to fix this. I believe this is one. It disables i2c_init()
> > until relocation is complete. I have been unable to test it so far due to
> > problems getting my Seaboard to work. I will try another Tegra board, but
> > send this for comment in the meantime.
>
> Tested-by: Stephen Warren <swarren@nvidia.com>
With a hand-tweaked commit message, applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130813/b9c19a05/attachment.pgp>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation
2013-08-13 21:12 ` Tom Rini
@ 2013-08-14 15:59 ` Stephen Warren
2013-08-14 16:02 ` Simon Glass
0 siblings, 1 reply; 11+ messages in thread
From: Stephen Warren @ 2013-08-14 15:59 UTC (permalink / raw)
To: u-boot
On 08/13/2013 03:12 PM, Tom Rini wrote:
> On Wed, Aug 07, 2013 at 10:20:01AM -0600, Stephen Warren wrote:
>> On 08/06/2013 11:52 PM, Simon Glass wrote:
>>> Tegra recently moved to the new I2C framework, which sets up
>>> I2C prior to relocation, and prior to calling i2c_init_board().
>>> This causes a crash on Tegra boards.
>>>
>>> note:
>>>
>>> There are many ways to fix this. I believe this is one. It
>>> disables i2c_init() until relocation is complete. I have been
>>> unable to test it so far due to problems getting my Seaboard to
>>> work. I will try another Tegra board, but send this for comment
>>> in the meantime.
>>
>> Tested-by: Stephen Warren <swarren@nvidia.com>
>
> With a hand-tweaked commit message, applied to u-boot/master,
> thanks!
Thanks!
For the record, I tested u-boot.git/master commit:
cdce889 tegra: Avoid using I2C prior to relocation
on Beaver, and booted a kernel both from SD card and over USB
Ethernet, and both cases worked fine. So, we have a known-good commit
for any future bisects:-)
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation
2013-08-14 15:59 ` Stephen Warren
@ 2013-08-14 16:02 ` Simon Glass
0 siblings, 0 replies; 11+ messages in thread
From: Simon Glass @ 2013-08-14 16:02 UTC (permalink / raw)
To: u-boot
Hi Stephen,
On Wed, Aug 14, 2013 at 9:59 AM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 08/13/2013 03:12 PM, Tom Rini wrote:
>> On Wed, Aug 07, 2013 at 10:20:01AM -0600, Stephen Warren wrote:
>>> On 08/06/2013 11:52 PM, Simon Glass wrote:
>>>> Tegra recently moved to the new I2C framework, which sets up
>>>> I2C prior to relocation, and prior to calling i2c_init_board().
>>>> This causes a crash on Tegra boards.
>>>>
>>>> note:
>>>>
>>>> There are many ways to fix this. I believe this is one. It
>>>> disables i2c_init() until relocation is complete. I have been
>>>> unable to test it so far due to problems getting my Seaboard to
>>>> work. I will try another Tegra board, but send this for comment
>>>> in the meantime.
>>>
>>> Tested-by: Stephen Warren <swarren@nvidia.com>
>>
>> With a hand-tweaked commit message, applied to u-boot/master,
>> thanks!
>
> Thanks!
>
> For the record, I tested u-boot.git/master commit:
>
> cdce889 tegra: Avoid using I2C prior to relocation
>
> on Beaver, and booted a kernel both from SD card and over USB
> Ethernet, and both cases worked fine. So, we have a known-good commit
> for any future bisects:-)
OK that's good, thanks.
Regards,
Simon
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2013-08-14 16:02 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-07 5:52 [U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation Simon Glass
2013-08-07 16:20 ` Stephen Warren
2013-08-07 21:03 ` Simon Glass
2013-08-09 23:17 ` Stephen Warren
2013-08-10 4:03 ` Simon Glass
2013-08-11 1:21 ` Tom Warren
2013-08-13 19:34 ` Simon Glass
2013-08-13 19:42 ` Stephen Warren
2013-08-13 21:12 ` Tom Rini
2013-08-14 15:59 ` Stephen Warren
2013-08-14 16:02 ` Simon Glass
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.