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