ARM: OMAP: debug_ll: Add support for PBL console
Subsystems (3)
RFC 1/1 ARM: OMAP: debug_ll: Add support for PBL console
Signed-off-by Alexander Shiyan <[email protected]>
--- arch/arm/boards/myirtech-x335x/lowlevel.c | 10 ++++------ arch/arm/mach-omap/include/mach/debug_ll.h | 20 ++++++++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-)
arch/arm/boards/myirtech-x335x/lowlevel.c +4 -6
@@ -95,12 +95,10 @@ ENTRY_FUNCTION(start_am33xx_myirtech_sram, bootinfo, r1, r2)am335x_sdram_init (0x18b , &ddr3_cmd_ctrl, &ddr3_regs, &ddr3_data); } -if (IS_ENABLED (CONFIG_DEBUG_LL )) { -am33xx_uart_soft_reset (IOMEM (AM33XX_UART0_BASE )); -am33xx_enable_uart0_pin_mux (); -omap_uart_lowlevel_init (IOMEM (AM33XX_UART0_BASE )); -putc_ll ('>' ); - } +am33xx_uart_soft_reset (IOMEM (AM33XX_UART0_BASE )); +am33xx_enable_uart0_pin_mux (); +omap_uart_lowlevel_init (IOMEM (AM33XX_UART0_BASE )); +pr_debug ("MYIR MYC-AM335X\n" );am335x_barebox_entry (fdt); }
arch/arm/mach-omap/include/mach/debug_ll.h +14 -6
@@ -17,6 +17,7 @@#ifndef __MACH_DEBUG_LL_H__#define __MACH_DEBUG_LL_H__ +#include <console.h> #include <io.h> #include <mach/omap3-silicon.h> #include <mach/omap4-silicon.h>
@@ -34,6 +35,16 @@#define MCR (4 << 2)#define MDR (8 << 2) +static inline void omap_uart_putc (void *base,int c) +{ +/* Wait until there is space in the FIFO */ +while ((readb (base +LSR ) &LSR_THRE ) ==0 ); +/* Send the character */ +writeb (c, base +THR ); +/* Wait to make sure it hits the line, in case we die too soon. */ +while ((readb (base +LSR ) &LSR_THRE ) ==0 ); +} +static inline void omap_uart_lowlevel_init (void __iomem *base) {writeb (0x00 , base +LCR );
@@ -46,6 +57,8 @@ static inline void omap_uart_lowlevel_init(void __iomem *base)writeb (0x03 , base +MCR );writeb (0x07 , base +FCR );writeb (0x00 , base +MDR ); + +pbl_set_putc (omap_uart_putc, base); }#ifdef CONFIG_DEBUG_LL
@@ -68,12 +81,7 @@ static inline void PUTC_LL(char c)void __iomem *base = (void *)OMAP_UART_BASE (OMAP_DEBUG_SOC ,CONFIG_DEBUG_OMAP_UART_PORT ); -/* Wait until there is space in the FIFO */ -while ((readb (base +LSR ) &LSR_THRE ) ==0 ); -/* Send the character */ -writeb (c, base +THR ); -/* Wait to make sure it hits the line, in case we die too soon. */ - while ((readb(base + LSR) & LSR_THRE) == 0); + omap_uart_putc(base, c); }#endif
Signature · 7 lines
2.32.0 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Quoted 57 lines · Alexander Shiyan
Signed-off-by Alexander Shiyan <[email protected]>--- arch/arm/boards/myirtech-x335x/lowlevel.c | 10 ++++------ arch/arm/mach-omap/include/mach/debug_ll.h | 20 ++++++++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-)arch/arm/boards/myirtech-x335x/lowlevel.c +4
-6@@ -95,12 +95,10 @@ ENTRY_FUNCTION(start_am33xx_myirtech_sram, bootinfo, r1, r2)am335x_sdram_init (0x18b , &ddr3_cmd_ctrl, &ddr3_regs, &ddr3_data); } -if (IS_ENABLED (CONFIG_DEBUG_LL )) { -am33xx_uart_soft_reset (IOMEM (AM33XX_UART0_BASE )); -am33xx_enable_uart0_pin_mux (); -omap_uart_lowlevel_init (IOMEM (AM33XX_UART0_BASE )); -putc_ll ('>' ); - } +am33xx_uart_soft_reset (IOMEM (AM33XX_UART0_BASE )); +am33xx_enable_uart0_pin_mux (); +omap_uart_lowlevel_init (IOMEM (AM33XX_UART0_BASE )); +pr_debug ("MYIR MYC-AM335X\n" );am335x_barebox_entry (fdt); }arch/arm/mach-omap/include/mach/debug_ll.h +11
-0@@ -17,6 +17,7 @@#ifndef __MACH_DEBUG_LL_H__#define __MACH_DEBUG_LL_H__ +#include <console.h> #include <io.h> #include <mach/omap3-silicon.h> #include <mach/omap4-silicon.h> @@ -34,6 +35,16 @@#define MCR (4 << 2)#define MDR (8 << 2) +static inline void omap_uart_putc (void *base,int c) +{ +/* Wait until there is space in the FIFO */ +while ((readb (base +LSR ) &LSR_THRE ) ==0 ); +/* Send the character */ +writeb (c, base +THR ); +/* Wait to make sure it hits the line, in case we die too soon. */ +while ((readb (base +LSR ) &LSR_THRE ) ==0 ); +} +static inline void omap_uart_lowlevel_init (void __iomem *base) {writeb (0x00 , base +LCR );
arch/arm/mach-omap/include/mach/debug_ll.h static inline void omap_uart_lowlevel_init(void __iomem *base) · line 61
Quoted 5 lines
arch/arm/mach-omap/include/mach/debug_ll.h +2
-0@@ -46,6 +57,8 @@ static inline void omap_uart_lowlevel_init(void __iomem *base)writeb (0x03 , base +MCR );writeb (0x07 , base +FCR );writeb (0x00 , base +MDR ); + +pbl_set_putc (omap_uart_putc, base);
This should be called by the board code. pbl_set_putc() will only work when we a running in a full C environment, i.e. we are running at the address we are linked at. omap_uart_lowlevel_init() doesn't have this constraint and could be used earlier.
Otherwise looks good.
Sascha
Signature · 9 lines
Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox