Skip to contentSkip to conversation

am335x_evm: Enable UART{1,2,4,5}

PATCH Superseded Andrew Bradford 4 participants 25 messages Sep 26, 2012 – Oct 21, 2012 1 message not in the archive Arm (32-bit)

v1 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

cover am335x_evm: Enable UART{1,2,4,5}

To support serial ports other than UART0 on am335x based systems like the Beaglebone with the RS232 cape.

Patch 4 is not the proper way to do what I want to accomplish but should give the idea I was going after. If someone could give me some pointers on the best way to do this, I'd welcome it.

Thanks

Andrew Bradford (6):
am33xx: Enable UART{1,2,4,5} clocks
am33xx: Enable UART{1,2,4,5} pin-mux
serial: Enable up to 6 eserial devices console & omap-common/spl: Enable use of eserial
am33xx: Enable eserial device usage for ns16550
am335x_evm: Enable use of UART{1,2,4,5}

 arch/arm/cpu/armv7/am33xx/board.c            |   14 +++++++++
 arch/arm/cpu/armv7/am33xx/clock.c            |   28 +++++++++++++++++
 arch/arm/cpu/armv7/omap-common/spl.c         |    7 ++++-
 arch/arm/include/asm/arch-am33xx/sys_proto.h |    6 +++-
 board/ti/am335x/mux.c                        |   43 ++++++++++++++++++++++++++
 boards.cfg                                   |    4 +++
 common/console.c                             |   24 +++++++++++---
 common/serial.c                              |    6 ++++
 drivers/serial/serial.c                      |   39 ++++++++++++++++++++---
 include/common.h                             |    5 +++
 include/configs/am335x_evm.h                 |   28 ++++++++++++++++-
 include/serial.h                             |    4 ++-
 12 files changed, 196 insertions(+), 12 deletions(-)
Signature · 1 line
1.7.10
#1 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

---
 arch/arm/cpu/armv7/am33xx/clock.c |   28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
arch/arm/cpu/armv7/am33xx/clock.c +28 -0
index 2b19506..4eb9226 100644
@@ -114,6 +114,34 @@ static void enable_per_clocks(void)
 	while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN)
 		;
 
+	/* UART1 */
+#ifdef CONFIG_SERIAL2
+	writel(PRCM_MOD_EN, &cmper->uart1clkctrl);
+	while (readl(&cmper->uart1clkctrl) != PRCM_MOD_EN)
+		;
+#endif /* CONFIG_SERIAL2 */
+
+	/* UART2 */
+#ifdef CONFIG_SERIAL3
+	writel(PRCM_MOD_EN, &cmper->uart2clkctrl);
+	while (readl(&cmper->uart2clkctrl) != PRCM_MOD_EN)
+		;
+#endif /* CONFIG_SERIAL3 */
+
+	/* UART4 */
+#ifdef CONFIG_SERIAL5
+	writel(PRCM_MOD_EN, &cmper->uart4clkctrl);
+	while (readl(&cmper->uart4clkctrl) != PRCM_MOD_EN)
+		;
+#endif /* CONFIG_SERIAL5 */
+
+	/* UART5 */
+#ifdef CONFIG_SERIAL6
+	writel(PRCM_MOD_EN, &cmper->uart5clkctrl);
+	while (readl(&cmper->uart5clkctrl) != PRCM_MOD_EN)
+		;
+#endif /* CONFIG_SERIAL6 */
+
 	/* MMC0*/
 	writel(PRCM_MOD_EN, &cmper->mmc0clkctrl);
 	while (readl(&cmper->mmc0clkctrl) != PRCM_MOD_EN)
Signature · 1 line
1.7.10
#2 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

Quoted 19 lines · Andrew Bradford

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

---
 arch/arm/cpu/armv7/am33xx/clock.c |   28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
arch/arm/cpu/armv7/am33xx/clock.c +3 -0
index 2b19506..4eb9226 100644
@@ -114,6 +114,34 @@ static void enable_per_clocks(void)
 	while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN)
 		;
 
+	/* UART1 */
+#ifdef CONFIG_SERIAL2
+	writel(PRCM_MOD_EN, &cmper->uart1clkctrl);

arch/arm/cpu/armv7/am33xx/clock.c static void enable_per_clocks(void) · line 129

Quoted 10 lines
arch/arm/cpu/armv7/am33xx/clock.c +10 -0
+	while (readl(&cmper->uart1clkctrl) != PRCM_MOD_EN)
+		;
+#endif /* CONFIG_SERIAL2 */
+
+	/* UART2 */
+#ifdef CONFIG_SERIAL3
+	writel(PRCM_MOD_EN, &cmper->uart2clkctrl);
+	while (readl(&cmper->uart2clkctrl) != PRCM_MOD_EN)
+		;
+#endif /* CONFIG_SERIAL3 */

Profile 5 on the AM335x EVM supports UART3. I know we discussed on IRC that BeagleBone doesn't have that uart pinned out, but I think since this is generic code *and* it can be tested on the full EVM, you should include support for it here.

Quoted 25 lines
arch/arm/cpu/armv7/am33xx/clock.c +15 -0
+
+	/* UART4 */
+#ifdef CONFIG_SERIAL5
+	writel(PRCM_MOD_EN, &cmper->uart4clkctrl);
+	while (readl(&cmper->uart4clkctrl) != PRCM_MOD_EN)
+		;
+#endif /* CONFIG_SERIAL5 */
+
+	/* UART5 */
+#ifdef CONFIG_SERIAL6
+	writel(PRCM_MOD_EN, &cmper->uart5clkctrl);
+	while (readl(&cmper->uart5clkctrl) != PRCM_MOD_EN)
+		;
+#endif /* CONFIG_SERIAL6 */
+
 	/* MMC0*/
 	writel(PRCM_MOD_EN, &cmper->mmc0clkctrl);
 	while (readl(&cmper->mmc0clkctrl) != PRCM_MOD_EN)
Signature · 6 lines
1.7.10

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot
#3 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

In reply to Andrew Bradford

Dear Andrew Bradford,

Quoted 13 lines

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

---
 arch/arm/cpu/armv7/am33xx/clock.c |   28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/clock.c index 2b19506..4eb9226 100644

arch/arm/cpu/armv7/am33xx/clock.c static void enable_per_clocks(void) · line 121

Quoted 8 lines
arch/arm/cpu/armv7/am33xx/clock.c +5 -0
@@ -114,6 +114,34 @@ static void enable_per_clocks(void)
 	while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN)
 		;
 
+	/* UART1 */
+#ifdef CONFIG_SERIAL2
+	writel(PRCM_MOD_EN, &cmper->uart1clkctrl);
+	while (readl(&cmper->uart1clkctrl) != PRCM_MOD_EN)
+		;

Call WATCHDOG_RESET() here, fix glboally

Quoted 16 lines
arch/arm/cpu/armv7/am33xx/clock.c +16 -0
+#endif /* CONFIG_SERIAL2 */
+
+	/* UART2 */
+#ifdef CONFIG_SERIAL3
+	writel(PRCM_MOD_EN, &cmper->uart2clkctrl);
+	while (readl(&cmper->uart2clkctrl) != PRCM_MOD_EN)
+		;
+#endif /* CONFIG_SERIAL3 */
+
+	/* UART4 */
+#ifdef CONFIG_SERIAL5
+	writel(PRCM_MOD_EN, &cmper->uart4clkctrl);
+	while (readl(&cmper->uart4clkctrl) != PRCM_MOD_EN)
+		;
+#endif /* CONFIG_SERIAL5 */
+

arch/arm/cpu/armv7/am33xx/clock.c static void enable_per_clocks(void) · line 147

Quoted 10 lines
arch/arm/cpu/armv7/am33xx/clock.c +7 -0
+	/* UART5 */
+#ifdef CONFIG_SERIAL6
+	writel(PRCM_MOD_EN, &cmper->uart5clkctrl);
+	while (readl(&cmper->uart5clkctrl) != PRCM_MOD_EN)
+		;
+#endif /* CONFIG_SERIAL6 */
+
 	/* MMC0*/
 	writel(PRCM_MOD_EN, &cmper->mmc0clkctrl);
 	while (readl(&cmper->mmc0clkctrl) != PRCM_MOD_EN)

Best regards,
Marek Vasut

#4 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

Quoted 18 lines · Marek Vasut

Dear Andrew Bradford,

Quoted 16 lines

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

---
 arch/arm/cpu/armv7/am33xx/clock.c |   28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/clock.c index 2b19506..4eb9226 100644

