cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

rsdumpinfo.c (24103B)


      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
     13ACPI_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 ******************************************************************************/
     27struct 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
     43struct 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
     57struct 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
     68struct 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
     73struct 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
     84struct 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
     92struct 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
    100struct 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
    105struct 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
    120struct 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
    135struct 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
    146struct 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
    163struct 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
    180struct 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
    197struct 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
    216struct 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
    235struct 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
    249struct 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
    281struct 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
    304struct 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.shareable), "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
    329struct 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
    348struct 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.shareable),
    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
    371struct 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.shareable),
    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
    395struct 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
    418struct 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
    424struct acpi_rsdump_info acpi_rs_dump_csi2_serial_bus[11] = {
    425	{ ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_csi2_serial_bus),
    426	 "Camera Serial Bus", NULL },
    427	{ ACPI_RSD_UINT8, ACPI_RSD_OFFSET(csi2_serial_bus.revision_id),
    428	 "RevisionId", NULL },
    429	{ ACPI_RSD_UINT8, ACPI_RSD_OFFSET(csi2_serial_bus.type), "Type",
    430	 acpi_gbl_sbt_decode },
    431	{ ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(csi2_serial_bus.producer_consumer),
    432	 "ProducerConsumer", acpi_gbl_consume_decode },
    433	{ ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(csi2_serial_bus.slave_mode),
    434	 "SlaveMode", acpi_gbl_sm_decode },
    435	{ ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(csi2_serial_bus.phy_type),
    436	 "PhyType", acpi_gbl_phy_decode },
    437	{ ACPI_RSD_6BITFLAG,
    438	 ACPI_RSD_OFFSET(csi2_serial_bus.local_port_instance),
    439	 "LocalPortInstance", NULL },
    440	{ ACPI_RSD_UINT8, ACPI_RSD_OFFSET(csi2_serial_bus.type_revision_id),
    441	 "TypeRevisionId", NULL },
    442	{ ACPI_RSD_UINT16, ACPI_RSD_OFFSET(csi2_serial_bus.vendor_length),
    443	 "VendorLength", NULL },
    444	{ ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(csi2_serial_bus.vendor_data),
    445	 "VendorData", NULL },
    446	{ ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(csi2_serial_bus.resource_source),
    447	 "ResourceSource", NULL },
    448};
    449
    450struct acpi_rsdump_info acpi_rs_dump_i2c_serial_bus[14] = {
    451	{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_i2c_serial_bus),
    452	 "I2C Serial Bus", NULL},
    453	ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG,
    454					ACPI_RSD_OFFSET(i2c_serial_bus.
    455							access_mode),
    456					"AccessMode", acpi_gbl_am_decode},
    457	{ACPI_RSD_UINT32, ACPI_RSD_OFFSET(i2c_serial_bus.connection_speed),
    458	 "ConnectionSpeed", NULL},
    459	{ACPI_RSD_UINT16, ACPI_RSD_OFFSET(i2c_serial_bus.slave_address),
    460	 "SlaveAddress", NULL},
    461};
    462
    463struct acpi_rsdump_info acpi_rs_dump_spi_serial_bus[18] = {
    464	{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_spi_serial_bus),
    465	 "Spi Serial Bus", NULL},
    466	ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG,
    467					ACPI_RSD_OFFSET(spi_serial_bus.
    468							wire_mode), "WireMode",
    469					acpi_gbl_wm_decode},
    470	{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(spi_serial_bus.device_polarity),
    471	 "DevicePolarity", acpi_gbl_dp_decode},
    472	{ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.data_bit_length),
    473	 "DataBitLength", NULL},
    474	{ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.clock_phase),
    475	 "ClockPhase", acpi_gbl_cph_decode},
    476	{ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.clock_polarity),
    477	 "ClockPolarity", acpi_gbl_cpo_decode},
    478	{ACPI_RSD_UINT16, ACPI_RSD_OFFSET(spi_serial_bus.device_selection),
    479	 "DeviceSelection", NULL},
    480	{ACPI_RSD_UINT32, ACPI_RSD_OFFSET(spi_serial_bus.connection_speed),
    481	 "ConnectionSpeed", NULL},
    482};
    483
    484struct acpi_rsdump_info acpi_rs_dump_uart_serial_bus[20] = {
    485	{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_uart_serial_bus),
    486	 "Uart Serial Bus", NULL},
    487	ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_2BITFLAG,
    488					ACPI_RSD_OFFSET(uart_serial_bus.
    489							flow_control),
    490					"FlowControl", acpi_gbl_fc_decode},
    491	{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.stop_bits),
    492	 "StopBits", acpi_gbl_sb_decode},
    493	{ACPI_RSD_3BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.data_bits),
    494	 "DataBits", acpi_gbl_bpb_decode},
    495	{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.endian), "Endian",
    496	 acpi_gbl_ed_decode},
    497	{ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.parity), "Parity",
    498	 acpi_gbl_pt_decode},
    499	{ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.lines_enabled),
    500	 "LinesEnabled", NULL},
    501	{ACPI_RSD_UINT16, ACPI_RSD_OFFSET(uart_serial_bus.rx_fifo_size),
    502	 "RxFifoSize", NULL},
    503	{ACPI_RSD_UINT16, ACPI_RSD_OFFSET(uart_serial_bus.tx_fifo_size),
    504	 "TxFifoSize", NULL},
    505	{ACPI_RSD_UINT32, ACPI_RSD_OFFSET(uart_serial_bus.default_baud_rate),
    506	 "ConnectionSpeed", NULL},
    507};
    508
    509/*
    510 * Tables used for common address descriptor flag fields
    511 */
    512struct acpi_rsdump_info acpi_rs_dump_general_flags[5] = {
    513	{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_general_flags), NULL,
    514	 NULL},
    515	{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.producer_consumer),
    516	 "Consumer/Producer", acpi_gbl_consume_decode},
    517	{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.decode), "Address Decode",
    518	 acpi_gbl_dec_decode},
    519	{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.min_address_fixed),
    520	 "Min Relocatability", acpi_gbl_min_decode},
    521	{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.max_address_fixed),
    522	 "Max Relocatability", acpi_gbl_max_decode}
    523};
    524
    525struct acpi_rsdump_info acpi_rs_dump_memory_flags[5] = {
    526	{ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_memory_flags),
    527	 "Resource Type", (void *)"Memory Range"},
    528	{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.mem.write_protect),
    529	 "Write Protect", acpi_gbl_rw_decode},
    530	{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(address.info.mem.caching),
    531	 "Caching", acpi_gbl_mem_decode},
    532	{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(address.info.mem.range_type),
    533	 "Range Type", acpi_gbl_mtp_decode},
    534	{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.mem.translation),
    535	 "Translation", acpi_gbl_ttp_decode}
    536};
    537
    538struct acpi_rsdump_info acpi_rs_dump_io_flags[4] = {
    539	{ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_io_flags),
    540	 "Resource Type", (void *)"I/O Range"},
    541	{ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(address.info.io.range_type),
    542	 "Range Type", acpi_gbl_rng_decode},
    543	{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.io.translation),
    544	 "Translation", acpi_gbl_ttp_decode},
    545	{ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.io.translation_type),
    546	 "Translation Type", acpi_gbl_trs_decode}
    547};
    548
    549/*
    550 * Table used to dump _PRT contents
    551 */
    552struct acpi_rsdump_info acpi_rs_dump_prt[5] = {
    553	{ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_prt), NULL, NULL},
    554	{ACPI_RSD_UINT64, ACPI_PRT_OFFSET(address), "Address", NULL},
    555	{ACPI_RSD_UINT32, ACPI_PRT_OFFSET(pin), "Pin", NULL},
    556	{ACPI_RSD_STRING, ACPI_PRT_OFFSET(source[0]), "Source", NULL},
    557	{ACPI_RSD_UINT32, ACPI_PRT_OFFSET(source_index), "Source Index", NULL}
    558};
    559
    560#endif