Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Definitions for PCDP-defined console devices
0004  *
0005  * For DIG64_HCDPv10a_01.pdf and DIG64_PCDPv20.pdf (v1.0a and v2.0 resp.),
0006  * please see <http://www.dig64.org/specifications/>
0007  *
0008  * (c) Copyright 2002, 2004 Hewlett-Packard Development Company, L.P.
0009  *  Khalid Aziz <khalid.aziz@hp.com>
0010  *  Bjorn Helgaas <bjorn.helgaas@hp.com>
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 /* pcdp_uart.type and pcdp_device.type */
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 /* pcdp_uart.flags */
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) /* in pci_func for rev < 3 */
0033 #define PCDP_UART_PCI           (1 << 7) /* in pci_func for rev < 3 */
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 /* pcdp_if_pci.trans */
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;      /* address space descriptors */
0081 } __attribute__((packed));
0082 
0083 /* pcdp_device.flags */
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     /* next data is pcdp_if_pci or pcdp_if_acpi (not yet supported) */
0092     /* next data is device specific type (currently only pcdp_vga) */
0093 } __attribute__((packed));
0094 
0095 struct pcdp {
0096     u8          signature[4];
0097     u32         length;
0098     u8          rev;        /* PCDP v2.0 is rev 3 */
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[]; /* actual size is num_uarts */
0107     /* remainder of table is pcdp_device structures */
0108 } __attribute__((packed));