11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/******************************************************************************* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Module Name: rsdump - Functions to display the resource structures. 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ******************************************************************************/ 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 877848130e53b06c22fe37a7b6acbb82bb3e9bfbaBob Moore * Copyright (C) 2000 - 2012, Intel Corp. 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * All rights reserved. 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Redistribution and use in source and binary forms, with or without 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * modification, are permitted provided that the following conditions 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * are met: 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 1. Redistributions of source code must retain the above copyright 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * notice, this list of conditions, and the following disclaimer, 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * without modification. 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 2. Redistributions in binary form must reproduce at minimum a disclaimer 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * substantially similar to the "NO WARRANTY" disclaimer below 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ("Disclaimer") and any redistribution must be conditioned upon 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * including a substantially similar Disclaimer requirement for further 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * binary redistribution. 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 3. Neither the names of the above-listed copyright holders nor the names 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * of any contributors may be used to endorse or promote products derived 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * from this software without specific prior written permission. 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Alternatively, this software may be distributed under the terms of the 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * GNU General Public License ("GPL") version 2 as published by the Free 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Software Foundation. 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * NO WARRANTY 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * POSSIBILITY OF SUCH DAMAGES. 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <acpi/acpi.h> 45e2f7a7772880458edff1b1cc5a988947229fac26Len Brown#include "accommon.h" 46e2f7a7772880458edff1b1cc5a988947229fac26Len Brown#include "acresrc.h" 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _COMPONENT ACPI_RESOURCES 494be44fcd3bf648b782f4460fd06dfae6c42ded4bLen BrownACPI_MODULE_NAME("rsdump") 506f42ccf2fc50ecee8ea170040627f268430c1648Robert Moore#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 5144f6c01242da4e162f28d8e1216a8c7a91174605Robert Moore/* Local prototypes */ 52bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moorestatic void acpi_rs_out_string(char *title, char *value); 53bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 54bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moorestatic void acpi_rs_out_integer8(char *title, u8 value); 55bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 56bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moorestatic void acpi_rs_out_integer16(char *title, u16 value); 57bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 58bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moorestatic void acpi_rs_out_integer32(char *title, u32 value); 59bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 60bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moorestatic void acpi_rs_out_integer64(char *title, u64 value); 61bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 62bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moorestatic void acpi_rs_out_title(char *title); 63bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 64e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Mingstatic void acpi_rs_dump_byte_list(u16 length, u8 *data); 65bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 66e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Mingstatic void acpi_rs_dump_word_list(u16 length, u16 *data); 67bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 68e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Mingstatic void acpi_rs_dump_dword_list(u8 length, u32 *data); 69e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 70e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Mingstatic void acpi_rs_dump_short_byte_list(u8 length, u8 *data); 71bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 72bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moorestatic void 73bda663d36b94c723153246a4231bbc0f1cd1836eRobert Mooreacpi_rs_dump_resource_source(struct acpi_resource_source *resource_source); 74bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 75bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moorestatic void acpi_rs_dump_address_common(union acpi_resource_data *resource); 76bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 770897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic void 780897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Mooreacpi_rs_dump_descriptor(void *resource, struct acpi_rsdump_info *table); 790897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 800897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore#define ACPI_RSD_OFFSET(f) (u8) ACPI_OFFSET (union acpi_resource_data,f) 810897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore#define ACPI_PRT_OFFSET(f) (u8) ACPI_OFFSET (struct acpi_pci_routing_table,f) 820897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore#define ACPI_RSD_TABLE_SIZE(name) (sizeof(name) / sizeof (struct acpi_rsdump_info)) 830897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/******************************************************************************* 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 860897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Resource Descriptor info tables 87bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 880897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Note: The first table entry must be a Title or Literal and must contain 890897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * the table length (number of table entries) 90bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 91bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore ******************************************************************************/ 92bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 931d5b285da1893b90507b081664ac27f1a8a3dc5bBob Moorestruct acpi_rsdump_info acpi_rs_dump_irq[7] = { 940897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_irq), "IRQ", NULL}, 951d5b285da1893b90507b081664ac27f1a8a3dc5bBob Moore {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(irq.descriptor_length), 961d5b285da1893b90507b081664ac27f1a8a3dc5bBob Moore "Descriptor Length", NULL}, 970897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(irq.triggering), "Triggering", 98b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore acpi_gbl_he_decode}, 990897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(irq.polarity), "Polarity", 100b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore acpi_gbl_ll_decode}, 1010897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(irq.sharable), "Sharing", 102b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore acpi_gbl_shr_decode}, 1030897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(irq.interrupt_count), 1040897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Interrupt Count", NULL}, 1050897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_SHORTLIST, ACPI_RSD_OFFSET(irq.interrupts[0]), 1060897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Interrupt List", NULL} 1070897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 1080897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 1090897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_dma[6] = { 1100897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_dma), "DMA", NULL}, 1110897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(dma.type), "Speed", 112b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore acpi_gbl_typ_decode}, 1130897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(dma.bus_master), "Mastering", 114b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore acpi_gbl_bm_decode}, 1150897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(dma.transfer), "Transfer Type", 116b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore acpi_gbl_siz_decode}, 1170897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(dma.channel_count), "Channel Count", 1180897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 1190897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_SHORTLIST, ACPI_RSD_OFFSET(dma.channels[0]), "Channel List", 1200897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL} 1210897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 1220897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 1231d5b285da1893b90507b081664ac27f1a8a3dc5bBob Moorestruct acpi_rsdump_info acpi_rs_dump_start_dpf[4] = { 1240897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_start_dpf), 1250897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Start-Dependent-Functions", NULL}, 1261d5b285da1893b90507b081664ac27f1a8a3dc5bBob Moore {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(start_dpf.descriptor_length), 1271d5b285da1893b90507b081664ac27f1a8a3dc5bBob Moore "Descriptor Length", NULL}, 1280897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(start_dpf.compatibility_priority), 1290897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Compatibility Priority", acpi_gbl_config_decode}, 1300897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(start_dpf.performance_robustness), 1310897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Performance/Robustness", acpi_gbl_config_decode} 1320897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 1330897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 1340897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_end_dpf[1] = { 1350897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_end_dpf), 1360897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "End-Dependent-Functions", NULL} 1370897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 1380897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 1390897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_io[6] = { 1400897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_io), "I/O", NULL}, 1410897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(io.io_decode), "Address Decoding", 1420897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_gbl_io_decode}, 1430897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(io.minimum), "Address Minimum", NULL}, 1440897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(io.maximum), "Address Maximum", NULL}, 1450897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(io.alignment), "Alignment", NULL}, 1460897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(io.address_length), "Address Length", 1470897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL} 1480897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 1490897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 1500897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_fixed_io[3] = { 1510897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_fixed_io), 1520897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Fixed I/O", NULL}, 1530897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(fixed_io.address), "Address", NULL}, 1540897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(fixed_io.address_length), 1550897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Address Length", NULL} 1560897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 1570897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 1580897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_vendor[3] = { 1590897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_vendor), 1600897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Vendor Specific", NULL}, 1610897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(vendor.byte_length), "Length", NULL}, 1620897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_LONGLIST, ACPI_RSD_OFFSET(vendor.byte_data[0]), "Vendor Data", 1630897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL} 1640897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 1650897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 1660897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_end_tag[1] = { 167b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_end_tag), "EndTag", 1680897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL} 1690897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 1700897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 1710897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_memory24[6] = { 1720897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_memory24), 1730897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "24-Bit Memory Range", NULL}, 1740897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(memory24.write_protect), 175b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore "Write Protect", acpi_gbl_rw_decode}, 1760897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(memory24.minimum), "Address Minimum", 1770897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 1780897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(memory24.maximum), "Address Maximum", 1790897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 1800897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(memory24.alignment), "Alignment", 1810897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 1820897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(memory24.address_length), 1830897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Address Length", NULL} 1840897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 1850897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 1860897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_memory32[6] = { 1870897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_memory32), 1880897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "32-Bit Memory Range", NULL}, 1890897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(memory32.write_protect), 190b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore "Write Protect", acpi_gbl_rw_decode}, 1910897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(memory32.minimum), "Address Minimum", 1920897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 1930897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(memory32.maximum), "Address Maximum", 1940897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 1950897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(memory32.alignment), "Alignment", 1960897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 1970897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(memory32.address_length), 1980897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Address Length", NULL} 1990897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 2000897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 2010897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_fixed_memory32[4] = { 2020897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_fixed_memory32), 2030897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "32-Bit Fixed Memory Range", NULL}, 2040897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(fixed_memory32.write_protect), 205b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore "Write Protect", acpi_gbl_rw_decode}, 2060897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(fixed_memory32.address), "Address", 2070897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 2080897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(fixed_memory32.address_length), 2090897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Address Length", NULL} 2100897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 2110897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 2120897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_address16[8] = { 2130897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address16), 2140897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "16-Bit WORD Address Space", NULL}, 2150897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_ADDRESS, 0, NULL, NULL}, 2160897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.granularity), "Granularity", 2170897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 2180897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.minimum), "Address Minimum", 2190897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 2200897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.maximum), "Address Maximum", 2210897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 2220897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.translation_offset), 2230897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Translation Offset", NULL}, 2240897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address_length), 2250897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Address Length", NULL}, 2260897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address16.resource_source), NULL, NULL} 2270897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 2280897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 2290897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_address32[8] = { 2300897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address32), 2310897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "32-Bit DWORD Address Space", NULL}, 2320897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_ADDRESS, 0, NULL, NULL}, 2330897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.granularity), "Granularity", 2340897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 2350897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.minimum), "Address Minimum", 2360897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 2370897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.maximum), "Address Maximum", 2380897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 2390897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.translation_offset), 2400897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Translation Offset", NULL}, 2410897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address_length), 2420897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Address Length", NULL}, 2430897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address32.resource_source), NULL, NULL} 2440897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 2450897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 2460897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_address64[8] = { 2470897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address64), 2480897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "64-Bit QWORD Address Space", NULL}, 2490897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_ADDRESS, 0, NULL, NULL}, 2500897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.granularity), "Granularity", 2510897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 2520897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.minimum), "Address Minimum", 2530897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 2540897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.maximum), "Address Maximum", 2550897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 2560897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.translation_offset), 2570897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Translation Offset", NULL}, 2580897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address_length), 2590897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Address Length", NULL}, 2600897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address64.resource_source), NULL, NULL} 2610897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 2620897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 2630897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_ext_address64[8] = { 2640897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_ext_address64), 2650897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "64-Bit Extended Address Space", NULL}, 2660897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_ADDRESS, 0, NULL, NULL}, 2670897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.granularity), 2680897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Granularity", NULL}, 2690897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.minimum), 2700897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Address Minimum", NULL}, 2710897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.maximum), 2720897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Address Maximum", NULL}, 2730897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.translation_offset), 2740897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Translation Offset", NULL}, 2750897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address_length), 2760897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Address Length", NULL}, 2770897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.type_specific), 2780897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Type-Specific Attribute", NULL} 2790897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 2800897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 2810897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_ext_irq[8] = { 2820897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_ext_irq), 2830897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Extended IRQ", NULL}, 2840897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(extended_irq.producer_consumer), 2850897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Type", acpi_gbl_consume_decode}, 2860897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(extended_irq.triggering), 287b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore "Triggering", acpi_gbl_he_decode}, 2880897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(extended_irq.polarity), "Polarity", 289b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore acpi_gbl_ll_decode}, 2900897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(extended_irq.sharable), "Sharing", 291b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore acpi_gbl_shr_decode}, 2920897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(extended_irq.resource_source), NULL, 2930897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 2940897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(extended_irq.interrupt_count), 2950897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Interrupt Count", NULL}, 2960897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_DWORDLIST, ACPI_RSD_OFFSET(extended_irq.interrupts[0]), 2970897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Interrupt List", NULL} 2980897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 2990897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 3000897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestruct acpi_rsdump_info acpi_rs_dump_generic_reg[6] = { 3010897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_generic_reg), 3020897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Generic Register", NULL}, 3030897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(generic_reg.space_id), "Space ID", 3040897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 3050897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(generic_reg.bit_width), "Bit Width", 3060897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 3070897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(generic_reg.bit_offset), "Bit Offset", 3080897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 3090897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(generic_reg.access_size), 3100897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Access Size", NULL}, 3110897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(generic_reg.address), "Address", NULL} 3120897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 313bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 314e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Mingstruct acpi_rsdump_info acpi_rs_dump_gpio[16] = { 315e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_gpio), "GPIO", NULL}, 316e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(gpio.revision_id), "RevisionId", NULL}, 317e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(gpio.connection_type), 318e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "ConnectionType", acpi_gbl_ct_decode}, 319e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(gpio.producer_consumer), 320e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "ProducerConsumer", acpi_gbl_consume_decode}, 321e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(gpio.pin_config), "PinConfig", 322e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_gbl_ppc_decode}, 323e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(gpio.sharable), "Sharable", 324e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_gbl_shr_decode}, 325e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(gpio.io_restriction), 326e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "IoRestriction", acpi_gbl_ior_decode}, 327e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(gpio.triggering), "Triggering", 328e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_gbl_he_decode}, 329e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(gpio.polarity), "Polarity", 330e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_gbl_ll_decode}, 331e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.drive_strength), "DriveStrength", 332e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming NULL}, 333e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.debounce_timeout), 334e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "DebounceTimeout", NULL}, 335e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(gpio.resource_source), 336e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "ResourceSource", NULL}, 337e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.pin_table_length), 338e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "PinTableLength", NULL}, 339e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_WORDLIST, ACPI_RSD_OFFSET(gpio.pin_table), "PinTable", NULL}, 340e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.vendor_length), "VendorLength", 341e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming NULL}, 342e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(gpio.vendor_data), "VendorData", 343e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming NULL}, 344e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming}; 345e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 346e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Mingstruct acpi_rsdump_info acpi_rs_dump_fixed_dma[4] = { 347e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_fixed_dma), 348e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "FixedDma", NULL}, 349e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(fixed_dma.request_lines), 350e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "RequestLines", NULL}, 351e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(fixed_dma.channels), "Channels", 352e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming NULL}, 353e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(fixed_dma.width), "TransferWidth", 354e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_gbl_dts_decode}, 355e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming}; 356e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 357e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming#define ACPI_RS_DUMP_COMMON_SERIAL_BUS \ 358e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (common_serial_bus.revision_id), "RevisionId", NULL}, \ 359e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (common_serial_bus.type), "Type", acpi_gbl_sbt_decode}, \ 360e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.producer_consumer), "ProducerConsumer", acpi_gbl_consume_decode}, \ 361e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.slave_mode), "SlaveMode", acpi_gbl_sm_decode}, \ 362e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (common_serial_bus.type_revision_id), "TypeRevisionId", NULL}, \ 363e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (common_serial_bus.type_data_length), "TypeDataLength", NULL}, \ 364e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (common_serial_bus.resource_source), "ResourceSource", NULL}, \ 365e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (common_serial_bus.vendor_length), "VendorLength", NULL}, \ 366e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (common_serial_bus.vendor_data), "VendorData", NULL}, 367e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 368e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Mingstruct acpi_rsdump_info acpi_rs_dump_common_serial_bus[10] = { 369e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_common_serial_bus), 370e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "Common Serial Bus", NULL}, 371e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming ACPI_RS_DUMP_COMMON_SERIAL_BUS 372e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming}; 373e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 374e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Mingstruct acpi_rsdump_info acpi_rs_dump_i2c_serial_bus[13] = { 375e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_i2c_serial_bus), 376e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "I2C Serial Bus", NULL}, 377e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG, 378e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming ACPI_RSD_OFFSET(i2c_serial_bus. 379e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming access_mode), 380e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "AccessMode", acpi_gbl_am_decode}, 381e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(i2c_serial_bus.connection_speed), 382e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "ConnectionSpeed", NULL}, 383e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(i2c_serial_bus.slave_address), 384e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "SlaveAddress", NULL}, 385e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming}; 386e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 387e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Mingstruct acpi_rsdump_info acpi_rs_dump_spi_serial_bus[17] = { 388e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_spi_serial_bus), 389e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "Spi Serial Bus", NULL}, 390e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG, 391e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming ACPI_RSD_OFFSET(spi_serial_bus. 392e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming wire_mode), "WireMode", 393e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_gbl_wm_decode}, 394e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(spi_serial_bus.device_polarity), 395e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "DevicePolarity", acpi_gbl_dp_decode}, 396e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.data_bit_length), 397e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "DataBitLength", NULL}, 398e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.clock_phase), 399e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "ClockPhase", acpi_gbl_cph_decode}, 400e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.clock_polarity), 401e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "ClockPolarity", acpi_gbl_cpo_decode}, 402e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(spi_serial_bus.device_selection), 403e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "DeviceSelection", NULL}, 404e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(spi_serial_bus.connection_speed), 405e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "ConnectionSpeed", NULL}, 406e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming}; 407e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 408e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Mingstruct acpi_rsdump_info acpi_rs_dump_uart_serial_bus[19] = { 409e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_uart_serial_bus), 410e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "Uart Serial Bus", NULL}, 411e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_2BITFLAG, 412e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming ACPI_RSD_OFFSET(uart_serial_bus. 413e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming flow_control), 414e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "FlowControl", acpi_gbl_fc_decode}, 415e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.stop_bits), 416e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "StopBits", acpi_gbl_sb_decode}, 417e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_3BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.data_bits), 418e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "DataBits", acpi_gbl_bpb_decode}, 419e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.endian), "Endian", 420e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_gbl_ed_decode}, 421e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.parity), "Parity", 422e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_gbl_pt_decode}, 423e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.lines_enabled), 424e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "LinesEnabled", NULL}, 425e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(uart_serial_bus.rx_fifo_size), 426e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "RxFifoSize", NULL}, 427e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(uart_serial_bus.tx_fifo_size), 428e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "TxFifoSize", NULL}, 429e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(uart_serial_bus.default_baud_rate), 430e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming "ConnectionSpeed", NULL}, 431e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming}; 432e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 4330897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore/* 4340897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Tables used for common address descriptor flag fields 4350897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore */ 4360897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic struct acpi_rsdump_info acpi_rs_dump_general_flags[5] = { 4370897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_general_flags), NULL, 4380897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore NULL}, 4390897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.producer_consumer), 4400897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Consumer/Producer", acpi_gbl_consume_decode}, 4410897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.decode), "Address Decode", 442b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore acpi_gbl_dec_decode}, 4430897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.min_address_fixed), 4440897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Min Relocatability", acpi_gbl_min_decode}, 4450897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.max_address_fixed), 4460897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore "Max Relocatability", acpi_gbl_max_decode} 4470897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 4480897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 4490897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic struct acpi_rsdump_info acpi_rs_dump_memory_flags[5] = { 4500897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_memory_flags), 45196db255c8f014ae3497507104e8df809785a619fBob Moore "Resource Type", (void *)"Memory Range"}, 4520897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.mem.write_protect), 453b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore "Write Protect", acpi_gbl_rw_decode}, 4540897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(address.info.mem.caching), 455b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore "Caching", acpi_gbl_mem_decode}, 4560897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(address.info.mem.range_type), 457b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore "Range Type", acpi_gbl_mtp_decode}, 4580897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.mem.translation), 459b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore "Translation", acpi_gbl_ttp_decode} 4600897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 4610897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 4620897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic struct acpi_rsdump_info acpi_rs_dump_io_flags[4] = { 4630897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_io_flags), 46496db255c8f014ae3497507104e8df809785a619fBob Moore "Resource Type", (void *)"I/O Range"}, 4650897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(address.info.io.range_type), 466b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore "Range Type", acpi_gbl_rng_decode}, 4670897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.io.translation), 468b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore "Translation", acpi_gbl_ttp_decode}, 4690897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(address.info.io.translation_type), 470b229cf92eee616c7cb5ad8cdb35a19b119f00bc8Bob Moore "Translation Type", acpi_gbl_trs_decode} 4710897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 472bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 4730897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore/* 4740897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Table used to dump _PRT contents 4750897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore */ 4760897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic struct acpi_rsdump_info acpi_rs_dump_prt[5] = { 4770897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_prt), NULL, NULL}, 4780897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT64, ACPI_PRT_OFFSET(address), "Address", NULL}, 4790897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_PRT_OFFSET(pin), "Pin", NULL}, 4800897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_STRING, ACPI_PRT_OFFSET(source[0]), "Source", NULL}, 4810897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore {ACPI_RSD_UINT32, ACPI_PRT_OFFSET(source_index), "Source Index", NULL} 4820897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore}; 483bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 484bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore/******************************************************************************* 485bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 4860897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * FUNCTION: acpi_rs_dump_descriptor 487bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 4880897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * PARAMETERS: Resource 489bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 490bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * RETURN: None 491bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 4920897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * DESCRIPTION: 493bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 494bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore ******************************************************************************/ 495bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 4960897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic void 4970897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Mooreacpi_rs_dump_descriptor(void *resource, struct acpi_rsdump_info *table) 498bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore{ 49996db255c8f014ae3497507104e8df809785a619fBob Moore u8 *target = NULL; 50096db255c8f014ae3497507104e8df809785a619fBob Moore u8 *previous_target; 5010897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore char *name; 5020897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore u8 count; 5030897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 5040897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* First table entry must contain the table length (# of table entries) */ 5050897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 5060897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore count = table->offset; 5070897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 5080897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore while (count) { 5090897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore previous_target = target; 510c51a4de85de720670f2fbc592a6f8040af72ad87Bob Moore target = ACPI_ADD_PTR(u8, resource, table->offset); 5110897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore name = table->name; 5120897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 5130897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore switch (table->opcode) { 5140897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_TITLE: 5150897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* 5160897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Optional resource title 5170897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore */ 5180897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore if (table->name) { 5190897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_os_printf("%s Resource\n", name); 5200897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore } 5210897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 522bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 5230897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* Strings */ 524bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 5250897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_LITERAL: 52696db255c8f014ae3497507104e8df809785a619fBob Moore acpi_rs_out_string(name, 52796db255c8f014ae3497507104e8df809785a619fBob Moore ACPI_CAST_PTR(char, table->pointer)); 5280897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 529bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 5300897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_STRING: 53196db255c8f014ae3497507104e8df809785a619fBob Moore acpi_rs_out_string(name, ACPI_CAST_PTR(char, target)); 5320897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 533bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 5340897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* Data items, 8/16/32/64 bit */ 535bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 5360897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_UINT8: 537e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming if (table->pointer) { 538e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_rs_out_string(name, ACPI_CAST_PTR(char, 539e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming table-> 540e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming pointer 541e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming [*target])); 542e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming } else { 543e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_rs_out_integer8(name, ACPI_GET8(target)); 544e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming } 5450897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 546bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 5470897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_UINT16: 548c51a4de85de720670f2fbc592a6f8040af72ad87Bob Moore acpi_rs_out_integer16(name, ACPI_GET16(target)); 5490897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 5500897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 5510897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_UINT32: 552c51a4de85de720670f2fbc592a6f8040af72ad87Bob Moore acpi_rs_out_integer32(name, ACPI_GET32(target)); 5530897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 55450eca3eb89d73d9f0aa070b126c7ee6a616016abBob Moore 5550897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_UINT64: 556c51a4de85de720670f2fbc592a6f8040af72ad87Bob Moore acpi_rs_out_integer64(name, ACPI_GET64(target)); 5570897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 5580897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 5590897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* Flags: 1-bit and 2-bit flags supported */ 5600897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 5610897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_1BITFLAG: 56296db255c8f014ae3497507104e8df809785a619fBob Moore acpi_rs_out_string(name, ACPI_CAST_PTR(char, 56396db255c8f014ae3497507104e8df809785a619fBob Moore table-> 56496db255c8f014ae3497507104e8df809785a619fBob Moore pointer[*target & 56596db255c8f014ae3497507104e8df809785a619fBob Moore 0x01])); 5660897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 5670897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 5680897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_2BITFLAG: 56996db255c8f014ae3497507104e8df809785a619fBob Moore acpi_rs_out_string(name, ACPI_CAST_PTR(char, 57096db255c8f014ae3497507104e8df809785a619fBob Moore table-> 57196db255c8f014ae3497507104e8df809785a619fBob Moore pointer[*target & 57296db255c8f014ae3497507104e8df809785a619fBob Moore 0x03])); 5730897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 5740897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 575e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming case ACPI_RSD_3BITFLAG: 576e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_rs_out_string(name, ACPI_CAST_PTR(char, 577e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming table-> 578e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming pointer[*target & 579e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 0x07])); 580e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming break; 581e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 5820897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_SHORTLIST: 5830897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* 5840897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Short byte list (single line output) for DMA and IRQ resources 5850897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Note: The list length is obtained from the previous table entry 5860897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore */ 5870897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore if (previous_target) { 5880897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_rs_out_title(name); 58996db255c8f014ae3497507104e8df809785a619fBob Moore acpi_rs_dump_short_byte_list(*previous_target, 59096db255c8f014ae3497507104e8df809785a619fBob Moore target); 5910897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore } 5920897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 5930897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 594e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming case ACPI_RSD_SHORTLISTX: 595e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming /* 596e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming * Short byte list (single line output) for GPIO vendor data 597e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming * Note: The list length is obtained from the previous table entry 598e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming */ 599e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming if (previous_target) { 600e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_rs_out_title(name); 601e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_rs_dump_short_byte_list(*previous_target, 602e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming * 603e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming (ACPI_CAST_INDIRECT_PTR 604e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming (u8, target))); 605e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming } 606e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming break; 607e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 6080897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_LONGLIST: 6090897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* 6100897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Long byte list for Vendor resource data 6110897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Note: The list length is obtained from the previous table entry 6120897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore */ 6130897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore if (previous_target) { 614c51a4de85de720670f2fbc592a6f8040af72ad87Bob Moore acpi_rs_dump_byte_list(ACPI_GET16 615c51a4de85de720670f2fbc592a6f8040af72ad87Bob Moore (previous_target), 61696db255c8f014ae3497507104e8df809785a619fBob Moore target); 6170897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore } 6180897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 6190897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 6200897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_DWORDLIST: 6210897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* 6220897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Dword list for Extended Interrupt resources 6230897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Note: The list length is obtained from the previous table entry 6240897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore */ 6250897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore if (previous_target) { 62696db255c8f014ae3497507104e8df809785a619fBob Moore acpi_rs_dump_dword_list(*previous_target, 62796db255c8f014ae3497507104e8df809785a619fBob Moore ACPI_CAST_PTR(u32, 62896db255c8f014ae3497507104e8df809785a619fBob Moore target)); 6290897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore } 6300897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 6310897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 632e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming case ACPI_RSD_WORDLIST: 633e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming /* 634e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming * Word list for GPIO Pin Table 635e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming * Note: The list length is obtained from the previous table entry 636e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming */ 637e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming if (previous_target) { 638e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_rs_dump_word_list(*previous_target, 639e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming *(ACPI_CAST_INDIRECT_PTR 640e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming (u16, target))); 641e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming } 642e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming break; 643e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 6440897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_ADDRESS: 6450897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* 6460897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Common flags for all Address resources 6470897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore */ 64896db255c8f014ae3497507104e8df809785a619fBob Moore acpi_rs_dump_address_common(ACPI_CAST_PTR 64996db255c8f014ae3497507104e8df809785a619fBob Moore (union acpi_resource_data, 65096db255c8f014ae3497507104e8df809785a619fBob Moore target)); 6510897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 6520897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 6530897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore case ACPI_RSD_SOURCE: 6540897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* 6550897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Optional resource_source for Address resources 6560897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore */ 657fd3509436fde38d4c854bf5a6b83d2c779904f8eLen Brown acpi_rs_dump_resource_source(ACPI_CAST_PTR(struct 658fd3509436fde38d4c854bf5a6b83d2c779904f8eLen Brown acpi_resource_source, 659fd3509436fde38d4c854bf5a6b83d2c779904f8eLen Brown target)); 6600897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore break; 6610897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 6620897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore default: 6630897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_os_printf("**** Invalid table opcode [%X] ****\n", 6640897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore table->opcode); 6650897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore return; 6660897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore } 6670897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore 6680897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore table++; 6690897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore count--; 6700897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore } 67150eca3eb89d73d9f0aa070b126c7ee6a616016abBob Moore} 67250eca3eb89d73d9f0aa070b126c7ee6a616016abBob Moore 673bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore/******************************************************************************* 674bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 675bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * FUNCTION: acpi_rs_dump_resource_source 6761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 677bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * PARAMETERS: resource_source - Pointer to a Resource Source struct 6781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 6791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 6801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 681bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * DESCRIPTION: Common routine for dumping the optional resource_source and the 682bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * corresponding resource_source_index. 6831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 6841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ******************************************************************************/ 6851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 686bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moorestatic void 687bda663d36b94c723153246a4231bbc0f1cd1836eRobert Mooreacpi_rs_dump_resource_source(struct acpi_resource_source *resource_source) 6881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 68950eca3eb89d73d9f0aa070b126c7ee6a616016abBob Moore ACPI_FUNCTION_ENTRY(); 6901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 691bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore if (resource_source->index == 0xFF) { 692bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore return; 693bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore } 694bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 6950897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_rs_out_integer8("Resource Source Index", resource_source->index); 696bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 697bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore acpi_rs_out_string("Resource Source", 698bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore resource_source->string_ptr ? 699bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore resource_source->string_ptr : "[Not Specified]"); 700bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore} 701bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 702bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore/******************************************************************************* 703bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 704bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * FUNCTION: acpi_rs_dump_address_common 705bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 706bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * PARAMETERS: Resource - Pointer to an internal resource descriptor 707bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 708bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * RETURN: None 709bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 710bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * DESCRIPTION: Dump the fields that are common to all Address resource 711bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * descriptors 712bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 713bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore ******************************************************************************/ 714bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 715bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moorestatic void acpi_rs_dump_address_common(union acpi_resource_data *resource) 716bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore{ 7174be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown ACPI_FUNCTION_ENTRY(); 7181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 719bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore /* Decode the type-specific flags */ 720bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 721bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore switch (resource->address.resource_type) { 722bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore case ACPI_MEMORY_RANGE: 7231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 7240897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_rs_dump_descriptor(resource, acpi_rs_dump_memory_flags); 725bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore break; 726bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 727bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore case ACPI_IO_RANGE: 728bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 7290897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_rs_dump_descriptor(resource, acpi_rs_dump_io_flags); 730bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore break; 731bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 732bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore case ACPI_BUS_NUMBER_RANGE: 733bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 734bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore acpi_rs_out_string("Resource Type", "Bus Number Range"); 735bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore break; 736bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 737bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore default: 738bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 739bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore acpi_rs_out_integer8("Resource Type", 740bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore (u8) resource->address.resource_type); 741bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore break; 7421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 7431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 744bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore /* Decode the general flags */ 745bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 7460897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_rs_dump_descriptor(resource, acpi_rs_dump_general_flags); 7471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 7481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 7491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/******************************************************************************* 7501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 751bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * FUNCTION: acpi_rs_dump_resource_list 7521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 753bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * PARAMETERS: resource_list - Pointer to a resource descriptor list 7541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 7551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 7561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 757bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * DESCRIPTION: Dispatches the structure to the correct dump routine. 7581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 7591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ******************************************************************************/ 7601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 761bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moorevoid acpi_rs_dump_resource_list(struct acpi_resource *resource_list) 7621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 763bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore u32 count = 0; 7640897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore u32 type; 7651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 7664be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown ACPI_FUNCTION_ENTRY(); 7671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 768bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore if (!(acpi_dbg_level & ACPI_LV_RESOURCES) 769bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore || !(_COMPONENT & acpi_dbg_layer)) { 770bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore return; 771bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore } 772bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 7730897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* Walk list and dump all resource descriptors (END_TAG terminates) */ 774bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 7750897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore do { 776bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore acpi_os_printf("\n[%02X] ", count); 7770897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore count++; 778bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 779bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore /* Validate Type before dispatch */ 780bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 7810897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore type = resource_list->type; 7820897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore if (type > ACPI_RESOURCE_TYPE_MAX) { 783bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore acpi_os_printf 784bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore ("Invalid descriptor type (%X) in resource list\n", 785bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore resource_list->type); 786bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore return; 787bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore } 788bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 789bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore /* Dump the resource descriptor */ 790bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 791e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming if (type == ACPI_RESOURCE_TYPE_SERIAL_BUS) { 792e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_rs_dump_descriptor(&resource_list->data, 793e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_gbl_dump_serial_bus_dispatch 794e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming [resource_list->data. 795e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming common_serial_bus.type]); 796e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming } else { 797e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_rs_dump_descriptor(&resource_list->data, 798e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_gbl_dump_resource_dispatch 799e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming [type]); 800e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming } 801bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 8020897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* Point to the next resource structure */ 803bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 804e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming resource_list = ACPI_NEXT_RESOURCE(resource_list); 805bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 8060897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* Exit when END_TAG descriptor is reached */ 807bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 8080897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore } while (type != ACPI_RESOURCE_TYPE_END_TAG); 809bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore} 810bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 811bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore/******************************************************************************* 812bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 8130897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * FUNCTION: acpi_rs_dump_irq_list 814bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 8150897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * PARAMETERS: route_table - Pointer to the routing table to dump. 816bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 817bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * RETURN: None 818bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 8190897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * DESCRIPTION: Print IRQ routing table 820bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 821bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore ******************************************************************************/ 822bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore 8230897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorevoid acpi_rs_dump_irq_list(u8 * route_table) 824bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore{ 8250897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore struct acpi_pci_routing_table *prt_element; 8260897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore u8 count; 8271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8284be44fcd3bf648b782f4460fd06dfae6c42ded4bLen Brown ACPI_FUNCTION_ENTRY(); 8291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8300897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore if (!(acpi_dbg_level & ACPI_LV_RESOURCES) 8310897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore || !(_COMPONENT & acpi_dbg_layer)) { 8320897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore return; 8331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 8341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8350897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore prt_element = ACPI_CAST_PTR(struct acpi_pci_routing_table, route_table); 8361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8370897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore /* Dump all table elements, Exit on zero length element */ 8381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8390897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore for (count = 0; prt_element->length; count++) { 8400897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_os_printf("\n[%02X] PCI IRQ Routing Table Package\n", 8410897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore count); 8420897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_rs_dump_descriptor(prt_element, acpi_rs_dump_prt); 8431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 844c51a4de85de720670f2fbc592a6f8040af72ad87Bob Moore prt_element = ACPI_ADD_PTR(struct acpi_pci_routing_table, 845c51a4de85de720670f2fbc592a6f8040af72ad87Bob Moore prt_element, prt_element->length); 8461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 8471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 8481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/******************************************************************************* 8501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 8510897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * FUNCTION: acpi_rs_out* 8521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 8530897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * PARAMETERS: Title - Name of the resource field 8540897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Value - Value of the resource field 8551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 8561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * RETURN: None 8571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 8580897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * DESCRIPTION: Miscellaneous helper functions to consistently format the 8590897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * output of the resource dump routines 8601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 8611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ******************************************************************************/ 8621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8630897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic void acpi_rs_out_string(char *title, char *value) 8641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 865b8e4d89357fc434618a59c1047cac72641191805Bob Moore acpi_os_printf("%27s : %s", title, value); 866b8e4d89357fc434618a59c1047cac72641191805Bob Moore if (!*value) { 867b8e4d89357fc434618a59c1047cac72641191805Bob Moore acpi_os_printf("[NULL NAMESTRING]"); 868b8e4d89357fc434618a59c1047cac72641191805Bob Moore } 869b8e4d89357fc434618a59c1047cac72641191805Bob Moore acpi_os_printf("\n"); 8701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 8711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8720897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic void acpi_rs_out_integer8(char *title, u8 value) 8731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 8740897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_os_printf("%27s : %2.2X\n", title, value); 8751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 8761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8770897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic void acpi_rs_out_integer16(char *title, u16 value) 8781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 8790897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_os_printf("%27s : %4.4X\n", title, value); 8801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 8811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8820897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic void acpi_rs_out_integer32(char *title, u32 value) 88350eca3eb89d73d9f0aa070b126c7ee6a616016abBob Moore{ 8840897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_os_printf("%27s : %8.8X\n", title, value); 88550eca3eb89d73d9f0aa070b126c7ee6a616016abBob Moore} 88650eca3eb89d73d9f0aa070b126c7ee6a616016abBob Moore 8870897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic void acpi_rs_out_integer64(char *title, u64 value) 8881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 8890897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_os_printf("%27s : %8.8X%8.8X\n", title, ACPI_FORMAT_UINT64(value)); 8901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 8911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8920897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic void acpi_rs_out_title(char *title) 8931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 8940897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_os_printf("%27s : ", title); 895bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore} 8961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 897bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore/******************************************************************************* 898bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 8990897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * FUNCTION: acpi_rs_dump*List 900bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 9010897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * PARAMETERS: Length - Number of elements in the list 9020897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * Data - Start of the list 903bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 904bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * RETURN: None 905bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 9060897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore * DESCRIPTION: Miscellaneous functions to dump lists of raw data 907bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore * 908bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore ******************************************************************************/ 9091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 9100897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic void acpi_rs_dump_byte_list(u16 length, u8 * data) 911bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore{ 9120897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore u8 i; 9131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 9140897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore for (i = 0; i < length; i++) { 9150897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_os_printf("%25s%2.2X : %2.2X\n", "Byte", i, data[i]); 9160897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore } 917bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore} 9181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 9190897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic void acpi_rs_dump_short_byte_list(u8 length, u8 * data) 920bda663d36b94c723153246a4231bbc0f1cd1836eRobert Moore{ 9210897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore u8 i; 9221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 9230897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore for (i = 0; i < length; i++) { 9240897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_os_printf("%X ", data[i]); 9250897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore } 9260897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_os_printf("\n"); 9271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 9281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 9290897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moorestatic void acpi_rs_dump_dword_list(u8 length, u32 * data) 9301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 9310897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore u8 i; 9321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 9330897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore for (i = 0; i < length; i++) { 9340897831bb54eb36fd9e2a22da7f0f64be1b20d09Bob Moore acpi_os_printf("%25s%2.2X : %8.8X\n", "Dword", i, data[i]); 9351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 9361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 9371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 938e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Mingstatic void acpi_rs_dump_word_list(u16 length, u16 *data) 939e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming{ 940e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming u16 i; 941e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 942e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming for (i = 0; i < length; i++) { 943e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming acpi_os_printf("%25s%2.2X : %4.4X\n", "Word", i, data[i]); 944e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming } 945e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming} 946e0fe0a8d4ed5474261d0ee1452f5d9ae77236958Lin Ming 9471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 948