annotate source/uart_pl011.c @ 0:ed10291ff195

first commit
author mir3636
date Sun, 06 Jan 2019 19:27:03 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ed10291ff195 first commit
mir3636
parents:
diff changeset
1 /*
ed10291ff195 first commit
mir3636
parents:
diff changeset
2 * pl011.c
ed10291ff195 first commit
mir3636
parents:
diff changeset
3 *
ed10291ff195 first commit
mir3636
parents:
diff changeset
4 * Created on: Nov 20, 2016
ed10291ff195 first commit
mir3636
parents:
diff changeset
5 * Author: Mahdi Amiri
ed10291ff195 first commit
mir3636
parents:
diff changeset
6 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
7 #include <fvp.h>
ed10291ff195 first commit
mir3636
parents:
diff changeset
8 #include <types.h>
ed10291ff195 first commit
mir3636
parents:
diff changeset
9 #include <defs.h>
ed10291ff195 first commit
mir3636
parents:
diff changeset
10
ed10291ff195 first commit
mir3636
parents:
diff changeset
11 uint uart_lock; //Mutex lock
ed10291ff195 first commit
mir3636
parents:
diff changeset
12
ed10291ff195 first commit
mir3636
parents:
diff changeset
13 void uartinit_fvp(){
ed10291ff195 first commit
mir3636
parents:
diff changeset
14 /* Enable pl011 interrupts */
ed10291ff195 first commit
mir3636
parents:
diff changeset
15 *(volatile uint*) FVP_PL011_UARTIMSC = FVP_PL011_UARTIMSC_RXIM;
ed10291ff195 first commit
mir3636
parents:
diff changeset
16
ed10291ff195 first commit
mir3636
parents:
diff changeset
17 /* Enable pl011 controller */
ed10291ff195 first commit
mir3636
parents:
diff changeset
18 *(volatile uint*) FVP_PL011_UARTCR =
ed10291ff195 first commit
mir3636
parents:
diff changeset
19 *(volatile uint*) FVP_PL011_UARTCR | FVP_PL011_UARTCR_UARTEN | FVP_PL011_UARTCR_TXE | FVP_PL011_UARTCR_RXE;
ed10291ff195 first commit
mir3636
parents:
diff changeset
20 //outw(UARTCR,inw(UARTCR) | UARTCR_UARTEN | UARTCR_TXE | UARTCR_RXE);
ed10291ff195 first commit
mir3636
parents:
diff changeset
21 //enable_irq(37,1);
ed10291ff195 first commit
mir3636
parents:
diff changeset
22 uart_lock=0; // Open Mutex lock
ed10291ff195 first commit
mir3636
parents:
diff changeset
23 }
ed10291ff195 first commit
mir3636
parents:
diff changeset
24
ed10291ff195 first commit
mir3636
parents:
diff changeset
25 void uartputc_fvp(uint c)
ed10291ff195 first commit
mir3636
parents:
diff changeset
26 {
ed10291ff195 first commit
mir3636
parents:
diff changeset
27 if(c=='\n') {
ed10291ff195 first commit
mir3636
parents:
diff changeset
28 /* Wait until the buffer is empty */
ed10291ff195 first commit
mir3636
parents:
diff changeset
29 while (*(volatile uint*)(FVP_PL011_UARTFR) & (FVP_PL011_UARTFR_TXFF));
ed10291ff195 first commit
mir3636
parents:
diff changeset
30 //while (inw(UARTFR) & UARTFR_TXFF);
ed10291ff195 first commit
mir3636
parents:
diff changeset
31 /* Put the character into the register */
ed10291ff195 first commit
mir3636
parents:
diff changeset
32 *(volatile uint*) FVP_PL011_UARTDR = 0x0d;
ed10291ff195 first commit
mir3636
parents:
diff changeset
33 //outw(UARTDR , c);
ed10291ff195 first commit
mir3636
parents:
diff changeset
34 }
ed10291ff195 first commit
mir3636
parents:
diff changeset
35 while (*(volatile uint*)(FVP_PL011_UARTFR) & (FVP_PL011_UARTFR_TXFF));
ed10291ff195 first commit
mir3636
parents:
diff changeset
36 *(volatile uint*) FVP_PL011_UARTDR = c;
ed10291ff195 first commit
mir3636
parents:
diff changeset
37
ed10291ff195 first commit
mir3636
parents:
diff changeset
38
ed10291ff195 first commit
mir3636
parents:
diff changeset
39 }
ed10291ff195 first commit
mir3636
parents:
diff changeset
40
ed10291ff195 first commit
mir3636
parents:
diff changeset
41 uint uartgetc_fvp()
ed10291ff195 first commit
mir3636
parents:
diff changeset
42 {
ed10291ff195 first commit
mir3636
parents:
diff changeset
43 /* Wait until the buffer is empty */
ed10291ff195 first commit
mir3636
parents:
diff changeset
44 while (*(volatile uint*)(FVP_PL011_UARTFR) & (FVP_PL011_UARTFR_RXFE));
ed10291ff195 first commit
mir3636
parents:
diff changeset
45 //while (inw(UARTFR) & UARTFR_RXFE);
ed10291ff195 first commit
mir3636
parents:
diff changeset
46 /* Put the character into the register */
ed10291ff195 first commit
mir3636
parents:
diff changeset
47 return *(volatile uint*) FVP_PL011_UARTDR;
ed10291ff195 first commit
mir3636
parents:
diff changeset
48 //outw(UARTDR , c);
ed10291ff195 first commit
mir3636
parents:
diff changeset
49 }