am335x_evm: Enable UART{1,2,4,5}
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
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
@@ -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
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.
Signed-off-by Andrew Bradford <[email protected]>--- arch/arm/cpu/armv7/am33xx/clock.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)arch/arm/cpu/armv7/am33xx/clock.c +3
-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);
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
PATCH 1/6 am33xx: Enable UART{1,2,4,5} clocks
In reply to Andrew BradfordDear 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.
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.cindex 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
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.
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.cindex 2b19506..4eb9226 100644arch/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
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.
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.cindex 2b19506..4eb9226 100644arch/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
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.
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.cindex 2b19506..4eb9226 100644 ---a/arch/arm/cpu/armv7/am33xx/clock.c+++b/arch/arm/cpu/armv7/am33xx/clock.c@@ -114,6 +114,34 @@ static voidenable_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-----
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.
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.cindex 2b19506..4eb9226 100644 ---a/arch/arm/cpu/armv7/am33xx/clock.c+++b/arch/arm/cpu/armv7/am33xx/clock.c@@ -114,6 +114,34 @@ static voidenable_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
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.
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.cindex 2b19506..4eb9226 100644 ---a/arch/arm/cpu/armv7/am33xx/clock.c+++b/arch/arm/cpu/armv7/am33xx/clock.c@@ -114,6 +114,34 @@ static voidenable_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-----
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.
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.cindex 2b19506..4eb9226 100644 ---a/arch/arm/cpu/armv7/am33xx/clock.c+++b/arch/arm/cpu/armv7/am33xx/clock.c@@ -114,6 +114,34 @@ static voidenable_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 glboallyWe 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
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.cindex
2b19506..4eb9226 100644 ---a/arch/arm/cpu/armv7/am33xx/clock.c+++b/arch/arm/cpu/armv7/am33xx/clock.c@@ -114,6
+114,34 @@ static voidenable_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 glboallyQuoted 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-----
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: SHA1Quoted 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.cindex
2b19506..4eb9226 100644 ---a/arch/arm/cpu/armv7/am33xx/clock.c+++b/arch/arm/cpu/armv7/am33xx/clock.c@@ -114,6
+114,34 @@ static voidenable_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 glboallyQuoted 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_RESETwhere it makes sense and udelay where we're just delaying. I don't seeWATCHDOG_RESET()being used for enable this-or-that clock. But maybe I'm just really missing something about how we useWATCHDOG_RESETin 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
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: SHA1Quoted 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.cindex
2b19506..4eb9226 100644 ---a/arch/arm/cpu/armv7/am33xx/clock.c+++b/arch/arm/cpu/armv7/am33xx/clock.c@@ -114,6
+114,34 @@ static voidenable_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 glboallyQuoted 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_RESETwhere it makes sense and udelay where we're just delaying. I don't seeWATCHDOG_RESET()being used for enable this-or-that clock. But maybe I'm just really missing something about how we useWATCHDOG_RESETin the case where it's not a nop.Is there a consensus on the use of
WATCHDOG_RESETvs. udelay(1) in this instance?
Quoted 7 lines
Looking through the
arch/arm/cpu/armv7/{omap-common,omap3}/clockfiles shows no use of eitherWATCHDOG_RESETor udelay(1) in the ways mentioned. In fact, I can't easily find a use ofWATCHDOG_RESETat all withinarch/arm/cpu/armv7code.What is the goal of using either udelay(1) or
WATCHDOG_RESETas 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>
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: SHA1Quoted 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.cindex
2b19506..4eb9226 100644 ---a/arch/arm/cpu/armv7/am33xx/clock.c+++b/arch/arm/cpu/armv7/am33xx/clock.c@@ -114,6
+114,34 @@ static voidenable_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 glboallyQuoted 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_RESETwhere it makes sense and udelay where we're just delaying. I don't seeWATCHDOG_RESET()being used for enable this-or-that clock. But maybe I'm just really missing something about how we useWATCHDOG_RESETin the case where it's not a nop.Is there a consensus on the use of
WATCHDOG_RESETvs. udelay(1) in this instance?Looking through the
arch/arm/cpu/armv7/{omap-common,omap3}/clockfiles shows no use of eitherWATCHDOG_RESETor udelay(1) in the ways mentioned. In fact, I can't easily find a use ofWATCHDOG_RESETat all withinarch/arm/cpu/armv7code.
Quoted 6 lines
Quoted 2 lines
What is the goal of using either udelay(1) or
WATCHDOG_RESETas 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
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
PATCH 2/6 am33xx: Enable UART{1,2,4,5} pin-mux
In reply to Andrew BradfordIf 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
@@ -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
@@ -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
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.
Signed-off-by Andrew Bradford <[email protected]>--- 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@@ -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@@ -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@@ -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
PATCH 3/6 serial: Enable up to 6 eserial devices
In reply to Andrew BradfordIncrease 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
@@ -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
@@ -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
@@ -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
PATCH 4/6 console & omap-common/spl: Enable use of eserial
In reply to Andrew BradfordEnable 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
@@ -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
@@ -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
@@ -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
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.
Signed-off-by Andrew Bradford <[email protected]>--- 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.cindex 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
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
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.
Signed-off-by Andrew Bradford <[email protected]>---
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.cindex 4d1ac85..6258c0e 100644arch/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_consoleproperly(), 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
PATCH 4/6 console & omap-common/spl: Enable use of eserial
In reply to a message not in the archiveQuoted 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.
Signed-off-by Andrew Bradford <[email protected]>--- 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.cindex 4d1ac85..6258c0e 100644arch/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_consoleproperly(), 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>
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
@@ -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
PATCH 6/6 am335x_evm: Enable use of UART{1,2,4,5}
In reply to Andrew BradfordAdd 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
@@ -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
@@ -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
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
Signed-off-by Andrew Bradford <[email protected]>--- boards.cfg | 4 ++++ include/configs/am335x_evm.h | 28 +++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-)boards.cfg +4
-0@@ -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.cfginclude/configs/am335x_evm.h +27
-1@@ -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