summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/umodem.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb/umodem.c')
-rw-r--r--sys/dev/usb/umodem.c96
1 files changed, 17 insertions, 79 deletions
diff --git a/sys/dev/usb/umodem.c b/sys/dev/usb/umodem.c
index fc1c4c1..7bc43fc 100644
--- a/sys/dev/usb/umodem.c
+++ b/sys/dev/usb/umodem.c
@@ -1,4 +1,4 @@
-/* $NetBSD: umodem.c,v 1.1 1998/12/03 19:58:09 augustss Exp $ */
+/* $NetBSD: umodem.c,v 1.4 1998/12/30 17:46:20 augustss Exp $ */
/* FreeBSD $Id$ */
/*
@@ -38,8 +38,6 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-#include <dev/usb/usb_port.h>
-
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -65,7 +63,6 @@
#include <dev/usb/usbhid.h>
#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdivar.h>
#include <dev/usb/usbdi_util.h>
#include <dev/usb/usbdevs.h>
#include <dev/usb/usb_quirks.h>
@@ -85,85 +82,31 @@ struct umodem_softc {
usbd_interface_handle sc_iface; /* interface */
};
-#if defined(__NetBSD__)
-int umodem_match __P((struct device *, struct cfdata *, void *));
-void umodem_attach __P((struct device *, struct device *, void *));
-#elif defined(__FreeBSD__)
-static device_probe_t umodem_match;
-static device_attach_t umodem_attach;
-static device_detach_t umodem_detach;
-#endif
-
void umodem_intr __P((usbd_request_handle, usbd_private_handle, usbd_status));
void umodem_disco __P((void *));
-#if defined(__NetBSD__)
-extern struct cfdriver umodem_cd;
-
-struct cfattach umodem_ca = {
- sizeof(struct umodem_softc), umodem_match, umodem_attach
-};
-#elif defined(__FreeBSD__)
-static devclass_t umodem_devclass;
-
-static device_method_t umodem_methods[] = {
- DEVMETHOD(device_probe, umodem_match),
- DEVMETHOD(device_attach, umodem_attach),
- DEVMETHOD(device_detach, umodem_detach),
- {0,0}
-};
-
-static driver_t umodem_driver = {
- "umodem",
- umodem_methods,
- DRIVER_TYPE_MISC,
- sizeof(struct umodem_softc)
-};
-#endif
+USB_DECLARE_DRIVER(umodem);
-#if defined(__NetBSD__)
-int
-umodem_match(parent, match, aux)
- struct device *parent;
- struct cfdata *match;
- void *aux;
+USB_MATCH(umodem)
{
- struct usb_attach_arg *uaa = aux;
-#elif defined(__FreeBSD__)
-static int
-umodem_match(device_t device)
-{
- struct usb_attach_arg *uaa = device_get_ivars(device);
-#endif
+ USB_MATCH_START(umodem, uaa);
usb_interface_descriptor_t *id;
if (!uaa->iface)
return (UMATCH_NONE);
id = usbd_get_interface_descriptor(uaa->iface);
- if (id->bInterfaceClass != UCLASS_CDC ||
- id->bInterfaceSubClass != USUBCLASS_MODEM)
+ if (!id ||
+ id->bInterfaceClass != UCLASS_CDC ||
+ id->bInterfaceSubClass != USUBCLASS_ABSTRACT_CONTROL_MODEL ||
+ id->bInterfaceProtocol != UPROTO_CDC_AT)
return (UMATCH_NONE);
- return (UMATCH_IFACECLASS_IFACESUBCLASS);
+ return (UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO);
}
-#if defined(__NetBSD__)
-void
-umodem_attach(parent, self, aux)
- struct device *parent;
- struct device *self;
- void *aux;
+USB_ATTACH(umodem)
{
- struct umodem_softc *sc = (struct umodem_softc *)self;
- struct usb_attach_arg *uaa = aux;
-#elif defined(__FreeBSD__)
-static int
-umodem_attach(device_t self)
-{
- struct umodem_softc *sc = device_get_softc(self);
- struct usb_attach_arg *uaa = device_get_ivars(self);
-#endif
-
+ USB_ATTACH_START(umodem, sc, uaa);
usbd_interface_handle iface = uaa->iface;
usb_interface_descriptor_t *id;
char devinfo[1024];
@@ -171,15 +114,11 @@ umodem_attach(device_t self)
sc->sc_iface = iface;
id = usbd_get_interface_descriptor(iface);
usbd_devinfo(uaa->device, 0, devinfo);
-#if defined(__FreeBSD__)
- usb_device_set_desc(self, devinfo);
- printf("%s%d", device_get_name(self), device_get_unit(self));
-#endif
- sc->sc_dev = self;
+ USB_ATTACH_SETUP;
+ printf("%s: %s, iclass %d/%d\n", USBDEVNAME(sc->sc_dev),
+ devinfo, id->bInterfaceClass, id->bInterfaceSubClass);
- printf(": %s, iclass %d/%d\n", devinfo, id->bInterfaceClass, id->bInterfaceSubClass);
-
- ATTACH_SUCCESS_RETURN;
+ USB_ATTACH_SUCCESS_RETURN;
}
#if defined(__FreeBSD__)
@@ -192,13 +131,12 @@ umodem_detach(device_t self)
if (devinfo) {
device_set_desc(self, NULL);
free(devinfo, M_USB);
- }
+}
return 0;
}
#endif
#if defined(__FreeBSD__)
-DRIVER_MODULE(umodem, usb, umodem_driver, umodem_devclass, usb_driver_load, 0);
+DRIVER_MODULE(umodem, usb, umodem_driver, umodem_devclass, usbd_driver_load, 0);
#endif
-
OpenPOWER on IntegriCloud