d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/*
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * CDDL HEADER START
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro *
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * The contents of this file are subject to the terms of the
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * Common Development and Distribution License, Version 1.0 only
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * (the "License"). You may not use this file except in compliance
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * with the License.
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro *
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * or http://www.opensolaris.org/os/licensing.
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * See the License for the specific language governing permissions
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * and limitations under the License.
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro *
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * When distributing Covered Code, include this CDDL HEADER in each
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * If applicable, add the following below this CDDL HEADER, with the
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * fields enclosed by brackets "[]" replaced with your own identifying
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * information: Portions Copyright [yyyy] [name of copyright owner]
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro *
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * CDDL HEADER END
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/*
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * Use is subject to license terms.
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#ifndef _EPIC_H
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define _EPIC_H
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#pragma ident "%Z%%M% %I% %E% SMI"
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#ifdef __cplusplus
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloroextern "C" {
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#endif
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/*
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * EPIC is slow device. Need to interlace delay between two accesses.
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_DELAY 10000
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/*
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * EPIC Registers from Indirect Address/Data
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_FIRE_INTERRUPT 0x01
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_FIRE_INT_MASK 0x01
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_IND_FW_VERSION 0x05
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_IND_LED_STATE0 0x06
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_ALERT_LED_MASK 0x0C
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_ALERT_LED_OFF 0x00
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_ALERT_LED_ON 0x04
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_POWER_LED_MASK 0x30
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_POWER_LED_OFF 0x00
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_POWER_LED_ON 0x10
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_POWER_LED_SB_BLINK 0x20
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_POWER_LED_FAST_BLINK 0x30
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_HOST_INT_ENABLE_REG 0x1a
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_POWER_BUTTON_INT 0x01
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_HOST_INTR_CLEAR 0x00
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_POWER_BUTTON_INT_MASK 0x01
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_HOST_INT_STATUS_REG 0x1b
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_ATOM_DATA 0x80
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_ATOM_ADDR 0x81
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_ATOM_INTR_CLEAR 0x01
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_ATOM_INTR_READ 0x02
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_ATOM_INTR_ENABLE 0x03
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/*
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * EPIC ioctl commands
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_SET_ALERT_LED 0x11
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_RESET_ALERT_LED 0x12
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_SET_POWER_LED 0x21
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_RESET_POWER_LED 0x22
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_SB_BL_POWER_LED 0x23
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_FAST_BL_POWER_LED 0x24
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_GET_FW 0x30
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/*
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * READ/WRITE macros for the port used by epic (LED) driver
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_READ(HANDLE, REG, LHS, ADDR)\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro drv_usecwait(EPIC_DELAY);\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (void) ddi_put8((HANDLE),\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (uint8_t *)(REG)+\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro EPIC_IND_ADDR, (ADDR));\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro drv_usecwait(EPIC_DELAY);\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (LHS) = ddi_get8((HANDLE),\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (uint8_t *)(REG)+\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro EPIC_IND_DATA);
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_WRITE(HANDLE, REG, ADDR, MASK, DATA)\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro drv_usecwait(EPIC_DELAY);\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (void) ddi_put8((HANDLE),\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (uint8_t *)(REG)+\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro EPIC_IND_ADDR, (ADDR));\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro drv_usecwait(EPIC_DELAY);\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (void) ddi_put8((HANDLE),\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (uint8_t *)(REG)+\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro EPIC_WRITE_MASK, (MASK));\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro drv_usecwait(EPIC_DELAY);\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (void) ddi_put8((HANDLE),\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (uint8_t *)(REG)+\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro EPIC_IND_DATA, (DATA));
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/*
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * READ/WRITE macros for the port used by power button driver
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_RD(HANDLE, REG, LHS)\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro drv_usecwait(EPIC_DELAY);\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (LHS) = ddi_get8((HANDLE),\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (uint8_t *)(REG)+\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro EPIC_ATOM_DATA);
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define EPIC_WR(HANDLE, REG, DATA)\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro drv_usecwait(EPIC_DELAY);\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (void) ddi_put8((HANDLE),\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro (uint8_t *)(REG)+\
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro EPIC_ATOM_ADDR, (DATA));
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#ifdef __cplusplus
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro}
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#endif
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#endif /* _EPIC_H */