arch/arm/cpu/armv7/am33xx/clock.c +0 -0
@@ -114,6 +114,34 @@ static void enable_per_clocks(void)
 	while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN)
 		;
 
Quoted 7 lines

arch/arm/cpu/armv7/am33xx/clock.c static void enable_per_clocks(void) · line 121

Quoted 5 lines
arch/arm/cpu/armv7/am33xx/clock.c +5 -0
+	/* UART1 */
+#ifdef CONFIG_SERIAL2
+	writel(PRCM_MOD_EN, &cmper->uart1clkctrl);
+	while (readl(&cmper->uart1clkctrl) != PRCM_MOD_EN)
+		;

Call WATCHDOG_RESET() here, fix glboally

We don't have WATCHDOG_RESET...

Signature · 1 line
Tom
#5 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

Dear Tom Rini,

Quoted 30 lines · Marek Vasut
Quoted 21 lines

Dear Andrew Bradford,

Quoted 19 lines

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

---

 arch/arm/cpu/armv7/am33xx/clock.c |   28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/clock.c index 2b19506..4eb9226 100644

arch/arm/cpu/armv7/am33xx/clock.c +0 -0
@@ -114,6 +114,34 @@ static void enable_per_clocks(void)
 
 	while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN)
 
 		;
 
Quoted 7 lines

arch/arm/cpu/armv7/am33xx/clock.c static void enable_per_clocks(void) · line 121

Quoted 5 lines
arch/arm/cpu/armv7/am33xx/clock.c +5 -0
+	/* UART1 */
+#ifdef CONFIG_SERIAL2
+	writel(PRCM_MOD_EN, &cmper->uart1clkctrl);
+	while (readl(&cmper->uart1clkctrl) != PRCM_MOD_EN)
+		;

Call WATCHDOG_RESET() here, fix glboally

Quoted 1 line

We don't have WATCHDOG_RESET...

You do, and it opts-out to udelay(1) is most cases.

Best regards,
Marek Vasut

#6 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 29 lines · Marek Vasut

Dear Tom Rini,

Quoted 27 lines · Marek Vasut
Quoted 25 lines

Dear Andrew Bradford,

Quoted 19 lines

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

---

arch/arm/cpu/armv7/am33xx/clock.c | 28
++++++++++++++++++++++++++++ 1 file changed, 28
insertions(+)

(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/clock.c index 2b19506..4eb9226 100644 --- a/arch/arm/cpu/armv7/am33xx/clock.c +++ b/arch/arm/cpu/armv7/am33xx/clock.c @@ -114,6 +114,34 @@ static void enable_per_clocks(void)

while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN) ;

(quoted diff) +1 -0
+	/* UART1 */ +#ifdef CONFIG_SERIAL2 +	writel(PRCM_MOD_EN,
Quoted 2 lines

&cmper->uart1clkctrl); + while (readl(&cmper->uart1clkctrl)
!= PRCM_MOD_EN) + ;

Call WATCHDOG_RESET() here, fix glboally

Quoted 3 lines
Quoted 1 line

We don't have WATCHDOG_RESET...

You do, and it opts-out to udelay(1) is most cases.

It looks like it opts-out to {} in most cases, in <watchdog.h>

- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/

iQIcBAEBAgAGBQJQZIflAAoJENk4IS6UOR1WsGkQAI7g2jXMC9Q99414/wH2Deqv +pWEYhJ6kDrtrI4mDUyO1B0sKOyPbSufhql0NQwxzVBhXLMcMVjoGpth/asC/MEq UXQNnrYXJas8O4A0O16a18UVBVNhSK8XQYggpVlFuzosvc/8ngsCEzBMD8u20dYp WT0S9KaLHhL4U19nqFG/adnjMA2QU90BPkY4qZTsB7ECJc7lcRzfyJdeNL5fAmLW eDE1TXvV1xghHkjY1kT5gjjIJaC+KH1hsMxaRx1h+wUrTLFY4iv3WB/Uv4uQ60xn 8NalBIQZIqCSmshsKijm5SwOUkV4M/dm/Mwxxx7kOKpD897w4DxDAJucndCP95iD LMfjpQIWhaMYctEJXq2d66cPLTVWUr6yCH5byjX82pwYZRN8PyYLjAzknaDnIgaW Z2qC0krsTFWV9K19TjSdGlG/PaC8FUJtTD3NjQ7SFed/Kn8/YQYawCwlYkqpnjs6 cBQ47Cxp2tQYZU9qEZ/Cc6T24Nc764FYw/fw/nn8LzSelxN05qxkenAG3OsuUyf4 W1NQ6wCrpL7WJWpyztzKqqs7nYqE4OfTER8Gy7XlDBNCU3s0cQQQicSIuFbrIVRo f1po4M2wsQQjgQoAEjGSPKxpIZCnnMabF+bYtQbqwVxkUbANGeGl8FHKHHUyS6kv 9pIP75En06Yl40c1BQeZ
=cnRl
-----END PGP SIGNATURE-----

#7 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

Dear Tom Rini,

Quoted 30 lines · Marek Vasut
Quoted 29 lines

Dear Tom Rini,

Quoted 27 lines · Marek Vasut
Quoted 25 lines

Dear Andrew Bradford,

Quoted 19 lines

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

---

arch/arm/cpu/armv7/am33xx/clock.c | 28
++++++++++++++++++++++++++++ 1 file changed, 28
insertions(+)

(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/clock.c index 2b19506..4eb9226 100644 --- a/arch/arm/cpu/armv7/am33xx/clock.c +++ b/arch/arm/cpu/armv7/am33xx/clock.c @@ -114,6 +114,34 @@ static void enable_per_clocks(void)

while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN) ;

(quoted diff) +1 -0
+	/* UART1 */ +#ifdef CONFIG_SERIAL2 +	writel(PRCM_MOD_EN,
Quoted 2 lines

&cmper->uart1clkctrl); + while (readl(&cmper->uart1clkctrl)
!= PRCM_MOD_EN) + ;

Call WATCHDOG_RESET() here, fix glboally

Quoted 5 lines
Quoted 3 lines
Quoted 1 line

We don't have WATCHDOG_RESET...

You do, and it opts-out to udelay(1) is most cases.

It looks like it opts-out to {} in most cases, in <watchdog.h>

Correct, we use it to retrigger watchdog timer if implemented.

Best regards,
Marek Vasut

#8 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 32 lines · Marek Vasut

Dear Tom Rini,

Quoted 30 lines · Marek Vasut
Quoted 29 lines

Dear Tom Rini,

Quoted 27 lines · Marek Vasut
Quoted 25 lines

Dear Andrew Bradford,

Quoted 19 lines

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

---

arch/arm/cpu/armv7/am33xx/clock.c | 28
++++++++++++++++++++++++++++ 1 file changed, 28
insertions(+)

(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/clock.c index 2b19506..4eb9226 100644 --- a/arch/arm/cpu/armv7/am33xx/clock.c +++ b/arch/arm/cpu/armv7/am33xx/clock.c @@ -114,6 +114,34 @@ static void enable_per_clocks(void)

while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN) ;

(quoted diff) +1 -0
+	/* UART1 */ +#ifdef CONFIG_SERIAL2 +	writel(PRCM_MOD_EN,
Quoted 2 lines

&cmper->uart1clkctrl); + while (readl(&cmper->uart1clkctrl)
!= PRCM_MOD_EN) + ;

Call WATCHDOG_RESET() here, fix glboally

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
Quoted 1 line

We don't have WATCHDOG_RESET...

You do, and it opts-out to udelay(1) is most cases.

It looks like it opts-out to {} in most cases, in <watchdog.h>

Correct, we use it to retrigger watchdog timer if implemented.

Which the SoC support isn't doing and the rest of the code also isn't trying to use. Arguably the whole file should be doing udelay(1) in each of these instances and a clean up patch which this series depends on might be useful.

- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/

