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