1/*
2 *	linux/include/asm-alpha/err_common.h
3 *
4 *	Copyright (C) 2000 Jeff Wiedemeier (Compaq Computer Corporation)
5 *
6 *	Contains declarations and macros to support Alpha error handling
7 * 	implementations.
8 */
9
10#ifndef __ALPHA_ERR_COMMON_H
11#define __ALPHA_ERR_COMMON_H 1
12
13/*
14 * SCB Vector definitions
15 */
16#define SCB_Q_SYSERR	0x620
17#define SCB_Q_PROCERR	0x630
18#define SCB_Q_SYSMCHK	0x660
19#define SCB_Q_PROCMCHK	0x670
20#define SCB_Q_SYSEVENT	0x680
21
22/*
23 * Disposition definitions for logout frame parser
24 */
25#define MCHK_DISPOSITION_UNKNOWN_ERROR		0x00
26#define MCHK_DISPOSITION_REPORT			0x01
27#define MCHK_DISPOSITION_DISMISS		0x02
28
29/*
30 * Error Log definitions
31 */
32/*
33 * Types
34 */
35
36#define EL_CLASS__TERMINATION		(0)
37#  define EL_TYPE__TERMINATION__TERMINATION		(0)
38#define EL_CLASS__HEADER		(5)
39#  define EL_TYPE__HEADER__SYSTEM_ERROR_FRAME		(1)
40#  define EL_TYPE__HEADER__SYSTEM_EVENT_FRAME		(2)
41#  define EL_TYPE__HEADER__HALT_FRAME			(3)
42#  define EL_TYPE__HEADER__LOGOUT_FRAME			(19)
43#define EL_CLASS__GENERAL_NOTIFICATION	(9)
44#define EL_CLASS__PCI_ERROR_FRAME	(11)
45#define EL_CLASS__REGATTA_FAMILY	(12)
46#  define EL_TYPE__REGATTA__PROCESSOR_ERROR_FRAME	(1)
47#  define EL_TYPE__REGATTA__SYSTEM_ERROR_FRAME		(2)
48#  define EL_TYPE__REGATTA__ENVIRONMENTAL_FRAME		(3)
49#  define EL_TYPE__REGATTA__TITAN_PCHIP0_EXTENDED	(8)
50#  define EL_TYPE__REGATTA__TITAN_PCHIP1_EXTENDED	(9)
51#  define EL_TYPE__REGATTA__TITAN_MEMORY_EXTENDED	(10)
52#  define EL_TYPE__REGATTA__PROCESSOR_DBL_ERROR_HALT	(11)
53#  define EL_TYPE__REGATTA__SYSTEM_DBL_ERROR_HALT	(12)
54#define EL_CLASS__PAL                   (14)
55#  define EL_TYPE__PAL__LOGOUT_FRAME                    (1)
56#  define EL_TYPE__PAL__EV7_PROCESSOR			(4)
57#  define EL_TYPE__PAL__EV7_ZBOX			(5)
58#  define EL_TYPE__PAL__EV7_RBOX			(6)
59#  define EL_TYPE__PAL__EV7_IO				(7)
60#  define EL_TYPE__PAL__ENV__AMBIENT_TEMPERATURE	(10)
61#  define EL_TYPE__PAL__ENV__AIRMOVER_FAN		(11)
62#  define EL_TYPE__PAL__ENV__VOLTAGE			(12)
63#  define EL_TYPE__PAL__ENV__INTRUSION			(13)
64#  define EL_TYPE__PAL__ENV__POWER_SUPPLY		(14)
65#  define EL_TYPE__PAL__ENV__LAN			(15)
66#  define EL_TYPE__PAL__ENV__HOT_PLUG			(16)
67
68union el_timestamp {
69	struct {
70		u8 second;
71		u8 minute;
72		u8 hour;
73		u8 day;
74		u8 month;
75		u8 year;
76	} b;
77	u64 as_int;
78};
79
80struct el_subpacket {
81	u16 length;		/* length of header (in bytes)	*/
82	u16 class;		/* header class and type...   	*/
83	u16 type;		/* ...determine content     	*/
84	u16 revision;		/* header revision 		*/
85	union {
86		struct {	/* Class 5, Type 1 - System Error	*/
87			u32 frame_length;
88			u32 frame_packet_count;
89		} sys_err;
90		struct {	/* Class 5, Type 2 - System Event 	*/
91			union el_timestamp timestamp;
92			u32 frame_length;
93			u32 frame_packet_count;
94		} sys_event;
95		struct {	/* Class 5, Type 3 - Double Error Halt	*/
96			u16 halt_code;
97			u16 reserved;
98			union el_timestamp timestamp;
99			u32 frame_length;
100			u32 frame_packet_count;
101		} err_halt;
102		struct {	/* Clasee 5, Type 19 - Logout Frame Header */
103			u32 frame_length;
104			u32 frame_flags;
105			u32 cpu_offset;
106			u32 system_offset;
107		} logout_header;
108		struct {	/* Class 12 - Regatta			*/
109			u64 cpuid;
110			u64 data_start[1];
111		} regatta_frame;
112		struct {	/* Raw 				        */
113			u64 data_start[1];
114		} raw;
115	} by_type;
116};
117
118#endif /* __ALPHA_ERR_COMMON_H */
119