|
@@ -21,8 +21,8 @@
|
|
|
|
|
|
#include "dvb_usb_common.h"
|
|
|
|
|
|
-int dvb_usbv2_generic_rw(struct dvb_usb_device *d, u8 *wbuf, u16 wlen, u8 *rbuf,
|
|
|
- u16 rlen)
|
|
|
+int dvb_usb_v2_generic_io(struct dvb_usb_device *d,
|
|
|
+ u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
|
|
|
{
|
|
|
int ret, actual_length;
|
|
|
|
|
@@ -32,8 +32,6 @@ int dvb_usbv2_generic_rw(struct dvb_usb_device *d, u8 *wbuf, u16 wlen, u8 *rbuf,
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- mutex_lock(&d->usb_mutex);
|
|
|
-
|
|
|
dev_dbg(&d->udev->dev, "%s: >>> %*ph\n", __func__, wlen, wbuf);
|
|
|
|
|
|
ret = usb_bulk_msg(d->udev, usb_sndbulkpipe(d->udev,
|
|
@@ -63,13 +61,43 @@ int dvb_usbv2_generic_rw(struct dvb_usb_device *d, u8 *wbuf, u16 wlen, u8 *rbuf,
|
|
|
actual_length, rbuf);
|
|
|
}
|
|
|
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+int dvb_usbv2_generic_rw(struct dvb_usb_device *d,
|
|
|
+ u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
|
|
|
+{
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ mutex_lock(&d->usb_mutex);
|
|
|
+ ret = dvb_usb_v2_generic_io(d, wbuf, wlen, rbuf, rlen);
|
|
|
mutex_unlock(&d->usb_mutex);
|
|
|
+
|
|
|
return ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL(dvb_usbv2_generic_rw);
|
|
|
|
|
|
int dvb_usbv2_generic_write(struct dvb_usb_device *d, u8 *buf, u16 len)
|
|
|
{
|
|
|
- return dvb_usbv2_generic_rw(d, buf, len, NULL, 0);
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ mutex_lock(&d->usb_mutex);
|
|
|
+ ret = dvb_usb_v2_generic_io(d, buf, len, NULL, 0);
|
|
|
+ mutex_unlock(&d->usb_mutex);
|
|
|
+
|
|
|
+ return ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL(dvb_usbv2_generic_write);
|
|
|
+
|
|
|
+int dvb_usbv2_generic_rw_locked(struct dvb_usb_device *d,
|
|
|
+ u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
|
|
|
+{
|
|
|
+ return dvb_usb_v2_generic_io(d, wbuf, wlen, rbuf, rlen);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(dvb_usbv2_generic_rw_locked);
|
|
|
+
|
|
|
+int dvb_usbv2_generic_write_locked(struct dvb_usb_device *d, u8 *buf, u16 len)
|
|
|
+{
|
|
|
+ return dvb_usb_v2_generic_io(d, buf, len, NULL, 0);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(dvb_usbv2_generic_write_locked);
|