[media] dvb_usb_v2: use Kernel logging (pr_debug/pr_err/pr_info)
[deliverable/linux.git] / drivers / media / dvb / dvb-usb / dvb_usb_urb.c
1 /* dvb-usb-urb.c is part of the DVB USB library.
2 *
3 * Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@desy.de)
4 * see dvb-usb-init.c for copyright information.
5 *
6 * This file keeps functions for initializing and handling the
7 * USB and URB stuff.
8 */
9 #include "dvb_usb_common.h"
10
11 int dvb_usbv2_generic_rw(struct dvb_usb_device *d, u8 *wbuf, u16 wlen, u8 *rbuf,
12 u16 rlen, int delay_ms)
13 {
14 int actlen, ret = -ENOMEM;
15
16 if (!d || wbuf == NULL || wlen == 0)
17 return -EINVAL;
18
19 if (d->props.generic_bulk_ctrl_endpoint == 0) {
20 pr_err("%s: endpoint for generic control not specified",
21 KBUILD_MODNAME);
22 return -EINVAL;
23 }
24
25 ret = mutex_lock_interruptible(&d->usb_mutex);
26 if (ret)
27 return ret;
28
29 print_hex_dump(KERN_DEBUG, KBUILD_MODNAME ": >>> ", DUMP_PREFIX_NONE,
30 32, 1, wbuf, wlen, 0);
31
32 ret = usb_bulk_msg(d->udev, usb_sndbulkpipe(d->udev,
33 d->props.generic_bulk_ctrl_endpoint), wbuf, wlen,
34 &actlen, 2000);
35
36 if (ret)
37 pr_err("%s: bulk message failed: %d (%d/%d)", KBUILD_MODNAME,
38 ret, wlen, actlen);
39 else
40 ret = actlen != wlen ? -1 : 0;
41
42 /* an answer is expected, and no error before */
43 if (!ret && rbuf && rlen) {
44 if (delay_ms)
45 msleep(delay_ms);
46
47 ret = usb_bulk_msg(d->udev, usb_rcvbulkpipe(d->udev,
48 d->props.generic_bulk_ctrl_endpoint_response ?
49 d->props.generic_bulk_ctrl_endpoint_response :
50 d->props.generic_bulk_ctrl_endpoint),
51 rbuf, rlen, &actlen, 2000);
52
53 if (ret)
54 pr_err("%s: recv bulk message failed: %d",
55 KBUILD_MODNAME, ret);
56 else
57 print_hex_dump(KERN_DEBUG, KBUILD_MODNAME ": <<< ",
58 DUMP_PREFIX_NONE, 32, 1, wbuf, wlen, 0);
59 }
60
61 mutex_unlock(&d->usb_mutex);
62 return ret;
63 }
64 EXPORT_SYMBOL(dvb_usbv2_generic_rw);
65
66 int dvb_usbv2_generic_write(struct dvb_usb_device *d, u8 *buf, u16 len)
67 {
68 return dvb_usbv2_generic_rw(d, buf, len, NULL, 0, 0);
69 }
70 EXPORT_SYMBOL(dvb_usbv2_generic_write);
This page took 0.063247 seconds and 5 git commands to generate.