1/*
2 *  linux/include/linux/hcdp_serial.h
3 *
4 *  Copyright (C) 2002  Hewlett-Packard Co.
5 *  Copyright (C) 2002  Khalid Aziz <khalid_aziz@hp.com>
6 *
7 *  Definitions for HCDP defined serial ports (Serial console and
8 *  debug ports)
9 *
10 */
11#ifndef _LINUX_HCDP_SERIAL_H
12#define _LINUX_HCDP_SERIAL_H
13
14/* ACPI table signatures */
15#define HCDP_SIG_LEN		4
16#define HCDP_SIGNATURE		"HCDP"
17
18/* Space ID as defined in ACPI generic address structure */
19#define ACPI_MEM_SPACE		0
20#define ACPI_IO_SPACE		1
21#define ACPI_PCICONF_SPACE	2
22
23/*
24 * Maximum number of HCDP devices we want to read in
25 */
26#define MAX_HCDP_DEVICES	6
27
28/*
29 * Default base baud rate if clock rate is 0 in HCDP table.
30 */
31#define DEFAULT_BAUD_BASE	115200
32
33/*
34 * ACPI Generic Address Structure
35 */
36typedef struct {
37	u8  space_id;
38	u8  bit_width;
39	u8  bit_offset;
40	u8  resv;
41	u32 addrlo;
42	u32 addrhi;
43} acpi_gen_addr;
44
45/* HCDP Device descriptor entry types */
46#define HCDP_DEV_CONSOLE	0
47#define HCDP_DEV_DEBUG		1
48
49/* HCDP Device descriptor type */
50typedef struct {
51	u8	type;
52	u8	bits;
53	u8	parity;
54	u8	stop_bits;
55	u8	pci_seg;
56	u8	pci_bus;
57	u8	pci_dev;
58	u8	pci_func;
59	u64	baud;
60	acpi_gen_addr	base_addr;
61	u16	pci_dev_id;
62	u16	pci_vendor_id;
63	u32	global_int;
64	u32	clock_rate;
65	u8	pci_prog_intfc;
66	u8	resv;
67} hcdp_dev_t;
68
69/* HCDP Table format */
70typedef struct {
71	u8	signature[4];
72	u32	len;
73	u8	rev;
74	u8	chksum;
75	u8	oemid[6];
76	u8	oem_tabid[8];
77	u32	oem_rev;
78	u8	creator_id[4];
79	u32	creator_rev;
80	u32	num_entries;
81	hcdp_dev_t	hcdp_dev[MAX_HCDP_DEVICES];
82} hcdp_t;
83
84#endif	/* _LINUX_HCDP_SERIAL_H */
85