Merge pull request #501 from jcastillo-arm/jc/tf-issues/300
Disable PL011 UART before configuring it
This commit is contained in:
commit
51b57481c1
|
@ -1860,7 +1860,7 @@ they can be invoked without a C Runtime stack.
|
||||||
Return : int
|
Return : int
|
||||||
|
|
||||||
This API is used by the crash reporting mechanism to initialize the crash
|
This API is used by the crash reporting mechanism to initialize the crash
|
||||||
console. It should only use the general purpose registers x0 to x2 to do the
|
console. It must only use the general purpose registers x0 to x4 to do the
|
||||||
initialization and returns 1 on success.
|
initialization and returns 1 on success.
|
||||||
|
|
||||||
### Function : plat_crash_console_putc
|
### Function : plat_crash_console_putc
|
||||||
|
@ -1869,7 +1869,7 @@ initialization and returns 1 on success.
|
||||||
Return : int
|
Return : int
|
||||||
|
|
||||||
This API is used by the crash reporting mechanism to print a character on the
|
This API is used by the crash reporting mechanism to print a character on the
|
||||||
designated crash console. It should only use general purpose registers x1 and
|
designated crash console. It must only use general purpose registers x1 and
|
||||||
x2 to do its work. The parameter and the return value are in general purpose
|
x2 to do its work. The parameter and the return value are in general purpose
|
||||||
register x0.
|
register x0.
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
* w1 - Uart clock in Hz
|
* w1 - Uart clock in Hz
|
||||||
* w2 - Baud rate
|
* w2 - Baud rate
|
||||||
* Out: return 1 on success else 0 on error
|
* Out: return 1 on success else 0 on error
|
||||||
* Clobber list : x1, x2
|
* Clobber list : x1, x2, x3, x4
|
||||||
* -----------------------------------------------
|
* -----------------------------------------------
|
||||||
*/
|
*/
|
||||||
func console_core_init
|
func console_core_init
|
||||||
|
@ -64,6 +64,20 @@ func console_core_init
|
||||||
/* Check baud rate and uart clock for sanity */
|
/* Check baud rate and uart clock for sanity */
|
||||||
cbz w1, core_init_fail
|
cbz w1, core_init_fail
|
||||||
cbz w2, core_init_fail
|
cbz w2, core_init_fail
|
||||||
|
/* Disable uart before programming */
|
||||||
|
ldr w3, [x0, #UARTCR]
|
||||||
|
mov w4, #PL011_UARTCR_UARTEN
|
||||||
|
bic w3, w3, w4
|
||||||
|
str w3, [x0, #UARTCR]
|
||||||
|
/* Flush the transmit FIFO */
|
||||||
|
ldr w3, [x0, #UARTLCR_H]
|
||||||
|
mov w4, #PL011_UARTLCR_H_FEN
|
||||||
|
bic w3, w3, w4
|
||||||
|
str w3, [x0, #UARTLCR_H]
|
||||||
|
/* Wait for the end of Tx of current character */
|
||||||
|
busy_loop:
|
||||||
|
ldr w3, [x0, #UARTFR]
|
||||||
|
tbnz w3, #PL011_UARTFR_BUSY_BIT, busy_loop
|
||||||
/* Program the baudrate */
|
/* Program the baudrate */
|
||||||
/* Divisor = (Uart clock * 4) / baudrate */
|
/* Divisor = (Uart clock * 4) / baudrate */
|
||||||
lsl w1, w1, #2
|
lsl w1, w1, #2
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
* w1 - Uart clock in Hz
|
* w1 - Uart clock in Hz
|
||||||
* w2 - Baud rate
|
* w2 - Baud rate
|
||||||
* out: return 1 on success else 0 on error
|
* out: return 1 on success else 0 on error
|
||||||
* Clobber list : x1 - x3
|
* Clobber list : x1 - x4
|
||||||
* -----------------------------------------------
|
* -----------------------------------------------
|
||||||
*/
|
*/
|
||||||
func console_init
|
func console_init
|
||||||
|
|
|
@ -71,6 +71,7 @@
|
||||||
|
|
||||||
#define PL011_UARTFR_TXFF_BIT 5 /* Transmit FIFO full bit in UARTFR register */
|
#define PL011_UARTFR_TXFF_BIT 5 /* Transmit FIFO full bit in UARTFR register */
|
||||||
#define PL011_UARTFR_RXFE_BIT 4 /* Receive FIFO empty bit in UARTFR register */
|
#define PL011_UARTFR_RXFE_BIT 4 /* Receive FIFO empty bit in UARTFR register */
|
||||||
|
#define PL011_UARTFR_BUSY_BIT 3 /* UART busy bit in UARTFR register */
|
||||||
|
|
||||||
/* Control reg bits */
|
/* Control reg bits */
|
||||||
#if !PL011_GENERIC_UART
|
#if !PL011_GENERIC_UART
|
||||||
|
|
|
@ -66,7 +66,7 @@ endfunc plat_arm_calc_core_pos
|
||||||
* int plat_crash_console_init(void)
|
* int plat_crash_console_init(void)
|
||||||
* Function to initialize the crash console
|
* Function to initialize the crash console
|
||||||
* without a C Runtime to print crash report.
|
* without a C Runtime to print crash report.
|
||||||
* Clobber list : x0, x1, x2
|
* Clobber list : x0 - x4
|
||||||
* ---------------------------------------------
|
* ---------------------------------------------
|
||||||
*/
|
*/
|
||||||
func plat_crash_console_init
|
func plat_crash_console_init
|
||||||
|
|
|
@ -63,7 +63,7 @@ endfunc platform_is_primary_cpu
|
||||||
* int plat_crash_console_init(void)
|
* int plat_crash_console_init(void)
|
||||||
* Function to initialize the crash console
|
* Function to initialize the crash console
|
||||||
* without a C Runtime to print crash report.
|
* without a C Runtime to print crash report.
|
||||||
* Clobber list : x0, x1, x2
|
* Clobber list : x0 - x4
|
||||||
* ---------------------------------------------
|
* ---------------------------------------------
|
||||||
*/
|
*/
|
||||||
func plat_crash_console_init
|
func plat_crash_console_init
|
||||||
|
|
|
@ -186,7 +186,7 @@ endfunc platform_mem_init
|
||||||
* int plat_crash_console_init(void)
|
* int plat_crash_console_init(void)
|
||||||
* Function to initialize the crash console
|
* Function to initialize the crash console
|
||||||
* without a C Runtime to print crash report.
|
* without a C Runtime to print crash report.
|
||||||
* Clobber list : x0, x1, x2
|
* Clobber list : x0 - x4
|
||||||
* ---------------------------------------------
|
* ---------------------------------------------
|
||||||
*/
|
*/
|
||||||
func plat_crash_console_init
|
func plat_crash_console_init
|
||||||
|
|
Loading…
Reference in New Issue