iQIcBAEBAgAGBQJQZIs8AAoJENk4IS6UOR1Wx0AP/09nGNb5Ce6vIEQcRxLP+Oqv VvXqK3xxgd6QCECr9JbKGmAgZLFsqGKrE/MNCBFqikx4J3pTDJ3DXO/re9dGaXr3 p+ompug8mxrH41pPfoKiCDn0RD0IkUZTQ3I8MxZqgiJ4D61nFBG7Eyf9weFSBLJ0 pIielx2DcczqIxJ3vj01UM+h5COc1lUVK568oN/tNP7aw/4QBXiAKMStce0cjuPm O5vqxMx81scex9cQF3thkOvonNcB0zmy5sy+vC76a2Fhi2KE0tOxY988WjZPN7g3 wxQ2cYke+gJw1LPlDI4zIIqZ2XnFaHBA4XpgCjRq/ie61gwQGBXF1i96Jc4C4kEE IGMPTUlm4nvPFdFCqCcWVl67S61GZmnDaXXfQHzpAhNQVwksnOEaUN6HhIVCVhGL zHLNTYm1f4bUztXZ/yfyn3HNbY2N2rZ2wmkepaCbkSjohe2trhNdA4TQlWO1vs5a RFse7F0BTVBu251Y1QenDP6iCwj3C9qS7fdlXSBa3cw7/ZxHYjblDp03qA3Eawve T2Aiib9hdx2WGeyYAtMF8TMOUF2jy0G9PDYtE1rGPl9leaCpn7WAcZq3SzctAHE3 aQiaEivv2W//dyFCnKOGlYYoymr86oitp3rtmsPtLd4GVLr2936CxS89pAWOSFP/ FOG5SLL43UgbpdDaiCBr
=qRPe
-----END PGP SIGNATURE-----

#9 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

Dear Tom Rini,

Quoted 37 lines · Marek Vasut
Quoted 36 lines

Dear Tom Rini,

Quoted 34 lines · Marek Vasut
Quoted 32 lines

Dear Tom Rini,

Quoted 21 lines · Marek Vasut
Quoted 20 lines

Dear Andrew Bradford,

Quoted 18 lines

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

---

arch/arm/cpu/armv7/am33xx/clock.c | 28
++++++++++++++++++++++++++++ 1 file changed, 28
insertions(+)

(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/clock.c index 2b19506..4eb9226 100644 --- a/arch/arm/cpu/armv7/am33xx/clock.c +++ b/arch/arm/cpu/armv7/am33xx/clock.c @@ -114,6 +114,34 @@ static void enable_per_clocks(void)

while (readl(&cmwkup->wkup_uart0ctrl) != PRCM_MOD_EN) ;

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
(quoted diff) +1 -0
+	/* UART1 */ +#ifdef CONFIG_SERIAL2 +	writel(PRCM_MOD_EN,

&cmper->uart1clkctrl); + while (readl(&cmper->uart1clkctrl)
!= PRCM_MOD_EN) + ;

Call WATCHDOG_RESET() here, fix glboally

We don't have WATCHDOG_RESET...

You do, and it opts-out to udelay(1) is most cases.

Quoted 8 lines
Quoted 3 lines
Quoted 1 line

It looks like it opts-out to {} in most cases, in <watchdog.h>

Correct, we use it to retrigger watchdog timer if implemented.

Which the SoC support isn't doing and the rest of the code also isn't trying to use. Arguably the whole file should be doing udelay(1) in each of these instances and a clean up patch which this series depends on might be useful.

So we're changing the practice from doing WATCHDOG_RESET() to udelay(1) ? And we're doing so in generic code?

Best regards,
Marek Vasut

#10 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 48 lines · Marek Vasut

Dear Tom Rini,

Quoted 46 lines · Marek Vasut
Quoted 44 lines

Dear Tom Rini,

Quoted 34 lines · Marek Vasut
Quoted 33 lines

Dear Tom Rini,

Quoted 31 lines
Quoted 28 lines · Marek Vasut

Dear Andrew Bradford,

Quoted 22 lines

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

Signed-off-by: Andrew Bradford
<[email protected]> ---

arch/arm/cpu/armv7/am33xx/clock.c | 28
++++++++++++++++++++++++++++ 1 file changed, 28
insertions(+)

