summaryrefslogtreecommitdiffstats
path: root/sys/dev/ppbus/ppbconf.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/ppbus/ppbconf.h')
-rw-r--r--sys/dev/ppbus/ppbconf.h34
1 files changed, 24 insertions, 10 deletions
diff --git a/sys/dev/ppbus/ppbconf.h b/sys/dev/ppbus/ppbconf.h
index 482d34f..9981a9a 100644
--- a/sys/dev/ppbus/ppbconf.h
+++ b/sys/dev/ppbus/ppbconf.h
@@ -199,8 +199,8 @@ struct ppb_device {
struct ppb_xfer
put_xfer[PPB_MAX_XFER];
- struct resource *intr_resource;
- void *intr_cookie;
+ driver_intr_t *intr_hook;
+ void *intr_arg;
};
/* EPP standards */
@@ -209,6 +209,8 @@ struct ppb_device {
/* Parallel Port Chipset IVARS */ /* elsewhere XXX */
#define PPC_IVAR_EPP_PROTO 0
+#define PPC_IVAR_LOCK 1
+#define PPC_IVAR_INTR_HANDLER 2
/*
* Maximum size of the PnP info string
@@ -239,15 +241,27 @@ struct ppb_data {
int mode; /* IEEE 1284-1994 mode
* NIBBLE, PS2, EPP or ECP */
- void *ppb_owner; /* device which owns the bus */
+ device_t ppb_owner; /* device which owns the bus */
+
+ struct mtx *ppc_lock; /* lock of parent device */
+ struct resource *ppc_irq_res;
};
+struct callout;
+
+typedef int (*ppc_intr_handler)(void *);
+
#ifdef _KERNEL
extern int ppb_attach_device(device_t);
extern int ppb_request_bus(device_t, device_t, int);
extern int ppb_release_bus(device_t, device_t);
/* bus related functions */
+extern void ppb_lock(device_t);
+extern void ppb_unlock(device_t);
+extern void _ppb_assert_locked(device_t, const char *, int);
+extern void ppb_init_callout(device_t, struct callout *, int);
+extern int ppb_sleep(device_t, void *, int, const char *, int);
extern int ppb_get_status(device_t, struct ppb_status *);
extern int ppb_poll_bus(device_t, int, char, char, int);
extern int ppb_reset_epp_timeout(device_t);
@@ -256,12 +270,12 @@ extern int ppb_get_epp_protocol(device_t);
extern int ppb_set_mode(device_t, int); /* returns old mode */
extern int ppb_get_mode(device_t); /* returns current mode */
extern int ppb_write(device_t, char *, int, int);
-#endif /* _KERNEL */
-
-/*
- * These are defined as macros for speedup.
-#define ppb_get_base_addr(dev) ((dev)->ppb->ppb_link->base)
-#define ppb_get_epp_protocol(dev) ((dev)->ppb->ppb_link->epp_protocol)
- */
+#ifdef INVARIANTS
+#define ppb_assert_locked(dev) _ppb_assert_locked(dev, __FILE__, __LINE__)
+#else
+#define ppb_assert_locked(dev)
#endif
+#endif /* _KERNEL */
+
+#endif /* !__PPBCONF_H */
OpenPOWER on IntegriCloud