GNU Linux-libre 6.7.9-gnu
[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.shareable), "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.shareable), "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.shareable), "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.shareable), "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_clock_input[7] = {
305         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_clock_input),
306          "ClockInput", NULL},
307         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(clock_input.revision_id), "RevisionId",
308          NULL},
309         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(clock_input.frequency_numerator),
310          "FrequencyNumerator", NULL},
311         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(clock_input.frequency_divisor),
312          "FrequencyDivisor", NULL},
313         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(clock_input.scale), "Scale",
314          acpi_gbl_clock_input_scale},
315         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(clock_input.mode), "Mode",
316          acpi_gbl_clock_input_mode},
317         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(clock_input.resource_source),
318          "ResourceSource", NULL},
319 };
320
321 struct acpi_rsdump_info acpi_rs_dump_pin_config[11] = {
322         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_pin_config),
323          "PinConfig", NULL},
324         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_config.revision_id), "RevisionId",
325          NULL},
326         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_config.producer_consumer),
327          "ProducerConsumer", acpi_gbl_consume_decode},
328         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_config.shareable), "Sharing",
329          acpi_gbl_shr_decode},
330         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_config.pin_config_type),
331          "PinConfigType", NULL},
332         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(pin_config.pin_config_value),
333          "PinConfigValue", NULL},
334         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(pin_config.resource_source),
335          "ResourceSource", NULL},
336         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_config.pin_table_length),
337          "PinTableLength", NULL},
338         {ACPI_RSD_WORDLIST, ACPI_RSD_OFFSET(pin_config.pin_table), "PinTable",
339          NULL},
340         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_config.vendor_length),
341          "VendorLength", NULL},
342         {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(pin_config.vendor_data),
343          "VendorData", NULL},
344 };
345
346 struct acpi_rsdump_info acpi_rs_dump_pin_group[8] = {
347         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_pin_group),
348          "PinGroup", NULL},
349         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_group.revision_id), "RevisionId",
350          NULL},
351         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_group.producer_consumer),
352          "ProducerConsumer", acpi_gbl_consume_decode},
353         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_group.pin_table_length),
354          "PinTableLength", NULL},
355         {ACPI_RSD_WORDLIST, ACPI_RSD_OFFSET(pin_group.pin_table), "PinTable",
356          NULL},
357         {ACPI_RSD_LABEL, ACPI_RSD_OFFSET(pin_group.resource_label),
358          "ResourceLabel", NULL},
359         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_group.vendor_length),
360          "VendorLength", NULL},
361         {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(pin_group.vendor_data),
362          "VendorData", NULL},
363 };
364
365 struct acpi_rsdump_info acpi_rs_dump_pin_group_function[9] = {
366         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_pin_group_function),
367          "PinGroupFunction", NULL},
368         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_group_function.revision_id),
369          "RevisionId", NULL},
370         {ACPI_RSD_1BITFLAG,
371          ACPI_RSD_OFFSET(pin_group_function.producer_consumer),
372          "ProducerConsumer", acpi_gbl_consume_decode},
373         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_group_function.shareable),
374          "Sharing", acpi_gbl_shr_decode},
375         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_group_function.function_number),
376          "FunctionNumber", NULL},
377         {ACPI_RSD_SOURCE_LABEL,
378          ACPI_RSD_OFFSET(pin_group_function.resource_source_label),
379          "ResourceSourceLabel", NULL},
380         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(pin_group_function.resource_source),
381          "ResourceSource", NULL},
382         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_group_function.vendor_length),
383          "VendorLength", NULL},
384         {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(pin_group_function.vendor_data),
385          "VendorData", NULL},
386 };
387
388 struct acpi_rsdump_info acpi_rs_dump_pin_group_config[10] = {
389         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_pin_group_config),
390          "PinGroupConfig", NULL},
391         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_group_config.revision_id),
392          "RevisionId", NULL},
393         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_group_config.producer_consumer),
394          "ProducerConsumer", acpi_gbl_consume_decode},
395         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(pin_group_config.shareable),
396          "Sharing", acpi_gbl_shr_decode},
397         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(pin_group_config.pin_config_type),
398          "PinConfigType", NULL},
399         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(pin_group_config.pin_config_value),
400          "PinConfigValue", NULL},
401         {ACPI_RSD_SOURCE_LABEL,
402          ACPI_RSD_OFFSET(pin_group_config.resource_source_label),
403          "ResourceSourceLabel", NULL},
404         {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(pin_group_config.resource_source),
405          "ResourceSource", NULL},
406         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(pin_group_config.vendor_length),
407          "VendorLength", NULL},
408         {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(pin_group_config.vendor_data),
409          "VendorData", NULL},
410 };
411
412 struct acpi_rsdump_info acpi_rs_dump_fixed_dma[4] = {
413         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_fixed_dma),
414          "FixedDma", NULL},
415         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(fixed_dma.request_lines),
416          "RequestLines", NULL},
417         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(fixed_dma.channels), "Channels",
418          NULL},
419         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(fixed_dma.width), "TransferWidth",
420          acpi_gbl_dts_decode},
421 };
422
423 #define ACPI_RS_DUMP_COMMON_SERIAL_BUS \
424         {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (common_serial_bus.revision_id),    "RevisionId",               NULL}, \
425         {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (common_serial_bus.type),           "Type",                     acpi_gbl_sbt_decode}, \
426         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.producer_consumer), "ProducerConsumer",      acpi_gbl_consume_decode}, \
427         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.slave_mode),     "SlaveMode",                acpi_gbl_sm_decode}, \
428         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.connection_sharing),"ConnectionSharing",     acpi_gbl_shr_decode}, \
429         {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (common_serial_bus.type_revision_id), "TypeRevisionId",         NULL}, \
430         {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (common_serial_bus.type_data_length), "TypeDataLength",         NULL}, \
431         {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (common_serial_bus.resource_source), "ResourceSource",          NULL}, \
432         {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (common_serial_bus.vendor_length),  "VendorLength",             NULL}, \
433         {ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (common_serial_bus.vendor_data),   "VendorData",               NULL},
434
435 struct acpi_rsdump_info acpi_rs_dump_common_serial_bus[11] = {
436         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_common_serial_bus),
437          "Common Serial Bus", NULL},
438         ACPI_RS_DUMP_COMMON_SERIAL_BUS
439 };
440
441 struct acpi_rsdump_info acpi_rs_dump_csi2_serial_bus[11] = {
442         { ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_csi2_serial_bus),
443          "Camera Serial Bus", NULL },
444         { ACPI_RSD_UINT8, ACPI_RSD_OFFSET(csi2_serial_bus.revision_id),
445          "RevisionId", NULL },
446         { ACPI_RSD_UINT8, ACPI_RSD_OFFSET(csi2_serial_bus.type), "Type",
447          acpi_gbl_sbt_decode },
448         { ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(csi2_serial_bus.producer_consumer),
449          "ProducerConsumer", acpi_gbl_consume_decode },
450         { ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(csi2_serial_bus.slave_mode),
451          "SlaveMode", acpi_gbl_sm_decode },
452         { ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(csi2_serial_bus.phy_type),
453          "PhyType", acpi_gbl_phy_decode },
454         { ACPI_RSD_6BITFLAG,
455          ACPI_RSD_OFFSET(csi2_serial_bus.local_port_instance),
456          "LocalPortInstance", NULL },
457         { ACPI_RSD_UINT8, ACPI_RSD_OFFSET(csi2_serial_bus.type_revision_id),
458          "TypeRevisionId", NULL },
459         { ACPI_RSD_UINT16, ACPI_RSD_OFFSET(csi2_serial_bus.vendor_length),
460          "VendorLength", NULL },
461         { ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(csi2_serial_bus.vendor_data),
462          "VendorData", NULL },
463         { ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(csi2_serial_bus.resource_source),
464          "ResourceSource", NULL },
465 };
466
467 struct acpi_rsdump_info acpi_rs_dump_i2c_serial_bus[14] = {
468         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_i2c_serial_bus),
469          "I2C Serial Bus", NULL},
470         ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG,
471                                         ACPI_RSD_OFFSET(i2c_serial_bus.
472                                                         access_mode),
473                                         "AccessMode", acpi_gbl_am_decode},
474         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(i2c_serial_bus.connection_speed),
475          "ConnectionSpeed", NULL},
476         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(i2c_serial_bus.slave_address),
477          "SlaveAddress", NULL},
478 };
479
480 struct acpi_rsdump_info acpi_rs_dump_spi_serial_bus[18] = {
481         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_spi_serial_bus),
482          "Spi Serial Bus", NULL},
483         ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG,
484                                         ACPI_RSD_OFFSET(spi_serial_bus.
485                                                         wire_mode), "WireMode",
486                                         acpi_gbl_wm_decode},
487         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(spi_serial_bus.device_polarity),
488          "DevicePolarity", acpi_gbl_dp_decode},
489         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.data_bit_length),
490          "DataBitLength", NULL},
491         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.clock_phase),
492          "ClockPhase", acpi_gbl_cph_decode},
493         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.clock_polarity),
494          "ClockPolarity", acpi_gbl_cpo_decode},
495         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(spi_serial_bus.device_selection),
496          "DeviceSelection", NULL},
497         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(spi_serial_bus.connection_speed),
498          "ConnectionSpeed", NULL},
499 };
500
501 struct acpi_rsdump_info acpi_rs_dump_uart_serial_bus[20] = {
502         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_uart_serial_bus),
503          "Uart Serial Bus", NULL},
504         ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_2BITFLAG,
505                                         ACPI_RSD_OFFSET(uart_serial_bus.
506                                                         flow_control),
507                                         "FlowControl", acpi_gbl_fc_decode},
508         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.stop_bits),
509          "StopBits", acpi_gbl_sb_decode},
510         {ACPI_RSD_3BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.data_bits),
511          "DataBits", acpi_gbl_bpb_decode},
512         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.endian), "Endian",
513          acpi_gbl_ed_decode},
514         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.parity), "Parity",
515          acpi_gbl_pt_decode},
516         {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.lines_enabled),
517          "LinesEnabled", NULL},
518         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(uart_serial_bus.rx_fifo_size),
519          "RxFifoSize", NULL},
520         {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(uart_serial_bus.tx_fifo_size),
521          "TxFifoSize", NULL},
522         {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(uart_serial_bus.default_baud_rate),
523          "ConnectionSpeed", NULL},
524 };
525
526 /*
527  * Tables used for common address descriptor flag fields
528  */
529 struct acpi_rsdump_info acpi_rs_dump_general_flags[5] = {
530         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_general_flags), NULL,
531          NULL},
532         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.producer_consumer),
533          "Consumer/Producer", acpi_gbl_consume_decode},
534         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.decode), "Address Decode",
535          acpi_gbl_dec_decode},
536         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.min_address_fixed),
537          "Min Relocatability", acpi_gbl_min_decode},
538         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.max_address_fixed),
539          "Max Relocatability", acpi_gbl_max_decode}
540 };
541
542 struct acpi_rsdump_info acpi_rs_dump_memory_flags[5] = {
543         {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_memory_flags),
544          "Resource Type", (void *)"Memory Range"},
545         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.mem.write_protect),
546          "Write Protect", acpi_gbl_rw_decode},
547         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(address.info.mem.caching),
548          "Caching", acpi_gbl_mem_decode},
549         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(address.info.mem.range_type),
550          "Range Type", acpi_gbl_mtp_decode},
551         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.mem.translation),
552          "Translation", acpi_gbl_ttp_decode}
553 };
554
555 struct acpi_rsdump_info acpi_rs_dump_io_flags[4] = {
556         {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_io_flags),
557          "Resource Type", (void *)"I/O Range"},
558         {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(address.info.io.range_type),
559          "Range Type", acpi_gbl_rng_decode},
560         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.io.translation),
561          "Translation", acpi_gbl_ttp_decode},
562         {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.io.translation_type),
563          "Translation Type", acpi_gbl_trs_decode}
564 };
565
566 /*
567  * Table used to dump _PRT contents
568  */
569 struct acpi_rsdump_info acpi_rs_dump_prt[5] = {
570         {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_prt), NULL, NULL},
571         {ACPI_RSD_UINT64, ACPI_PRT_OFFSET(address), "Address", NULL},
572         {ACPI_RSD_UINT32, ACPI_PRT_OFFSET(pin), "Pin", NULL},
573         {ACPI_RSD_STRING, ACPI_PRT_OFFSET(source[0]), "Source", NULL},
574         {ACPI_RSD_UINT32, ACPI_PRT_OFFSET(source_index), "Source Index", NULL}
575 };
576
577 #endif