Deleted Added
full compact
ufoma.c (233774) ufoma.c (239180)
1/* $NetBSD: umodem.c,v 1.45 2002/09/23 05:51:23 simonb Exp $ */
2
3#include <sys/cdefs.h>
1/* $NetBSD: umodem.c,v 1.45 2002/09/23 05:51:23 simonb Exp $ */
2
3#include <sys/cdefs.h>
4__FBSDID("$FreeBSD: head/sys/dev/usb/serial/ufoma.c 233774 2012-04-02 10:50:42Z hselasky $");
4__FBSDID("$FreeBSD: head/sys/dev/usb/serial/ufoma.c 239180 2012-08-10 15:29:41Z hselasky $");
5#define UFOMA_HANDSFREE
6/*-
7 * Copyright (c) 2005, Takanori Watanabe
8 * Copyright (c) 2003, M. Warner Losh <imp@FreeBSD.org>.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions

--- 185 unchanged lines hidden (view full) ---

198 uint8_t sc_name[16];
199};
200
201/* prototypes */
202
203static device_probe_t ufoma_probe;
204static device_attach_t ufoma_attach;
205static device_detach_t ufoma_detach;
5#define UFOMA_HANDSFREE
6/*-
7 * Copyright (c) 2005, Takanori Watanabe
8 * Copyright (c) 2003, M. Warner Losh <imp@FreeBSD.org>.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions

--- 185 unchanged lines hidden (view full) ---

198 uint8_t sc_name[16];
199};
200
201/* prototypes */
202
203static device_probe_t ufoma_probe;
204static device_attach_t ufoma_attach;
205static device_detach_t ufoma_detach;
206static device_free_softc_t ufoma_free_softc;
206
207static usb_callback_t ufoma_ctrl_read_callback;
208static usb_callback_t ufoma_ctrl_write_callback;
209static usb_callback_t ufoma_intr_callback;
210static usb_callback_t ufoma_bulk_write_callback;
211static usb_callback_t ufoma_bulk_read_callback;
212
213static void *ufoma_get_intconf(struct usb_config_descriptor *,
214 struct usb_interface_descriptor *, uint8_t, uint8_t);
215static void ufoma_cfg_link_state(struct ufoma_softc *);
216static void ufoma_cfg_activate_state(struct ufoma_softc *, uint16_t);
207
208static usb_callback_t ufoma_ctrl_read_callback;
209static usb_callback_t ufoma_ctrl_write_callback;
210static usb_callback_t ufoma_intr_callback;
211static usb_callback_t ufoma_bulk_write_callback;
212static usb_callback_t ufoma_bulk_read_callback;
213
214static void *ufoma_get_intconf(struct usb_config_descriptor *,
215 struct usb_interface_descriptor *, uint8_t, uint8_t);
216static void ufoma_cfg_link_state(struct ufoma_softc *);
217static void ufoma_cfg_activate_state(struct ufoma_softc *, uint16_t);
218static void ufoma_free(struct ucom_softc *);
217static void ufoma_cfg_open(struct ucom_softc *);
218static void ufoma_cfg_close(struct ucom_softc *);
219static void ufoma_cfg_set_break(struct ucom_softc *, uint8_t);
220static void ufoma_cfg_get_status(struct ucom_softc *, uint8_t *,
221 uint8_t *);
222static void ufoma_cfg_set_dtr(struct ucom_softc *, uint8_t);
223static void ufoma_cfg_set_rts(struct ucom_softc *, uint8_t);
224static int ufoma_pre_param(struct ucom_softc *, struct termios *);

--- 74 unchanged lines hidden (view full) ---

299 .ucom_cfg_open = &ufoma_cfg_open,
300 .ucom_cfg_close = &ufoma_cfg_close,
301 .ucom_pre_param = &ufoma_pre_param,
302 .ucom_start_read = &ufoma_start_read,
303 .ucom_stop_read = &ufoma_stop_read,
304 .ucom_start_write = &ufoma_start_write,
305 .ucom_stop_write = &ufoma_stop_write,
306 .ucom_poll = &ufoma_poll,
219static void ufoma_cfg_open(struct ucom_softc *);
220static void ufoma_cfg_close(struct ucom_softc *);
221static void ufoma_cfg_set_break(struct ucom_softc *, uint8_t);
222static void ufoma_cfg_get_status(struct ucom_softc *, uint8_t *,
223 uint8_t *);
224static void ufoma_cfg_set_dtr(struct ucom_softc *, uint8_t);
225static void ufoma_cfg_set_rts(struct ucom_softc *, uint8_t);
226static int ufoma_pre_param(struct ucom_softc *, struct termios *);

--- 74 unchanged lines hidden (view full) ---

