svn commit: r199448 - stable/8/sys/dev/siis
Alexander Motin
mav at FreeBSD.org
Tue Nov 17 21:20:20 UTC 2009
Author: mav
Date: Tue Nov 17 21:20:19 2009
New Revision: 199448
URL: http://svn.freebsd.org/changeset/base/199448
Log:
MFC r199132:
Organize device IDs and add some more of them.
Modified:
stable/8/sys/dev/siis/siis.c
stable/8/sys/dev/siis/siis.h
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/dev/xen/xenpci/ (props changed)
Modified: stable/8/sys/dev/siis/siis.c
==============================================================================
--- stable/8/sys/dev/siis/siis.c Tue Nov 17 21:17:22 2009 (r199447)
+++ stable/8/sys/dev/siis/siis.c Tue Nov 17 21:20:19 2009 (r199448)
@@ -89,24 +89,37 @@ static void siispoll(struct cam_sim *sim
MALLOC_DEFINE(M_SIIS, "SIIS driver", "SIIS driver data buffers");
+static struct {
+ uint32_t id;
+ const char *name;
+ int ports;
+} siis_ids[] = {
+ {0x31241095, "SiI3124", 4},
+ {0x31248086, "SiI3124", 4},
+ {0x31321095, "SiI3132", 2},
+ {0x02421095, "SiI3132", 2},
+ {0x02441095, "SiI3132", 2},
+ {0x31311095, "SiI3131", 1},
+ {0x35311095, "SiI3531", 1},
+ {0, NULL, 0}
+};
+
static int
siis_probe(device_t dev)
{
+ char buf[64];
+ int i;
uint32_t devid = pci_get_devid(dev);
- if (devid == SIIS_SII3124) {
- device_set_desc_copy(dev, "SiI3124 SATA2 controller");
- } else if (devid == SIIS_SII3132 ||
- devid == SIIS_SII3132_1 ||
- devid == SIIS_SII3132_2) {
- device_set_desc_copy(dev, "SiI3132 SATA2 controller");
- } else if (devid == SIIS_SII3531) {
- device_set_desc_copy(dev, "SiI3531 SATA2 controller");
- } else {
- return (ENXIO);
+ for (i = 0; siis_ids[i].id != 0; i++) {
+ if (siis_ids[i].id == devid) {
+ snprintf(buf, sizeof(buf), "%s SATA2 controller",
+ siis_ids[i].name);
+ device_set_desc_copy(dev, buf);
+ return (BUS_PROBE_VENDOR);
+ }
}
-
- return (BUS_PROBE_VENDOR);
+ return (ENXIO);
}
static int
@@ -115,8 +128,12 @@ siis_attach(device_t dev)
struct siis_controller *ctlr = device_get_softc(dev);
uint32_t devid = pci_get_devid(dev);
device_t child;
- int error, unit;
+ int error, i, unit;
+ for (i = 0; siis_ids[i].id != 0; i++) {
+ if (siis_ids[i].id == devid)
+ break;
+ }
ctlr->dev = dev;
/* Global memory */
ctlr->r_grid = PCIR_BAR(0);
@@ -146,8 +163,7 @@ siis_attach(device_t dev)
/* Reset controller */
siis_resume(dev);
/* Number of HW channels */
- ctlr->channels = (devid == SIIS_SII3124) ? 4 :
- (devid == SIIS_SII3531 ? 1 : 2);
+ ctlr->channels = siis_ids[i].ports;
/* Setup interrupts. */
if (siis_setup_interrupt(dev)) {
bus_release_resource(dev, SYS_RES_MEMORY, ctlr->r_rid, ctlr->r_mem);
Modified: stable/8/sys/dev/siis/siis.h
==============================================================================
--- stable/8/sys/dev/siis/siis.h Tue Nov 17 21:17:22 2009 (r199447)
+++ stable/8/sys/dev/siis/siis.h Tue Nov 17 21:20:19 2009 (r199448)
@@ -137,12 +137,6 @@
#define ATA_SACTIVE 16
-#define SIIS_SII3124 0x31241095
-#define SIIS_SII3132 0x31321095
-#define SIIS_SII3132_1 0x02421095
-#define SIIS_SII3132_2 0x02441095
-#define SIIS_SII3531 0x35311095
-
/*
* Global registers
*/
More information about the svn-src-stable
mailing list