PERFORCE change 34740 for review
Marcel Moolenaar
marcel at FreeBSD.org
Sat Jul 19 21:58:09 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=34740
Change 34740 by marcel at marcel_nfs on 2003/07/19 21:57:17
IFC @34738
Affected files ...
.. //depot/projects/uart/cam/scsi/scsi_da.c#2 integrate
.. //depot/projects/uart/compat/linprocfs/linprocfs.c#2 integrate
.. //depot/projects/uart/compat/linux/linux_misc.c#2 integrate
.. //depot/projects/uart/conf/files#9 integrate
.. //depot/projects/uart/dev/acpica/acpi.c#4 integrate
.. //depot/projects/uart/dev/acpica/acpi_ec.c#4 integrate
.. //depot/projects/uart/dev/acpica/acpi_isab.c#3 integrate
.. //depot/projects/uart/dev/acpica/acpivar.h#3 integrate
.. //depot/projects/uart/dev/ed/if_ed_pccard.c#2 integrate
.. //depot/projects/uart/dev/em/if_em.h#3 integrate
.. //depot/projects/uart/dev/ep/if_ep.c#2 integrate
.. //depot/projects/uart/dev/ep/if_ep_eisa.c#2 integrate
.. //depot/projects/uart/dev/ep/if_ep_isa.c#2 integrate
.. //depot/projects/uart/dev/ep/if_ep_mca.c#2 integrate
.. //depot/projects/uart/dev/ep/if_ep_pccard.c#2 integrate
.. //depot/projects/uart/dev/ep/if_epreg.h#2 integrate
.. //depot/projects/uart/dev/ep/if_epvar.h#2 integrate
.. //depot/projects/uart/dev/firewire/firewire.c#4 integrate
.. //depot/projects/uart/dev/firewire/fwdma.c#4 integrate
.. //depot/projects/uart/dev/firewire/fwohci.c#4 integrate
.. //depot/projects/uart/dev/firewire/fwohci_pci.c#4 integrate
.. //depot/projects/uart/dev/firewire/if_fwe.c#2 integrate
.. //depot/projects/uart/dev/firewire/sbp.c#4 integrate
.. //depot/projects/uart/dev/hatm/if_hatm.c#4 integrate
.. //depot/projects/uart/dev/pccard/pccarddevs#4 integrate
.. //depot/projects/uart/dev/pccard/pccarddevs.h#4 integrate
.. //depot/projects/uart/dev/wi/if_wi_pccard.c#5 integrate
.. //depot/projects/uart/dev/wi/if_wi_pci.c#2 integrate
.. //depot/projects/uart/i386/i386/busdma_machdep.c#3 integrate
.. //depot/projects/uart/i386/isa/vesa.c#2 integrate
.. //depot/projects/uart/kern/init_sysent.c#2 integrate
.. //depot/projects/uart/kern/kern_proc.c#3 integrate
.. //depot/projects/uart/kern/kern_sig.c#4 integrate
.. //depot/projects/uart/kern/kern_thread.c#6 integrate
.. //depot/projects/uart/kern/kern_umtx.c#3 integrate
.. //depot/projects/uart/kern/syscalls.c#2 integrate
.. //depot/projects/uart/kern/syscalls.master#2 integrate
.. //depot/projects/uart/kern/uipc_mbuf.c#2 integrate
.. //depot/projects/uart/kern/uipc_socket.c#3 integrate
.. //depot/projects/uart/net/if.c#2 integrate
.. //depot/projects/uart/net/if_atm.h#3 integrate
.. //depot/projects/uart/net/route.h#2 integrate
.. //depot/projects/uart/netatm/atm_subr.c#2 integrate
.. //depot/projects/uart/netatm/uni/unisig_msg.c#2 integrate
.. //depot/projects/uart/netinet/ip_output.c#2 integrate
.. //depot/projects/uart/netinet/raw_ip.c#2 integrate
.. //depot/projects/uart/netinet/tcp_syncache.c#2 integrate
.. //depot/projects/uart/pci/if_dc.c#6 integrate
.. //depot/projects/uart/pci/if_dcreg.h#5 integrate
.. //depot/projects/uart/pci/if_rl.c#6 integrate
.. //depot/projects/uart/sparc64/include/cache.h#2 integrate
.. //depot/projects/uart/sys/kse.h#2 integrate
.. //depot/projects/uart/sys/proc.h#3 integrate
.. //depot/projects/uart/sys/socketvar.h#2 integrate
.. //depot/projects/uart/sys/syscall.h#2 integrate
.. //depot/projects/uart/sys/syscall.mk#2 integrate
.. //depot/projects/uart/sys/sysproto.h#2 integrate
.. //depot/projects/uart/vm/swap_pager.c#2 integrate
.. //depot/projects/uart/vm/swap_pager.h#2 integrate
.. //depot/projects/uart/vm/uma_core.c#2 integrate
.. //depot/projects/uart/vm/vm_map.c#5 integrate
.. //depot/projects/uart/vm/vm_swap.c#2 delete
Differences ...
==== //depot/projects/uart/cam/scsi/scsi_da.c#2 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.144 2003/06/10 18:14:04 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.146 2003/07/18 16:26:36 thomas Exp $");
#ifdef _KERNEL
#include "opt_hw_wdog.h"
@@ -276,6 +276,14 @@
},
{
/*
+ * Intelligent Stick USB disk-on-key
+ * PR: kern/53005
+ */
+ {T_DIRECT, SIP_MEDIA_REMOVABLE, "USB Card", "IntelligentStick*", "*"},
+ /*quirks*/ DA_Q_NO_6_BYTE|DA_Q_NO_SYNC_CACHE
+ },
+ {
+ /*
* Sony DSC cameras (DSC-S30, DSC-S50, DSC-S70)
*/
{T_DIRECT, SIP_MEDIA_REMOVABLE, "Sony", "Sony DSC", "*"},
==== //depot/projects/uart/compat/linprocfs/linprocfs.c#2 (text+ko) ====
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.66 2003/06/10 21:23:04 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.67 2003/07/18 10:26:08 phk Exp $");
#include <sys/param.h>
#include <sys/queue.h>
@@ -121,6 +121,7 @@
unsigned long long swapused; /* used swap space in bytes */
unsigned long long swapfree; /* free swap space in bytes */
vm_object_t object;
+ int i, j;
memtotal = physmem * PAGE_SIZE;
/*
@@ -135,14 +136,10 @@
*/
memused = cnt.v_wire_count * PAGE_SIZE;
memfree = memtotal - memused;
- if (swapblist == NULL) {
- swaptotal = 0;
- swapfree = 0;
- } else {
- swaptotal = (u_quad_t)swapblist->bl_blocks * 1024; /* XXX why 1024? */
- swapfree = (u_quad_t)swapblist->bl_root->u.bmu_avail * PAGE_SIZE;
- }
- swapused = swaptotal - swapfree;
+ swap_pager_status(&i, &j);
+ swaptotal = i * PAGE_SIZE;
+ swapused = j * PAGE_SIZE;
+ swapfree = swaptotal - swapused;
memshared = 0;
TAILQ_FOREACH(object, &vm_object_list, object_list)
if (object->shadow_count > 1)
==== //depot/projects/uart/compat/linux/linux_misc.c#2 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.144 2003/06/10 21:27:39 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.145 2003/07/18 10:26:09 phk Exp $");
#include "opt_mac.h"
@@ -108,7 +108,7 @@
{
struct l_sysinfo sysinfo;
vm_object_t object;
- int i;
+ int i, j;
struct timespec ts;
/* Uptime is copied out of print_uptime() in kern_shutdown.c */
@@ -144,13 +144,9 @@
sysinfo.sharedram *= PAGE_SIZE;
sysinfo.bufferram = 0;
- if (swapblist == NULL) {
- sysinfo.totalswap= 0;
- sysinfo.freeswap = 0;
- } else {
- sysinfo.totalswap = swapblist->bl_blocks * 1024;
- sysinfo.freeswap = swapblist->bl_root->u.bmu_avail * PAGE_SIZE;
- }
+ swap_pager_status(&i, &j);
+ sysinfo.totalswap= i * PAGE_SIZE;
+ sysinfo.freeswap = (i - j) * PAGE_SIZE;
sysinfo.procs = 20; /* Hack */
==== //depot/projects/uart/conf/files#9 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.807 2003/07/15 22:42:36 jmg Exp $
+# $FreeBSD: src/sys/conf/files,v 1.808 2003/07/18 10:02:43 phk Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -1619,7 +1619,6 @@
vm/vm_zeroidle.c standard
vm/vm_pageout.c standard
vm/vm_pager.c standard
-vm/vm_swap.c standard
vm/vm_unix.c standard
vm/uma_core.c standard
vm/uma_dbg.c standard
==== //depot/projects/uart/dev/acpica/acpi.c#4 (text+ko) ====
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.91 2003/07/13 22:57:16 njl Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.93 2003/07/20 00:52:57 njl Exp $
*/
#include "opt_acpi.h"
@@ -383,6 +383,12 @@
goto out;
}
+ /*
+ * Call the ECDT probe function to provide EC functionality before
+ * the namespace has been evaluated.
+ */
+ acpi_ec_ecdt_probe(dev);
+
if (ACPI_FAILURE(status = AcpiInitializeObjects(flags))) {
device_printf(dev, "could not initialize ACPI objects: %s\n", AcpiFormatException(status));
goto out;
@@ -923,7 +929,7 @@
ACPI_ASSERTLOCK;
if (howto & RB_POWEROFF) {
- printf("Power system off using ACPI...\n");
+ printf("Powering system off using ACPI\n");
if (ACPI_FAILURE(status = AcpiEnterSleepStatePrep(acpi_off_state))) {
printf("AcpiEnterSleepStatePrep failed - %s\n",
AcpiFormatException(status));
@@ -936,7 +942,7 @@
printf("ACPI power-off failed - timeout\n");
}
} else {
- printf("Terminate ACPI\n");
+ printf("Shutting down ACPI\n");
AcpiTerminate();
}
}
==== //depot/projects/uart/dev/acpica/acpi_ec.c#4 (text+ko) ====
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.33 2003/07/15 19:24:36 njl Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.34 2003/07/20 00:48:38 njl Exp $
*/
/******************************************************************************
*
@@ -221,6 +221,26 @@
#define EC_SET_CSR(sc, v) \
bus_space_write_1((sc)->ec_csr_tag, (sc)->ec_csr_handle, 0, (v))
+/* Embedded Controller Boot Resources Table (ECDT) */
+typedef struct {
+ ACPI_TABLE_HEADER header;
+ ACPI_GENERIC_ADDRESS control;
+ ACPI_GENERIC_ADDRESS data;
+ UINT32 uid;
+ UINT8 gpe_bit;
+ char ec_id[0];
+} ACPI_TABLE_ECDT;
+
+/* Indicate that this device has already been probed via ECDT. */
+#define DEV_ECDT_FLAG 0x80000000
+
+/* Indicate that this device should use the global lock. */
+#define DEV_GLK_FLAG 0x40000000
+
+/* Get/set GPE bit value in the magic ivar. */
+#define DEV_GET_GPEBIT(x) ((x) & 0xff)
+#define DEV_SET_GPEBIT(x, y) ((x) = ((x) & ~0xff) | ((y) & 0xff))
+
/*
* Driver softc.
*/
@@ -307,13 +327,11 @@
UINT8 *Data);
static ACPI_STATUS EcWrite(struct acpi_ec_softc *sc, UINT8 Address,
UINT8 *Data);
-static void acpi_ec_identify(driver_t driver, device_t bus);
static int acpi_ec_probe(device_t dev);
static int acpi_ec_attach(device_t dev);
static device_method_t acpi_ec_methods[] = {
/* Device interface */
- DEVMETHOD(device_identify, acpi_ec_identify),
DEVMETHOD(device_probe, acpi_ec_probe),
DEVMETHOD(device_attach, acpi_ec_attach),
@@ -330,37 +348,155 @@
DRIVER_MODULE(acpi_ec, acpi, acpi_ec_driver, acpi_ec_devclass, 0, 0);
/*
- * Look for an ECDT table and if we find one, set up a default EC
- * space handler to catch possible attempts to access EC space before
+ * Look for an ECDT and if we find one, set up default GPE and
+ * space handlers to catch attempts to access EC space before
* we have a real driver instance in place.
- * We're not really an identify routine, but because we get called
- * before most other things, this works out OK.
+ * TODO: if people report invalid ECDTs, add a tunable to disable them.
*/
-static void
-acpi_ec_identify(driver_t driver, device_t bus)
+void
+acpi_ec_ecdt_probe(device_t parent)
{
+ ACPI_TABLE_ECDT *ecdt;
+ ACPI_STATUS status;
+ device_t child;
+ ACPI_HANDLE h;
+ int magic;
+
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
- /* XXX implement - need an ACPI 2.0 system to test this */
+ /* Find and validate the ECDT. */
+ status = AcpiGetFirmwareTable("ECDT", 1, ACPI_LOGICAL_ADDRESSING,
+ (ACPI_TABLE_HEADER **)&ecdt);
+ if (ACPI_FAILURE(status) ||
+ ecdt->control.RegisterBitWidth != 8 ||
+ ecdt->data.RegisterBitWidth != 8) {
+ return;
+ }
+
+ /* Create the child device with the given unit number. */
+ child = BUS_ADD_CHILD(parent, 0, "acpi_ec", ecdt->uid);
+ if (child == NULL) {
+ printf("acpi_ec_ecdt_probe: can't add child\n");
+ return;
+ }
+
+ /* Find and save the ACPI handle for this device. */
+ status = AcpiGetHandle(NULL, ecdt->ec_id, &h);
+ if (ACPI_FAILURE(status)) {
+ device_delete_child(parent, child);
+ printf("acpi_ec_ecdt_probe: can't get handle\n");
+ return;
+ }
+ acpi_set_handle(child, h);
+
+ /* Set the data and CSR register addresses. */
+ bus_set_resource(child, SYS_RES_IOPORT, 0, ecdt->data.Address,
+ /*count*/1);
+ bus_set_resource(child, SYS_RES_IOPORT, 1, ecdt->control.Address,
+ /*count*/1);
+
+ /*
+ * Store values for the probe/attach routines to use. Store the
+ * ECDT GPE bit and set the global lock flag (just to be safe).
+ * We'll determine whether we really want to use the global lock
+ * in a later call to attach.
+ */
+ magic = DEV_ECDT_FLAG | DEV_GLK_FLAG;
+ DEV_SET_GPEBIT(magic, ecdt->gpe_bit);
+ acpi_set_magic(child, magic);
+
+ /* Finish the attach process. */
+ if (device_probe_and_attach(child) != 0)
+ device_delete_child(parent, child);
}
-/*
- * We could setup resources in the probe routine in order to have them printed
- * when the device is attached.
- */
static int
acpi_ec_probe(device_t dev)
{
- int ret = ENXIO;
+ ACPI_HANDLE h;
+ ACPI_STATUS status;
+ device_t peer;
+ char desc[64];
+ int magic, uid, glk, gpebit, ret = ENXIO;
+
+ /* Check that this is an EC device and it's not disabled. */
+ if (acpi_get_type(dev) != ACPI_TYPE_DEVICE || acpi_disabled("ec") ||
+ !acpi_MatchHid(dev, "PNP0C09")) {
+ return (ENXIO);
+ }
+
+ /*
+ * If probed via ECDT, set description and continue. Otherwise,
+ * we can access the namespace and make sure this is not a
+ * duplicate probe.
+ */
+ magic = acpi_get_magic(dev);
+ if ((magic & DEV_ECDT_FLAG) != 0) {
+ snprintf(desc, sizeof(desc), "embedded controller: ECDT, GPE %#x, GLK",
+ DEV_GET_GPEBIT(magic));
+ device_set_desc_copy(dev, desc);
+ ret = 0;
+ } else {
+ h = acpi_get_handle(dev);
+
+ /*
+ * Read the unit ID to check for duplicate attach and the
+ * global lock value to see if we should acquire it when
+ * accessing the EC.
+ */
+ status = acpi_EvaluateInteger(h, "_UID", &uid);
+ if (ACPI_FAILURE(status))
+ uid = 0;
+ status = acpi_EvaluateInteger(h, "_GLK", &glk);
+ if (ACPI_FAILURE(status))
+ glk = 0;
+
+ /*
+ * Evaluate the _GPE method to find the GPE bit used by the EC to
+ * signal status (SCI). Note that we don't handle the case where
+ * it can return a package instead of an int.
+ */
+ status = acpi_EvaluateInteger(h, "_GPE", &gpebit);
+ if (ACPI_FAILURE(status)) {
+ device_printf(dev, "can't evaluate _GPE - %s\n",
+ AcpiFormatException(status));
+ return (ENXIO);
+ }
- if (acpi_get_type(dev) == ACPI_TYPE_DEVICE && !acpi_disabled("ec") &&
- acpi_MatchHid(dev, "PNP0C09")) {
+ /* Store the values we got from the namespace for attach. */
+ magic = glk != 0 ? DEV_GLK_FLAG : 0;
+ DEV_SET_GPEBIT(magic, gpebit);
+ acpi_set_magic(dev, magic);
/*
- * Set device description
+ * Check for a duplicate probe. This can happen when a probe
+ * via ECDT succeeded already. If there is a duplicate, override
+ * its value for GLK in the peer's softc since the ECDT case
+ * always enables the global lock to be safe. Otherwise, just
+ * continue on to attach.
*/
- device_set_desc(dev, "embedded controller");
- ret = 0;
+ peer = devclass_get_device(acpi_ec_devclass, uid);
+ if (peer == NULL || !device_is_alive(peer)) {
+ snprintf(desc, sizeof(desc), "embedded controller: GPE %#x%s",
+ gpebit, glk != 0 ? ", GLK" : "");
+ device_set_desc_copy(dev, desc);
+ ret = 0;
+ } else {
+ struct acpi_ec_softc *sc;
+
+ /*
+ * Set the peer's sc->ec_glk with locks held so we won't
+ * override it between another thread's lock/unlock calls.
+ */
+ sc = device_get_softc(peer);
+ if (sc->ec_glk != glk) {
+ ACPI_VPRINT(peer, acpi_device_get_parent_softc(peer),
+ "Changing GLK from %d to %d\n", sc->ec_glk, glk);
+ mtx_lock(&sc->ec_mtx);
+ sc->ec_glk = glk != 0 ? 1 : 0;
+ mtx_unlock(&sc->ec_mtx);
+ }
+ }
}
return (ret);
@@ -371,7 +507,7 @@
{
struct acpi_ec_softc *sc;
ACPI_STATUS Status;
- int errval = 0;
+ int magic, errval = 0;
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
@@ -382,6 +518,11 @@
sc->ec_polldelay = EC_POLL_DELAY;
mtx_init(&sc->ec_mtx, "ACPI embedded controller", NULL, MTX_DEF);
+ /* Retrieve previously probed values via device ivars. */
+ magic = acpi_get_magic(dev);
+ sc->ec_glk = (magic & DEV_GLK_FLAG) != 0 ? 1 : 0;
+ sc->ec_gpebit = DEV_GET_GPEBIT(magic);
+
/* Attach bus resources for data and command/status ports. */
sc->ec_data_rid = 0;
sc->ec_data_res = bus_alloc_resource(sc->ec_dev, SYS_RES_IOPORT,
@@ -405,24 +546,7 @@
sc->ec_csr_tag = rman_get_bustag(sc->ec_csr_res);
sc->ec_csr_handle = rman_get_bushandle(sc->ec_csr_res);
- /* Check if global lock should be used. If not, leave flag as 0. */
- acpi_EvaluateInteger(sc->ec_handle, "_GLK", &sc->ec_glk);
-
/*
- * Evaluate the _GPE method to find the GPE bit used by the EC to signal
- * status (SCI). Note that we don't handle the case where it can
- * return a package instead of an int.
- */
- ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "querying GPE\n"));
- Status = acpi_EvaluateInteger(sc->ec_handle, "_GPE", &sc->ec_gpebit);
- if (ACPI_FAILURE(Status)) {
- device_printf(dev, "can't evaluate _GPE - %s\n",
- AcpiFormatException(Status));
- errval = ENXIO;
- goto out;
- }
-
- /*
* Install a handler for this EC's GPE bit. We want edge-triggered
* behavior.
*/
@@ -452,10 +576,6 @@
goto out;
}
- ACPI_VPRINT(sc->ec_dev, acpi_device_get_parent_softc(sc->ec_dev),
- "GPE bit is %#x, %susing global lock\n", sc->ec_gpebit,
- sc->ec_glk == 0 ? "not " : "");
-
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "acpi_ec_attach complete\n"));
return (0);
==== //depot/projects/uart/dev/acpica/acpi_isab.c#3 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/acpi_isab.c,v 1.2 2003/07/09 18:28:53 jhb Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpi_isab.c,v 1.3 2003/07/17 19:13:41 jhb Exp $
*/
/*
@@ -94,7 +94,7 @@
if ((acpi_get_type(dev) == ACPI_TYPE_DEVICE) &&
!acpi_disabled("isa") &&
- devclass_get_device(isab_devclass, 0) == NULL &&
+ devclass_get_device(isab_devclass, 0) == dev &&
(acpi_MatchHid(dev, "PNP0A05") || acpi_MatchHid(dev, "PNP0A06"))) {
device_set_desc(dev, "ACPI Generic ISA bridge");
return(0);
==== //depot/projects/uart/dev/acpica/acpivar.h#3 (text+ko) ====
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/acpivar.h,v 1.42 2003/07/15 19:19:54 njl Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpivar.h,v 1.43 2003/07/20 00:48:38 njl Exp $
*/
#include "bus_if.h"
@@ -133,37 +133,6 @@
#define ACPI_INTR_APIC 1
#define ACPI_INTR_SAPIC 2
-/* XXX this is no longer referenced anywhere, remove? */
-#if 0
-/*
- * This is a cheap and nasty way to get around the horrid counted list
- * argument format that AcpiEvalateObject uses.
- */
-#define ACPI_OBJECTLIST_MAX 16
-struct acpi_object_list {
- UINT32 count;
- ACPI_OBJECT *pointer[ACPI_OBJECTLIST_MAX];
- ACPI_OBJECT object[ACPI_OBJECTLIST_MAX];
-};
-
-static __inline struct acpi_object_list *
-acpi_AllocObjectList(int nobj)
-{
- struct acpi_object_list *l;
- int i;
-
- if (nobj > ACPI_OBJECTLIST_MAX)
- return(NULL);
- if ((l = AcpiOsAllocate(sizeof(*l))) == NULL)
- return(NULL);
- bzero(l, sizeof(*l));
- for (i = 0; i < ACPI_OBJECTLIST_MAX; i++)
- l->pointer[i] = &l->object[i];
- l->count = nobj;
- return(l);
-}
-#endif /* unused */
-
/*
* Note that the low ivar values are reserved to provide
* interface compatibility with ISA drivers which can also
@@ -376,6 +345,11 @@
extern int acpi_cmbat_get_battinfo(int, struct acpi_battinfo *);
/*
+ * Embedded controller.
+ */
+extern void acpi_ec_ecdt_probe(device_t);
+
+/*
* AC adapter interface.
*/
==== //depot/projects/uart/dev/ed/if_ed_pccard.c#2 (text+ko) ====
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/ed/if_ed_pccard.c,v 1.48 2003/04/15 06:37:23 mdodd Exp $
+ * $FreeBSD: src/sys/dev/ed/if_ed_pccard.c,v 1.49 2003/07/19 05:36:09 imp Exp $
*/
#include "opt_ed.h"
@@ -127,6 +127,7 @@
{ PCMCIA_CARD(BILLIONTON, LNT10TN, 0), 0},
{ PCMCIA_CARD(BILLIONTON, CFLT10N, 0), 0},
{ PCMCIA_CARD(BUFFALO, LPC3_CLT, 0), 0},
+ { PCMCIA_CARD(BUFFALO, LPC3_CLX, 0), NE2000DVF_AX88190},
{ PCMCIA_CARD(BUFFALO, LPC_CF_CLT, 0), 0},
{ PCMCIA_CARD(CNET, NE2000, 0), 0},
{ PCMCIA_CARD(COMPEX, LINKPORT_ENET_B, 0), 0},
==== //depot/projects/uart/dev/em/if_em.h#3 (text+ko) ====
@@ -31,7 +31,7 @@
***************************************************************************/
-/*$FreeBSD: src/sys/dev/em/if_em.h,v 1.17 2003/07/04 10:15:16 mux Exp $*/
+/*$FreeBSD: src/sys/dev/em/if_em.h,v 1.18 2003/07/17 19:02:34 jdp Exp $*/
#ifndef _EM_H_DEFINED_
#define _EM_H_DEFINED_
@@ -117,7 +117,7 @@
#define EM_TIDV 64
/*
- * TxAbsIntDelay (Not valid for 82542 and 82543)
+ * TxAbsIntDelay (Not valid for 82542/82543/82544)
* Valid Range: 0-65535 (0=off)
* Default Value: 64
* This value, in units of 1.024 microseconds, limits the delay in which a
@@ -151,7 +151,7 @@
#define EM_RDTR 0
/*
- * RxAbsIntDelay (Not valid for 82542 and 82543)
+ * RxAbsIntDelay (Not valid for 82542/82543/82544)
* Valid Range: 0-65535 (0=off)
* Default Value: 64
* This value, in units of 1.024 microseconds, limits the delay in which a
==== //depot/projects/uart/dev/ep/if_ep.c#2 (text+ko) ====
@@ -26,8 +26,6 @@
* 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.
- *
- * if_ep.c,v 1.19 1995/01/24 20:53:45 davidg Exp
*/
/*
@@ -38,8 +36,6 @@
*/
/*
- * $FreeBSD: src/sys/dev/ep/if_ep.c,v 1.117 2003/06/26 17:02:52 mux Exp $
- *
* Promiscuous mode added and interrupt logic slightly changed
* to reduce the number of adapter failures. Transceiver select
* logic changed to use value from EEPROM. Autoconfiguration
@@ -61,71 +57,67 @@
* <mdodd at FreeBSD.org>
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/dev/ep/if_ep.c,v 1.118 2003/07/17 19:37:56 markm Exp $");
+
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/mbuf.h>
#include <sys/socket.h>
#include <sys/sockio.h>
-
#include <sys/bus.h>
#include <machine/bus.h>
#include <machine/resource.h>
-#include <sys/rman.h>
+#include <sys/rman.h>
#include <net/if.h>
#include <net/if_arp.h>
-#include <net/if_media.h>
+#include <net/if_media.h>
#include <net/ethernet.h>
#include <net/bpf.h>
-
#include <dev/ep/if_epreg.h>
#include <dev/ep/if_epvar.h>
/* Exported variables */
devclass_t ep_devclass;
-#if 0
-static char * ep_conn_type[] = {"UTP", "AUI", "???", "BNC"};
-static int if_media2ep_media[] = { 0, 0, 0, UTP, BNC, AUI };
-#endif
-
-static int ep_media2if_media[] =
- { IFM_10_T, IFM_10_5, IFM_NONE, IFM_10_2, IFM_NONE };
+static int ep_media2if_media[] =
+{IFM_10_T, IFM_10_5, IFM_NONE, IFM_10_2, IFM_NONE};
/* if functions */
-static void ep_if_init (void *);
-static int ep_if_ioctl (struct ifnet *, u_long, caddr_t);
-static void ep_if_start (struct ifnet *);
-static void ep_if_watchdog (struct ifnet *);
+static void ep_if_init(void *);
+static int ep_if_ioctl(struct ifnet *, u_long, caddr_t);
+static void ep_if_start(struct ifnet *);
+static void ep_if_watchdog(struct ifnet *);
/* if_media functions */
-static int ep_ifmedia_upd (struct ifnet *);
-static void ep_ifmedia_sts (struct ifnet *, struct ifmediareq *);
+static int ep_ifmedia_upd(struct ifnet *);
+static void ep_ifmedia_sts(struct ifnet *, struct ifmediareq *);
-static void epstop (struct ep_softc *);
-static void epread (struct ep_softc *);
-static int eeprom_rdy (struct ep_softc *);
+static void epstop(struct ep_softc *);
+static void epread(struct ep_softc *);
+static int eeprom_rdy(struct ep_softc *);
#define EP_FTST(sc, f) (sc->stat & (f))
#define EP_FSET(sc, f) (sc->stat |= (f))
#define EP_FRST(sc, f) (sc->stat &= ~(f))
static int
-eeprom_rdy(sc)
- struct ep_softc *sc;
+eeprom_rdy(struct ep_softc *sc)
{
- int i;
+ int i;
+
+ for (i = 0; is_eeprom_busy(BASE) && i < MAX_EEPROMBUSY; i++)
+ DELAY(100);
+
+ if (i >= MAX_EEPROMBUSY) {
+ printf("ep%d: eeprom failed to come ready.\n", sc->unit);
+ return (ENXIO);
+ }
- for (i = 0; is_eeprom_busy(BASE) && i < MAX_EEPROMBUSY; i++) {
- DELAY(100);
- }
- if (i >= MAX_EEPROMBUSY) {
- printf("ep%d: eeprom failed to come ready.\n", sc->unit);
- return (ENXIO);
- }
- return (0);
+ return (0);
}
/*
@@ -133,42 +125,40 @@
* before
*/
int
-get_e(sc, offset, result)
- struct ep_softc *sc;
- u_int16_t offset;
- u_int16_t *result;
+get_e(struct ep_softc *sc, u_int16_t offset, u_int16_t *result)
{
if (eeprom_rdy(sc))
return (ENXIO);
+
outw(BASE + EP_W0_EEPROM_COMMAND,
- (EEPROM_CMD_RD << sc->epb.cmd_off) | offset);
+ (EEPROM_CMD_RD << sc->epb.cmd_off) | offset);
+
if (eeprom_rdy(sc))
return (ENXIO);
+
(*result) = inw(BASE + EP_W0_EEPROM_DATA);
return (0);
}
int
-ep_get_macaddr(sc, addr)
- struct ep_softc * sc;
- u_char * addr;
+ep_get_macaddr(struct ep_softc *sc, u_char *addr)
{
- int i;
- u_int16_t result;
- int error;
- u_int16_t * macaddr;
+ int i;
+ u_int16_t result;
+ int error;
+ u_int16_t *macaddr;
- macaddr = (u_int16_t *)addr;
+ macaddr = (u_int16_t *) addr;
GO_WINDOW(0);
- for(i = EEPROM_NODE_ADDR_0; i <= EEPROM_NODE_ADDR_2; i++) {
+ for (i = EEPROM_NODE_ADDR_0; i <= EEPROM_NODE_ADDR_2; i++) {
error = get_e(sc, i, &result);
if (error)
return (error);
macaddr[i] = htons(result);
- }
+ }
return (0);
}
@@ -176,42 +166,40 @@
int
ep_alloc(device_t dev)
{
- struct ep_softc * sc = device_get_softc(dev);
- int rid;
- int error = 0;
- u_int16_t result;
+ struct ep_softc *sc = device_get_softc(dev);
+ int rid;
+ int error = 0;
+ u_int16_t result;
- rid = 0;
- sc->iobase = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid,
- 0, ~0, 1, RF_ACTIVE);
- if (!sc->iobase) {
- device_printf(dev, "No I/O space?!\n");
+ rid = 0;
+ sc->iobase = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid,
+ 0, ~0, 1, RF_ACTIVE);
+ if (!sc->iobase) {
+ device_printf(dev, "No I/O space?!\n");
error = ENXIO;
- goto bad;
- }
-
- rid = 0;
- sc->irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
- 0, ~0, 1, RF_ACTIVE);
- if (!sc->irq) {
- device_printf(dev, "No irq?!\n");
+ goto bad;
+ }
+ rid = 0;
+ sc->irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
+ 0, ~0, 1, RF_ACTIVE);
+ if (!sc->irq) {
+ device_printf(dev, "No irq?!\n");
error = ENXIO;
- goto bad;
- }
+ goto bad;
+ }
+ sc->dev = dev;
+ sc->unit = device_get_unit(dev);
+ sc->stat = 0; /* 16 bit access */
- sc->dev = dev;
- sc->unit = device_get_unit(dev);
- sc->stat = 0; /* 16 bit access */
+ sc->ep_io_addr = rman_get_start(sc->iobase);
- sc->ep_io_addr = rman_get_start(sc->iobase);
+ sc->ep_btag = rman_get_bustag(sc->iobase);
+ sc->ep_bhandle = rman_get_bushandle(sc->iobase);
- sc->ep_btag = rman_get_bustag(sc->iobase);
- sc->ep_bhandle = rman_get_bushandle(sc->iobase);
-
sc->ep_connectors = 0;
sc->ep_connector = 0;
- GO_WINDOW(0);
+ GO_WINDOW(0);
sc->epb.cmd_off = 0;
error = get_e(sc, EEPROM_PROD_ID, &result);
@@ -229,24 +217,22 @@
}
void
-ep_get_media(sc)
- struct ep_softc * sc;
+ep_get_media(struct ep_softc *sc)
{
- u_int16_t config;
-
- GO_WINDOW(0);
- config = inw(BASE + EP_W0_CONFIG_CTRL);
- if (config & IS_AUI)
- sc->ep_connectors |= AUI;
- if (config & IS_BNC)
- sc->ep_connectors |= BNC;
- if (config & IS_UTP)
- sc->ep_connectors |= UTP;
+ u_int16_t config;
+
+ GO_WINDOW(0);
+ config = inw(BASE + EP_W0_CONFIG_CTRL);
+ if (config & IS_AUI)
+ sc->ep_connectors |= AUI;
+ if (config & IS_BNC)
+ sc->ep_connectors |= BNC;
+ if (config & IS_UTP)
+ sc->ep_connectors |= UTP;
- if (!(sc->ep_connectors & 7)) {
+ if (!(sc->ep_connectors & 7))
if (bootverbose)
- device_printf(sc->dev, "no connectors!\n");
- }
+ device_printf(sc->dev, "no connectors!\n");
/*
* This works for most of the cards so we'll do it here.
@@ -254,14 +240,12 @@
* this later on.
*/
sc->ep_connector = inw(BASE + EP_W0_ADDRESS_CFG) >> ACF_CONNECTOR_BITS;
-
- return;
}
void
ep_free(device_t dev)
{
- struct ep_softc * sc = device_get_softc(dev);
+ struct ep_softc *sc = device_get_softc(dev);
if (sc->ep_intrhand)
bus_teardown_intr(dev, sc->irq, sc->ep_intrhand);
@@ -269,20 +253,17 @@
bus_release_resource(dev, SYS_RES_IOPORT, 0, sc->iobase);
if (sc->irq)
bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq);
+}
- return;
-}
-
int
-ep_attach(sc)
- struct ep_softc * sc;
+ep_attach(struct ep_softc *sc)
{
- struct ifnet * ifp = NULL;
- struct ifmedia * ifm = NULL;
- u_short * p;
- int i;
- int attached;
- int error;
+ struct ifnet *ifp = NULL;
+ struct ifmedia *ifm = NULL;
+ u_short *p;
+ int i;
+ int attached;
+ int error;
sc->gone = 0;
@@ -291,19 +272,17 @@
device_printf(sc->dev, "Unable to retrieve Ethernet address!\n");
return (ENXIO);
}
-
/*
* Setup the station address
*/
p = (u_short *)&sc->arpcom.ac_enaddr;
GO_WINDOW(2);
- for (i = 0; i < 3; i++) {
+ for (i = 0; i < 3; i++)
outw(BASE + EP_W2_ADDR_0 + (i * 2), ntohs(p[i]));
- }
device_printf(sc->dev, "Ethernet address %6D\n",
- sc->arpcom.ac_enaddr, ":");
-
+ sc->arpcom.ac_enaddr, ":");
+
ifp = &sc->arpcom.ac_if;
attached = (ifp->if_softc != 0);
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list