Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/pcmcia Don't use com_activate(), it's gone away. De...
details: https://anonhg.NetBSD.org/src/rev/09e7c0cf92f6
branches: trunk
changeset: 749010:09e7c0cf92f6
user: dyoung <dyoung%NetBSD.org@localhost>
date: Thu Nov 12 22:46:47 2009 +0000
description:
Don't use com_activate(), it's gone away. Delete superfluous
activation hook, pcmcom_activate().
Add a child-detachment hook and use it.
Use device_private().
Cosmetic: use __arraycount(). Join a couple of lines. Delete a
set of superfluous parentheses.
diffstat:
sys/dev/pcmcia/pcmcom.c | 70 ++++++++++++++++--------------------------------
1 files changed, 23 insertions(+), 47 deletions(-)
diffs (159 lines):
diff -r c23b150789c7 -r 09e7c0cf92f6 sys/dev/pcmcia/pcmcom.c
--- a/sys/dev/pcmcia/pcmcom.c Thu Nov 12 20:38:35 2009 +0000
+++ b/sys/dev/pcmcia/pcmcom.c Thu Nov 12 22:46:47 2009 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pcmcom.c,v 1.37 2009/05/12 14:42:19 cegger Exp $ */
+/* $NetBSD: pcmcom.c,v 1.38 2009/11/12 22:46:47 dyoung Exp $ */
/*-
* Copyright (c) 1998, 2000, 2004 The NetBSD Foundation, Inc.
@@ -44,7 +44,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pcmcom.c,v 1.37 2009/05/12 14:42:19 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pcmcom.c,v 1.38 2009/11/12 22:46:47 dyoung Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -92,10 +92,10 @@
int pcmcom_validate_config(struct pcmcia_config_entry *);
void pcmcom_attach(device_t, device_t, void *);
int pcmcom_detach(device_t, int);
-int pcmcom_activate(device_t, enum devact);
+void pcmcom_childdet(device_t, device_t);
CFATTACH_DECL(pcmcom, sizeof(struct pcmcom_softc),
- pcmcom_match, pcmcom_attach, pcmcom_detach, pcmcom_activate);
+ pcmcom_match, pcmcom_attach, pcmcom_detach, NULL);
const struct pcmcia_product pcmcom_products[] = {
{ PCMCIA_VENDOR_SOCKET, PCMCIA_PRODUCT_SOCKET_DUAL_RS232,
@@ -105,8 +105,7 @@
PCMCIA_CIS_INVALID },
#endif
};
-const size_t pcmcom_nproducts =
- sizeof(pcmcom_products) / sizeof(pcmcom_products[0]);
+const size_t pcmcom_nproducts = __arraycount(pcmcom_products);
int pcmcom_print(void *, const char *);
@@ -116,8 +115,7 @@
int pcmcom_intr(void *);
int
-pcmcom_match(device_t parent, cfdata_t cf,
- void *aux)
+pcmcom_match(device_t parent, cfdata_t cf, void *aux)
{
struct pcmcia_attach_args *pa = aux;
@@ -139,7 +137,7 @@
void
pcmcom_attach(device_t parent, device_t self, void *aux)
{
- struct pcmcom_softc *sc = (void *)self;
+ struct pcmcom_softc *sc = device_private(self);
struct pcmcia_attach_args *pa = aux;
struct pcmcia_config_entry *cfe;
int slave;
@@ -150,8 +148,7 @@
error = pcmcia_function_configure(pa->pf, pcmcom_validate_config);
if (error) {
- aprint_error_dev(self, "configure failed, error=%d\n",
- error);
+ aprint_error_dev(self, "configure failed, error=%d\n", error);
return;
}
@@ -187,10 +184,22 @@
pcmcia_function_unconfigure(pa->pf);
}
+void
+pcmcom_childdet(device_t self, device_t child)
+{
+ struct pcmcom_softc *sc = device_private(self);
+ int slave;
+
+ for (slave = sc->sc_nslaves - 1; slave >= 0; slave--) {
+ if (sc->sc_slaves[slave] == child)
+ sc->sc_slaves[slave] = NULL;
+ }
+}
+
int
pcmcom_detach(device_t self, int flags)
{
- struct pcmcom_softc *sc = (void *)self;
+ struct pcmcom_softc *sc = device_private(self);
int slave, error;
if (sc->sc_state != PCMCOM_ATTACHED)
@@ -202,7 +211,6 @@
error = config_detach(sc->sc_slaves[slave], flags);
if (error)
return (error);
- sc->sc_slaves[slave] = 0;
}
}
@@ -212,37 +220,6 @@
}
int
-pcmcom_activate(device_t self, enum devact act)
-{
- struct pcmcom_softc *sc = (void *)self;
- int slave, error = 0, s;
-
- s = splserial();
- switch (act) {
- case DVACT_ACTIVATE:
- error = EOPNOTSUPP;
- break;
-
- case DVACT_DEACTIVATE:
- for (slave = sc->sc_nslaves - 1; slave >= 0; slave--) {
- if (sc->sc_slaves[slave]) {
- /*
- * Deactivate the child. Doing so will cause
- * our own enabled count to drop to 0, once all
- * children are deactivated.
- */
- error = config_deactivate(sc->sc_slaves[slave]);
- if (error)
- break;
- }
- }
- break;
- }
- splx(s);
- return (error);
-}
-
-int
pcmcom_print(void *aux, const char *pnp)
{
struct pcmcom_attach_args *pca = aux;
@@ -320,7 +297,7 @@
/* No pcmcom-specific goo in the softc; it's all in the parent. */
CFATTACH_DECL(com_pcmcom, sizeof(struct com_softc),
- com_pcmcom_match, com_pcmcom_attach, com_detach, com_activate);
+ com_pcmcom_match, com_pcmcom_attach, com_detach, NULL);
int com_pcmcom_enable(struct com_softc *);
void com_pcmcom_disable(struct com_softc *);
@@ -356,8 +333,7 @@
int
com_pcmcom_enable(struct com_softc *sc)
{
-
- return (pcmcom_enable(device_private(device_parent(sc->sc_dev))));
+ return pcmcom_enable(device_private(device_parent(sc->sc_dev)));
}
void
Home |
Main Index |
Thread Index |
Old Index