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