arch/x86/acpi: Replace And() with ASL 2.0 syntax
[coreboot.git] / src / arch / x86 / acpi / debug.asl
blob70fd2ecb53e59c217981ebc488b7a0818e9767c7
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 /*
4 * 0x3F8: DEBCOM_BASE
6 * CREG: DEBCOM_REGION
7 * CUAR: DEBCOM_UART
8 * CDAT: DEBCOM_DATA
9 * CDLM: DEBCOM_DLM
10 * DLCR: DEBCOM_LCR
11 * CMCR: DEBCOM_MCR
12 * CLSR: DEBCOM_LSR
14 * DEBUG_INIT    DINI
17 OperationRegion(CREG, SystemIO, 0x3F8, 8)
18         Field(CREG, ByteAcc, NoLock, Preserve)
20         CDAT, 8,
21         CDLM, 8,, 8, DLCR, 8, CMCR, 8, CLSR, 8
25 * DINI
26 * Initialize the COM port to 115,200 8-N-1
28 Method(DINI)
30         store(0x83, DLCR)
31         store(0x01, CDAT)       /* 115200 baud (low) */
32         store(0x00, CDLM)       /* 115200 baud (high) */
33         store(0x03, DLCR)       /* word=8 stop=1 parity=none */
34         store(0x03, CMCR)       /* DTR=1 RTS=1 Out2=Off Loop=Off */
35         store(0x00, CDLM)       /* turn off interrupts */
39 * THRE
40 * Wait for COM port transmitter holding register to go empty
42 Method(THRE)
44         local0 = CLSR & 0x20
45         while (local0 == 0) {
46                 local0 = CLSR & 0x20
47         }
51 * OUTX
52 * Send a single raw character
54 Method(OUTX, 1)
56         THRE()
57         store(Arg0, CDAT)
61 * OUTC
62 * Send a single character, expanding LF into CR/LF
64 Method(OUTC, 1)
66         if (Arg0 == 0x0a) {
67                 OUTX(0x0d)
68         }
69         OUTX(Arg0)
73 * DBGN
74 * Send a single hex nibble
76 Method(DBGN, 1)
78         Local0 = Arg0 & 0x0f
79         if (Local0 < 10) {
80                 Local0 += 0x30
81         } else {
82                 Local0 += 0x37
83         }
84         OUTC(Local0)
88 * DBGB
89 * Send a hex byte
91 Method(DBGB, 1)
93         Local0 = Arg0 >> 4
94         DBGN(Local0)
95         DBGN(Arg0)
99 * DBGW
100 * Send a hex word
102 Method(DBGW, 1)
104         Local0 = Arg0 >> 8
105         DBGB(Local0)
106         DBGB(Arg0)
110 * DBGD
111 * Send a hex Dword
113 Method(DBGD, 1)
115         Local0 = Arg0 >> 16
116         DBGW(Local0)
117         DBGW(Arg0)
121 * DBGO
122 * Send either a string or an integer
124 Method(DBGO, 1)
126         /* DINI() */
127         if (ObjectType(Arg0) == 1) {
128                 if (Arg0 > 0xffff) {
129                         DBGD(Arg0)
130                 } else {
131                         if (Arg0 > 0xff) {
132                                 DBGW(Arg0)
133                         } else {
134                                 DBGB(Arg0)
135                         }
136                 }
137         } else {
138                 Name(BDBG, Buffer(80) {})
139                 store(Arg0, BDBG)
140                 store(0, Local1)
141                 while (One) {
142                         store(GETC(BDBG, Local1), Local0)
143                         if (Local0 == 0) {
144                                 return (0)
145                         }
146                         OUTC(Local0)
147                         Local1++
148                 }
149         }
150         return (0)
153 /* Get a char from a string */
154 Method(GETC, 2)
156         CreateByteField(Arg0, Arg1, DBGC)
157         return (DBGC)