GNU Linux-libre 4.19.264-gnu1
[releases.git] / drivers / acpi / acpica / rsdumpinfo.c
1 // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
2 /*******************************************************************************
3  *
4  * Module Name: rsdumpinfo - Tables used to display resource descriptors.
5  *
6  ******************************************************************************/
7
8 #include <acpi/acpi.h>
9 #include "accommon.h"
10 #include "acresrc.h"
11
12 #define _COMPONENT          ACPI_RESOURCES
13 ACPI_MODULE_NAME("rsdumpinfo")
14
15 #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUGGER)
16 #define ACPI_RSD_OFFSET(f)          (u8) ACPI_OFFSET (union acpi_resource_data,f)
17 #define ACPI_PRT_OFFSET(f)          (u8) ACPI_OFFSET (struct acpi_pci_routing_table,f)
18 #define ACPI_RSD_TABLE_SIZE(name)   (sizeof(name) / sizeof (struct acpi_rsdump_info))
19 /*******************************************************************************
20  *
21  * Resource Descriptor info tables
22  *
23  * Note: The first table entry must be a Title or Literal and must contain
24  * the table length (number of table entries)
25  *
26  ******************************************************************************/
27 struct acpi_rsdump_info acpi_rs_dump_irq[7] = {
28         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_irq), "IRQ", NULL},
29         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(irq.descriptor_length),
30          "Descriptor Length", NULL},
31         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(irq.triggering), "Triggering",
32          acpi_gbl_he_decode},
33         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(irq.polarity), "Polarity",
34          acpi_gbl_ll_decode},
35         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(irq.sharable), "Sharing",
36          acpi_gbl_shr_decode},
37         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(irq.interrupt_count),
38          "Interrupt Count", NULL},
39         {ACPI_RSD_SHORTLIST, ACPI_RSD_OFFSET(irq.interrupts[0]),
40          "Interrupt List", NULL}
41 };
42
43 struct acpi_rsdump_info acpi_rs_dump_dma[6] = {
44         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_dma), "DMA", NULL},
45         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(dma.type), "Speed",
46          acpi_gbl_typ_decode},
47         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(dma.bus_master), "Mastering",
48          acpi_gbl_bm_decode},
49         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(dma.transfer), "Transfer Type",
50          acpi_gbl_siz_decode},
51         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(dma.channel_count), "Channel Count",
52          NULL},
53         {ACPI_RSD_SHORTLIST, ACPI_RSD_OFFSET(dma.channels[0]), "Channel List",
54          NULL}
55 };
56
57 struct acpi_rsdump_info acpi_rs_dump_start_dpf[4] = {
58         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_start_dpf),
59          "Start-Dependent-Functions", NULL},
60         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(start_dpf.descriptor_length),
61          "Descriptor Length", NULL},
62         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(start_dpf.compatibility_priority),
63          "Compatibility Priority", acpi_gbl_config_decode},
64         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(start_dpf.performance_robustness),
65          "Performance/Robustness", acpi_gbl_config_decode}
66 };
67
68 struct acpi_rsdump_info acpi_rs_dump_end_dpf[1] = {
69         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_end_dpf),
70          "End-Dependent-Functions", NULL}
71 };
72
73 struct acpi_rsdump_info acpi_rs_dump_io[6] = {
74         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_io), "I/O", NULL},
75         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(io.io_decode), "Address Decoding",
76          acpi_gbl_io_decode},
77         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(io.minimum), "Address Minimum", NULL},
78         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(io.maximum), "Address Maximum", NULL},
79         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(io.alignment), "Alignment", NULL},
80         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(io.address_length), "Address Length",
81          NULL}
82 };
83
84 struct acpi_rsdump_info acpi_rs_dump_fixed_io[3] = {
85         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_fixed_io),
86          "Fixed I/O", NULL},
87         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(fixed_io.address), "Address", NULL},
88         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(fixed_io.address_length),
89          "Address Length", NULL}
90 };
91
92 struct acpi_rsdump_info acpi_rs_dump_vendor[3] = {
93         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_vendor),
94          "Vendor Specific", NULL},
95         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(vendor.byte_length), "Length", NULL},
96         {ACPI_RSD_LONGLIST, ACPI_RSD_OFFSET(vendor.byte_data[0]), "Vendor Data",
97          NULL}
98 };
99
100 struct acpi_rsdump_info acpi_rs_dump_end_tag[1] = {
101         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_end_tag), "EndTag",
102          NULL}
103 };
104
105 struct acpi_rsdump_info acpi_rs_dump_memory24[6] = {
106         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_memory24),
107          "24-Bit Memory Range", NULL},
108         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(memory24.write_protect),
109          "Write Protect", acpi_gbl_rw_decode},
110         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(memory24.minimum), "Address Minimum",
111          NULL},
112         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(memory24.maximum), "Address Maximum",
113          NULL},
114         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(memory24.alignment), "Alignment",
115          NULL},
116         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(memory24.address_length),
117          "Address Length", NULL}
118 };
119
120 struct acpi_rsdump_info acpi_rs_dump_memory32[6] = {
121         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_memory32),
122          "32-Bit Memory Range", NULL},
123         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(memory32.write_protect),
124          "Write Protect", acpi_gbl_rw_decode},
125         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(memory32.minimum), "Address Minimum",
126          NULL},
127         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(memory32.maximum), "Address Maximum",
128          NULL},
129         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(memory32.alignment), "Alignment",
130          NULL},
131         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(memory32.address_length),
132          "Address Length", NULL}
133 };
134
135 struct acpi_rsdump_info acpi_rs_dump_fixed_memory32[4] = {
136         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_fixed_memory32),
137          "32-Bit Fixed Memory Range", NULL},
138         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(fixed_memory32.write_protect),
139          "Write Protect", acpi_gbl_rw_decode},
140         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(fixed_memory32.address), "Address",
141          NULL},
142         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(fixed_memory32.address_length),
143          "Address Length", NULL}
144 };
145
146 struct acpi_rsdump_info acpi_rs_dump_address16[8] = {
147         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address16),
148          "16-Bit WORD Address Space", NULL},
149         {ACPI_RSD_ADDRESS, 0, NULL, NULL},
150         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.granularity),
151          "Granularity", NULL},
152         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.minimum),
153          "Address Minimum", NULL},
154         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.maximum),
155          "Address Maximum", NULL},
156         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.translation_offset),
157          "Translation Offset", NULL},
158         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.address_length),
159          "Address Length", NULL},
160         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address16.resource_source), NULL, NULL}
161 };
162
163 struct acpi_rsdump_info acpi_rs_dump_address32[8] = {
164         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address32),
165          "32-Bit DWORD Address Space", NULL},
166         {ACPI_RSD_ADDRESS, 0, NULL, NULL},
167         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.granularity),
168          "Granularity", NULL},
169         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.minimum),
170          "Address Minimum", NULL},
171         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.maximum),
172          "Address Maximum", NULL},
173         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.translation_offset),
174          "Translation Offset", NULL},
175         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.address_length),
176          "Address Length", NULL},
177         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address32.resource_source), NULL, NULL}
178 };
179
180 struct acpi_rsdump_info acpi_rs_dump_address64[8] = {
181         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address64),
182          "64-Bit QWORD Address Space", NULL},
183         {ACPI_RSD_ADDRESS, 0, NULL, NULL},
184         {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.granularity),
185          "Granularity", NULL},
186         {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.minimum),
187          "Address Minimum", NULL},
188         {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.maximum),
189          "Address Maximum", NULL},
190         {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.translation_offset),
191          "Translation Offset", NULL},
192         {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.address_length),
193          "Address Length", NULL},
194         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address64.resource_source), NULL, NULL}
195 };
196
197 struct acpi_rsdump_info acpi_rs_dump_ext_address64[8] = {
198         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_ext_address64),
199          "64-Bit Extended Address Space", NULL},
200         {ACPI_RSD_ADDRESS, 0, NULL, NULL},
201         {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address.granularity),
202          "Granularity", NULL},
203         {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address.minimum),
204          "Address Minimum", NULL},
205         {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address.maximum),
206          "Address Maximum", NULL},
207         {ACPI_RSD_UINT64,
208          ACPI_RSD_OFFSET(ext_address64.address.translation_offset),
209          "Translation Offset", NULL},
210         {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address.address_length),
211          "Address Length", NULL},
212         {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.type_specific),
213          "Type-Specific Attribute", NULL}
214 };
215
216 struct acpi_rsdump_info acpi_rs_dump_ext_irq[8] = {
217         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_ext_irq),
218          "Extended IRQ", NULL},
219         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(extended_irq.producer_consumer),
220          "Type", acpi_gbl_consume_decode},
221         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(extended_irq.triggering),
222          "Triggering", acpi_gbl_he_decode},
223         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(extended_irq.polarity), "Polarity",
224          acpi_gbl_ll_decode},
225         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(extended_irq.sharable), "Sharing",
226          acpi_gbl_shr_decode},
227         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(extended_irq.resource_source), NULL,
228          NULL},
229         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(extended_irq.interrupt_count),
230          "Interrupt Count", NULL},
231         {ACPI_RSD_DWORDLIST, ACPI_RSD_OFFSET(extended_irq.interrupts[0]),
232          "Interrupt List", NULL}
233 };
234
235 struct acpi_rsdump_info acpi_rs_dump_generic_reg[6] = {
236         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_generic_reg),
237          "Generic Register", NULL},
238         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(generic_reg.space_id), "Space ID",
239          NULL},
240         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(generic_reg.bit_width), "Bit Width",
241          NULL},
242         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(generic_reg.bit_offset), "Bit Offset",
243          NULL},
244         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(generic_reg.access_size),
245          "Access Size", NULL},
246         {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(generic_reg.address), "Address", NULL}
247 };
248
249 struct acpi_rsdump_info acpi_rs_dump_gpio[16] = {
250         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_gpio), "GPIO", NULL},
251         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(gpio.revision_id), "RevisionId", NULL},
252         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(gpio.connection_type),
253          "ConnectionType", acpi_gbl_ct_decode},
254         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(gpio.producer_consumer),
255          "ProducerConsumer", acpi_gbl_consume_decode},
256         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(gpio.pin_config), "PinConfig",
257          acpi_gbl_ppc_decode},
258         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(gpio.sharable), "Sharing",
259          acpi_gbl_shr_decode},
260         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(gpio.io_restriction),
261          "IoRestriction", acpi_gbl_ior_decode},
262         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(gpio.triggering), "Triggering",
263          acpi_gbl_he_decode},
264         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(gpio.polarity), "Polarity",
265          acpi_gbl_ll_decode},
266         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.drive_strength), "DriveStrength",
267          NULL},
268         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.debounce_timeout),
269          "DebounceTimeout", NULL},
270         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(gpio.resource_source),
271          "ResourceSource", NULL},
272         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.pin_table_length),
273          "PinTableLength", NULL},
274         {ACPI_RSD_WORDLIST, ACPI_RSD_OFFSET(gpio.pin_table), "PinTable", NULL},
275         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.vendor_length), "VendorLength",
276          NULL},
277         {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(gpio.vendor_data), "VendorData",
278          NULL},
279 };
280
281 struct acpi_rsdump_info acpi_rs_dump_pin_function[10] = {
282         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_pin_function),
283          "PinFunction", NULL},
284         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_function.revision_id),
285          "RevisionId", NULL},
286         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_function.pin_config), "PinConfig",
287          acpi_gbl_ppc_decode},
288         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_function.sharable), "Sharing",
289          acpi_gbl_shr_decode},
290         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_function.function_number),
291          "FunctionNumber", NULL},
292         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(pin_function.resource_source),
293          "ResourceSource", NULL},
294         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_function.pin_table_length),
295          "PinTableLength", NULL},
296         {ACPI_RSD_WORDLIST, ACPI_RSD_OFFSET(pin_function.pin_table), "PinTable",
297          NULL},
298         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_function.vendor_length),
299          "VendorLength", NULL},
300         {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(pin_function.vendor_data),
301          "VendorData", NULL},
302 };
303
304 struct acpi_rsdump_info acpi_rs_dump_pin_config[11] = {
305         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_pin_config),
306          "PinConfig", NULL},
307         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_config.revision_id), "RevisionId",
308          NULL},
309         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_config.producer_consumer),
310          "ProducerConsumer", acpi_gbl_consume_decode},
311         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_config.sharable), "Sharing",
312          acpi_gbl_shr_decode},
313         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_config.pin_config_type),
314          "PinConfigType", NULL},
315         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(pin_config.pin_config_value),
316          "PinConfigValue", NULL},
317         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(pin_config.resource_source),
318          "ResourceSource", NULL},
319         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_config.pin_table_length),
320          "PinTableLength", NULL},
321         {ACPI_RSD_WORDLIST, ACPI_RSD_OFFSET(pin_config.pin_table), "PinTable",
322          NULL},
323         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_config.vendor_length),
324          "VendorLength", NULL},
325         {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(pin_config.vendor_data),
326          "VendorData", NULL},
327 };
328
329 struct acpi_rsdump_info acpi_rs_dump_pin_group[8] = {
330         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_pin_group),
331          "PinGroup", NULL},
332         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_group.revision_id), "RevisionId",
333          NULL},
334         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_group.producer_consumer),
335          "ProducerConsumer", acpi_gbl_consume_decode},
336         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_group.pin_table_length),
337          "PinTableLength", NULL},
338         {ACPI_RSD_WORDLIST, ACPI_RSD_OFFSET(pin_group.pin_table), "PinTable",
339          NULL},
340         {ACPI_RSD_LABEL, ACPI_RSD_OFFSET(pin_group.resource_label),
341          "ResourceLabel", NULL},
342         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_group.vendor_length),
343          "VendorLength", NULL},
344         {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(pin_group.vendor_data),
345          "VendorData", NULL},
346 };
347
348 struct acpi_rsdump_info acpi_rs_dump_pin_group_function[9] = {
349         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_pin_group_function),
350          "PinGroupFunction", NULL},
351         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_group_function.revision_id),
352          "RevisionId", NULL},
353         {ACPI_RSD_1BITFLAG,
354          ACPI_RSD_OFFSET(pin_group_function.producer_consumer),
355          "ProducerConsumer", acpi_gbl_consume_decode},
356         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_group_function.sharable),
357          "Sharing", acpi_gbl_shr_decode},
358         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_group_function.function_number),
359          "FunctionNumber", NULL},
360         {ACPI_RSD_SOURCE_LABEL,
361          ACPI_RSD_OFFSET(pin_group_function.resource_source_label),
362          "ResourceSourceLabel", NULL},
363         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(pin_group_function.resource_source),
364          "ResourceSource", NULL},
365         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_group_function.vendor_length),
366          "VendorLength", NULL},
367         {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(pin_group_function.vendor_data),
368          "VendorData", NULL},
369 };
370
371 struct acpi_rsdump_info acpi_rs_dump_pin_group_config[10] = {
372         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_pin_group_config),
373          "PinGroupConfig", NULL},
374         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_group_config.revision_id),
375          "RevisionId", NULL},
376         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_group_config.producer_consumer),
377          "ProducerConsumer", acpi_gbl_consume_decode},
378         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_group_config.sharable),
379          "Sharing", acpi_gbl_shr_decode},
380         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_group_config.pin_config_type),
381          "PinConfigType", NULL},
382         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(pin_group_config.pin_config_value),
383          "PinConfigValue", NULL},
384         {ACPI_RSD_SOURCE_LABEL,
385          ACPI_RSD_OFFSET(pin_group_config.resource_source_label),
386          "ResourceSourceLabel", NULL},
387         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(pin_group_config.resource_source),
388          "ResourceSource", NULL},
389         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_group_config.vendor_length),
390          "VendorLength", NULL},
391         {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(pin_group_config.vendor_data),
392          "VendorData", NULL},
393 };
394
395 struct acpi_rsdump_info acpi_rs_dump_fixed_dma[4] = {
396         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_fixed_dma),
397          "FixedDma", NULL},
398         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(fixed_dma.request_lines),
399          "RequestLines", NULL},
400         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(fixed_dma.channels), "Channels",
401          NULL},
402         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(fixed_dma.width), "TransferWidth",
403          acpi_gbl_dts_decode},
404 };
405
406 #define ACPI_RS_DUMP_COMMON_SERIAL_BUS \
407         {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (common_serial_bus.revision_id),    "RevisionId",               NULL}, \
408         {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (common_serial_bus.type),           "Type",                     acpi_gbl_sbt_decode}, \
409         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.producer_consumer), "ProducerConsumer",      acpi_gbl_consume_decode}, \
410         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.slave_mode),     "SlaveMode",                acpi_gbl_sm_decode}, \
411         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.connection_sharing),"ConnectionSharing",     acpi_gbl_shr_decode}, \
412         {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (common_serial_bus.type_revision_id), "TypeRevisionId",         NULL}, \
413         {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (common_serial_bus.type_data_length), "TypeDataLength",         NULL}, \
414         {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (common_serial_bus.resource_source), "ResourceSource",          NULL}, \
415         {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (common_serial_bus.vendor_length),  "VendorLength",             NULL}, \
416         {ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (common_serial_bus.vendor_data),   "VendorData",               NULL},
417
418 struct acpi_rsdump_info acpi_rs_dump_common_serial_bus[11] = {
419         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_common_serial_bus),
420          "Common Serial Bus", NULL},
421         ACPI_RS_DUMP_COMMON_SERIAL_BUS
422 };
423
424 struct acpi_rsdump_info acpi_rs_dump_i2c_serial_bus[14] = {
425         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_i2c_serial_bus),
426          "I2C Serial Bus", NULL},
427         ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG,
428                                         ACPI_RSD_OFFSET(i2c_serial_bus.
429                                                         access_mode),
430                                         "AccessMode", acpi_gbl_am_decode},
431         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(i2c_serial_bus.connection_speed),
432          "ConnectionSpeed", NULL},
433         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(i2c_serial_bus.slave_address),
434          "SlaveAddress", NULL},
435 };
436
437 struct acpi_rsdump_info acpi_rs_dump_spi_serial_bus[18] = {
438         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_spi_serial_bus),
439          "Spi Serial Bus", NULL},
440         ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG,
441                                         ACPI_RSD_OFFSET(spi_serial_bus.
442                                                         wire_mode), "WireMode",
443                                         acpi_gbl_wm_decode},
444         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(spi_serial_bus.device_polarity),
445          "DevicePolarity", acpi_gbl_dp_decode},
446         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.data_bit_length),
447          "DataBitLength", NULL},
448         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.clock_phase),
449          "ClockPhase", acpi_gbl_cph_decode},
450         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.clock_polarity),
451          "ClockPolarity", acpi_gbl_cpo_decode},
452         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(spi_serial_bus.device_selection),
453          "DeviceSelection", NULL},
454         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(spi_serial_bus.connection_speed),
455          "ConnectionSpeed", NULL},
456 };
457
458 struct acpi_rsdump_info acpi_rs_dump_uart_serial_bus[20] = {
459         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_uart_serial_bus),
460          "Uart Serial Bus", NULL},
461         ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_2BITFLAG,
462                                         ACPI_RSD_OFFSET(uart_serial_bus.
463                                                         flow_control),
464                                         "FlowControl", acpi_gbl_fc_decode},
465         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.stop_bits),
466          "StopBits", acpi_gbl_sb_decode},
467         {ACPI_RSD_3BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.data_bits),
468          "DataBits", acpi_gbl_bpb_decode},
469         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.endian), "Endian",
470          acpi_gbl_ed_decode},
471         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.parity), "Parity",
472          acpi_gbl_pt_decode},
473         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.lines_enabled),
474          "LinesEnabled", NULL},
475         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(uart_serial_bus.rx_fifo_size),
476          "RxFifoSize", NULL},
477         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(uart_serial_bus.tx_fifo_size),
478          "TxFifoSize", NULL},
479         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(uart_serial_bus.default_baud_rate),
480          "ConnectionSpeed", NULL},
481 };
482
483 /*
484  * Tables used for common address descriptor flag fields
485  */
486 struct acpi_rsdump_info acpi_rs_dump_general_flags[5] = {
487         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_general_flags), NULL,
488          NULL},
489         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.producer_consumer),
490          "Consumer/Producer", acpi_gbl_consume_decode},
491         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.decode), "Address Decode",
492          acpi_gbl_dec_decode},
493         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.min_address_fixed),
494          "Min Relocatability", acpi_gbl_min_decode},
495         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.max_address_fixed),
496          "Max Relocatability", acpi_gbl_max_decode}
497 };
498
499 struct acpi_rsdump_info acpi_rs_dump_memory_flags[5] = {
500         {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_memory_flags),
501          "Resource Type", (void *)"Memory Range"},
502         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.mem.write_protect),
503          "Write Protect", acpi_gbl_rw_decode},
504         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(address.info.mem.caching),
505          "Caching", acpi_gbl_mem_decode},
506         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(address.info.mem.range_type),
507          "Range Type", acpi_gbl_mtp_decode},
508         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.mem.translation),
509          "Translation", acpi_gbl_ttp_decode}
510 };
511
512 struct acpi_rsdump_info acpi_rs_dump_io_flags[4] = {
513         {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_io_flags),
514          "Resource Type", (void *)"I/O Range"},
515         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(address.info.io.range_type),
516          "Range Type", acpi_gbl_rng_decode},
517         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.io.translation),
518          "Translation", acpi_gbl_ttp_decode},
519         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.io.translation_type),
520          "Translation Type", acpi_gbl_trs_decode}
521 };
522
523 /*
524  * Table used to dump _PRT contents
525  */
526 struct acpi_rsdump_info acpi_rs_dump_prt[5] = {
527         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_prt), NULL, NULL},
528         {ACPI_RSD_UINT64, ACPI_PRT_OFFSET(address), "Address", NULL},
529         {ACPI_RSD_UINT32, ACPI_PRT_OFFSET(pin), "Pin", NULL},
530         {ACPI_RSD_STRING, ACPI_PRT_OFFSET(source[0]), "Source", NULL},
531         {ACPI_RSD_UINT32, ACPI_PRT_OFFSET(source_index), "Source Index", NULL}
532 };
533
534 #endif