Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/acpi ACPI Embedded Controller driver.



details:   https://anonhg.NetBSD.org/src/rev/42c25892b678
branches:  trunk
changeset: 515587:42c25892b678
user:      thorpej <thorpej%NetBSD.org@localhost>
date:      Sat Sep 29 05:34:23 2001 +0000

description:
ACPI Embedded Controller driver.

diffstat:

 sys/dev/acpi/acpi_ec.c    |  792 ++++++++++++++++++++++++++++++++++++++++++++++
 sys/dev/acpi/acpi_ecreg.h |  161 +++++++++
 2 files changed, 953 insertions(+), 0 deletions(-)

diffs (truncated from 961 to 300 lines):

diff -r 453b22bb01c2 -r 42c25892b678 sys/dev/acpi/acpi_ec.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/dev/acpi/acpi_ec.c    Sat Sep 29 05:34:23 2001 +0000
@@ -0,0 +1,792 @@
+/*     $NetBSD: acpi_ec.c,v 1.1 2001/09/29 05:34:23 thorpej Exp $      */
+
+/*
+ * Copyright 2001 Wasabi Systems, Inc.
+ * All rights reserved.
+ *
+ * Written by Jason R. Thorpe for Wasabi Systems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed for the NetBSD Project by
+ *     Wasabi Systems, Inc.
+ * 4. The name of Wasabi Systems, Inc. may not be used to endorse
+ *    or promote products derived from this software without specific prior
+ *    written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*-
+ * Copyright (c) 2000 Michael Smith
+ * Copyright (c) 2000 BSDi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/******************************************************************************
+ *
+ * 1. Copyright Notice
+ *
+ * Some or all of this work - Copyright (c) 1999, Intel Corp.  All rights
+ * reserved.
+ *
+ * 2. License
+ *
+ * 2.1. This is your license from Intel Corp. under its intellectual property
+ * rights.  You may have additional license terms from the party that provided
+ * you this software, covering your right to use that party's intellectual
+ * property rights.
+ *
+ * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
+ * copy of the source code appearing in this file ("Covered Code") an
+ * irrevocable, perpetual, worldwide license under Intel's copyrights in the
+ * base code distributed originally by Intel ("Original Intel Code") to copy,
+ * make derivatives, distribute, use and display any portion of the Covered
+ * Code in any form, with the right to sublicense such rights; and
+ *
+ * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
+ * license (with the right to sublicense), under only those claims of Intel
+ * patents that are infringed by the Original Intel Code, to make, use, sell,
+ * offer to sell, and import the Covered Code and derivative works thereof
+ * solely to the minimum extent necessary to exercise the above copyright
+ * license, and in no event shall the patent license extend to any additions
+ * to or modifications of the Original Intel Code.  No other license or right
+ * is granted directly or by implication, estoppel or otherwise;
+ *
+ * The above copyright and patent license is granted only if the following
+ * conditions are met:
+ *
+ * 3. Conditions 
+ *
+ * 3.1. Redistribution of Source with Rights to Further Distribute Source.  
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification with rights to further distribute source must include
+ * the above Copyright Notice, the above License, this list of Conditions,
+ * and the following Disclaimer and Export Compliance provision.  In addition,
+ * Licensee must cause all Covered Code to which Licensee contributes to
+ * contain a file documenting the changes Licensee made to create that Covered
+ * Code and the date of any change.  Licensee must include in that file the
+ * documentation of any changes made by any predecessor Licensee.  Licensee 
+ * must include a prominent statement that the modification is derived,
+ * directly or indirectly, from Original Intel Code.
+ *
+ * 3.2. Redistribution of Source with no Rights to Further Distribute Source.  
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification without rights to further distribute source must
+ * include the following Disclaimer and Export Compliance provision in the
+ * documentation and/or other materials provided with distribution.  In
+ * addition, Licensee may not authorize further sublicense of source of any
+ * portion of the Covered Code, and must include terms to the effect that the
+ * license from Licensee to its licensee is limited to the intellectual
+ * property embodied in the software Licensee provides to its licensee, and
+ * not to intellectual property embodied in modifications its licensee may
+ * make.
+ *
+ * 3.3. Redistribution of Executable. Redistribution in executable form of any
+ * substantial portion of the Covered Code or modification must reproduce the
+ * above Copyright Notice, and the following Disclaimer and Export Compliance
+ * provision in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3.4. Intel retains all right, title, and interest in and to the Original
+ * Intel Code.
+ *
+ * 3.5. Neither the name Intel nor any other trademark owned or controlled by
+ * Intel shall be used in advertising or otherwise to promote the sale, use or
+ * other dealings in products derived from or relating to the Covered Code
+ * without prior written authorization from Intel.
+ *
+ * 4. Disclaimer and Export Compliance
+ *
+ * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
+ * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
+ * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
+ * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
+ * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
+ * PARTICULAR PURPOSE. 
+ *
+ * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
+ * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
+ * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
+ * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
+ * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
+ * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
+ * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
+ * LIMITED REMEDY.
+ *
+ * 4.3. Licensee shall not export, either directly or indirectly, any of this
+ * software or system incorporating such software without first obtaining any
+ * required license or other approval from the U. S. Department of Commerce or
+ * any other agency or department of the United States Government.  In the
+ * event Licensee exports any such software from the United States or
+ * re-exports any such software from a foreign destination, Licensee shall
+ * ensure that the distribution and export/re-export of the software is in
+ * compliance with all laws, regulations, orders, or other restrictions of the
+ * U.S. Export Administration Regulations. Licensee agrees that neither it nor
+ * any of its subsidiaries will export/re-export any technical data, process,
+ * software, or service, directly or indirectly, to any country for which the
+ * United States government or any agency thereof requires an export license,
+ * other governmental approval, or letter of assurance, without first obtaining
+ * such license, approval or letter.
+ *
+ *****************************************************************************/
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/device.h>
+#include <sys/proc.h>
+#include <sys/kernel.h>
+
+#include <machine/bus.h>
+
+#include <dev/acpi/acpica.h>
+#include <dev/acpi/acpivar.h>
+#include <dev/acpi/acpi_ecreg.h>
+
+#define _COMPONENT     ACPI_EC
+MODULE_NAME("EC")
+
+struct acpi_ec_softc {
+       struct device   sc_dev;         /* base device glue */
+       struct acpi_devnode *sc_node;   /* our ACPI devnode */
+
+       struct acpi_resources sc_res;   /* our bus resources */
+
+       UINT32          sc_gpebit;      /* our GPE interrupt bit */
+
+       bus_space_tag_t sc_data_st;     /* space tag for data register */
+       bus_space_handle_t sc_data_sh;  /* space handle for data register */
+
+       bus_space_tag_t sc_csr_st;      /* space tag for control register */
+       bus_space_handle_t sc_csr_sh;   /* space handle for control register */
+
+       int             sc_flags;       /* see below */
+
+       uint32_t        sc_csrvalue;    /* saved control register */
+};
+
+#define        EC_F_LOCKED     0x01            /* EC is locked */
+#define        EC_F_PENDQUERY  0x02            /* query is pending */
+
+#define        EC_LOCK_TIMEOUT 1000            /* 1ms */
+
+#define        EC_DATA_READ(sc)                                                \
+       bus_space_read_1((sc)->sc_data_st, (sc)->sc_data_sh, 0)
+#define        EC_DATA_WRITE(sc, v)                                            \
+       bus_space_write_1((sc)->sc_data_st, (sc)->sc_data_sh, 0, (v))
+
+#define        EC_CSR_READ(sc)                                                 \
+       bus_space_read_1((sc)->sc_csr_st, (sc)->sc_csr_sh, 0)
+#define        EC_CSR_WRITE(sc, v)                                             \
+       bus_space_write_1((sc)->sc_csr_st, (sc)->sc_csr_sh, 0, (v))
+
+static __inline ACPI_STATUS
+EcLock(struct acpi_ec_softc *sc)
+{
+       ACPI_STATUS status;
+
+       status = AcpiAcquireGlobalLock();
+       if (status == AE_OK)
+               (sc)->sc_flags |= EC_F_LOCKED;
+       return (status);
+}
+
+static __inline void
+EcUnlock(struct acpi_ec_softc *sc)
+{
+
+       (sc)->sc_flags &= ~EC_F_LOCKED;
+       AcpiReleaseGlobalLock();
+}
+
+static __inline int
+EcIsLocked(struct acpi_ec_softc *sc)
+{
+
+       return (((sc)->sc_flags & EC_F_LOCKED) != 0);
+}
+
+typedef struct {
+       EC_COMMAND      Command;
+       UINT8           Address;
+       UINT8           Data;
+} EC_REQUEST;
+
+static void            EcGpeHandler(void *Context);
+static ACPI_STATUS     EcSpaceSetup(ACPI_HANDLE Region, UINT32 Function,
+                           void *Context, void **return_Context);
+static ACPI_STATUS     EcSpaceHandler(UINT32 Function,
+                           ACPI_PHYSICAL_ADDRESS Address, UINT32 width,
+                           UINT32 *Value, void *Context, void *RegionContext);
+
+static ACPI_STATUS     EcWaitEvent(struct acpi_ec_softc *sc, EC_EVENT Event);
+static ACPI_STATUS     EcQuery(struct acpi_ec_softc *sc, UINT8 *Data);
+static ACPI_STATUS     EcTransaction(struct acpi_ec_softc *sc,
+                           EC_REQUEST *EcRequest);
+static ACPI_STATUS     EcRead(struct acpi_ec_softc *sc, UINT8 Address,
+                           UINT8 *Data);
+static ACPI_STATUS     EcWrite(struct acpi_ec_softc *sc, UINT8 Address,
+                           UINT8 *Data);
+
+int    acpiec_match(struct device *, struct cfdata *, void *);
+void   acpiec_attach(struct device *, struct device *, void *);
+
+struct cfattach acpiec_ca = {
+       sizeof(struct acpi_ec_softc), acpiec_match, acpiec_attach,
+};
+
+/*
+ * acpiec_match:
+ *
+ *     Autoconfiguration `match' routine.
+ */
+int
+acpiec_match(struct device *parent, struct cfdata *match, void *aux)
+{
+       struct acpi_attach_args *aa = aux;
+
+       if (aa->aa_node->ad_type != ACPI_TYPE_DEVICE)
+               return (0);
+
+       if (strcmp(aa->aa_node->ad_devinfo.HardwareId, "PNP0C09") == 0)
+               return (1);
+
+       return (0);
+}
+



Home | Main Index | Thread Index | Old Index