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 578