1*03831d35Sstevel /*
2*03831d35Sstevel  * CDDL HEADER START
3*03831d35Sstevel  *
4*03831d35Sstevel  * The contents of this file are subject to the terms of the
5*03831d35Sstevel  * Common Development and Distribution License (the "License").
6*03831d35Sstevel  * You may not use this file except in compliance with the License.
7*03831d35Sstevel  *
8*03831d35Sstevel  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*03831d35Sstevel  * or http://www.opensolaris.org/os/licensing.
10*03831d35Sstevel  * See the License for the specific language governing permissions
11*03831d35Sstevel  * and limitations under the License.
12*03831d35Sstevel  *
13*03831d35Sstevel  * When distributing Covered Code, include this CDDL HEADER in each
14*03831d35Sstevel  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*03831d35Sstevel  * If applicable, add the following below this CDDL HEADER, with the
16*03831d35Sstevel  * fields enclosed by brackets "[]" replaced with your own identifying
17*03831d35Sstevel  * information: Portions Copyright [yyyy] [name of copyright owner]
18*03831d35Sstevel  *
19*03831d35Sstevel  * CDDL HEADER END
20*03831d35Sstevel  */
21*03831d35Sstevel 
22*03831d35Sstevel /*
23*03831d35Sstevel  * Copyright 2002 Sun Microsystems, Inc.  All rights reserved.
24*03831d35Sstevel  * Use is subject to license terms.
25*03831d35Sstevel  */
26*03831d35Sstevel 
27*03831d35Sstevel #ifndef _RMC_COMM_DP_BOOT_H
28*03831d35Sstevel #define	_RMC_COMM_DP_BOOT_H
29*03831d35Sstevel 
30*03831d35Sstevel #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*03831d35Sstevel 
32*03831d35Sstevel #ifdef __cplusplus
33*03831d35Sstevel extern "C" {
34*03831d35Sstevel #endif
35*03831d35Sstevel 
36*03831d35Sstevel /* Boot protocol message types */
37*03831d35Sstevel 
38*03831d35Sstevel #define	BP_OBP_TEST		0xC0
39*03831d35Sstevel #define	BP_OBP_INIT		0xC1
40*03831d35Sstevel #define	BP_OBP_ENQUIRE		0xC2
41*03831d35Sstevel #define	BP_OBP_BOOTINIT		0xC3
42*03831d35Sstevel #define	BP_OBP_RESET		0xC4
43*03831d35Sstevel #define	BP_OBP_MACADDR		0xC5
44*03831d35Sstevel #define	BP_OBP_BOOTMODE		0xC6
45*03831d35Sstevel #define	BP_OBP_HOST_MACADDR	0xC7
46*03831d35Sstevel #define	BP_OBP_SOFT_GPIO 	0xC8
47*03831d35Sstevel 
48*03831d35Sstevel #define	BP_RSC_TESTACK		0xD0
49*03831d35Sstevel #define	BP_RSC_DIAG		0xD1
50*03831d35Sstevel #define	BP_RSC_OK		0xD2
51*03831d35Sstevel #define	BP_RSC_STATUS		0xD3
52*03831d35Sstevel #define	BP_RSC_MACADDRACK	0xD5
53*03831d35Sstevel #define	BP_RSC_BOOTMODEACK	0xD6
54*03831d35Sstevel #define	BP_RSC_BOOTREQ		0xD8
55*03831d35Sstevel #define	BP_RSC_BOOTACK		0xD9
56*03831d35Sstevel #define	BP_RSC_BOOTFAIL		0xDA
57*03831d35Sstevel #define	BP_RSC_BOOTOK		0xDB
58*03831d35Sstevel #define	BP_RSC_SOFTGPIOACK	0xDD
59*03831d35Sstevel 
60*03831d35Sstevel #define	BP_MIN_CMD		0xC0
61*03831d35Sstevel #define	BP_MAX_CMD		0xDF
62*03831d35Sstevel 
63*03831d35Sstevel /*
64*03831d35Sstevel  * A boot protocol message consists of one (or more) synchronizing
65*03831d35Sstevel  * bytes, a command byte, and two data bytes.  The following structure
66*03831d35Sstevel  * defines how a boot message is passed around.  Hopefully the C
67*03831d35Sstevel  * compiler will be smart enough to pass this in a register...
68*03831d35Sstevel  */
69*03831d35Sstevel 
70*03831d35Sstevel #define	BP_SYNC		0x80
71*03831d35Sstevel 
72*03831d35Sstevel typedef struct bp_msg {
73*03831d35Sstevel 	uint8_t pad;	/* make it 4 bytes long */
74*03831d35Sstevel 	uint8_t cmd;
75*03831d35Sstevel 	uint8_t dat1;
76*03831d35Sstevel 	uint8_t dat2;
77*03831d35Sstevel } bp_msg_t;
78*03831d35Sstevel 
79*03831d35Sstevel /* Test numbers used in the OBP_TEST message: */
80*03831d35Sstevel #define	BP_DAT1_MIN_TEST	0
81*03831d35Sstevel #define	BP_DAT1_TTYC_ECHO_ON	0
82*03831d35Sstevel #define	BP_DAT1_TTYC_ECHO_OFF	1
83*03831d35Sstevel #define	BP_DAT1_TTYD_ECHO_ON	2
84*03831d35Sstevel #define	BP_DAT1_TTYD_ECHO_OFF	3
85*03831d35Sstevel #define	BP_DAT1_TTYCD_ECHO_ON	4
86*03831d35Sstevel #define	BP_DAT1_TTYCD_ECHO_OFF	5
87*03831d35Sstevel #define	BP_DAT1_ENET_INT_LB	6
88*03831d35Sstevel #define	BP_DAT1_ENET_EXT_LB	7
89*03831d35Sstevel #define	BP_DAT1_TTYU_INT_LB	8
90*03831d35Sstevel #define	BP_DAT1_TTYU_EXT_LB	9
91*03831d35Sstevel #define	BP_DAT1_SEEPROM_CKSUM	10
92*03831d35Sstevel #define	BP_DAT1_DUMMY_TEST	11
93*03831d35Sstevel #define	BP_DAT1_FRU_CKSUM	12
94*03831d35Sstevel #define	BP_DAT1_FLASH_CKSUM	13
95*03831d35Sstevel #define	BP_DAT1_TOD_TEST	14
96*03831d35Sstevel #define	BP_DAT1_MODEM_TEST	15
97*03831d35Sstevel #define	BP_DAT1_MAX_TEST	15
98*03831d35Sstevel 
99*03831d35Sstevel /*
100*03831d35Sstevel  * This bit should be set in the RSC_STATUS message to indicate to the
101*03831d35Sstevel  * host that there is an interesting bootmode.
102*03831d35Sstevel  */
103*03831d35Sstevel #define	BP_DAT1_VALID_BOOTMODE	0x40
104*03831d35Sstevel 
105*03831d35Sstevel /*
106*03831d35Sstevel  * Bit definitions for the OBP_INIT and RSC_OK messages.
107*03831d35Sstevel  */
108*03831d35Sstevel 
109*03831d35Sstevel #define	BP_DAT1_MENUS	0x80
110*03831d35Sstevel #define	BP_DAT1_MAX	0x40
111*03831d35Sstevel #define	BP_DAT1_MED	0x20
112*03831d35Sstevel #define	BP_DAT1_MIN	0x10
113*03831d35Sstevel #define	BP_DAT1_MBO	0x01
114*03831d35Sstevel 
115*03831d35Sstevel #define	BP_DAT2_DIAGSW	0x01
116*03831d35Sstevel 
117*03831d35Sstevel /* Bit definitions for OBP_BOOTINIT message. */
118*03831d35Sstevel 
119*03831d35Sstevel #define	BP_DAT2_FLASH_PDAT	0x04
120*03831d35Sstevel #define	BP_DAT2_FLASH_MAIN	0x02
121*03831d35Sstevel #define	BP_DAT2_FLASH_BOOT	0x01
122*03831d35Sstevel 
123*03831d35Sstevel /*
124*03831d35Sstevel  * For bit definitions for the RSC_STATUS message, see the post word bit
125*03831d35Sstevel  * definitions in "postword.h".
126*03831d35Sstevel  */
127*03831d35Sstevel 
128*03831d35Sstevel /* Bit definitions for RSC_BOOTFAIL message. */
129*03831d35Sstevel 
130*03831d35Sstevel #define	BP_DAT1_REJECTED	0x40
131*03831d35Sstevel #define	BP_DAT1_RANGE_ERR	0x20
132*03831d35Sstevel #define	BP_DAT1_VERIFY_ERR	0x10
133*03831d35Sstevel #define	BP_DAT1_ERASE_ERR	0x08
134*03831d35Sstevel #define	BP_DAT1_INT_WP_ERR	0x04
135*03831d35Sstevel #define	BP_DAT1_WP_ERR		0x02
136*03831d35Sstevel #define	BP_DAT1_VPP_ERR		0x01
137*03831d35Sstevel 
138*03831d35Sstevel /* For lower 8 bits, see the lower 8 bits of the post word in "postword.h". */
139*03831d35Sstevel 
140*03831d35Sstevel #define	KANTH_SRECORD_ACK
141*03831d35Sstevel 
142*03831d35Sstevel /*
143*03831d35Sstevel  * When downloading S-records, a RSC:bootack is sent with the following
144*03831d35Sstevel  * value in dat1 to indicate whether the S-record checksum was OK or not.
145*03831d35Sstevel  */
146*03831d35Sstevel 
147*03831d35Sstevel #define	BP_DAT1_BOOTINIT_ACK	0x00
148*03831d35Sstevel #define	BP_DAT1_SRECORD_ACK	0x01
149*03831d35Sstevel #define	BP_DAT1_SRECORD_NAK	0x02
150*03831d35Sstevel 
151*03831d35Sstevel /* Definitions for OBP_BOOTMODE message: */
152*03831d35Sstevel #define	BP_DAT2_BOOTMODE_CLEAR		1
153*03831d35Sstevel 
154*03831d35Sstevel /* Definitions for RSC_BOOTMODE message: */
155*03831d35Sstevel #define	BP_BAT1_BOOTMODE_DATAMSB	0x10
156*03831d35Sstevel #define	BP_DAT1_BOOTMODE_OFFSET_MASK	0x07
157*03831d35Sstevel 
158*03831d35Sstevel #define	BP_DAT2_BOOTMODE_DATA_MASK	0x7F
159*03831d35Sstevel 
160*03831d35Sstevel /* Definitions for RSC_BOOTMODEACK message: */
161*03831d35Sstevel #define	BP_DAT1_BOOTMODE_NORMAL		0
162*03831d35Sstevel #define	BP_DAT1_BOOTMODE_FORTH		1
163*03831d35Sstevel #define	BP_DAT1_BOOTMODE_RESET_NVRAM	2
164*03831d35Sstevel #define	BP_DAT1_BOOTMODE_DIAG		3
165*03831d35Sstevel #define	BP_DAT1_BOOTMODE_SKIP_DIAG	4
166*03831d35Sstevel 
167*03831d35Sstevel #define	BP_DAT2_BOOTOPT_CONSOLE_RSC	1
168*03831d35Sstevel 
169*03831d35Sstevel /* Definitions for RSC_MACADDRACK message: */
170*03831d35Sstevel #define	BP_DAT2_MACADDRACK_OK		0
171*03831d35Sstevel #define	BP_DAT2_MACADDRACK_DONE		1
172*03831d35Sstevel #define	BP_DAT2_MACADDRACK_BADOFFSET	2
173*03831d35Sstevel #define	BP_DAT2_MACADDRACK_NOTREADY	3
174*03831d35Sstevel #define	BP_DAT2_MACADDRACK_NVERR	4
175*03831d35Sstevel 
176*03831d35Sstevel /* Definitions for RSC_SOFTGPIOACK message */
177*03831d35Sstevel #define	BP_DAT2_HOST_TYPE_OK		0
178*03831d35Sstevel #define	BP_DAT2_HOST_TYPE_NVERR		1
179*03831d35Sstevel 
180*03831d35Sstevel #ifdef __cplusplus
181*03831d35Sstevel }
182*03831d35Sstevel #endif
183*03831d35Sstevel 
184*03831d35Sstevel #endif /* _RMC_COMM_DP_BOOT_H */
185