(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/clock.c index
2b19506..4eb9226 100644 ---
a/arch/arm/cpu/armv7/am33xx/clock.c +++
b/arch/arm/cpu/armv7/am33xx/clock.c @@ -114,6
+114,34 @@ static void enable_per_clocks(void)

while (readl(&cmwkup->wkup_uart0ctrl) !=
PRCM_MOD_EN) ;

(quoted diff) +1 -0
+	/* UART1 */ +#ifdef CONFIG_SERIAL2 + 
Quoted 2 lines

writel(PRCM_MOD_EN, &cmper->uart1clkctrl); + while
(readl(&cmper->uart1clkctrl) != PRCM_MOD_EN) + ;

Call WATCHDOG_RESET() here, fix glboally

Quoted 6 lines
Quoted 3 lines
Quoted 1 line

We don't have WATCHDOG_RESET...

You do, and it opts-out to udelay(1) is most cases.

It looks like it opts-out to {} in most cases, in
<watchdog.h>

Correct, we use it to retrigger watchdog timer if implemented.

Quoted 7 lines
Quoted 4 lines

Which the SoC support isn't doing and the rest of the code also isn't trying to use. Arguably the whole file should be doing udelay(1) in each of these instances and a clean up patch which this series depends on might be useful.

So we're changing the practice from doing WATCHDOG_RESET() to udelay(1) ? And we're doing so in generic code?

I think we should use WATCHDOG_RESET where it makes sense and udelay where we're just delaying. I don't see WATCHDOG_RESET() being used for enable this-or-that clock. But maybe I'm just really missing something about how we use WATCHDOG_RESET in the case where it's not a nop.

- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/

iQIcBAEBAgAGBQJQZJKBAAoJENk4IS6UOR1WwhoP/ilfLgnPgX50cLTOHKS1WoTP 10MK00fHSwkM3TrSawPw3zV2YPhI64BE8/Xs6gSzvIXOMnNurhdTcSumPAiAwUeJ zV6nHP1WA4KnEemdnIoOnVqWradTxc4aUaapbTBVykLMPmVHsm6OOpeyKdiOkSn9 /FxTWvUnsBeLb4F5oqMWqjFyk0Xj/J4bejKkEQLuvWibFWhm3kxU8HB6oMgi1KYW 5Rs2kr8rBOUg3T+lqcu4CC2w/zSuGLSYQkL3dJbL/NxzuJkSPXW3FDFsNXSNOon2 U4DPmDyz2VDHhvhhANiXu47EGrpDF4BalM6tL1oDUjiQw0WTrcrhg/70D69sKxAr rRNojnardLv+RBdw0TLGhQNdCnrLq4kIlXXzFaA+2dN8ZO/nzWsBMtPCg+ShFy1a aoSaSnyRSVr/S6k7RuowFb/XzwFw9p39+J+I2lXDn2FDOdIDEDlR14+UY7k1h3OR vgg77KJih1Xj9NrSswE1HdDry6kmkChUwgndsSf9BEMkwiftU8/c46lflVnpaKIr PgKfhEPpzoQsJjgsYyjzXmKK6fleE/adZJgQv3gT5CqCxY/dzi1tWxY/gpsRsRml ck+uX5764wIvpRGMpXjnmbXyGGgibLe9r4X6q4FDdnIYaLRQaCjpIqNvpCKxoPgT JLfsrVqhZ0OCXXli4vVw
=HfDf
-----END PGP SIGNATURE-----

#11 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

Tom & Marek,

Quoted 58 lines · On Thu, 27 Sep 2012 10:53:05 -0700 Tom Rini <[email protected]> wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 54 lines · Marek Vasut

Dear Tom Rini,

Quoted 51 lines · Marek Vasut
Quoted 37 lines

Dear Tom Rini,

Quoted 35 lines · Marek Vasut
Quoted 34 lines

Dear Tom Rini,

Quoted 32 lines
Quoted 29 lines · Marek Vasut

Dear Andrew Bradford,

Quoted 24 lines

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

Signed-off-by: Andrew Bradford
<[email protected]> ---

arch/arm/cpu/armv7/am33xx/clock.c | 28
++++++++++++++++++++++++++++ 1 file changed, 28
insertions(+)

(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/clock.c index
2b19506..4eb9226 100644 ---
a/arch/arm/cpu/armv7/am33xx/clock.c +++
b/arch/arm/cpu/armv7/am33xx/clock.c @@ -114,6
+114,34 @@ static void enable_per_clocks(void)

while (readl(&cmwkup->wkup_uart0ctrl) !=
PRCM_MOD_EN) ;

(quoted diff) +1 -0
+	/* UART1 */ +#ifdef CONFIG_SERIAL2 + 

writel(PRCM_MOD_EN, &cmper->uart1clkctrl); + while
(readl(&cmper->uart1clkctrl) != PRCM_MOD_EN)

Review

Quoted 1 line
(quoted diff) +1 -0
+		;

Call WATCHDOG_RESET() here, fix glboally

Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
Quoted 1 line

We don't have WATCHDOG_RESET...

You do, and it opts-out to udelay(1) is most cases.

It looks like it opts-out to {} in most cases, in
<watchdog.h>

Correct, we use it to retrigger watchdog timer if implemented.

Which the SoC support isn't doing and the rest of the code also isn't trying to use. Arguably the whole file should be doing udelay(1) in each of these instances and a clean up patch which this series depends on might be useful.

Quoted 8 lines
Quoted 2 lines

So we're changing the practice from doing WATCHDOG_RESET() to udelay(1) ? And we're doing so in generic code?

I think we should use WATCHDOG_RESET where it makes sense and udelay where we're just delaying. I don't see WATCHDOG_RESET() being used for enable this-or-that clock. But maybe I'm just really missing something about how we use WATCHDOG_RESET in the case where it's not a nop.

Is there a consensus on the use of WATCHDOG_RESET vs. udelay(1) in this instance?

Looking through the arch/arm/cpu/armv7/{omap-common,omap3}/clock files shows no use of either WATCHDOG_RESET or udelay(1) in the ways mentioned. In fact, I can't easily find a use of WATCHDOG_RESET at all within arch/arm/cpu/armv7 code.

What is the goal of using either udelay(1) or WATCHDOG_RESET as recommended here?

Thanks,
Andrew

#12 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

Quoted 75 lines · Andrew Bradford

Tom & Marek,

Quoted 58 lines · On Thu, 27 Sep 2012 10:53:05 -0700 Tom Rini <[email protected]> wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 54 lines · Marek Vasut

Dear Tom Rini,

Quoted 51 lines · Marek Vasut
Quoted 37 lines

Dear Tom Rini,

Quoted 35 lines · Marek Vasut
Quoted 34 lines

Dear Tom Rini,

Quoted 32 lines
Quoted 29 lines · Marek Vasut

Dear Andrew Bradford,

Quoted 24 lines

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

Signed-off-by: Andrew Bradford
<[email protected]> ---

arch/arm/cpu/armv7/am33xx/clock.c | 28
++++++++++++++++++++++++++++ 1 file changed, 28
insertions(+)

(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/clock.c index
2b19506..4eb9226 100644 ---
a/arch/arm/cpu/armv7/am33xx/clock.c +++
b/arch/arm/cpu/armv7/am33xx/clock.c @@ -114,6
+114,34 @@ static void enable_per_clocks(void)

while (readl(&cmwkup->wkup_uart0ctrl) !=
PRCM_MOD_EN) ;

(quoted diff) +1 -0
+	/* UART1 */ +#ifdef CONFIG_SERIAL2 + 

writel(PRCM_MOD_EN, &cmper->uart1clkctrl); + while
(readl(&cmper->uart1clkctrl) != PRCM_MOD_EN)

Review

Quoted 1 line
(quoted diff) +1 -0
+		;

Call WATCHDOG_RESET() here, fix glboally

Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
Quoted 1 line

We don't have WATCHDOG_RESET...

You do, and it opts-out to udelay(1) is most cases.

It looks like it opts-out to {} in most cases, in
<watchdog.h>

Correct, we use it to retrigger watchdog timer if implemented.

Which the SoC support isn't doing and the rest of the code also isn't trying to use. Arguably the whole file should be doing udelay(1) in each of these instances and a clean up patch which this series depends on might be useful.

Quoted 8 lines
Quoted 2 lines

So we're changing the practice from doing WATCHDOG_RESET() to udelay(1) ? And we're doing so in generic code?

I think we should use WATCHDOG_RESET where it makes sense and udelay where we're just delaying. I don't see WATCHDOG_RESET() being used for enable this-or-that clock. But maybe I'm just really missing something about how we use WATCHDOG_RESET in the case where it's not a nop.

Is there a consensus on the use of WATCHDOG_RESET vs. udelay(1) in this instance?

Quoted 7 lines

Looking through the arch/arm/cpu/armv7/{omap-common,omap3}/clock files shows no use of either WATCHDOG_RESET or udelay(1) in the ways mentioned. In fact, I can't easily find a use of WATCHDOG_RESET at all within arch/arm/cpu/armv7 code.

What is the goal of using either udelay(1) or WATCHDOG_RESET as recommended here?

Lets just match the rest of the SoC code and have the empty loop. We can have the discussion about what kind of delay or macro makes most sense another time.

Signature · 8 lines
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/20121020/f07b420b/attachment.pgp>
#13 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

Dear Tom Rini,

Quoted 82 lines · Andrew Bradford
Quoted 81 lines

Tom & Marek,

On Thu, 27 Sep 2012 10:53:05 -0700

Quoted 59 lines · Tom Rini

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 55 lines · Marek Vasut

Dear Tom Rini,

Quoted 52 lines · Marek Vasut
Quoted 38 lines

Dear Tom Rini,

Quoted 36 lines · Marek Vasut
Quoted 35 lines

Dear Tom Rini,

Quoted 33 lines

On Thu, Sep 27, 2012 at 06:13:36PM +0200, Marek Vasut

Quoted 29 lines · wrote:

Dear Andrew Bradford,

Quoted 24 lines

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the required clocks for the UART in use.

Signed-off-by: Andrew Bradford
<[email protected]> ---

arch/arm/cpu/armv7/am33xx/clock.c | 28
++++++++++++++++++++++++++++ 1 file changed, 28
insertions(+)

(quoted diff) +0 -0

b/arch/arm/cpu/armv7/am33xx/clock.c index
2b19506..4eb9226 100644 ---
a/arch/arm/cpu/armv7/am33xx/clock.c +++
b/arch/arm/cpu/armv7/am33xx/clock.c @@ -114,6
+114,34 @@ static void enable_per_clocks(void)

while (readl(&cmwkup->wkup_uart0ctrl) !=
PRCM_MOD_EN) ;

(quoted diff) +1 -0
+	/* UART1 */ +#ifdef CONFIG_SERIAL2 +

writel(PRCM_MOD_EN, &cmper->uart1clkctrl); + while
(readl(&cmper->uart1clkctrl) != PRCM_MOD_EN)

Review

Quoted 1 line
(quoted diff) +1 -0
+		;

Call WATCHDOG_RESET() here, fix glboally

Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
Quoted 1 line

We don't have WATCHDOG_RESET...

You do, and it opts-out to udelay(1) is most cases.

It looks like it opts-out to {} in most cases, in
<watchdog.h>

Correct, we use it to retrigger watchdog timer if implemented.

Which the SoC support isn't doing and the rest of the code also isn't trying to use. Arguably the whole file should be doing udelay(1) in each of these instances and a clean up patch which this series depends on might be useful.

Quoted 8 lines
Quoted 2 lines

So we're changing the practice from doing WATCHDOG_RESET() to udelay(1) ? And we're doing so in generic code?

I think we should use WATCHDOG_RESET where it makes sense and udelay where we're just delaying. I don't see WATCHDOG_RESET() being used for enable this-or-that clock. But maybe I'm just really missing something about how we use WATCHDOG_RESET in the case where it's not a nop.

Is there a consensus on the use of WATCHDOG_RESET vs. udelay(1) in this instance?

Looking through the arch/arm/cpu/armv7/{omap-common,omap3}/clock files shows no use of either WATCHDOG_RESET or udelay(1) in the ways mentioned. In fact, I can't easily find a use of WATCHDOG_RESET at all within arch/arm/cpu/armv7 code.

Quoted 6 lines
Quoted 2 lines

What is the goal of using either udelay(1) or WATCHDOG_RESET as recommended here?

Lets just match the rest of the SoC code and have the empty loop. We can have the discussion about what kind of delay or macro makes most sense another time.

WATCHDOG_RESET() shall obviously be called, just enable watchdog and your uboot will keep restarting in such loops.

Best regards,
Marek Vasut

#14 lore raw

PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks

Quoted 1 line · Marek Vasut

Dear Tom Rini,

[snip]

Quoted 6 lines
Quoted 3 lines

Lets just match the rest of the SoC code and have the empty loop. We can have the discussion about what kind of delay or macro makes most sense another time.

WATCHDOG_RESET() shall obviously be called, just enable watchdog and your uboot will keep restarting in such loops.

The reason I want to have this discussion outside of Andrew's changes is that if the SoC isn't setting these flags when asked, you should just throw the board out, something fundamental is broken. The only real question is, would it make sense, or not, to enforce a real delay or just keep reading until it is set. I'll poke around a little tomorrow.

Signature · 1 line
Tom
#15 lore raw

PATCH 2/6 am33xx: Enable UART{1,2,4,5} pin-mux

In reply to Andrew Bradford

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the proper pin-muxing as per the RS232 cape configuration.

---
 arch/arm/cpu/armv7/am33xx/board.c            |   14 +++++++++
 arch/arm/include/asm/arch-am33xx/sys_proto.h |    6 +++-
 board/ti/am335x/mux.c                        |   43 ++++++++++++++++++++++++++
 3 files changed, 62 insertions(+), 1 deletion(-)
arch/arm/cpu/armv7/am33xx/board.c +14 -0
index ecc2671..32d1da4 100644
@@ -152,7 +152,21 @@ void s_init(void)
 	/* UART softreset */
 	u32 regVal;
 
+#ifdef CONFIG_SERIAL1
 	enable_uart0_pin_mux();
+#endif /* CONFIG_SERIAL1 */
+#ifdef CONFIG_SERIAL2
+	enable_uart1_pin_mux();
+#endif /* CONFIG_SERIAL2 */
+#ifdef CONFIG_SERIAL3
+	enable_uart2_pin_mux();
+#endif /* CONFIG_SERIAL3 */
+#ifdef CONFIG_SERIAL5
+	enable_uart4_pin_mux();
+#endif /* CONFIG_SERIAL5 */
+#ifdef CONFIG_SERIAL6
+	enable_uart5_pin_mux();
+#endif /* CONFIG_SERIAL6 */
 
 	regVal = readl(&uart_base->uartsyscfg);
 	regVal |= UART_RESET;
arch/arm/include/asm/arch-am33xx/sys_proto.h +5 -1
index 819ea65..4852127 100644
@@ -53,11 +53,15 @@ void ddr_pll_config(unsigned int ddrpll_M);
 
 /*
  * We have three pin mux functions that must exist.  We must be able to enable
- * uart0, for initial output and i2c0 to read the main EEPROM.  We then have a
+ * a uart for initial output and i2c0 to read the main EEPROM.  We then have a
  * main pinmux function that can be overridden to enable all other pinmux that
  * is required on the board.
  */
 void enable_uart0_pin_mux(void);
+void enable_uart1_pin_mux(void);
+void enable_uart2_pin_mux(void);
+void enable_uart4_pin_mux(void);
+void enable_uart5_pin_mux(void);
 void enable_i2c0_pin_mux(void);
 void enable_board_pin_mux(struct am335x_baseboard_id *header);
 #endif
board/ti/am335x/mux.c +43 -0

55 lines not on this page · raw message

Signature · 1 line
1.7.10
#16 lore raw

PATCH 2/6 am33xx: Enable UART{1,2,4,5} pin-mux

Quoted 17 lines · Andrew Bradford

If configured to use UART{1,2,4,5}, such as on the Beaglebone RS232 cape, enable the proper pin-muxing as per the RS232 cape configuration.

---
 arch/arm/cpu/armv7/am33xx/board.c            |   14 +++++++++
 arch/arm/include/asm/arch-am33xx/sys_proto.h |    6 +++-
 board/ti/am335x/mux.c                        |   43 ++++++++++++++++++++++++++
 3 files changed, 62 insertions(+), 1 deletion(-)
arch/arm/cpu/armv7/am33xx/board.c +0 -0
index ecc2671..32d1da4 100644
@@ -152,7 +152,21 @@ void s_init(void)
 	/* UART softreset */
 	u32 regVal;

arch/arm/cpu/armv7/am33xx/board.c void s_init(void) · line 163

Quoted 10 lines
arch/arm/cpu/armv7/am33xx/board.c +8 -0
 
+#ifdef CONFIG_SERIAL1
 	enable_uart0_pin_mux();
+#endif /* CONFIG_SERIAL1 */
+#ifdef CONFIG_SERIAL2
+	enable_uart1_pin_mux();
+#endif /* CONFIG_SERIAL2 */
+#ifdef CONFIG_SERIAL3
+	enable_uart2_pin_mux();
+#endif /* CONFIG_SERIAL3 */

Same thing here about UART3

Quoted 98 lines
arch/arm/cpu/armv7/am33xx/board.c +6 -0
+#ifdef CONFIG_SERIAL5
+	enable_uart4_pin_mux();
+#endif /* CONFIG_SERIAL5 */
+#ifdef CONFIG_SERIAL6
+	enable_uart5_pin_mux();
+#endif /* CONFIG_SERIAL6 */
 
 	regVal = readl(&uart_base->uartsyscfg);
 	regVal |= UART_RESET;
arch/arm/include/asm/arch-am33xx/sys_proto.h +5 -1
index 819ea65..4852127 100644
@@ -53,11 +53,15 @@ void ddr_pll_config(unsigned int ddrpll_M);
 
 /*
  * We have three pin mux functions that must exist.  We must be able to enable
- * uart0, for initial output and i2c0 to read the main EEPROM.  We then have a
+ * a uart for initial output and i2c0 to read the main EEPROM.  We then have a
  * main pinmux function that can be overridden to enable all other pinmux that
  * is required on the board.
  */
 void enable_uart0_pin_mux(void);
+void enable_uart1_pin_mux(void);
+void enable_uart2_pin_mux(void);
+void enable_uart4_pin_mux(void);
+void enable_uart5_pin_mux(void);
 void enable_i2c0_pin_mux(void);
 void enable_board_pin_mux(struct am335x_baseboard_id *header);
 #endif
board/ti/am335x/mux.c +43 -0
index 80becd5..db47d0e 100644
@@ -259,6 +259,30 @@ static struct module_pin_mux uart0_pin_mux[] = {
 	{-1},
 };
 
+static struct module_pin_mux uart1_pin_mux[] = {
+	{OFFSET(uart1_rxd), (MODE(0) | PULLUP_EN | RXACTIVE)},	/* UART1_RXD */
+	{OFFSET(uart1_txd), (MODE(0) | PULLUDEN)},		/* UART1_TXD */
+	{-1},
+};
+
+static struct module_pin_mux uart2_pin_mux[] = {
+	{OFFSET(spi0_sclk), (MODE(1) | PULLUP_EN | RXACTIVE)},	/* UART2_RXD */
+	{OFFSET(spi0_d0), (MODE(1) | PULLUDEN)},		/* UART2_TXD */
+	{-1},
+};
+
+static struct module_pin_mux uart4_pin_mux[] = {
+	{OFFSET(gpmc_wait0), (MODE(6) | PULLUP_EN | RXACTIVE)},	/* UART4_RXD */
+	{OFFSET(gpmc_wpn), (MODE(6) | PULLUDEN)},		/* UART4_TXD */
+	{-1},
+};
+
+static struct module_pin_mux uart5_pin_mux[] = {
+	{OFFSET(lcd_data9), (MODE(4) | PULLUP_EN | RXACTIVE)},	/* UART5_RXD */
+	{OFFSET(lcd_data8), (MODE(4) | PULLUDEN)},		/* UART5_TXD */
+	{-1},
+};
+
 static struct module_pin_mux mmc0_pin_mux[] = {
 	{OFFSET(mmc0_dat3), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT3 */
 	{OFFSET(mmc0_dat2), (MODE(0) | RXACTIVE | PULLUP_EN)},	/* MMC0_DAT2 */
@@ -381,6 +405,25 @@ void enable_uart0_pin_mux(void)
 	configure_module_pin_mux(uart0_pin_mux);
 }
 
+void enable_uart1_pin_mux(void)
+{
+	configure_module_pin_mux(uart1_pin_mux);
+}
+
+void enable_uart2_pin_mux(void)
+{
+	configure_module_pin_mux(uart2_pin_mux);
+}
+
+void enable_uart4_pin_mux(void)
+{
+	configure_module_pin_mux(uart4_pin_mux);
+}
+
+void enable_uart5_pin_mux(void)
+{
+	configure_module_pin_mux(uart5_pin_mux);
+}
 
 void enable_i2c0_pin_mux(void)
 {
Signature · 6 lines
1.7.10

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot
#17 lore raw

PATCH 3/6 serial: Enable up to 6 eserial devices

In reply to Andrew Bradford

Increase the number of possible eserial devices from 4 to 6.

---
 common/serial.c         |    6 ++++++
 drivers/serial/serial.c |   39 +++++++++++++++++++++++++++++++++++----
 include/serial.h        |    2 ++
 3 files changed, 43 insertions(+), 4 deletions(-)
common/serial.c +6 -0
index 75cc1bb..c237aee 100644
@@ -70,6 +70,12 @@ void serial_initialize(void)
 #if defined(CONFIG_SYS_NS16550_COM4)
 	serial_register(&eserial4_device);
 #endif
+#if defined(CONFIG_SYS_NS16550_COM5)
+	serial_register(&eserial5_device);
+#endif
+#if defined(CONFIG_SYS_NS16550_COM6)
+	serial_register(&eserial6_device);
+#endif
 #endif /* CONFIG_SYS_NS16550_SERIAL */
 #if defined(CONFIG_FFUART)
 	serial_register(&serial_ffuart_device);
drivers/serial/serial.c +35 -4
index b10bab7..ba05f7f 100644
@@ -43,7 +43,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #else
 #error	"No console index specified."
 #endif /* CONFIG_SERIAL_MULTI */
-#elif (CONFIG_CONS_INDEX < 1) || (CONFIG_CONS_INDEX > 4)
+#elif (CONFIG_CONS_INDEX < 1) || (CONFIG_CONS_INDEX > 6)
 #error	"Invalid console index value."
 #endif
 
@@ -55,12 +55,16 @@ DECLARE_GLOBAL_DATA_PTR;
 #error	"Console port 3 defined but not configured."
 #elif CONFIG_CONS_INDEX == 4 && !defined(CONFIG_SYS_NS16550_COM4)
 #error	"Console port 4 defined but not configured."
+#elif CONFIG_CONS_INDEX == 5 && !defined(CONFIG_SYS_NS16550_COM5)
+#error	"Console port 5 defined but not configured."
+#elif CONFIG_CONS_INDEX == 6 && !defined(CONFIG_SYS_NS16550_COM6)
+#error	"Console port 6 defined but not configured."
 #endif
 
 /* Note: The port number specified in the functions is 1 based.
  *	 the array is 0 based.
  */
-static NS16550_t serial_ports[4] = {
+static NS16550_t serial_ports[6] = {
 #ifdef CONFIG_SYS_NS16550_COM1
 	(NS16550_t)CONFIG_SYS_NS16550_COM1,
 #else
@@ -77,7 +81,17 @@ static NS16550_t serial_ports[4] = {
 	NULL,
 #endif
 #ifdef CONFIG_SYS_NS16550_COM4
-	(NS16550_t)CONFIG_SYS_NS16550_COM4
+	(NS16550_t)CONFIG_SYS_NS16550_COM4,
+#else
+	NULL,
+#endif
+#ifdef CONFIG_SYS_NS16550_COM5
+	(NS16550_t)CONFIG_SYS_NS16550_COM5,
+#else
+	NULL,
+#endif
+#ifdef CONFIG_SYS_NS16550_COM6
+	(NS16550_t)CONFIG_SYS_NS16550_COM6
 #else
 	NULL
 #endif
@@ -175,7 +189,14 @@ int serial_init (void)
 	clock_divisor = calc_divisor(serial_ports[3]);
 	NS16550_init(serial_ports[3], clock_divisor);
 #endif
-
+#ifdef CONFIG_SYS_NS16550_COM5
+	clock_divisor = calc_divisor(serial_ports[4]);
+	NS16550_init(serial_ports[4], clock_divisor);
+#endif
+#ifdef CONFIG_SYS_NS16550_COM6
+	clock_divisor = calc_divisor(serial_ports[5]);
+	NS16550_init(serial_ports[5], clock_divisor);
+#endif
 	return (0);
 }
 #endif
@@ -323,6 +344,12 @@ struct serial_device eserial3_device =
 DECLARE_ESERIAL_FUNCTIONS(4);
 struct serial_device eserial4_device =
 	INIT_ESERIAL_STRUCTURE(4, "eserial3");
+DECLARE_ESERIAL_FUNCTIONS(5);
+struct serial_device eserial5_device =
+	INIT_ESERIAL_STRUCTURE(5, "eserial4");
+DECLARE_ESERIAL_FUNCTIONS(6);
+struct serial_device eserial6_device =
+	INIT_ESERIAL_STRUCTURE(6, "eserial5");
 
 __weak struct serial_device *default_serial_console(void)
 {
@@ -334,6 +361,10 @@ __weak struct serial_device *default_serial_console(void)
 	return &eserial3_device;
 #elif CONFIG_CONS_INDEX == 4
 	return &eserial4_device;
+#elif CONFIG_CONS_INDEX == 5
+	return &eserial5_device;
+#elif CONFIG_CONS_INDEX == 6
+	return &eserial6_device;
 #else
 #error "Bad CONFIG_CONS_INDEX."
 #endif
include/serial.h +2 -0
index d76d6df..dcb2d97 100644
@@ -40,6 +40,8 @@ extern struct serial_device eserial1_device;
 extern struct serial_device eserial2_device;
 extern struct serial_device eserial3_device;
 extern struct serial_device eserial4_device;
+extern struct serial_device eserial5_device;
+extern struct serial_device eserial6_device;
 #endif /* CONFIG_SYS_NS16550_SERIAL */
 
 #endif
Signature · 1 line
1.7.10
#18 lore raw

PATCH 4/6 console & omap-common/spl: Enable use of eserial

In reply to Andrew Bradford

Enable use of eserial devices for common and omap-common/spl.

This probably isn't the right way to do this as the changes aren't needed for 'common' configurations, just for one case.

---
 arch/arm/cpu/armv7/omap-common/spl.c |    7 ++++++-
 common/console.c                     |   24 ++++++++++++++++++++----
 include/common.h                     |    5 +++++
 3 files changed, 31 insertions(+), 5 deletions(-)
arch/arm/cpu/armv7/omap-common/spl.c +6 -1
index 4d1ac85..6258c0e 100644
@@ -210,7 +210,12 @@ void preloader_console_init(void)
 	gd->flags |= GD_FLG_RELOC;
 	gd->baudrate = CONFIG_BAUDRATE;
 
-	serial_init();		/* serial communications setup */
+	/* serial communications setup */
+#ifdef CONFIG_SERIAL_MULTI
+	ESERIAL_FUNC(CONFIG_CONS_INDEX, init)();
+#else
+	serial_init();
+#endif /* CONFIG_SERIAL_MULTI */
 
 	gd->have_console = 1;
 
common/console.c +20 -4
index 1177f7d..5670ce1 100644
@@ -302,12 +302,16 @@ int getc(void)
 		return 0;
 
 	if (gd->flags & GD_FLG_DEVINIT) {
-		/* Get from the standard input */
-		return fgetc(stdin);
+	/* Get from the standard input */
+	return fgetc(stdin);
 	}
 
 	/* Send directly to the handler */
+#ifdef CONFIG_SERIAL_MULTI
+	return ESERIAL_FUNC(CONFIG_CONS_INDEX, getc)();
+#else
 	return serial_getc();
+#endif /* CONFIG_SERIAL_MULTI */
 }
 
 int tstc(void)
@@ -321,12 +325,16 @@ int tstc(void)
 		return 0;
 
 	if (gd->flags & GD_FLG_DEVINIT) {
-		/* Test the standard input */
-		return ftstc(stdin);
+	/* Test the standard input */
+	return ftstc(stdin);
 	}
 
 	/* Send directly to the handler */
+#ifdef CONFIG_SERIAL_MULTI
+	return ESERIAL_FUNC(CONFIG_CONS_INDEX, tstc)();
+#else
 	return serial_tstc();
+#endif /* CONFIG_SERIAL_MULTI */
 }
 
 #ifdef CONFIG_PRE_CONSOLE_BUFFER
@@ -382,7 +390,11 @@ void putc(const char c)
 		fputc(stdout, c);
 	} else {
 		/* Send directly to the handler */
+#ifdef CONFIG_SERIAL_MULTI
+		ESERIAL_FUNC(CONFIG_CONS_INDEX, putc)(c);
+#else
 		serial_putc(c);
+#endif /* CONFIG_SERIAL_MULTI */
 	}
 }
 
@@ -406,7 +418,11 @@ void puts(const char *s)
 		fputs(stdout, s);
 	} else {
 		/* Send directly to the handler */
+#ifdef CONFIG_SERIAL_MULTI
+		ESERIAL_FUNC(CONFIG_CONS_INDEX, puts)(s);
+#else
 		serial_puts(s);
+#endif /* CONFIG_SERIAL_MULTI */
 	}
 }
 
include/common.h +5 -0
index 55025c0..b4ebbfb 100644
@@ -206,6 +206,11 @@ typedef void (interrupt_handler_t)(void *);
 
 #endif /* CONFIG_SERIAL_MULTI */
 
+#ifdef CONFIG_SERIAL_MULTI
+#define EXPAND_ESERIAL(x, func) eserial ## x ## _ ## func
+#define ESERIAL_FUNC(x, func) EXPAND_ESERIAL(x, func)
+#endif /* CONFIG_SERIAL_MULTI */
+
 /*
  * General Purpose Utilities
  */
Signature · 1 line
1.7.10
#19 lore raw

PATCH 4/6 console & omap-common/spl: Enable use of eserial

Dear Andrew Bradford,

Quoted 17 lines

Enable use of eserial devices for common and omap-common/spl.

This probably isn't the right way to do this as the changes aren't needed for 'common' configurations, just for one case.

---
 arch/arm/cpu/armv7/omap-common/spl.c |    7 ++++++-
 common/console.c                     |   24 ++++++++++++++++++++----
 include/common.h                     |    5 +++++
 3 files changed, 31 insertions(+), 5 deletions(-)
(quoted diff) +0 -0

b/arch/arm/cpu/armv7/omap-common/spl.c index 4d1ac85..6258c0e 100644

arch/arm/cpu/armv7/omap-common/spl.c void preloader_console_init(void) · line 215

Quoted 7 lines
arch/arm/cpu/armv7/omap-common/spl.c +3 -1
@@ -210,7 +210,12 @@ void preloader_console_init(void)
 	gd->flags |= GD_FLG_RELOC;
 	gd->baudrate = CONFIG_BAUDRATE;
 
-	serial_init();		/* serial communications setup */
+	/* serial communications setup */
+#ifdef CONFIG_SERIAL_MULTI
+	ESERIAL_FUNC(CONFIG_CONS_INDEX, init)();

Uh, if you implement default_serial_console properly(), you won't need this. Actually, I'm in the process of rolling out V2 of my serial patchset, which will make your life much more easier. Can you rebase the patchset on my series? I'll poke you about it.

Quoted 11 lines
arch/arm/cpu/armv7/omap-common/spl.c +3 -0
+#else
+	serial_init();
+#endif /* CONFIG_SERIAL_MULTI */
 
 	gd->have_console = 1;
 
common/console.c +0 -0
index 1177f7d..5670ce1 100644

common/console.c int getc(void) · line 306

Quoted 7 lines
common/console.c +2 -2
@@ -302,12 +302,16 @@ int getc(void)
 		return 0;
 
 	if (gd->flags & GD_FLG_DEVINIT) {
-		/* Get from the standard input */
-		return fgetc(stdin);
+	/* Get from the standard input */
+	return fgetc(stdin);

NAK for this formating issue

[...]

Best regards,
Marek Vasut

A message that is not in the archive (sent off-list or not yet received): 20121010091028.01de813d@brick

#21 lore raw

PATCH 4/6 console & omap-common/spl: Enable use of eserial

Dear Andrew Bradford,

Quoted 41 lines

Dear Marek Vasut,

On Thu, 27 Sep 2012 18:34:18 +0200

Quoted 25 lines · Marek Vasut

Dear Andrew Bradford,

Quoted 23 lines

Enable use of eserial devices for common and omap-common/spl.

This probably isn't the right way to do this as the changes aren't needed for 'common' configurations, just for one case.

---

 arch/arm/cpu/armv7/omap-common/spl.c |    7 ++++++-
 common/console.c                     |   24

++++++++++++++++++++---- include/common.h |
5 +++++ 3 files changed, 31 insertions(+), 5 deletions(-)

(quoted diff) +0 -0

b/arch/arm/cpu/armv7/omap-common/spl.c index 4d1ac85..6258c0e 100644

arch/arm/cpu/armv7/omap-common/spl.c +0 -0
@@ -210,7 +210,12 @@ void preloader_console_init(void)
 
 	gd->flags |= GD_FLG_RELOC;
 	gd->baudrate = CONFIG_BAUDRATE;
 
Quoted 10 lines

arch/arm/cpu/armv7/omap-common/spl.c void preloader_console_init(void) · line 215

Quoted 5 lines
arch/arm/cpu/armv7/omap-common/spl.c +0 -1
-	serial_init();		/* serial communications

setup */

arch/arm/cpu/armv7/omap-common/spl.c +3 -0
+	/* serial communications setup */
+#ifdef CONFIG_SERIAL_MULTI
+	ESERIAL_FUNC(CONFIG_CONS_INDEX, init)();

Uh, if you implement default_serial_console properly(), you won't need this. Actually, I'm in the process of rolling out V2 of my serial patchset, which will make your life much more easier. Can you rebase the patchset on my series? I'll poke you about it.

Quoted 3 lines

I see that your serial patches have made it into u-boot/next, should I rebase this patch set with the requested changes on top of u-boot/next and resubmit?

Yes

Quoted 1 line

Sorry, I'm not entirely clear on the role /next plays.

Simple. Merge window for current release is long closed, anything that goes into next release is in /next. The /master branch is now only being tested and only stabilization patches are accepted.

Quoted 2 lines

Or is it recommended to rebase my changes on top of the tree I worked with before but with your serial patches applied? Or some other method?

Rebase on next please. Thanks!

Quoted 2 lines

Thanks,
Andrew

Best regards,
Marek Vasut

#22 lore raw

PATCH 4/6 console & omap-common/spl: Enable use of eserial

In reply to a message not in the archive
Quoted 38 lines · Andrew Bradford

Dear Marek Vasut,

Quoted 22 lines · On Thu, 27 Sep 2012 18:34:18 +0200 Marek Vasut <[email protected]> wrote:

Dear Andrew Bradford,

Quoted 20 lines

Enable use of eserial devices for common and omap-common/spl.

This probably isn't the right way to do this as the changes aren't needed for 'common' configurations, just for one case.

---
 arch/arm/cpu/armv7/omap-common/spl.c |    7 ++++++-
 common/console.c                     |   24

++++++++++++++++++++---- include/common.h |
5 +++++ 3 files changed, 31 insertions(+), 5 deletions(-)

(quoted diff) +0 -0

b/arch/arm/cpu/armv7/omap-common/spl.c index 4d1ac85..6258c0e 100644

arch/arm/cpu/armv7/omap-common/spl.c +0 -0
@@ -210,7 +210,12 @@ void preloader_console_init(void)
 	gd->flags |= GD_FLG_RELOC;
 	gd->baudrate = CONFIG_BAUDRATE;
 
Quoted 10 lines

arch/arm/cpu/armv7/omap-common/spl.c void preloader_console_init(void) · line 215

Quoted 5 lines
arch/arm/cpu/armv7/omap-common/spl.c +0 -1
-	serial_init();		/* serial communications

setup */

arch/arm/cpu/armv7/omap-common/spl.c +3 -0
+	/* serial communications setup */
+#ifdef CONFIG_SERIAL_MULTI
+	ESERIAL_FUNC(CONFIG_CONS_INDEX, init)();

Uh, if you implement default_serial_console properly(), you won't need this. Actually, I'm in the process of rolling out V2 of my serial patchset, which will make your life much more easier. Can you rebase the patchset on my series? I'll poke you about it.

Quoted 3 lines

I see that your serial patches have made it into u-boot/next, should I rebase this patch set with the requested changes on top of u-boot/next and resubmit? Sorry, I'm not entirely clear on the role /next plays.

Yes please, thanks.

Signature · 8 lines
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/20121010/25a6b109/attachment.pgp>
#23 lore raw

PATCH 5/6 am33xx: Enable eserial device usage for ns16550

In reply to Andrew Bradford
---
 include/serial.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
include/serial.h +1 -1
index dcb2d97..079655f 100644
@@ -32,7 +32,7 @@ extern struct serial_device *default_serial_console(void);
 	defined(CONFIG_MPC83xx) || defined(CONFIG_MPC85xx) || \
 	defined(CONFIG_MPC86xx) || defined(CONFIG_SYS_SC520) || \
 	defined(CONFIG_TEGRA20) || defined(CONFIG_SYS_COREBOOT) || \
-	defined(CONFIG_MICROBLAZE)
+	defined(CONFIG_MICROBLAZE) || defined(CONFIG_AM33XX)
 extern struct serial_device serial0_device;
 extern struct serial_device serial1_device;
 #if defined(CONFIG_SYS_NS16550_SERIAL)
Signature · 1 line
1.7.10
#24 lore raw

PATCH 6/6 am335x_evm: Enable use of UART{1,2,4,5}

In reply to Andrew Bradford

Add targets of am335x_evm_uart{1,2,4,5} to have serial input/output on UART{1,2,4,5} for use with the Beaglebone RS232 cape and other custom configurations.

---
 boards.cfg                   |    4 ++++
 include/configs/am335x_evm.h |   28 +++++++++++++++++++++++++++-
 2 files changed, 31 insertions(+), 1 deletion(-)
boards.cfg +4 -0
index f789539..342de03 100644
@@ -220,6 +220,10 @@ integratorap_cm946es         arm         arm946es    integrator          armltd
 integratorcp_cm946es         arm         arm946es    integrator          armltd         -               integratorcp:CM946ES
 ca9x4_ct_vxp                 arm         armv7       vexpress            armltd
 am335x_evm                   arm         armv7       am335x              ti             am33xx
+am335x_evm_uart1             arm         armv7       am335x              ti             am33xx      am335x_evm:AM33XX_UART_SELECT=1
+am335x_evm_uart2             arm         armv7       am335x              ti             am33xx      am335x_evm:AM33XX_UART_SELECT=2
+am335x_evm_uart4             arm         armv7       am335x              ti             am33xx      am335x_evm:AM33XX_UART_SELECT=4
+am335x_evm_uart5             arm         armv7       am335x              ti             am33xx      am335x_evm:AM33XX_UART_SELECT=5
 highbank                     arm         armv7       highbank            -              highbank
 mx51_efikamx                 arm         armv7       mx51_efikamx        genesi         mx5		mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg
 mx51_efikasb                 arm         armv7       mx51_efikamx        genesi         mx5		mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKASB,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_sb.cfg
include/configs/am335x_evm.h +27 -1
index a3752bc..efb11d8 100644
@@ -158,9 +158,14 @@
 /* NS16550 Configuration */
 #define CONFIG_SYS_NS16550
 #define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SERIAL_MULTI
 #define CONFIG_SYS_NS16550_REG_SIZE	(-4)
 #define CONFIG_SYS_NS16550_CLK		(48000000)
 #define CONFIG_SYS_NS16550_COM1		0x44e09000	/* Base EVM has UART0 */
+#define CONFIG_SYS_NS16550_COM2		0x48022000	/* UART1 */
+#define CONFIG_SYS_NS16550_COM3		0x48024000	/* UART2 */
+#define CONFIG_SYS_NS16550_COM5		0x481a8000	/* UART4 */
+#define CONFIG_SYS_NS16550_COM6		0x481aa000	/* UART5 */
 
 /* I2C Configuration */
 #define CONFIG_I2C
@@ -182,11 +187,32 @@
 #define CONFIG_SYS_BAUDRATE_TABLE	{ 110, 300, 600, 1200, 2400, \
 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }
 
+#define CONFIG_ENV_OVERWRITE		1
+
 /*
- * select serial console configuration
+ * select serial console configuration, uart0 always enabled
  */
 #define CONFIG_SERIAL1			1
+#ifndef CONFIG_AM33XX_UART_SELECT
 #define CONFIG_CONS_INDEX		1
+#endif /* CONFIG_AM33XX_UART_SELECT */
+
+#if CONFIG_AM33XX_UART_SELECT == 1
+#define CONFIG_SERIAL2			1
+#define CONFIG_CONS_INDEX		2
+#endif /* CONFIG_AM33XX_UART_SELECT == 1 */
+#if CONFIG_AM33XX_UART_SELECT == 2
+#define CONFIG_SERIAL3			1
+#define CONFIG_CONS_INDEX		3
+#endif /* CONFIG_AM33XX_UART_SELECT == 2 */
+#if CONFIG_AM33XX_UART_SELECT == 4
+#define CONFIG_SERIAL5			1
+#define CONFIG_CONS_INDEX		5
+#endif /* CONFIG_AM33XX_UART_SELECT == 4 */
+#if CONFIG_AM33XX_UART_SELECT == 5
+#define CONFIG_SERIAL6			1
+#define CONFIG_CONS_INDEX		6
+#endif /* CONFIG_AM33XX_UART_SELECT == 5 */
 #define CONFIG_SYS_CONSOLE_INFO_QUIET
 
 #define CONFIG_ENV_IS_NOWHERE
Signature · 1 line
1.7.10
#25 lore raw

PATCH 6/6 am335x_evm: Enable use of UART{1,2,4,5}

Quoted 3 lines · Andrew Bradford

Add targets of am335x_evm_uart{1,2,4,5} to have serial input/output on UART{1,2,4,5} for use with the Beaglebone RS232 cape and other custom configurations.

Add the UART3 target and I'll blow the dust off my EVM and try to test it. :)

-Matt

Quoted 82 lines
---
 boards.cfg                   |    4 ++++
 include/configs/am335x_evm.h |   28 +++++++++++++++++++++++++++-
 2 files changed, 31 insertions(+), 1 deletion(-)
boards.cfg +4 -0
index f789539..342de03 100644
@@ -220,6 +220,10 @@ integratorap_cm946es         arm         arm946es    integrator          armltd
 integratorcp_cm946es         arm         arm946es    integrator          armltd         -               integratorcp:CM946ES
 ca9x4_ct_vxp                 arm         armv7       vexpress            armltd
 am335x_evm                   arm         armv7       am335x              ti             am33xx
+am335x_evm_uart1             arm         armv7       am335x              ti             am33xx      am335x_evm:AM33XX_UART_SELECT=1
+am335x_evm_uart2             arm         armv7       am335x              ti             am33xx      am335x_evm:AM33XX_UART_SELECT=2
+am335x_evm_uart4             arm         armv7       am335x              ti             am33xx      am335x_evm:AM33XX_UART_SELECT=4
+am335x_evm_uart5             arm         armv7       am335x              ti             am33xx      am335x_evm:AM33XX_UART_SELECT=5
 highbank                     arm         armv7       highbank            -              highbank
 mx51_efikamx                 arm         armv7       mx51_efikamx        genesi         mx5		mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg
 mx51_efikasb                 arm         armv7       mx51_efikamx        genesi         mx5		mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKASB,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_sb.cfg
include/configs/am335x_evm.h +27 -1
index a3752bc..efb11d8 100644
@@ -158,9 +158,14 @@
 /* NS16550 Configuration */
 #define CONFIG_SYS_NS16550
 #define CONFIG_SYS_NS16550_SERIAL
+#define CONFIG_SERIAL_MULTI
 #define CONFIG_SYS_NS16550_REG_SIZE	(-4)
 #define CONFIG_SYS_NS16550_CLK		(48000000)
 #define CONFIG_SYS_NS16550_COM1		0x44e09000	/* Base EVM has UART0 */
+#define CONFIG_SYS_NS16550_COM2		0x48022000	/* UART1 */
+#define CONFIG_SYS_NS16550_COM3		0x48024000	/* UART2 */
+#define CONFIG_SYS_NS16550_COM5		0x481a8000	/* UART4 */
+#define CONFIG_SYS_NS16550_COM6		0x481aa000	/* UART5 */
 
 /* I2C Configuration */
 #define CONFIG_I2C
@@ -182,11 +187,32 @@
 #define CONFIG_SYS_BAUDRATE_TABLE	{ 110, 300, 600, 1200, 2400, \
 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }
 
+#define CONFIG_ENV_OVERWRITE		1
+
 /*
- * select serial console configuration
+ * select serial console configuration, uart0 always enabled
  */
 #define CONFIG_SERIAL1			1
+#ifndef CONFIG_AM33XX_UART_SELECT
 #define CONFIG_CONS_INDEX		1
+#endif /* CONFIG_AM33XX_UART_SELECT */
+
+#if CONFIG_AM33XX_UART_SELECT == 1
+#define CONFIG_SERIAL2			1
+#define CONFIG_CONS_INDEX		2
+#endif /* CONFIG_AM33XX_UART_SELECT == 1 */
+#if CONFIG_AM33XX_UART_SELECT == 2
+#define CONFIG_SERIAL3			1
+#define CONFIG_CONS_INDEX		3
+#endif /* CONFIG_AM33XX_UART_SELECT == 2 */
+#if CONFIG_AM33XX_UART_SELECT == 4
+#define CONFIG_SERIAL5			1
+#define CONFIG_CONS_INDEX		5
+#endif /* CONFIG_AM33XX_UART_SELECT == 4 */
+#if CONFIG_AM33XX_UART_SELECT == 5
+#define CONFIG_SERIAL6			1
+#define CONFIG_CONS_INDEX		6
+#endif /* CONFIG_AM33XX_UART_SELECT == 5 */
 #define CONFIG_SYS_CONSOLE_INFO_QUIET
 
 #define CONFIG_ENV_IS_NOWHERE
Signature · 6 lines
1.7.10

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot