PERFORCE change 125067 for review
Christopher Davis
loafier at FreeBSD.org
Sat Aug 11 14:33:53 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=125067
Change 125067 by loafier at chrisdsoc on 2007/08/11 21:33:08
bus_alloc_resources(), etc.
Affected files ...
.. //depot/projects/soc2007/loafier_busalloc/src/sys/dev/acpica/acpi_ec.c#2 edit
Differences ...
==== //depot/projects/soc2007/loafier_busalloc/src/sys/dev/acpica/acpi_ec.c#2 (text+ko) ====
@@ -217,16 +217,16 @@
* Register access primitives
*/
#define EC_GET_DATA(sc) \
- bus_space_read_1((sc)->ec_data_tag, (sc)->ec_data_handle, 0)
+ bus_read_1((sc)->ec_res[RES_DATA], 0)
#define EC_SET_DATA(sc, v) \
- bus_space_write_1((sc)->ec_data_tag, (sc)->ec_data_handle, 0, (v))
+ bus_write_1((sc)->ec_res[RES_DATA], 0, (v))
#define EC_GET_CSR(sc) \
- bus_space_read_1((sc)->ec_csr_tag, (sc)->ec_csr_handle, 0)
+ bus_read_1((sc)->ec_res[RES_CSR], 0)
#define EC_SET_CSR(sc, v) \
- bus_space_write_1((sc)->ec_csr_tag, (sc)->ec_csr_handle, 0, (v))
+ bus_write_1((sc)->ec_res[RES_CSR], 0, (v))
/* Additional params to pass from the probe routine */
struct acpi_ec_params {
@@ -242,6 +242,18 @@
/*
* Driver softc.
*/
+enum {
+ RES_DATA,
+ RES_CSR,
+ RES_SZ
+};
+
+static struct resource_spec ec_res_spec[] = {
+ {SYS_RES_IOPORT, 0, RF_ACTIVE},
+ {SYS_RES_IOPORT, 1, RF_ACTIVE},
+ {-1, 0, 0}
+};
+
struct acpi_ec_softc {
device_t ec_dev;
ACPI_HANDLE ec_handle;
@@ -250,15 +262,7 @@
UINT8 ec_gpebit;
UINT8 ec_csrvalue;
- int ec_data_rid;
- struct resource *ec_data_res;
- bus_space_tag_t ec_data_tag;
- bus_space_handle_t ec_data_handle;
-
- int ec_csr_rid;
- struct resource *ec_csr_res;
- bus_space_tag_t ec_csr_tag;
- bus_space_handle_t ec_csr_handle;
+ struct resource *ec_res[RES_SZ];
struct mtx ec_mtx;
int ec_glk;
@@ -588,26 +592,11 @@
free(params, M_TEMP);
/* Attach bus resources for data and command/status ports. */
- sc->ec_data_rid = 0;
- sc->ec_data_res = bus_alloc_resource_any(sc->ec_dev, SYS_RES_IOPORT,
- &sc->ec_data_rid, RF_ACTIVE);
- if (sc->ec_data_res == NULL) {
- device_printf(dev, "can't allocate data port\n");
- goto error;
+ if (bus_alloc_resources(dev, ec_res_spec, sc->ec_res) != 0) {
+ device_printf(dev, "can't allocate resources\n");
+ goto error;
}
- sc->ec_data_tag = rman_get_bustag(sc->ec_data_res);
- sc->ec_data_handle = rman_get_bushandle(sc->ec_data_res);
- sc->ec_csr_rid = 1;
- sc->ec_csr_res = bus_alloc_resource_any(sc->ec_dev, SYS_RES_IOPORT,
- &sc->ec_csr_rid, RF_ACTIVE);
- if (sc->ec_csr_res == NULL) {
- device_printf(dev, "can't allocate command/status port\n");
- goto error;
- }
- sc->ec_csr_tag = rman_get_bustag(sc->ec_csr_res);
- sc->ec_csr_handle = rman_get_bushandle(sc->ec_csr_res);
-
/*
* Install a handler for this EC's GPE bit. We want edge-triggered
* behavior.
@@ -655,13 +644,9 @@
AcpiRemoveGpeHandler(sc->ec_gpehandle, sc->ec_gpebit, &EcGpeHandler);
AcpiRemoveAddressSpaceHandler(sc->ec_handle, ACPI_ADR_SPACE_EC,
EcSpaceHandler);
- if (sc->ec_csr_res)
- bus_release_resource(sc->ec_dev, SYS_RES_IOPORT, sc->ec_csr_rid,
- sc->ec_csr_res);
- if (sc->ec_data_res)
- bus_release_resource(sc->ec_dev, SYS_RES_IOPORT, sc->ec_data_rid,
- sc->ec_data_res);
+ bus_release_resources(sc->ec_dev, ec_res_spec, sc->ec_res);
mtx_destroy(&sc->ec_mtx);
+
return (ENXIO);
}
More information about the p4-projects
mailing list