301 .ucom_cfg_open = &ufoma_cfg_open,
302 .ucom_cfg_close = &ufoma_cfg_close,
303 .ucom_pre_param = &ufoma_pre_param,
304 .ucom_start_read = &ufoma_start_read,
305 .ucom_stop_read = &ufoma_stop_read,
306 .ucom_start_write = &ufoma_start_write,
307 .ucom_stop_write = &ufoma_stop_write,
308 .ucom_poll = &ufoma_poll,
309 .ucom_free = &ufoma_free,
307};
308
309static device_method_t ufoma_methods[] = {
310 /* Device methods */
311 DEVMETHOD(device_probe, ufoma_probe),
312 DEVMETHOD(device_attach, ufoma_attach),
313 DEVMETHOD(device_detach, ufoma_detach),
310};
311
312static device_method_t ufoma_methods[] = {
313 /* Device methods */
314 DEVMETHOD(device_probe, ufoma_probe),
315 DEVMETHOD(device_attach, ufoma_attach),
316 DEVMETHOD(device_detach, ufoma_detach),
314 {0, 0}
317 DEVMETHOD(device_free_softc, ufoma_free_softc),
318 DEVMETHOD_END
315};
316
317static devclass_t ufoma_devclass;
318
319static driver_t ufoma_driver = {
320 .name = "ufoma",
321 .methods = ufoma_methods,
322 .size = sizeof(struct ufoma_softc),

--- 57 unchanged lines hidden (view full) ---

380 uint8_t elements;
381 int32_t error;
382
383 sc->sc_udev = uaa->device;
384 sc->sc_dev = dev;
385 sc->sc_unit = device_get_unit(dev);
386
387 mtx_init(&sc->sc_mtx, "ufoma", NULL, MTX_DEF);
319};
320
321static devclass_t ufoma_devclass;
322
323static driver_t ufoma_driver = {
324 .name = "ufoma",
325 .methods = ufoma_methods,
326 .size = sizeof(struct ufoma_softc),

--- 57 unchanged lines hidden (view full) ---

384 uint8_t elements;
385 int32_t error;
386
387 sc->sc_udev = uaa->device;
388 sc->sc_dev = dev;
389 sc->sc_unit = device_get_unit(dev);
390
391 mtx_init(&sc->sc_mtx, "ufoma", NULL, MTX_DEF);
392 ucom_ref(&sc->sc_super_ucom);
388 cv_init(&sc->sc_cv, "CWAIT");
389
390 device_set_usb_desc(dev);
391
392 snprintf(sc->sc_name, sizeof(sc->sc_name),
393 "%s", device_get_nameunit(dev));
394
395 DPRINTF("\n");

--- 94 unchanged lines hidden (view full) ---

490
491 ucom_detach(&sc->sc_super_ucom, &sc->sc_ucom);
492 usbd_transfer_unsetup(sc->sc_ctrl_xfer, UFOMA_CTRL_ENDPT_MAX);
493 usbd_transfer_unsetup(sc->sc_bulk_xfer, UFOMA_BULK_ENDPT_MAX);
494
495 if (sc->sc_modetable) {
496 free(sc->sc_modetable, M_USBDEV);
497 }
393 cv_init(&sc->sc_cv, "CWAIT");
394
395 device_set_usb_desc(dev);
396
397 snprintf(sc->sc_name, sizeof(sc->sc_name),
398 "%s", device_get_nameunit(dev));
399
400 DPRINTF("\n");

--- 94 unchanged lines hidden (view full) ---

495
496 ucom_detach(&sc->sc_super_ucom, &sc->sc_ucom);
497 usbd_transfer_unsetup(sc->sc_ctrl_xfer, UFOMA_CTRL_ENDPT_MAX);
498 usbd_transfer_unsetup(sc->sc_bulk_xfer, UFOMA_BULK_ENDPT_MAX);
499
500 if (sc->sc_modetable) {
501 free(sc->sc_modetable, M_USBDEV);
502 }
498 mtx_destroy(&sc->sc_mtx);
499 cv_destroy(&sc->sc_cv);
500
501 return (0);
502}
503
503 cv_destroy(&sc->sc_cv);
504
505 return (0);
506}
507
508UCOM_UNLOAD_DRAIN(ufoma);
509
510static void
511ufoma_free_softc(device_t dev, void *arg)
512{
513 struct ufoma_softc *sc = arg;
514
515 if (ucom_unref(&sc->sc_super_ucom)) {
516 if (mtx_initialized(&sc->sc_mtx))
517 mtx_destroy(&sc->sc_mtx);
518 device_free_softc(dev, sc);
519 }
520}
521
522static void
523ufoma_free(struct ucom_softc *ucom)
524{
525 ufoma_free_softc(NULL, ucom->sc_parent);
526}
527
504static void *
505ufoma_get_intconf(struct usb_config_descriptor *cd, struct usb_interface_descriptor *id,
506 uint8_t type, uint8_t subtype)
507{
508 struct usb_descriptor *desc = (void *)id;
509
510 while ((desc = usb_desc_foreach(cd, desc))) {
511

--- 749 unchanged lines hidden ---
528static void *
529ufoma_get_intconf(struct usb_config_descriptor *cd, struct usb_interface_descriptor *id,
530 uint8_t type, uint8_t subtype)
531{
532 struct usb_descriptor *desc = (void *)id;
533
534 while ((desc = usb_desc_foreach(cd, desc))) {
535

--- 749 unchanged lines hidden ---