0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #define PCDP_CONSOLE 0
0014 #define PCDP_DEBUG 1
0015 #define PCDP_CONSOLE_OUTPUT 2
0016 #define PCDP_CONSOLE_INPUT 3
0017
0018 #define PCDP_UART (0 << 3)
0019 #define PCDP_VGA (1 << 3)
0020 #define PCDP_USB (2 << 3)
0021
0022
0023 #define PCDP_CONSOLE_UART (PCDP_UART | PCDP_CONSOLE)
0024 #define PCDP_DEBUG_UART (PCDP_UART | PCDP_DEBUG)
0025 #define PCDP_CONSOLE_VGA (PCDP_VGA | PCDP_CONSOLE_OUTPUT)
0026 #define PCDP_CONSOLE_USB (PCDP_USB | PCDP_CONSOLE_INPUT)
0027
0028
0029 #define PCDP_UART_EDGE_SENSITIVE (1 << 0)
0030 #define PCDP_UART_ACTIVE_LOW (1 << 1)
0031 #define PCDP_UART_PRIMARY_CONSOLE (1 << 2)
0032 #define PCDP_UART_IRQ (1 << 6)
0033 #define PCDP_UART_PCI (1 << 7)
0034
0035 struct pcdp_uart {
0036 u8 type;
0037 u8 bits;
0038 u8 parity;
0039 u8 stop_bits;
0040 u8 pci_seg;
0041 u8 pci_bus;
0042 u8 pci_dev;
0043 u8 pci_func;
0044 u64 baud;
0045 struct acpi_generic_address addr;
0046 u16 pci_dev_id;
0047 u16 pci_vendor_id;
0048 u32 gsi;
0049 u32 clock_rate;
0050 u8 pci_prog_intfc;
0051 u8 flags;
0052 u16 conout_index;
0053 u32 reserved;
0054 } __attribute__((packed));
0055
0056 #define PCDP_IF_PCI 1
0057
0058
0059 #define PCDP_PCI_TRANS_IOPORT 0x02
0060 #define PCDP_PCI_TRANS_MMIO 0x01
0061
0062 struct pcdp_if_pci {
0063 u8 interconnect;
0064 u8 reserved;
0065 u16 length;
0066 u8 segment;
0067 u8 bus;
0068 u8 dev;
0069 u8 fun;
0070 u16 dev_id;
0071 u16 vendor_id;
0072 u32 acpi_interrupt;
0073 u64 mmio_tra;
0074 u64 ioport_tra;
0075 u8 flags;
0076 u8 trans;
0077 } __attribute__((packed));
0078
0079 struct pcdp_vga {
0080 u8 count;
0081 } __attribute__((packed));
0082
0083
0084 #define PCDP_PRIMARY_CONSOLE 1
0085
0086 struct pcdp_device {
0087 u8 type;
0088 u8 flags;
0089 u16 length;
0090 u16 efi_index;
0091
0092
0093 } __attribute__((packed));
0094
0095 struct pcdp {
0096 u8 signature[4];
0097 u32 length;
0098 u8 rev;
0099 u8 chksum;
0100 u8 oemid[6];
0101 u8 oem_tabid[8];
0102 u32 oem_rev;
0103 u8 creator_id[4];
0104 u32 creator_rev;
0105 u32 num_uarts;
0106 struct pcdp_uart uart[];
0107
0108 } __attribute__((packed));