epic.c revision bd9d7d01f0d32a91d43d2004867fc442f5c3ef98
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * CDDL HEADER START
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 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * See the License for the specific language governing permissions
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * and limitations under the License.
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 * CDDL HEADER END
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * Use is subject to license terms.
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#pragma ident "%Z%%M% %I% %E% SMI"
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * Driver to control Alert and Power LEDs for the Seattle platform.
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * Alert LED is also known as Service (required).
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * Power LED is also known as Activity.
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * Some #defs that must be here as they differ for power.c
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/* dev_ops and cb_ops entry point function declarations */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbelorostatic int epic_attach(dev_info_t *, ddi_attach_cmd_t);
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbelorostatic int epic_detach(dev_info_t *, ddi_detach_cmd_t);
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbelorostatic int epic_getinfo(dev_info_t *, ddi_info_cmd_t, void *, void **);
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbelorostatic int epic_ioctl(dev_t, int, intptr_t, int, cred_t *, int *);
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro 0, /* device reference count */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro * Soft state
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro#define getsoftc(inst) ((struct epic_softc *)ddi_get_soft_state(statep, \
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/* module configuration stuff */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbelorostatic void *statep;
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro "epic_client driver v%I%",
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro sizeof (struct epic_softc), 0)) != 0) {
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro return (e);
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro return (e);
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro return (e);
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/*ARGSUSED*/
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloroepic_getinfo(dev_info_t *dip, ddi_info_cmd_t cmd, void *arg, void **result)
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro if (ddi_create_minor_node(dip, name, S_IFCHR, minor,
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro "ddi_create_minor_node() failed for inst %d\n",
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro /* Allocate a soft state structure for this instance */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro if (ddi_soft_state_zalloc(statep, inst) != DDI_SUCCESS) {
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro /* Setup soft state */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro mutex_init(&softc->mutex, NULL, MUTEX_DRIVER, NULL);
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro /* Setup device attributes */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro dev_attr.devacc_attr_endian_flags = DDI_STRUCTURE_LE_ACC;
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro dev_attr.devacc_attr_dataorder = DDI_STRICTORDER_ACC;
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro res = ddi_regs_map_setup(dip, 0, (caddr_t *)&softc->cmd_reg,
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro /* Attach failed */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro /* Free soft state, if allocated. remove minor node if added earlier */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro /* Free the soft state and remove minor node added earlier */
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/*ARGSUSED*/
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloroepic_open(dev_t *devp, int flag, int otyp, cred_t *credp)
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/*ARGSUSED*/
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloroepic_close(dev_t dev, int flag, int otyp, cred_t *credp)
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro/*ARGSUSED*/
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloroepic_ioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp,
d58fda4376e4bf67072ce2e69f6f47036f9dbb68jbeloro return (0);