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 34extern "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