Deleted Added
full compact
uvscom.c (239180) uvscom.c (239299)
1/* $NetBSD: usb/uvscom.c,v 1.1 2002/03/19 15:08:42 augustss Exp $ */
2
3#include <sys/cdefs.h>
1/* $NetBSD: usb/uvscom.c,v 1.1 2002/03/19 15:08:42 augustss Exp $ */
2
3#include <sys/cdefs.h>
4__FBSDID("$FreeBSD: head/sys/dev/usb/serial/uvscom.c 239180 2012-08-10 15:29:41Z hselasky $");
4__FBSDID("$FreeBSD: head/sys/dev/usb/serial/uvscom.c 239299 2012-08-15 15:42:57Z hselasky $");
5
6/*-
7 * Copyright (c) 2001-2003, 2005 Shunsuke Akiyama <akiyama@jp.FreeBSD.org>.
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:

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

158 uint8_t sc_unit_status; /* unit status */
159};
160
161/* prototypes */
162
163static device_probe_t uvscom_probe;
164static device_attach_t uvscom_attach;
165static device_detach_t uvscom_detach;
5
6/*-
7 * Copyright (c) 2001-2003, 2005 Shunsuke Akiyama <akiyama@jp.FreeBSD.org>.
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:

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

158 uint8_t sc_unit_status; /* unit status */
159};
160
161/* prototypes */
162
163static device_probe_t uvscom_probe;
164static device_attach_t uvscom_attach;
165static device_detach_t uvscom_detach;
166static device_free_softc_t uvscom_free_softc;
166static void uvscom_free_softc(struct uvscom_softc *);
167
168static usb_callback_t uvscom_write_callback;
169static usb_callback_t uvscom_read_callback;
170static usb_callback_t uvscom_intr_callback;
171
172static void uvscom_free(struct ucom_softc *);
173static void uvscom_cfg_set_dtr(struct ucom_softc *, uint8_t);
174static void uvscom_cfg_set_rts(struct ucom_softc *, uint8_t);

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

248 /* SUNTAC Slipper U */
249 {USB_VPI(USB_VENDOR_SUNTAC, USB_PRODUCT_SUNTAC_VS10U, 0)},
250};
251
252static device_method_t uvscom_methods[] = {
253 DEVMETHOD(device_probe, uvscom_probe),
254 DEVMETHOD(device_attach, uvscom_attach),
255 DEVMETHOD(device_detach, uvscom_detach),
167
168static usb_callback_t uvscom_write_callback;
169static usb_callback_t uvscom_read_callback;
170static usb_callback_t uvscom_intr_callback;
171
172static void uvscom_free(struct ucom_softc *);
173static void uvscom_cfg_set_dtr(struct ucom_softc *, uint8_t);
174static void uvscom_cfg_set_rts(struct ucom_softc *, uint8_t);

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

248 /* SUNTAC Slipper U */
249 {USB_VPI(USB_VENDOR_SUNTAC, USB_PRODUCT_SUNTAC_VS10U, 0)},
250};
251
252static device_method_t uvscom_methods[] = {
253 DEVMETHOD(device_probe, uvscom_probe),
254 DEVMETHOD(device_attach, uvscom_attach),
255 DEVMETHOD(device_detach, uvscom_detach),
256 DEVMETHOD(device_free_softc, uvscom_free_softc),
257 DEVMETHOD_END
258};
259
260static devclass_t uvscom_devclass;
261
262static driver_t uvscom_driver = {
263 .name = "uvscom",
264 .methods = uvscom_methods,

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

349 /* stop interrupt pipe */
350
351 if (sc->sc_xfer[UVSCOM_INTR_DT_RD])
352 usbd_transfer_stop(sc->sc_xfer[UVSCOM_INTR_DT_RD]);
353
354 ucom_detach(&sc->sc_super_ucom, &sc->sc_ucom);
355 usbd_transfer_unsetup(sc->sc_xfer, UVSCOM_N_TRANSFER);
356
256 DEVMETHOD_END
257};
258
259static devclass_t uvscom_devclass;
260
261static driver_t uvscom_driver = {
262 .name = "uvscom",
263 .methods = uvscom_methods,

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

348 /* stop interrupt pipe */
349
350 if (sc->sc_xfer[UVSCOM_INTR_DT_RD])
351 usbd_transfer_stop(sc->sc_xfer[UVSCOM_INTR_DT_RD]);
352
353 ucom_detach(&sc->sc_super_ucom, &sc->sc_ucom);
354 usbd_transfer_unsetup(sc->sc_xfer, UVSCOM_N_TRANSFER);
355
356 device_claim_softc(dev);
357
358 uvscom_free_softc(sc);
359
357 return (0);
358}
359
360UCOM_UNLOAD_DRAIN(uvscom);
361
362static void
360 return (0);
361}
362
363UCOM_UNLOAD_DRAIN(uvscom);
364
365static void
363uvscom_free_softc(device_t dev, void *arg)
366uvscom_free_softc(struct uvscom_softc *sc)
364{
367{
365 struct uvscom_softc *sc = arg;
366
367 if (ucom_unref(&sc->sc_super_ucom)) {
368 if (ucom_unref(&sc->sc_super_ucom)) {
368 if (mtx_initialized(&sc->sc_mtx))
369 mtx_destroy(&sc->sc_mtx);
370 device_free_softc(dev, sc);
369 mtx_destroy(&sc->sc_mtx);
370 device_free_softc(sc);
371 }
372}
373
374static void
375uvscom_free(struct ucom_softc *ucom)
376{
371 }
372}
373
374static void
375uvscom_free(struct ucom_softc *ucom)
376{
377 uvscom_free_softc(NULL, ucom->sc_parent);
377 uvscom_free_softc(ucom->sc_parent);
378}
379
380static void
381uvscom_write_callback(struct usb_xfer *xfer, usb_error_t error)
382{
383 struct uvscom_softc *sc = usbd_xfer_softc(xfer);
384 struct usb_page_cache *pc;
385 uint32_t actlen;

--- 385 unchanged lines hidden ---
378}
379
380static void
381uvscom_write_callback(struct usb_xfer *xfer, usb_error_t error)
382{
383 struct uvscom_softc *sc = usbd_xfer_softc(xfer);
384 struct usb_page_cache *pc;
385 uint32_t actlen;

--- 385 unchanged lines hidden ---