03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CDDL HEADER START
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * The contents of this file are subject to the terms of the
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Common Development and Distribution License (the "License").
03831d35f7499c87d51205817c93e9a8d42c4baestevel * You may not use this file except in compliance with the License.
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * or http://www.opensolaris.org/os/licensing.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * See the License for the specific language governing permissions
03831d35f7499c87d51205817c93e9a8d42c4baestevel * and limitations under the License.
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * When distributing Covered Code, include this CDDL HEADER in each
03831d35f7499c87d51205817c93e9a8d42c4baestevel * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * If applicable, add the following below this CDDL HEADER, with the
03831d35f7499c87d51205817c93e9a8d42c4baestevel * fields enclosed by brackets "[]" replaced with your own identifying
03831d35f7499c87d51205817c93e9a8d42c4baestevel * information: Portions Copyright [yyyy] [name of copyright owner]
03831d35f7499c87d51205817c93e9a8d42c4baestevel *
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CDDL HEADER END
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Use is subject to license terms.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifndef _RMC_COMM_DP_BOOT_H
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define _RMC_COMM_DP_BOOT_H
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#pragma ident "%Z%%M% %I% %E% SMI"
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifdef __cplusplus
03831d35f7499c87d51205817c93e9a8d42c4baestevelextern "C" {
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* Boot protocol message types */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_OBP_TEST 0xC0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_OBP_INIT 0xC1
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_OBP_ENQUIRE 0xC2
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_OBP_BOOTINIT 0xC3
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_OBP_RESET 0xC4
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_OBP_MACADDR 0xC5
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_OBP_BOOTMODE 0xC6
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_OBP_HOST_MACADDR 0xC7
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_OBP_SOFT_GPIO 0xC8
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_RSC_TESTACK 0xD0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_RSC_DIAG 0xD1
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_RSC_OK 0xD2
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_RSC_STATUS 0xD3
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_RSC_MACADDRACK 0xD5
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_RSC_BOOTMODEACK 0xD6
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_RSC_BOOTREQ 0xD8
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_RSC_BOOTACK 0xD9
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_RSC_BOOTFAIL 0xDA
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_RSC_BOOTOK 0xDB
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_RSC_SOFTGPIOACK 0xDD
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_MIN_CMD 0xC0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_MAX_CMD 0xDF
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * A boot protocol message consists of one (or more) synchronizing
03831d35f7499c87d51205817c93e9a8d42c4baestevel * bytes, a command byte, and two data bytes. The following structure
03831d35f7499c87d51205817c93e9a8d42c4baestevel * defines how a boot message is passed around. Hopefully the C
03831d35f7499c87d51205817c93e9a8d42c4baestevel * compiler will be smart enough to pass this in a register...
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_SYNC 0x80
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef struct bp_msg {
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint8_t pad; /* make it 4 bytes long */
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint8_t cmd;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint8_t dat1;
03831d35f7499c87d51205817c93e9a8d42c4baestevel uint8_t dat2;
03831d35f7499c87d51205817c93e9a8d42c4baestevel} bp_msg_t;
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* Test numbers used in the OBP_TEST message: */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_MIN_TEST 0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_TTYC_ECHO_ON 0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_TTYC_ECHO_OFF 1
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_TTYD_ECHO_ON 2
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_TTYD_ECHO_OFF 3
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_TTYCD_ECHO_ON 4
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_TTYCD_ECHO_OFF 5
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_ENET_INT_LB 6
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_ENET_EXT_LB 7
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_TTYU_INT_LB 8
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_TTYU_EXT_LB 9
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_SEEPROM_CKSUM 10
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_DUMMY_TEST 11
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_FRU_CKSUM 12
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_FLASH_CKSUM 13
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_TOD_TEST 14
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_MODEM_TEST 15
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_MAX_TEST 15
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * This bit should be set in the RSC_STATUS message to indicate to the
03831d35f7499c87d51205817c93e9a8d42c4baestevel * host that there is an interesting bootmode.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_VALID_BOOTMODE 0x40
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Bit definitions for the OBP_INIT and RSC_OK messages.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_MENUS 0x80
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_MAX 0x40
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_MED 0x20
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_MIN 0x10
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_MBO 0x01
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_DIAGSW 0x01
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* Bit definitions for OBP_BOOTINIT message. */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_FLASH_PDAT 0x04
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_FLASH_MAIN 0x02
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_FLASH_BOOT 0x01
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * For bit definitions for the RSC_STATUS message, see the post word bit
03831d35f7499c87d51205817c93e9a8d42c4baestevel * definitions in "postword.h".
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* Bit definitions for RSC_BOOTFAIL message. */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_REJECTED 0x40
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_RANGE_ERR 0x20
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_VERIFY_ERR 0x10
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_ERASE_ERR 0x08
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_INT_WP_ERR 0x04
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_WP_ERR 0x02
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_VPP_ERR 0x01
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* For lower 8 bits, see the lower 8 bits of the post word in "postword.h". */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define KANTH_SRECORD_ACK
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/*
03831d35f7499c87d51205817c93e9a8d42c4baestevel * When downloading S-records, a RSC:bootack is sent with the following
03831d35f7499c87d51205817c93e9a8d42c4baestevel * value in dat1 to indicate whether the S-record checksum was OK or not.
03831d35f7499c87d51205817c93e9a8d42c4baestevel */
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_BOOTINIT_ACK 0x00
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_SRECORD_ACK 0x01
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_SRECORD_NAK 0x02
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* Definitions for OBP_BOOTMODE message: */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_BOOTMODE_CLEAR 1
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* Definitions for RSC_BOOTMODE message: */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_BAT1_BOOTMODE_DATAMSB 0x10
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_BOOTMODE_OFFSET_MASK 0x07
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_BOOTMODE_DATA_MASK 0x7F
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* Definitions for RSC_BOOTMODEACK message: */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_BOOTMODE_NORMAL 0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_BOOTMODE_FORTH 1
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_BOOTMODE_RESET_NVRAM 2
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_BOOTMODE_DIAG 3
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT1_BOOTMODE_SKIP_DIAG 4
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_BOOTOPT_CONSOLE_RSC 1
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* Definitions for RSC_MACADDRACK message: */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_MACADDRACK_OK 0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_MACADDRACK_DONE 1
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_MACADDRACK_BADOFFSET 2
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_MACADDRACK_NOTREADY 3
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_MACADDRACK_NVERR 4
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* Definitions for RSC_SOFTGPIOACK message */
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_HOST_TYPE_OK 0
03831d35f7499c87d51205817c93e9a8d42c4baestevel#define BP_DAT2_HOST_TYPE_NVERR 1
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#ifdef __cplusplus
03831d35f7499c87d51205817c93e9a8d42c4baestevel}
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif
03831d35f7499c87d51205817c93e9a8d42c4baestevel
03831d35f7499c87d51205817c93e9a8d42c4baestevel#endif /* _RMC_COMM_DP_BOOT_H */