This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Unable to bringup UART3 on DRA75X Vayu EVM.

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