1.. SPDX-License-Identifier: GPL-2.0+:
2
3acpi command
4============
5
6Synopis
7-------
8
9::
10
11    acpi list
12    acpi items [-d]
13    acpi dump <name>
14
15Description
16-----------
17
18The *acpi* command is used to dump the ACPI tables generated by U-Boot for passing
19to the operating systems.
20
21ACPI tables can be generated by various output functions and even devices can
22output material to include in the Differentiated System Description Table (DSDT)
23and SSDT tables (Secondary System Description Table). U-Boot keeps track of
24which device or table-writer produced each piece of the ACPI tables.
25
26The ACPI tables are stored contiguously in memory.
27
28
29acpi list
30~~~~~~~~~
31
32List the ACPI tables that have been generated. Each table has a 4-character
33table name (e.g. SSDT, FACS) and has a format defined by the
34`ACPI specification`_.
35
36U-Boot does not currently support decoding the tables. Unlike devicetree, ACPI
37tables have no regular schema and also some include bytecode, so decoding the
38tables requires a lot of code.
39
40The table shows the following information:
41
42Name
43    Table name, e.g. `MCFG`
44
45Base
46    Base address of table in memory
47
48Size
49    Size of table in bytes
50
51Detail
52    More information depending on the table type
53
54    Revision
55        Table revision number (two decimal digits)
56
57    OEM ID
58        ID for the Original Equipment Manufacturer. Typically this is "U-BOOT".
59
60    OEM Table ID
61        Table ID for the Original Equipment Manufacturer. Typically this is
62        "U-BOOTBL" (U-Boot bootloader)
63
64    OEM Revision
65        Revision string for the Original Equipment Manufacturer. Typically this
66        is the U-Boot release number, e.g. 20220101 (meaning v2022.01 since the
67        final 01 is not used). For DSDT, this is set by the source code in
68        the parameters of DefinitionBlock().
69
70    ACPI compiler-vendor ID
71        This is normally `INTL` for Intel
72
73    ACPI compiler revision
74        This is the compiler revision. It is set to the version string for the
75        DSDT table but other tables just use the value 0 or 1, since U-Boot does
76        not actually use the compiler in these cases. It generates the code
77        itself.
78
79acpi items
80~~~~~~~~~~
81
82List the ACPI data that was generated, broken down by item. An item is either
83an ACPI table generated by a writer function, or the part of a table that was
84generated by a particular device.
85
86The `-d` flag also shows a binary dump of the table.
87
88The table shows the following information about each item:
89
90Seq
91    Sequence number in hex
92
93Type
94    Type of item
95
96    =====  ============================================================
97    Type   Meaning
98    =====  ============================================================
99    dsdt   Fragment of a DSDT table, as generated by a device
100    ssdt   Fragment of a SSDT table, as generated by a device
101    other  A whole table of a particular type. as generated by a writer
102    =====  ============================================================
103
104Base
105    Base address of table in memory
106
107Size
108    Size of table in bytes
109
110Device / Writer
111    Name of device (for ssdt/dsdt) that wrong this fragment of the table, or
112    name of the registered writer function (otherwise) that wrote the table.
113
114acpi dump
115~~~~~~~~~
116
117Dump a paticular ACPI table in binary format. This can be used to read the table
118if you have the specification handy.
119
120
121Example
122-------
123
124::
125
126    => acpi list
127    Name      Base   Size  Detail
128    ----  --------  -----  ------
129    RSDP  79925000     24  v02 U-BOOT
130    RSDT  79925030     48  v01 U-BOOT U-BOOTBL 20220101 INTL 0
131    XSDT  799250e0     6c  v01 U-BOOT U-BOOTBL 20220101 INTL 0
132    FACP  79929570     f4  v04 U-BOOT U-BOOTBL 20220101 INTL 1
133    DSDT  79925280   32ea  v02 U-BOOT U-BOOTBL 20110725 INTL 20180105
134    FACS  79925240     40
135    MCFG  79929670     2c  v01 U-BOOT U-BOOTBL 20220101 INTL 0
136    SPCR  799296a0     50  v02 U-BOOT U-BOOTBL 20220101 INTL 0
137    TPM2  799296f0     4c  v04 U-BOOT U-BOOTBL 20220101 INTL 0
138    APIC  79929740     6c  v02 U-BOOT U-BOOTBL 20220101 INTL 0
139    SSDT  799297b0   1523  v02 U-BOOT U-BOOTBL 20220101 INTL 1
140    NHLT  7992ace0    e60  v05 coral coral 3 INTL 0
141    DBG2  7992db40     61  v00 U-BOOT U-BOOTBL 20220101 INTL 0
142    HPET  7992dbb0     38  v01 U-BOOT U-BOOTBL 20220101 INTL 0
143    => acpi items
144    Seq  Type       Base   Size  Device/Writer
145    ---  -----  --------   ----  -------------
146      0  other  79925000    240  0base
147      1  other  79925240     40  1facs
148      2  dsdt   799252a4     58  board
149      3  dsdt   799252fc     10  lpc
150      4  other  79925280   32f0  3dsdt
151      5  other  79928570   1000  4gnvs
152      6  other  79929570    100  5fact
153      7  other  79929670     30  5mcfg
154      8  other  799296a0     50  5spcr
155      9  other  799296f0     50  5tpm2
156      a  other  79929740     70  5x86
157      b  ssdt   799297d4     fe  maxim-codec
158      c  ssdt   799298d2     28  i2c2@16,0
159      d  ssdt   799298fa    270  da-codec
160      e  ssdt   79929b6a     28  i2c2@16,1
161      f  ssdt   79929b92     28  i2c2@16,2
162     10  ssdt   79929bba     83  tpm@50
163     11  ssdt   79929c3d     28  i2c2@16,3
164     12  ssdt   79929c65    282  elan-touchscreen@10
165     13  ssdt   79929ee7    285  raydium-touchscreen@39
166     14  ssdt   7992a16c     28  i2c2@17,0
167     15  ssdt   7992a194     d8  elan-touchpad@15
168     16  ssdt   7992a26c    163  synaptics-touchpad@2c
169     17  ssdt   7992a3cf     28  i2c2@17,1
170     18  ssdt   7992a3f7    111  wacom-digitizer@9
171     19  ssdt   7992a508     8f  sdmmc@1b,0
172     1a  ssdt   7992a597     4b  wifi
173     1b  ssdt   7992a5e2    1a0  cpu@0
174     1c  ssdt   7992a782    1a0  cpu@1
175     1d  ssdt   7992a922    1a0  cpu@2
176     1e  ssdt   7992aac2    211  cpu@3
177     1f  other  799297b0   1530  6ssdt
178     20  other  7992ace0   2f10  8dev
179    => acpi dump mcfg
180    MCFG @ 79929670
181    00000000: 4d 43 46 47 2c 00 00 00 01 41 55 2d 42 4f 4f 54  MCFG,....AU-BOOT
182    00000010: 55 2d 42 4f 4f 54 42 4c 01 01 22 20 49 4e 54 4c  U-BOOTBL.." INTL
183    00000020: 00 00 00 00 00 00 00 00 00 00 00 00              ............
184    => acpi items -d
185    Seq  Type       Base   Size  Device/Writer
186    ---  -----  --------   ----  -------------
187      0  other  79925000    240  0base
188    00000000: 52 53 44 20 50 54 52 20 9e 55 2d 42 4f 4f 54 02  RSD PTR .U-BOOT.
189    00000010: 30 50 92 79 24 00 00 00 e0 50 92 79 00 00 00 00  0P.y$....P.y....
190    00000020: a1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
191    00000030: 52 53 44 54 48 00 00 00 01 8b 55 2d 42 4f 4f 54  RSDTH.....U-BOOT
192    00000040: 55 2d 42 4f 4f 54 42 4c 01 01 22 20 49 4e 54 4c  U-BOOTBL.." INTL
193    00000050: 00 00 00 00 70 95 92 79 70 96 92 79 a0 96 92 79  ....p..yp..y...y
194    00000060: f0 96 92 79 40 97 92 79 b0 97 92 79 e0 ac 92 79  ...y@..y...y...y
195    00000070: 40 db 92 79 b0 db 92 79 00 00 00 00 00 00 00 00  @..y...y........
196    00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
197    00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
198    000000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
199    000000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
200    000000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
201    000000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
202    000000e0: 58 53 44 54 6c 00 00 00 01 61 55 2d 42 4f 4f 54  XSDTl....aU-BOOT
203    000000f0: 55 2d 42 4f 4f 54 42 4c 01 01 22 20 49 4e 54 4c  U-BOOTBL.." INTL
204    00000100: 00 00 00 00 70 95 92 79 00 00 00 00 70 96 92 79  ....p..y....p..y
205    00000110: 00 00 00 00 a0 96 92 79 00 00 00 00 f0 96 92 79  .......y.......y
206    00000120: 00 00 00 00 40 97 92 79 00 00 00 00 b0 97 92 79  ....@..y.......y
207    00000130: 00 00 00 00 e0 ac 92 79 00 00 00 00 40 db 92 79  .......y....@..y
208    00000140: 00 00 00 00 b0 db 92 79 00 00 00 00 00 00 00 00  .......y........
209    00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
210    00000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
211    ...
212
213      1  other  79925240     40  1facs
214    00000000: 46 41 43 53 40 00 00 00 00 00 00 00 00 00 00 00  FACS@...........
215    00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
216    00000020: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
217    00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
218
219      2  dsdt   799252a4     58  board
220    00000000: 10 87 05 00 5c 00 08 4f 49 50 47 12 8c 04 00 03  ....\..OIPG.....
221    00000010: 12 8b 01 00 04 01 01 0e ff ff ff ff ff ff ff ff  ................
222    00000020: 0d 49 4e 54 33 34 35 32 3a 30 31 00 12 85 01 00  .INT3452:01.....
223    00000030: 04 0a 03 01 0a 23 0d 49 4e 54 33 34 35 32 3a 30  .....#.INT3452:0
224    00000040: 31 00 12 85 01 00 04 0a 04 01 0a 0a 0d 49 4e 54  1............INT
225    00000050: 33 34 35 32 3a 30 30 00                          3452:00.
226
227      3  dsdt   799252fc     10  lpc
228    00000000: 10 8f 00 00 5c 00 08 4e 56 53 41 0c 10 50 93 79  ....\..NVSA..P.y
229
230      4  other  79925280   32f0  3dsdt
231    00000000: 44 53 44 54 ea 32 00 00 02 eb 55 2d 42 4f 4f 54  DSDT.2....U-BOOT
232    00000010: 55 2d 42 4f 4f 54 42 4c 25 07 11 20 49 4e 54 4c  U-BOOTBL%.. INTL
233
234
235.. _`ACPI specification`: https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
236