From: "Pali Rohár" <pali@kernel.org>
To: u-boot@lists.denx.de
Subject: U-Boot i2c bus num 1 is broken on Nokia N900
Date: Mon, 26 Oct 2020 22:48:58 +0100 [thread overview]
Message-ID: <20201026214858.rowljynsc7vh2bjk@pali> (raw)
In-Reply-To: <948158e4-1c2c-9895-3c04-2a53198402f9@denx.de>
On Monday 27 April 2020 09:03:13 Heiko Schocher wrote:
> Hello Pali,
>
> Am 26.04.2020 um 01:54 schrieb Pali Roh?r:
> > Adding Hannes and Heiko to the loop, please look at this problem.
> >
> > On Saturday 25 April 2020 14:11:32 Pali Roh?r wrote:
> > > On Saturday 25 April 2020 07:00:58 Adam Ford wrote:
> > > > On Sat, Apr 25, 2020 at 6:50 AM Pali Roh?r <pali@kernel.org> wrote:
> > > > >
> > > > > On Saturday 25 April 2020 06:36:58 Adam Ford wrote:
> > > > > > On Sat, Apr 25, 2020 at 5:42 AM Pali Roh?r <pali@kernel.org> wrote:
> > > > > > >
> > > > > > > On Thursday 02 April 2020 20:42:31 Pali Roh?r wrote:
> > > > > > > > On Wednesday 01 April 2020 12:32:29 Merlijn Wajer wrote:
> > > > > > > > > Hi,
> > > > > > > > >
> > > > > > > > > On 01/04/2020 00:42, Pali Roh?r wrote:
> > > > > > > > > > On Wednesday 01 April 2020 00:35:07 Pali Roh?r wrote:
> > > > > > > > > > > This patch series contain fixes for Nokia RX-51 board (aka N900).
> > > > > > > > > > > After these changes it is possible to run U-Boot in qemu emulator again.
> > > > > > > > > > > And U-Boot can boot kernel image from RAM, eMMC or OneNAND memory without
> > > > > > > > > > > problem.
> > > > > > > > > >
> > > > > > > > > > But on real Nokia N900 device is U-Boot crashing in reboot loop.
> > > > > > > > > >
> > > > > > > > > > I do not have serial console for Nokia N900 to debug this issue, but
> > > > > > > > > > seems that it is related to OMAP I2C and OMAP HS MMC code. Problem is
> > > > > > > > > > that there is no crash and even no error in qemu emulator so I cannot
> > > > > > > > > > debug this issue.
> > > > > > > > > >
> > > > > > > > > > First problem is around /* reset lp5523 led */ code in rx51.c. On real
> > > > > > > > > > N900 device it generates repeating messages:
> > > > > > > > > >
> > > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > >
> > > > > > > > > > When I commented that few lines all these messages disappeared. So
> > > > > > > > > > problem is with OMAP I2C.
> > ...
> > > > > > > > > > I remember that somebody had serial jig for Nokia N900, could somebody
> > > > > > > > > > look at this reboot loop problem?
> > > > > > > > > >
> > > > > > > > > > And any idea how should be OMAP I2C configured in U-Boot to correctly
> > > > > > > > > > work?
> > > > > > > > > >
> > > > > > > > > > Maybe I will try to find some time to git bisect which change broke
> > > > > > > > > > U-Boot on real N900 hardware.
> > > > > > > > >
> > > > > > > > > Took latest u-boot master, applied patches and this is the result on
> > > > > > > > > serial (first part is NOLO booting, I think that can be ignored) [1].
> > > > > > > >
> > > > > > > > ...
> > > > > > > >
> > > > > > > > > U-Boot 2020.04-rc4-00033-g7dbafe0634-dirty (Apr 01 2020 - 12:15:47 +0200)
> > > > > > > > >
> > > > > > > > > OMAP3530-HS ES3.1, CPU-OPP2, L3-165MHz, Max CPU Clock 600 MHz
> > > > > > > > > Nokia RX-51 + LPDDR/OneNAND
> > > > > > > > > I2C: ready
> > > > > > > > > DRAM: 256 MiB
> > > > > > > > > NAND: 0 Bytes
> > > > > > > >
> > > > > > > > Looks like that something with NAND is broken.
>
> The board code in U-Boot is in a very old state... :-(
>
> > > > > > > >
> > > > > > > > > MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
> > > > > > > > > In: vga
> > > > > > > > > Out: vga
> > > > > > > > > Err: vga
> > > > > > > > > Timed out in wait_for_event: status=0100
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > Timed out in wait_for_event: status=0000
> > > > > > > > > Check if pads/pull-ups of bus are properly configured
> > > > > > > > > i2c_read (addr phase): pads on bus probably not configured (status=0x10)
> > > > > > > > > i2c_write: timed out writig last byte!
> > > > > > > >
> > > > > > > > These i2c errors are caused by
> > > > > > > >
> > > > > > > > /* reset lp5523 led */
> > > > > > > > i2c_set_bus_num(1);
>
> deprecated ... the board code needs cleanup ...
I converted code to CONFIG_DM_I2C and nothing was changed, issue is
still there...
> > > > > > > > state = 0xff;
> > > > > > > > i2c_write(0x32, 0x3d, 1, &state, 1);
> > > > > > > > i2c_set_bus_num(0);
> > > > > > > >
> > > > > > > > Is there anything which needs to be done to initialize i2c bus 1?
> > > > > > > > Because this code is working fine on older U-Boot version.
> > > > > > >
> > > > > > > Above code worked fine for U-Boot 2013.04, but in git version from
> > > > > > > January 2015 it prints above error messages.
> > > > > > >
> > > > > > > On on internet forums I see these error messages also from other OMAP3
> > > > > > > board, e.g. beagle board.
> > > > > > >
> > > > > > > Has somebody some working OMAP3 board? And can test if it works with
> > > > > > > recent version of U-Boot? I guess that above i2c problem would happen
> > > > > > > also on other OMAP3 boards.
> > > > > >
> > > > > > There was a conversion a while ago to dm_i2c, and I converted my board
> > > > > > to support using the device tree during the SPL phase, and whenever I
> > > > > > am aware any driver has driver model (DM) support, I try to convert my
> > > > > > board.
> > > > > >
> > > > > > I have a DM3730 and the last check I did was 2020.04-rc1, and it was working
> > > > >
> > > > > Ok, so it either OMAP3430 specific problem or N900 board specific
> > > > > problem. N900 does not use driver model.
> > > >
> > > > i have an OMAP3530 which is basically a 3430, and it works too. I am
> > > > guessing the issue is unique to the N900 or the fact that it's
> > > > high-security. Neither of my boards are HS parts. They are both GP.
> > >
> > > N900 is HS device, but I guess that should be caused by GP vs HS
> > > difference. Working i2c bus 0 and non-working i2c bus 1 could not be
> > > caused by GP vs HS difference. Also I guess that omap hs mmc would be
> > > same on GP and HS boards.
> > ...
> > > > > Before calling i2c_write(0x32, ...) I tried to call i2c_probe(0x32) and
> > > > > it returned error.
> > > > >
> > > > > If I tried to call "i2c dev 1" in U-Boot console, I got tons of errors
> > > > > and basically U-Boot stopped responding.
> > > > >
> > > > > So by above observation it looks like I2C bus num 1 does not work, but
> > > > > I2C bus num 0 works fine.
> > > > >
> > > > > Do I need to call i2c_probe(...) before calling i2c_write(...)?
> > > > >
> > > > > And is something special needed for initializing omap i2c bus num 1?
> > > > > Because from my above observation it looks like that something is
> > > > > missing for bus 1 which in older u-boot version was not needed.
> >
> > Now I was able to find commit which is causing above i2c problems:
> > "Check if pads/pull-ups of bus are properly configured"
> >
> > It is d5243359e1afc957acd373dbbde1cf6c70ee5485:
> >
> > OMAP24xx I2C: Add support for set-speed
> > Adds support for set-speed on the OMAP24xx I2C Adapter.
> > Changes to omap24_i2c_write(...) for polling ARDY Bit from IRQ-Status.
> > Otherwise on a subsequent call the transfer of last byte from the
> > predecessor is aborted and therefore lost. For exmaple when
> > i2c_write(...) is followed by a i2c_setspeed(...) (which has to
> > deactivate and activate master for changing psc,...).
> > Minor cosmetical changes.
> > Signed-off-by: Hannes Petermaier <oe5hpm@oevsv.at>
> > Cc: Heiko Schocher <hs@denx.de>
> >
> > U-Boot version prior this command does not report those i2c errors.
> >
> > Hannes, any idea how your patch could broke omap i2c i2c bus num 1 on
> > Nokia N900?
>
> Hard to say here anything useful, as I do not have the hardware...
>
> The above commit changes:
>
> - udelay(I2C_WAIT);
> + udelay(adap->waitdelay);
>
> May you can check, if adap->waitdelay is the same as I2C_WAIT ?
Yes, it is the same value.
Anyway, I have deeply looked at that commit again and it just adds
support for omap24_i2c_setspeed and into omap24_i2c_write adds following
change:
@@ -464,6 +502,15 @@ static int omap24_i2c_write(struct i2c_adapter *adap, uchar chip, uint addr,
goto wr_exit;
}
}
+ /*
+ * poll ARDY bit for making sure that last byte really has been
+ * transferred on the bus.
+ */
+ do {
+ status = wait_for_event(adap);
+ } while (!(status & I2C_STAT_ARDY) && timeout--);
+ if (timeout <= 0)
+ printf("i2c_write: timed out writig last byte!\n");
wr_exit:
flush_fifo(adap);
And this change is causing that non-functional i2c bus.
I applied revert of above change on top of the master u-boot branch and
i2c bus num 1 (second) started working on N900 hw:
diff --git a/drivers/i2c/omap24xx_i2c.c b/drivers/i2c/omap24xx_i2c.c
index 0af4e333c4..a49cf89712 100644
--- a/drivers/i2c/omap24xx_i2c.c
+++ b/drivers/i2c/omap24xx_i2c.c
@@ -820,16 +820,6 @@ static int __omap24_i2c_write(void __iomem *i2c_base, int ip_rev, int waitdelay,
}
}
- /*
- * poll ARDY bit for making sure that last byte really has been
- * transferred on the bus.
- */
- do {
- status = wait_for_event(i2c_base, ip_rev, waitdelay);
- } while (!(status & I2C_STAT_ARDY) && timeout--);
- if (timeout <= 0)
- printf("i2c_write: timed out writig last byte!\n");
-
wr_exit:
flush_fifo(i2c_base, ip_rev);
omap_i2c_write_reg(i2c_base, ip_rev, 0xFFFF, OMAP_I2C_STAT_REG);
I have looked into i2c-omap.c linux kernel driver and its transfer
function does not have any such code for waiting ARDY bit.
Why it is there? I have not able to find any information and that
comment is strange... it looks like it was incomplete/broken? workaround
about other issue.
As you can see in log,@the first call status flags contains value
0x0100 and on all other calls it contains just 0x000 status flags.
Therefore ARDY bit is never set, but i2c transfer works fine.
> bye,
> Heiko
> --
> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: +49-8142-66989-52 Fax: +49-8142-66989-80 Email: hs at denx.de
next prev parent reply other threads:[~2020-10-26 21:48 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-31 22:35 [PATCH 00/11] Fixes for Nokia RX-51 Pali Rohár
2020-03-31 22:35 ` [PATCH 01/11] Nokia RX-51: Update my email address Pali Rohár
2020-03-31 22:35 ` [PATCH 02/11] Nokia RX-51: Add README.nokia_rx51 file to MAINTAINERS Pali Rohár
2020-03-31 22:35 ` [PATCH 03/11] Nokia RX-51: Move comment about CONFIG_SYS_TEXT_BASE to correct place Pali Rohár
2020-03-31 22:35 ` [PATCH 04/11] Nokia RX-51: Move code from defconfig back to C header file Pali Rohár
2020-03-31 22:35 ` [PATCH 05/11] Nokia RX-51: Revert back onenand defitions Pali Rohár
2020-03-31 22:35 ` [PATCH 06/11] Nokia RX-51: Remove PART* macros Pali Rohár
2020-03-31 22:35 ` [PATCH 07/11] Nokia RX-51: Remember setup_console_atag option Pali Rohár
2020-03-31 22:35 ` [PATCH 08/11] Nokia RX-51: Enable CONFIG_CONSOLE_MUX Pali Rohár
2020-04-14 10:19 ` Lokesh Vutla
2020-03-31 22:35 ` [PATCH 09/11] Nokia RX-51: Disable some unused features to decrease size of u-boot binary Pali Rohár
2020-03-31 22:35 ` [PATCH 10/11] Nokia RX-51: Update README.nokia_rx51 Pali Rohár
2020-03-31 22:35 ` [PATCH 11/11] Nokia RX-51: Add automated test for running RX-51 build in qemu Pali Rohár
2020-04-14 10:40 ` Pali Rohár
2020-04-21 14:55 ` Lokesh Vutla
2020-04-21 17:36 ` Simon Glass
2020-04-21 20:12 ` Tom Rini
2020-04-21 20:37 ` Simon Glass
2020-04-21 20:46 ` Tom Rini
2020-04-21 20:49 ` Simon Glass
2020-04-21 20:51 ` Tom Rini
2020-04-21 21:34 ` Pali Rohár
2020-04-21 23:24 ` Tom Rini
2020-04-23 7:34 ` Pali Rohár
2020-04-23 12:24 ` Tom Rini
2020-04-23 17:48 ` Pali Rohár
2020-04-25 9:00 ` [PATCH v2] " Pali Rohár
2020-04-27 8:40 ` Pali Rohár
2020-04-27 18:00 ` Tom Rini
2020-04-28 7:37 ` Pali Rohár
2020-05-08 12:52 ` Pali Rohár
2020-05-08 13:10 ` Tom Rini
2020-05-09 16:28 ` Lokesh Vutla
2020-05-09 16:35 ` Pali Rohár
2020-05-09 20:56 ` Tom Rini
2020-05-14 22:41 ` Pali Rohár
2020-05-15 0:01 ` Tom Rini
2020-05-15 7:33 ` Pali Rohár
2020-05-15 13:20 ` Tom Rini
2020-05-15 13:46 ` Pali Rohár
2020-05-15 13:48 ` Tom Rini
2020-05-15 13:51 ` Pali Rohár
2020-05-15 13:53 ` Tom Rini
2020-05-15 13:58 ` Pali Rohár
2020-05-15 14:16 ` Tom Rini
2020-05-15 17:40 ` Pali Rohár
2020-05-15 18:34 ` Tom Rini
2020-05-17 12:31 ` Pali Rohár
2020-05-17 12:38 ` [PATCH v3] " Pali Rohár
2020-05-26 9:18 ` Pali Rohár
2020-05-26 9:22 ` Lokesh Vutla
2020-05-26 9:32 ` Pali Rohár
2020-05-26 9:33 ` Lokesh Vutla
2020-04-21 21:03 ` [PATCH 11/11] " Pali Rohár
2020-04-21 20:53 ` Pali Rohár
2020-03-31 22:42 ` U-Boot is broken on real N900 HW (Was: Re: [PATCH 00/11] Fixes for Nokia RX-51) Pali Rohár
[not found] ` <3c7dda52-10b3-e8c3-a382-785c80f124e7@wizzup.org>
2020-04-02 18:42 ` U-Boot is broken on real N900 HW Pali Rohár
2020-04-25 10:42 ` Pali Rohár
2020-04-25 11:36 ` Adam Ford
2020-04-25 11:50 ` Pali Rohár
2020-04-25 12:00 ` Adam Ford
2020-04-25 12:11 ` Pali Rohár
2020-04-25 23:54 ` U-Boot i2c bus num 1 is broken on Nokia N900 (Was: Re: U-Boot is broken on real N900 HW) Pali Rohár
2020-04-27 7:03 ` Heiko Schocher
2020-10-26 21:48 ` Pali Rohár [this message]
2020-10-28 5:42 ` U-Boot i2c bus num 1 is broken on Nokia N900 Heiko Schocher
2020-10-28 10:46 ` Pali Rohár
2020-10-29 7:51 ` Ivaylo Dimitrov
2020-10-29 9:32 ` Heiko Schocher
2020-10-29 9:36 ` Pali Rohár
2020-10-30 7:00 ` Ivaylo Dimitrov
2020-10-30 7:24 ` Heiko Schocher
2020-10-31 11:47 ` Ivaylo Dimitrov
2020-11-02 7:13 ` Heiko Schocher
2020-04-25 12:07 ` U-Boot is broken on real N900 HW Pali Rohár
2020-04-25 13:19 ` Pali Rohár
2020-04-25 13:48 ` Pali Rohár
2020-04-25 21:26 ` Bisected: mmc cause reboot loops on N900 (Was: Re: U-Boot is broken on real N900 HW) Pali Rohár
2020-04-25 22:20 ` Pali Rohár
2020-04-25 22:29 ` Bisected: omap_hsmmc 3.3V IO voltage incompatible with N900 (Was: Re: Bisected: mmc cause reboot loops on N900) Pali Rohár
2020-05-07 13:40 ` Faiz Abbas
2020-05-07 15:19 ` Pali Rohár
2020-05-26 17:49 ` Pali Rohár
2020-06-12 13:03 ` Pali Rohár
2020-07-01 8:32 ` Pali Rohár
2020-07-01 8:51 ` Faiz Abbas
2020-05-03 21:31 ` Bisected: mmc cause reboot loops on N900 Pali Rohár
2020-04-26 17:13 ` Bisected: mmc cause reboot loops on N900 (Was: Re: U-Boot is broken on real N900 HW) Pavel Machek
2020-04-06 20:12 ` U-Boot is broken on real N900 HW (Was: Re: [PATCH 00/11] Fixes for Nokia RX-51) Pavel Machek
2020-04-06 22:27 ` Pali Rohár
2020-04-13 10:41 ` [PATCH 00/11] Fixes for Nokia RX-51 Pali Rohár
2020-04-14 10:23 ` Lokesh Vutla
2020-04-14 10:31 ` Pali Rohár
2020-04-14 10:44 ` Lokesh Vutla
2020-04-14 11:17 ` Pali Rohár
2020-04-14 11:51 ` Lokesh Vutla
2020-04-14 12:01 ` Pali Rohár
2020-04-16 21:57 ` Pali Rohár
2020-04-20 8:12 ` Lokesh Vutla
2020-04-20 23:21 ` Pali Rohár
2020-05-11 12:47 ` Lokesh Vutla
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201026214858.rowljynsc7vh2bjk@pali \
--to=pali@kernel.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox