Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/eisa Use eisa_compatible_{match,lookup}().
details: https://anonhg.NetBSD.org/src/rev/009f79abe7bf
branches: trunk
changeset: 950389:009f79abe7bf
user: thorpej <thorpej%NetBSD.org@localhost>
date: Wed Jan 27 04:35:15 2021 +0000
description:
Use eisa_compatible_{match,lookup}().
diffstat:
sys/dev/eisa/ahb.c | 36 ++++-----
sys/dev/eisa/ahc_eisa.c | 27 ++++---
sys/dev/eisa/bha_eisa.c | 28 ++++---
sys/dev/eisa/cac_eisa.c | 77 ++++++++++++++--------
sys/dev/eisa/dpt_eisa.c | 45 +++++-------
sys/dev/eisa/if_ep_eisa.c | 154 +++++++++++++++++++++++++++-----------------
sys/dev/eisa/if_tlp_eisa.c | 54 ++++++---------
sys/dev/eisa/mlx_eisa.c | 53 ++++++---------
sys/dev/eisa/uha_eisa.c | 24 ++++--
9 files changed, 266 insertions(+), 232 deletions(-)
diffs (truncated from 932 to 300 lines):
diff -r 4b77ad23656b -r 009f79abe7bf sys/dev/eisa/ahb.c
--- a/sys/dev/eisa/ahb.c Wed Jan 27 04:31:36 2021 +0000
+++ b/sys/dev/eisa/ahb.c Wed Jan 27 04:35:15 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ahb.c,v 1.64 2016/07/14 04:00:45 msaitoh Exp $ */
+/* $NetBSD: ahb.c,v 1.65 2021/01/27 04:35:15 thorpej Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -46,7 +46,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ahb.c,v 1.64 2016/07/14 04:00:45 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ahb.c,v 1.65 2021/01/27 04:35:15 thorpej Exp $");
#include "opt_ddb.h"
@@ -142,6 +142,14 @@
#define AHB_ABORT_TIMEOUT 2000 /* time to wait for abort (mSec) */
+static const struct device_compatible_entry compat_data[] = {
+ { .compat = "ADP0000", .data = EISA_PRODUCT_ADP0000 },
+ { .compat = "ADP0001", .data = EISA_PRODUCT_ADP0001 },
+ { .compat = "ADP0002", .data = EISA_PRODUCT_ADP0002 },
+ { .compat = "ADP0400", .data = EISA_PRODUCT_ADP0400 },
+ DEVICE_COMPAT_EOL
+};
+
/*
* Check the slots looking for a board we recognise
* If we find one, note its address (slot) and call
@@ -155,11 +163,7 @@
bus_space_handle_t ioh;
int rv;
- /* must match one of our known ID strings */
- if (strcmp(ea->ea_idstring, "ADP0000") &&
- strcmp(ea->ea_idstring, "ADP0001") &&
- strcmp(ea->ea_idstring, "ADP0002") &&
- strcmp(ea->ea_idstring, "ADP0400"))
+ if (!eisa_compatible_match(ea, compat_data))
return (0);
if (bus_space_map(iot,
@@ -182,11 +186,12 @@
{
struct eisa_attach_args *ea = aux;
struct ahb_softc *sc = device_private(self);
+ const struct device_compatible_entry *dce;
bus_space_tag_t iot = ea->ea_iot;
bus_space_handle_t ioh;
eisa_chipset_tag_t ec = ea->ea_ec;
eisa_intr_handle_t ih;
- const char *model, *intrstr;
+ const char *intrstr;
struct ahb_probe_data apd;
struct scsipi_adapter *adapt = &sc->sc_adapter;
struct scsipi_channel *chan = &sc->sc_channel;
@@ -194,18 +199,11 @@
sc->sc_dev = self;
- if (!strcmp(ea->ea_idstring, "ADP0000"))
- model = EISA_PRODUCT_ADP0000;
- else if (!strcmp(ea->ea_idstring, "ADP0001"))
- model = EISA_PRODUCT_ADP0001;
- else if (!strcmp(ea->ea_idstring, "ADP0002"))
- model = EISA_PRODUCT_ADP0002;
- else if (!strcmp(ea->ea_idstring, "ADP0400"))
- model = EISA_PRODUCT_ADP0400;
- else
- model = "unknown model!";
+ dce = eisa_compatible_lookup(ea, compat_data);
+ KASSERT(dce != NULL);
+
aprint_naive("\n");
- aprint_normal(": %s\n", model);
+ aprint_normal(": %s\n", (const char *)dce->data);
if (bus_space_map(iot,
EISA_SLOT_ADDR(ea->ea_slot) + AHB_EISA_SLOT_OFFSET,
diff -r 4b77ad23656b -r 009f79abe7bf sys/dev/eisa/ahc_eisa.c
--- a/sys/dev/eisa/ahc_eisa.c Wed Jan 27 04:31:36 2021 +0000
+++ b/sys/dev/eisa/ahc_eisa.c Wed Jan 27 04:35:15 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ahc_eisa.c,v 1.41 2016/07/11 11:31:50 msaitoh Exp $ */
+/* $NetBSD: ahc_eisa.c,v 1.42 2021/01/27 04:35:15 thorpej Exp $ */
/*
* Product specific probe and attach routines for:
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ahc_eisa.c,v 1.41 2016/07/11 11:31:50 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ahc_eisa.c,v 1.42 2021/01/27 04:35:15 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -63,6 +63,12 @@
CFATTACH_DECL_NEW(ahc_eisa, sizeof(struct ahc_softc),
ahc_eisa_match, ahc_eisa_attach, NULL, NULL);
+static const struct device_compatible_entry compat_data[] = {
+ { .compat = "ADP7770", .data = EISA_PRODUCT_ADP7770 },
+ { .compat = "ADP7771", .data = EISA_PRODUCT_ADP7771 },
+ DEVICE_COMPAT_EOL
+};
+
/*
* Check the slots looking for a board we recognise
* If we find one, note its address (slot) and call
@@ -76,9 +82,7 @@
bus_space_handle_t ioh;
int irq;
- /* must match one of our known ID strings */
- if (strcmp(ea->ea_idstring, "ADP7770") &&
- strcmp(ea->ea_idstring, "ADP7771"))
+ if (!eisa_compatible_match(ea, compat_data))
return (0);
if (bus_space_map(iot, EISA_SLOT_ADDR(ea->ea_slot) +
@@ -97,6 +101,7 @@
{
struct ahc_softc *ahc = device_private(self);
struct eisa_attach_args *ea = aux;
+ const struct device_compatible_entry *dce;
eisa_chipset_tag_t ec = ea->ea_ec;
eisa_intr_handle_t ih;
bus_space_tag_t iot = ea->ea_iot;
@@ -114,6 +119,9 @@
ahc->sc_dev = self;
+ dce = eisa_compatible_lookup(ea, compat_data);
+ KASSERT(dce != NULL);
+
if (bus_space_map(iot, EISA_SLOT_ADDR(ea->ea_slot) +
AHC_EISA_SLOT_OFFSET, AHC_EISA_IOSIZE, 0, &ioh)) {
aprint_error_dev(ahc->sc_dev, "could not map I/O addresses");
@@ -124,14 +132,7 @@
goto free_io;
}
- if (strcmp(ea->ea_idstring, "ADP7770") == 0) {
- printf(": %s\n", EISA_PRODUCT_ADP7770);
- } else if (strcmp(ea->ea_idstring, "ADP7771") == 0) {
- printf(": %s\n", EISA_PRODUCT_ADP7771);
- } else {
- printf(": Unknown device type %s", ea->ea_idstring);
- goto free_io;
- }
+ printf(": %s\n", (const char *)dce->data);
ahc_set_name(ahc, device_xname(ahc->sc_dev));
ahc->parent_dmat = ea->ea_dmat;
diff -r 4b77ad23656b -r 009f79abe7bf sys/dev/eisa/bha_eisa.c
--- a/sys/dev/eisa/bha_eisa.c Wed Jan 27 04:31:36 2021 +0000
+++ b/sys/dev/eisa/bha_eisa.c Wed Jan 27 04:35:15 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: bha_eisa.c,v 1.37 2014/10/18 08:33:27 snj Exp $ */
+/* $NetBSD: bha_eisa.c,v 1.38 2021/01/27 04:35:15 thorpej Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bha_eisa.c,v 1.37 2014/10/18 08:33:27 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bha_eisa.c,v 1.38 2021/01/27 04:35:15 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -93,6 +93,12 @@
return (0);
}
+static const struct device_compatible_entry compat_data[] = {
+ { .compat = "BUS4201", .data = EISA_PRODUCT_BUS4201 },
+ { .compat = "BUS4202", .data = EISA_PRODUCT_BUS4202 },
+ DEVICE_COMPAT_EOL
+};
+
/*
* Check the slots looking for a board we recognise
* If we find one, note its address (slot) and call
@@ -107,9 +113,7 @@
int port;
int rv;
- /* must match one of our known ID strings */
- if (strcmp(ea->ea_idstring, "BUS4201") &&
- strcmp(ea->ea_idstring, "BUS4202"))
+ if (!eisa_compatible_match(ea, compat_data))
return (0);
if (bus_space_map(iot,
@@ -139,24 +143,22 @@
{
struct eisa_attach_args *ea = aux;
struct bha_softc *sc = device_private(self);
+ const struct device_compatible_entry *dce;
bus_space_tag_t iot = ea->ea_iot;
bus_space_handle_t ioh, ioh2;
int port;
struct bha_probe_data bpd;
eisa_chipset_tag_t ec = ea->ea_ec;
eisa_intr_handle_t ih;
- const char *model, *intrstr;
+ const char *intrstr;
char intrbuf[EISA_INTRSTR_LEN];
sc->sc_dev = self;
- if (!strcmp(ea->ea_idstring, "BUS4201"))
- model = EISA_PRODUCT_BUS4201;
- else if (!strcmp(ea->ea_idstring, "BUS4202"))
- model = EISA_PRODUCT_BUS4202;
- else
- model = "unknown model!";
- printf(": %s\n", model);
+ dce = eisa_compatible_lookup(ea, compat_data);
+ KASSERT(dce != NULL);
+
+ printf(": %s\n", (const char *)dce->data);
if (bus_space_map(iot,
EISA_SLOT_ADDR(ea->ea_slot) + BHA_EISA_SLOT_OFFSET, BHA_EISA_IOSIZE,
diff -r 4b77ad23656b -r 009f79abe7bf sys/dev/eisa/cac_eisa.c
--- a/sys/dev/eisa/cac_eisa.c Wed Jan 27 04:31:36 2021 +0000
+++ b/sys/dev/eisa/cac_eisa.c Wed Jan 27 04:35:15 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: cac_eisa.c,v 1.25 2016/09/27 03:33:32 pgoyette Exp $ */
+/* $NetBSD: cac_eisa.c,v 1.26 2021/01/27 04:35:15 thorpej Exp $ */
/*-
* Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cac_eisa.c,v 1.25 2016/09/27 03:33:32 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cac_eisa.c,v 1.26 2021/01/27 04:35:15 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -102,47 +102,68 @@
cac_eisa_l0_submit
};
-static struct cac_eisa_type {
- const char *ct_prodstr;
+struct cac_eisa_type {
const char *ct_typestr;
const struct cac_linkage *ct_linkage;
-} cac_eisa_type[] = {
- { "CPQ4001", "IDA", &cac_eisa_l0 },
- { "CPQ4002", "IDA-2", &cac_eisa_l0 },
- { "CPQ4010", "IEAS", &cac_eisa_l0 },
- { "CPQ4020", "SMART", &cac_eisa_l0 },
- { "CPQ4030", "SMART-2/E", &cac_l0 },
+};
+
+static const struct cac_eisa_type cpq4001 = {
+ .ct_typestr = "IDA",
+ .ct_linkage = &cac_eisa_l0
+};
+
+static const struct cac_eisa_type cpq4002 = {
+ .ct_typestr = "IDA-2",
+ .ct_linkage = &cac_eisa_l0
+};
+
+static const struct cac_eisa_type cpq4010 = {
+ .ct_typestr = "IEAS",
+ .ct_linkage = &cac_eisa_l0
+};
+
+static const struct cac_eisa_type cpq4020 = {
+ .ct_typestr = "SMART",
+ .ct_linkage = &cac_eisa_l0
+};
+
+static const struct cac_eisa_type cpq4030 = {
+ .ct_typestr = "SMART-2/E",
+ .ct_linkage = &cac_l0
+};
+
+static const struct device_compatible_entry compat_data[] = {
+ { .compat = "CPQ4001", .data = &cpq4001 },
+ { .compat = "CPQ4002", .data = &cpq4002 },
+ { .compat = "CPQ4010", .data = &cpq4010 },
+ { .compat = "CPQ4020", .data = &cpq4020 },
+ { .compat = "CPQ4030", .data = &cpq4030 },
+ DEVICE_COMPAT_EOL
};
Home |
Main Index |
Thread Index |
Old Index