xref: /illumos-gate/usr/src/uts/sun4u/sys/epic.h (revision d58fda43)
1*d58fda43Sjbeloro /*
2*d58fda43Sjbeloro  * CDDL HEADER START
3*d58fda43Sjbeloro  *
4*d58fda43Sjbeloro  * The contents of this file are subject to the terms of the
5*d58fda43Sjbeloro  * Common Development and Distribution License, Version 1.0 only
6*d58fda43Sjbeloro  * (the "License").  You may not use this file except in compliance
7*d58fda43Sjbeloro  * with the License.
8*d58fda43Sjbeloro  *
9*d58fda43Sjbeloro  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*d58fda43Sjbeloro  * or http://www.opensolaris.org/os/licensing.
11*d58fda43Sjbeloro  * See the License for the specific language governing permissions
12*d58fda43Sjbeloro  * and limitations under the License.
13*d58fda43Sjbeloro  *
14*d58fda43Sjbeloro  * When distributing Covered Code, include this CDDL HEADER in each
15*d58fda43Sjbeloro  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*d58fda43Sjbeloro  * If applicable, add the following below this CDDL HEADER, with the
17*d58fda43Sjbeloro  * fields enclosed by brackets "[]" replaced with your own identifying
18*d58fda43Sjbeloro  * information: Portions Copyright [yyyy] [name of copyright owner]
19*d58fda43Sjbeloro  *
20*d58fda43Sjbeloro  * CDDL HEADER END
21*d58fda43Sjbeloro  */
22*d58fda43Sjbeloro 
23*d58fda43Sjbeloro /*
24*d58fda43Sjbeloro  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
25*d58fda43Sjbeloro  * Use is subject to license terms.
26*d58fda43Sjbeloro  */
27*d58fda43Sjbeloro 
28*d58fda43Sjbeloro #ifndef _EPIC_H
29*d58fda43Sjbeloro #define	_EPIC_H
30*d58fda43Sjbeloro 
31*d58fda43Sjbeloro #pragma ident	"%Z%%M%	%I%	%E% SMI"
32*d58fda43Sjbeloro 
33*d58fda43Sjbeloro #ifdef	__cplusplus
34*d58fda43Sjbeloro extern "C" {
35*d58fda43Sjbeloro #endif
36*d58fda43Sjbeloro 
37*d58fda43Sjbeloro 
38*d58fda43Sjbeloro /*
39*d58fda43Sjbeloro  * EPIC is slow device. Need to interlace delay between two accesses.
40*d58fda43Sjbeloro  */
41*d58fda43Sjbeloro #define	EPIC_DELAY 10000
42*d58fda43Sjbeloro 
43*d58fda43Sjbeloro /*
44*d58fda43Sjbeloro  * EPIC Registers from Indirect Address/Data
45*d58fda43Sjbeloro  */
46*d58fda43Sjbeloro #define	EPIC_FIRE_INTERRUPT		0x01
47*d58fda43Sjbeloro #define	EPIC_FIRE_INT_MASK		0x01
48*d58fda43Sjbeloro 
49*d58fda43Sjbeloro #define	EPIC_IND_FW_VERSION		0x05
50*d58fda43Sjbeloro 
51*d58fda43Sjbeloro #define	EPIC_IND_LED_STATE0		0x06
52*d58fda43Sjbeloro 
53*d58fda43Sjbeloro #define	EPIC_ALERT_LED_MASK		0x0C
54*d58fda43Sjbeloro #define	EPIC_ALERT_LED_OFF		0x00
55*d58fda43Sjbeloro #define	EPIC_ALERT_LED_ON		0x04
56*d58fda43Sjbeloro 
57*d58fda43Sjbeloro #define	EPIC_POWER_LED_MASK		0x30
58*d58fda43Sjbeloro #define	EPIC_POWER_LED_OFF		0x00
59*d58fda43Sjbeloro #define	EPIC_POWER_LED_ON		0x10
60*d58fda43Sjbeloro #define	EPIC_POWER_LED_SB_BLINK		0x20
61*d58fda43Sjbeloro #define	EPIC_POWER_LED_FAST_BLINK	0x30
62*d58fda43Sjbeloro 
63*d58fda43Sjbeloro #define	EPIC_HOST_INT_ENABLE_REG	0x1a
64*d58fda43Sjbeloro #define	EPIC_POWER_BUTTON_INT		0x01
65*d58fda43Sjbeloro #define	EPIC_HOST_INTR_CLEAR		0x00
66*d58fda43Sjbeloro #define	EPIC_POWER_BUTTON_INT_MASK	0x01
67*d58fda43Sjbeloro #define	EPIC_HOST_INT_STATUS_REG	0x1b
68*d58fda43Sjbeloro 
69*d58fda43Sjbeloro #define	EPIC_ATOM_DATA			0x80
70*d58fda43Sjbeloro #define	EPIC_ATOM_ADDR			0x81
71*d58fda43Sjbeloro 
72*d58fda43Sjbeloro #define	EPIC_ATOM_INTR_CLEAR		0x01
73*d58fda43Sjbeloro #define	EPIC_ATOM_INTR_READ		0x02
74*d58fda43Sjbeloro #define	EPIC_ATOM_INTR_ENABLE		0x03
75*d58fda43Sjbeloro 
76*d58fda43Sjbeloro 
77*d58fda43Sjbeloro /*
78*d58fda43Sjbeloro  * EPIC ioctl commands
79*d58fda43Sjbeloro  */
80*d58fda43Sjbeloro 
81*d58fda43Sjbeloro #define	EPIC_SET_ALERT_LED		0x11
82*d58fda43Sjbeloro #define	EPIC_RESET_ALERT_LED		0x12
83*d58fda43Sjbeloro 
84*d58fda43Sjbeloro #define	EPIC_SET_POWER_LED		0x21
85*d58fda43Sjbeloro #define	EPIC_RESET_POWER_LED		0x22
86*d58fda43Sjbeloro #define	EPIC_SB_BL_POWER_LED		0x23
87*d58fda43Sjbeloro #define	EPIC_FAST_BL_POWER_LED		0x24
88*d58fda43Sjbeloro 
89*d58fda43Sjbeloro #define	EPIC_GET_FW			0x30
90*d58fda43Sjbeloro 
91*d58fda43Sjbeloro /*
92*d58fda43Sjbeloro  *	READ/WRITE macros for the port used by epic (LED) driver
93*d58fda43Sjbeloro  */
94*d58fda43Sjbeloro 
95*d58fda43Sjbeloro #define	EPIC_READ(HANDLE, REG, LHS, ADDR)\
96*d58fda43Sjbeloro 		drv_usecwait(EPIC_DELAY);\
97*d58fda43Sjbeloro 		(void) ddi_put8((HANDLE),\
98*d58fda43Sjbeloro 		(uint8_t *)(REG)+\
99*d58fda43Sjbeloro 		    EPIC_IND_ADDR, (ADDR));\
100*d58fda43Sjbeloro 		drv_usecwait(EPIC_DELAY);\
101*d58fda43Sjbeloro 		(LHS) =  ddi_get8((HANDLE),\
102*d58fda43Sjbeloro 				(uint8_t *)(REG)+\
103*d58fda43Sjbeloro 				EPIC_IND_DATA);
104*d58fda43Sjbeloro 
105*d58fda43Sjbeloro #define	EPIC_WRITE(HANDLE, REG, ADDR, MASK, DATA)\
106*d58fda43Sjbeloro 		drv_usecwait(EPIC_DELAY);\
107*d58fda43Sjbeloro 		(void) ddi_put8((HANDLE),\
108*d58fda43Sjbeloro 		(uint8_t *)(REG)+\
109*d58fda43Sjbeloro 		    EPIC_IND_ADDR, (ADDR));\
110*d58fda43Sjbeloro 		drv_usecwait(EPIC_DELAY);\
111*d58fda43Sjbeloro 		(void) ddi_put8((HANDLE),\
112*d58fda43Sjbeloro 		(uint8_t *)(REG)+\
113*d58fda43Sjbeloro 		    EPIC_WRITE_MASK, (MASK));\
114*d58fda43Sjbeloro 		drv_usecwait(EPIC_DELAY);\
115*d58fda43Sjbeloro 		(void) ddi_put8((HANDLE),\
116*d58fda43Sjbeloro 		(uint8_t *)(REG)+\
117*d58fda43Sjbeloro 		    EPIC_IND_DATA, (DATA));
118*d58fda43Sjbeloro 
119*d58fda43Sjbeloro /*
120*d58fda43Sjbeloro  *	READ/WRITE macros for the port used by power button driver
121*d58fda43Sjbeloro  */
122*d58fda43Sjbeloro 
123*d58fda43Sjbeloro #define	EPIC_RD(HANDLE, REG, LHS)\
124*d58fda43Sjbeloro 		drv_usecwait(EPIC_DELAY);\
125*d58fda43Sjbeloro 		(LHS) =  ddi_get8((HANDLE),\
126*d58fda43Sjbeloro 			(uint8_t *)(REG)+\
127*d58fda43Sjbeloro 			EPIC_ATOM_DATA);
128*d58fda43Sjbeloro 
129*d58fda43Sjbeloro #define	EPIC_WR(HANDLE, REG, DATA)\
130*d58fda43Sjbeloro 		drv_usecwait(EPIC_DELAY);\
131*d58fda43Sjbeloro 		(void) ddi_put8((HANDLE),\
132*d58fda43Sjbeloro 		(uint8_t *)(REG)+\
133*d58fda43Sjbeloro 		EPIC_ATOM_ADDR, (DATA));
134*d58fda43Sjbeloro 
135*d58fda43Sjbeloro 
136*d58fda43Sjbeloro #ifdef	__cplusplus
137*d58fda43Sjbeloro }
138*d58fda43Sjbeloro #endif
139*d58fda43Sjbeloro 
140*d58fda43Sjbeloro #endif /* _EPIC_H */
141