Allow reading from the mini UART. Add a check to not touch the UART unless it's been initialised (in case of accidents when running in kernel mode).
--HG-- branch : dtrg-videocore
This commit is contained in:
parent
366cd10194
commit
e01f00e320
|
@ -113,12 +113,19 @@ delay2:
|
||||||
mov r0, #3
|
mov r0, #3
|
||||||
st r0, (r1)
|
st r0, (r1)
|
||||||
|
|
||||||
|
! Mark the uart as being initialised.
|
||||||
|
mov r0, #1
|
||||||
|
stb r0, __uart_status
|
||||||
|
|
||||||
b lr
|
b lr
|
||||||
|
|
||||||
! Send a single byte.
|
! Send a single byte.
|
||||||
|
|
||||||
.define __sys_rawwrite
|
.define __sys_rawwrite
|
||||||
__sys_rawwrite:
|
__sys_rawwrite:
|
||||||
|
ldb r0, __uart_status
|
||||||
|
b.eq r0, #0, 1f
|
||||||
|
|
||||||
ld r0, (sp)
|
ld r0, (sp)
|
||||||
mov r1, #AUX_MU_LSR_REG
|
mov r1, #AUX_MU_LSR_REG
|
||||||
! loop until space available in Tx buffer
|
! loop until space available in Tx buffer
|
||||||
|
@ -131,5 +138,27 @@ sendwait:
|
||||||
mov r1, #AUX_MU_IO_REG
|
mov r1, #AUX_MU_IO_REG
|
||||||
stb r0, (r1)
|
stb r0, (r1)
|
||||||
|
|
||||||
|
1:
|
||||||
b lr
|
b lr
|
||||||
|
|
||||||
|
! Receive a single byte.
|
||||||
|
|
||||||
|
.define __sys_rawread
|
||||||
|
__sys_rawread:
|
||||||
|
ldb r0, __uart_status
|
||||||
|
b.eq r0, #0, 1b
|
||||||
|
|
||||||
|
! receive 1 byte (returned in r0)
|
||||||
|
mov r1, #AUX_MU_LSR_REG
|
||||||
|
mov r2, #AUX_MU_IO_REG
|
||||||
|
! loop until char available
|
||||||
|
recvwait:
|
||||||
|
ld r3, (r1)
|
||||||
|
and r3, #0x1
|
||||||
|
b.ne r3, #0x1, recvwait
|
||||||
|
|
||||||
|
ldb r0, (r2)
|
||||||
|
1:
|
||||||
|
b lr
|
||||||
|
|
||||||
|
.comm __uart_status, 1
|
||||||
|
|
Loading…
Reference in a new issue