Hi All,
I am trying to bringup UART3 on on DRA75X Vayu EVM but unable transmit data using UART3.
However I am able to transmit data using UART1 using same code..
am I missing something?
Is it require more step to initialize UART3?
Please find assembly code for same.
.equ CM_WKUP_CLKSTCTRL, 0x4ae07800
.equ CM_PER_L4HS_CLKSTCTRL, 0x4a009700
.equ UART0_BASE, 0x4806A000
.equ CONF_UART0_RXD,0x4A0037E0
.equ CONF_UART0_TXD, 0x4A0037E4
/*.equ CM_WKUP_UART0_CLKCTRL, 0x44E004B4*/
.equ CM_PER_UART0_CLKCTRL, 0x4a009840
.equ UART0_SYSC, UART0_BASE + 0x54
.equ UART0_SYSS, UART0_BASE + 0x58
.equ UART2_BASE, 0x48020000
.equ CONF_UART2_RXD,0x4A003648
.equ CONF_UART2_TXD, 0x4A00364C
/*.equ CM_WKUP_UART0_CLKCTRL, 0x44E004B4*/
.equ CM_PER_UART2_CLKCTRL, 0x4a009850
.equ UART2_SYSC, UART2_BASE + 0x54
.equ UART2_SYSS, UART2_BASE + 0x58
.equ UART2_MDR1, UART2_BASE + 0x20
_start:
/* set uart mux config */
ldr r0, =CONF_UART2_RXD
ldr r1, =(0x1<<4)|(0x1<<5)
str r1, [r0]
ldr r0, =CONF_UART2_TXD
ldr r1, =0x0
str r1, [r0]
/* setup_clocks_for_console */
ldr r0, =CM_WKUP_CLKSTCTRL
ldr r1, [r0]
and r1, #~0x3
orr r1, #0x2
str r1, [r0]
ldr r0, =CM_PER_L4HS_CLKSTCTRL
ldr r1, [r0]
and r1, #~0x3
orr r1, #0x2
str r1, [r0]
ldr r0, =CM_PER_UART2_CLKCTRL
ldr r1, [r0]
and r1, #~0x3
orr r1, #0x2
str r1, [r0]
/* UART soft reset */
ldr r0, =UART2_SYSC
ldr r1, [r0]
orr r1, #0x2
str r1, [r0]
ldr r0, =UART2_SYSS
.uart_soft_reset:
ldr r1, [r0]
ands r1, #0x1
beq uart_soft_reset
/* turn off smart idle */
ldr r0, =UART2_MDR1
mov r1, #0
str r1, [r0]
ldr r0, =UART2_SYSC
ldr r1, [r0]
orr r1, #(0x1 << 0x3)
str r1, [r0]
/* initialize UART */
ldr r0, =UART2_BASE
ldr r1, =26
.uart_init:
ldrb r3, [r0, #20]
uxtb r3, r3
tst r3, #0x40
beq .uart_init
mov r3, #0
strb r3, [r0, #4]
mov r3, #7
strb r3, [r0, #32]
mvn r3, #0x7c
strb r3, [r0, #12]
mov r3, #0
strb r3, [r0]
strb r3, [r0, #4]
mov r3, #3
strb r3, [r0, #12]
strb r3, [r0, #16]
mov r3, #7
strb r3, [r0, #8]
mvn r3, #0x7c
strb r3, [r0, #12]
uxtb r3, r1
strb r3, [r0]
ubfx r1, r1, #8, #8
strb r1, [r0, #4]
mov r3, #3
strb r3, [r0, #12]
mov r3, #0
strb r3, [r0, #32]
ldr r1, =UART2_BASE
ldr r0, ='A'
.loop:
cmp r0, #'Z'
movgt r0, #'A'
bl .uart_putc
mov r3, r0
ldr r0, ='\r'
bl .uart_putc
ldr r0, ='\n'
bl .uart_putc
mov r0, r3
add r0, #1
b .loop
.uart_putc:
ldrb r2, [r1, #20]
uxtb r2, r2
tst r2, #32
beq .uart_putc
strb r0, [r1]
bx lr
Regards,
Bharat Gohil