brintos

brintos / linux-shallow public Read only

0
0
Text · 24.2 KiB · 998a79c Raw
578 lines · c
1// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.02/*******************************************************************************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_RESOURCES13ACPI_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 tables22 *23 * Note: The first table entry must be a Title or Literal and must contain24 * 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_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 321struct 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 346struct 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 365struct 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 388struct 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 412struct 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 435struct 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_BUS439};440 441struct 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 467struct 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 480struct 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 501struct 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 fields528 */529struct 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 542struct 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 555struct 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 contents568 */569struct 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#endif578