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