summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2010-09-22 12:36:33 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2010-09-22 12:36:33 +0000
commit82d2db2bb3f72ecb27ba85525c9089bc48718b6b (patch)
tree468c0847f9dd7d4289468f764daa200c8a01684c
parent5b5ab3caadf67bb6f113f2054df91f593dfca9d8 (diff)
Revert previous and let drivers register counterless interrupts;
tc_intr_disestablish() prototype is changed to carry information whether the counter needs to be detached or not. This does not matter much since no driver ever calls tc_intr_disestablish().
-rw-r--r--sys/arch/alpha/tc/tc_3000_300.c13
-rw-r--r--sys/arch/alpha/tc/tc_3000_500.c13
-rw-r--r--sys/arch/alpha/tc/tc_conf.h8
-rw-r--r--sys/dev/tc/tc.c7
-rw-r--r--sys/dev/tc/tcvar.h8
5 files changed, 27 insertions, 22 deletions
diff --git a/sys/arch/alpha/tc/tc_3000_300.c b/sys/arch/alpha/tc/tc_3000_300.c
index 5ab9b91a1a8..7d95c20c091 100644
--- a/sys/arch/alpha/tc/tc_3000_300.c
+++ b/sys/arch/alpha/tc/tc_3000_300.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tc_3000_300.c,v 1.16 2010/09/22 11:44:01 matthew Exp $ */
+/* $OpenBSD: tc_3000_300.c,v 1.17 2010/09/22 12:36:32 miod Exp $ */
/* $NetBSD: tc_3000_300.c,v 1.26 2001/07/27 00:25:21 thorpej Exp $ */
/*
@@ -119,8 +119,6 @@ tc_3000_300_intr_establish(tcadev, cookie, level, func, arg, name)
volatile u_int32_t *imskp;
u_long dev = (u_long)cookie;
- KASSERT(name != NULL);
-
#ifdef DIAGNOSTIC
/* XXX bounds-check cookie. */
#endif
@@ -130,7 +128,8 @@ tc_3000_300_intr_establish(tcadev, cookie, level, func, arg, name)
tc_3000_300_intr[dev].tci_func = func;
tc_3000_300_intr[dev].tci_arg = arg;
- evcount_attach(&tc_3000_300_intr[dev].tci_count, name, NULL);
+ if (name != NULL)
+ evcount_attach(&tc_3000_300_intr[dev].tci_count, name, NULL);
imskp = (volatile u_int32_t *)(DEC_3000_300_IOASIC_ADDR + IOASIC_IMSK);
switch (dev) {
@@ -147,9 +146,10 @@ tc_3000_300_intr_establish(tcadev, cookie, level, func, arg, name)
}
void
-tc_3000_300_intr_disestablish(tcadev, cookie)
+tc_3000_300_intr_disestablish(tcadev, cookie, name)
struct device *tcadev;
void *cookie;
+ const char *name;
{
volatile u_int32_t *imskp;
u_long dev = (u_long)cookie;
@@ -177,7 +177,8 @@ tc_3000_300_intr_disestablish(tcadev, cookie)
tc_3000_300_intr[dev].tci_func = tc_3000_300_intrnull;
tc_3000_300_intr[dev].tci_arg = (void *)dev;
- evcount_detach(&tc_3000_300_intr[dev].tci_count);
+ if (name != NULL)
+ evcount_detach(&tc_3000_300_intr[dev].tci_count);
}
int
diff --git a/sys/arch/alpha/tc/tc_3000_500.c b/sys/arch/alpha/tc/tc_3000_500.c
index 37b3ca9c636..53d9f99fe10 100644
--- a/sys/arch/alpha/tc/tc_3000_500.c
+++ b/sys/arch/alpha/tc/tc_3000_500.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tc_3000_500.c,v 1.17 2010/09/22 11:44:01 matthew Exp $ */
+/* $OpenBSD: tc_3000_500.c,v 1.18 2010/09/22 12:36:32 miod Exp $ */
/* $NetBSD: tc_3000_500.c,v 1.24 2001/07/27 00:25:21 thorpej Exp $ */
/*
@@ -136,8 +136,6 @@ tc_3000_500_intr_establish(tcadev, cookie, level, func, arg, name)
{
u_long dev = (u_long)cookie;
- KASSERT(name != NULL);
-
#ifdef DIAGNOSTIC
/* XXX bounds-check cookie. */
#endif
@@ -147,7 +145,8 @@ tc_3000_500_intr_establish(tcadev, cookie, level, func, arg, name)
tc_3000_500_intr[dev].tci_func = func;
tc_3000_500_intr[dev].tci_arg = arg;
- evcount_attach(&tc_3000_500_intr[dev].tci_count, name, NULL);
+ if (name != NULL)
+ evcount_attach(&tc_3000_500_intr[dev].tci_count, name, NULL);
tc_3000_500_imask &= ~tc_3000_500_intrbits[dev];
*(volatile u_int32_t *)TC_3000_500_IMR_WRITE = tc_3000_500_imask;
@@ -155,9 +154,10 @@ tc_3000_500_intr_establish(tcadev, cookie, level, func, arg, name)
}
void
-tc_3000_500_intr_disestablish(tcadev, cookie)
+tc_3000_500_intr_disestablish(tcadev, cookie, name)
struct device *tcadev;
void *cookie;
+ const char *name;
{
u_long dev = (u_long)cookie;
@@ -175,7 +175,8 @@ tc_3000_500_intr_disestablish(tcadev, cookie)
tc_3000_500_intr[dev].tci_func = tc_3000_500_intrnull;
tc_3000_500_intr[dev].tci_arg = (void *)dev;
- evcount_detach(&tc_3000_500_intr[dev].tci_count);
+ if (name != NULL)
+ evcount_detach(&tc_3000_500_intr[dev].tci_count);
}
int
diff --git a/sys/arch/alpha/tc/tc_conf.h b/sys/arch/alpha/tc/tc_conf.h
index 00dd6718389..4abefe530cb 100644
--- a/sys/arch/alpha/tc/tc_conf.h
+++ b/sys/arch/alpha/tc/tc_conf.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: tc_conf.h,v 1.10 2008/08/09 16:42:29 miod Exp $ */
+/* $OpenBSD: tc_conf.h,v 1.11 2010/09/22 12:36:32 miod Exp $ */
/* $NetBSD: tc_conf.h,v 1.10 2000/06/04 19:14:29 cgd Exp $ */
/*
@@ -40,7 +40,8 @@ extern void tc_3000_500_iointr(void *, unsigned long);
extern void tc_3000_500_intr_establish(struct device *, void *,
int, int (*)(void *), void *, const char *);
-extern void tc_3000_500_intr_disestablish(struct device *, void *);
+extern void tc_3000_500_intr_disestablish(struct device *, void *,
+ const char *);
extern int tc_3000_500_nslots;
extern struct tc_slotdesc tc_3000_500_slots[];
@@ -58,7 +59,8 @@ extern void tc_3000_300_iointr(void *, unsigned long);
extern void tc_3000_300_intr_establish(struct device *, void *,
int, int (*)(void *), void *, const char *);
-extern void tc_3000_300_intr_disestablish(struct device *, void *);
+extern void tc_3000_300_intr_disestablish(struct device *, void *,
+ const char *);
extern int tc_3000_300_nslots;
extern struct tc_slotdesc tc_3000_300_slots[];
diff --git a/sys/dev/tc/tc.c b/sys/dev/tc/tc.c
index c2aa1ab5aef..89765bafc6a 100644
--- a/sys/dev/tc/tc.c
+++ b/sys/dev/tc/tc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tc.c,v 1.18 2008/08/09 16:42:30 miod Exp $ */
+/* $OpenBSD: tc.c,v 1.19 2010/09/22 12:36:32 miod Exp $ */
/* $NetBSD: tc.c,v 1.29 2001/11/13 06:26:10 lukem Exp $ */
/*
@@ -274,13 +274,14 @@ tc_intr_establish(dev, cookie, level, handler, arg, name)
}
void
-tc_intr_disestablish(dev, cookie)
+tc_intr_disestablish(dev, cookie, name)
struct device *dev;
void *cookie;
+ const char *name;
{
struct tc_softc *sc = tc_cd.cd_devs[0];
- (*sc->sc_intr_disestablish)(dev, cookie);
+ (*sc->sc_intr_disestablish)(dev, cookie, name);
}
#ifdef TCVERBOSE
diff --git a/sys/dev/tc/tcvar.h b/sys/dev/tc/tcvar.h
index d5bd23188ac..f9d73392f23 100644
--- a/sys/dev/tc/tcvar.h
+++ b/sys/dev/tc/tcvar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: tcvar.h,v 1.14 2008/08/09 16:42:30 miod Exp $ */
+/* $OpenBSD: tcvar.h,v 1.15 2010/09/22 12:36:32 miod Exp $ */
/* $NetBSD: tcvar.h,v 1.17 2000/06/04 19:15:15 cgd Exp $ */
/*
@@ -52,7 +52,7 @@ struct tc_softc {
void (*sc_intr_establish)(struct device *, void *,
int, int (*)(void *), void *, const char *);
- void (*sc_intr_disestablish)(struct device *, void *);
+ void (*sc_intr_disestablish)(struct device *, void *, const char *);
bus_dma_tag_t (*sc_get_dma_tag)(int);
};
@@ -74,7 +74,7 @@ struct tcbus_attach_args {
/* TC bus resource management; XXX will move elsewhere eventually. */
void (*tba_intr_establish)(struct device *, void *,
int, int (*)(void *), void *, const char *);
- void (*tba_intr_disestablish)(struct device *, void *);
+ void (*tba_intr_disestablish)(struct device *, void *, const char *);
bus_dma_tag_t (*tba_get_dma_tag)(int);
};
@@ -122,7 +122,7 @@ void tc_devinfo(const char *, char *, size_t);
void tcattach(struct device *, struct device *, void *);
void tc_intr_establish(struct device *, void *, int, int (*)(void *),
void *, const char *);
-void tc_intr_disestablish(struct device *, void *);
+void tc_intr_disestablish(struct device *, void *, const char *);
/*
* Easy to remember names for TURBOchannel device locators.