|
@@ -82,7 +82,8 @@ int em28xx_read_reg_req_len(struct em28xx *dev, u8 req, u16 reg,
|
|
char *buf, int len)
|
|
char *buf, int len)
|
|
{
|
|
{
|
|
int ret;
|
|
int ret;
|
|
- int pipe = usb_rcvctrlpipe(dev->udev, 0);
|
|
|
|
|
|
+ struct usb_device *udev = interface_to_usbdev(dev->intf);
|
|
|
|
+ int pipe = usb_rcvctrlpipe(udev, 0);
|
|
|
|
|
|
if (dev->disconnected)
|
|
if (dev->disconnected)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
@@ -97,7 +98,7 @@ int em28xx_read_reg_req_len(struct em28xx *dev, u8 req, u16 reg,
|
|
len & 0xff, len >> 8);
|
|
len & 0xff, len >> 8);
|
|
|
|
|
|
mutex_lock(&dev->ctrl_urb_lock);
|
|
mutex_lock(&dev->ctrl_urb_lock);
|
|
- ret = usb_control_msg(dev->udev, pipe, req,
|
|
|
|
|
|
+ ret = usb_control_msg(udev, pipe, req,
|
|
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
|
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
|
0x0000, reg, dev->urb_buf, len, HZ);
|
|
0x0000, reg, dev->urb_buf, len, HZ);
|
|
if (ret < 0) {
|
|
if (ret < 0) {
|
|
@@ -154,7 +155,8 @@ int em28xx_write_regs_req(struct em28xx *dev, u8 req, u16 reg, char *buf,
|
|
int len)
|
|
int len)
|
|
{
|
|
{
|
|
int ret;
|
|
int ret;
|
|
- int pipe = usb_sndctrlpipe(dev->udev, 0);
|
|
|
|
|
|
+ struct usb_device *udev = interface_to_usbdev(dev->intf);
|
|
|
|
+ int pipe = usb_sndctrlpipe(udev, 0);
|
|
|
|
|
|
if (dev->disconnected)
|
|
if (dev->disconnected)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
@@ -171,7 +173,7 @@ int em28xx_write_regs_req(struct em28xx *dev, u8 req, u16 reg, char *buf,
|
|
|
|
|
|
mutex_lock(&dev->ctrl_urb_lock);
|
|
mutex_lock(&dev->ctrl_urb_lock);
|
|
memcpy(dev->urb_buf, buf, len);
|
|
memcpy(dev->urb_buf, buf, len);
|
|
- ret = usb_control_msg(dev->udev, pipe, req,
|
|
|
|
|
|
+ ret = usb_control_msg(udev, pipe, req,
|
|
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
|
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
|
0x0000, reg, dev->urb_buf, len, HZ);
|
|
0x0000, reg, dev->urb_buf, len, HZ);
|
|
mutex_unlock(&dev->ctrl_urb_lock);
|
|
mutex_unlock(&dev->ctrl_urb_lock);
|
|
@@ -797,6 +799,7 @@ void em28xx_uninit_usb_xfer(struct em28xx *dev, enum em28xx_mode mode)
|
|
{
|
|
{
|
|
struct urb *urb;
|
|
struct urb *urb;
|
|
struct em28xx_usb_bufs *usb_bufs;
|
|
struct em28xx_usb_bufs *usb_bufs;
|
|
|
|
+ struct usb_device *udev = interface_to_usbdev(dev->intf);
|
|
int i;
|
|
int i;
|
|
|
|
|
|
em28xx_isocdbg("em28xx: called em28xx_uninit_usb_xfer in mode %d\n",
|
|
em28xx_isocdbg("em28xx: called em28xx_uninit_usb_xfer in mode %d\n",
|
|
@@ -816,7 +819,7 @@ void em28xx_uninit_usb_xfer(struct em28xx *dev, enum em28xx_mode mode)
|
|
usb_unlink_urb(urb);
|
|
usb_unlink_urb(urb);
|
|
|
|
|
|
if (usb_bufs->transfer_buffer[i]) {
|
|
if (usb_bufs->transfer_buffer[i]) {
|
|
- usb_free_coherent(dev->udev,
|
|
|
|
|
|
+ usb_free_coherent(udev,
|
|
urb->transfer_buffer_length,
|
|
urb->transfer_buffer_length,
|
|
usb_bufs->transfer_buffer[i],
|
|
usb_bufs->transfer_buffer[i],
|
|
urb->transfer_dma);
|
|
urb->transfer_dma);
|
|
@@ -870,9 +873,10 @@ int em28xx_alloc_urbs(struct em28xx *dev, enum em28xx_mode mode, int xfer_bulk,
|
|
int num_bufs, int max_pkt_size, int packet_multiplier)
|
|
int num_bufs, int max_pkt_size, int packet_multiplier)
|
|
{
|
|
{
|
|
struct em28xx_usb_bufs *usb_bufs;
|
|
struct em28xx_usb_bufs *usb_bufs;
|
|
|
|
+ struct urb *urb;
|
|
|
|
+ struct usb_device *udev = interface_to_usbdev(dev->intf);
|
|
int i;
|
|
int i;
|
|
int sb_size, pipe;
|
|
int sb_size, pipe;
|
|
- struct urb *urb;
|
|
|
|
int j, k;
|
|
int j, k;
|
|
|
|
|
|
em28xx_isocdbg("em28xx: called em28xx_alloc_isoc in mode %d\n", mode);
|
|
em28xx_isocdbg("em28xx: called em28xx_alloc_isoc in mode %d\n", mode);
|
|
@@ -937,7 +941,7 @@ int em28xx_alloc_urbs(struct em28xx *dev, enum em28xx_mode mode, int xfer_bulk,
|
|
}
|
|
}
|
|
usb_bufs->urb[i] = urb;
|
|
usb_bufs->urb[i] = urb;
|
|
|
|
|
|
- usb_bufs->transfer_buffer[i] = usb_alloc_coherent(dev->udev,
|
|
|
|
|
|
+ usb_bufs->transfer_buffer[i] = usb_alloc_coherent(udev,
|
|
sb_size, GFP_KERNEL, &urb->transfer_dma);
|
|
sb_size, GFP_KERNEL, &urb->transfer_dma);
|
|
if (!usb_bufs->transfer_buffer[i]) {
|
|
if (!usb_bufs->transfer_buffer[i]) {
|
|
dev_err(&dev->intf->dev,
|
|
dev_err(&dev->intf->dev,
|
|
@@ -950,20 +954,20 @@ int em28xx_alloc_urbs(struct em28xx *dev, enum em28xx_mode mode, int xfer_bulk,
|
|
memset(usb_bufs->transfer_buffer[i], 0, sb_size);
|
|
memset(usb_bufs->transfer_buffer[i], 0, sb_size);
|
|
|
|
|
|
if (xfer_bulk) { /* bulk */
|
|
if (xfer_bulk) { /* bulk */
|
|
- pipe = usb_rcvbulkpipe(dev->udev,
|
|
|
|
|
|
+ pipe = usb_rcvbulkpipe(udev,
|
|
mode == EM28XX_ANALOG_MODE ?
|
|
mode == EM28XX_ANALOG_MODE ?
|
|
dev->analog_ep_bulk :
|
|
dev->analog_ep_bulk :
|
|
dev->dvb_ep_bulk);
|
|
dev->dvb_ep_bulk);
|
|
- usb_fill_bulk_urb(urb, dev->udev, pipe,
|
|
|
|
|
|
+ usb_fill_bulk_urb(urb, udev, pipe,
|
|
usb_bufs->transfer_buffer[i], sb_size,
|
|
usb_bufs->transfer_buffer[i], sb_size,
|
|
em28xx_irq_callback, dev);
|
|
em28xx_irq_callback, dev);
|
|
urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
|
|
urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
|
|
} else { /* isoc */
|
|
} else { /* isoc */
|
|
- pipe = usb_rcvisocpipe(dev->udev,
|
|
|
|
|
|
+ pipe = usb_rcvisocpipe(udev,
|
|
mode == EM28XX_ANALOG_MODE ?
|
|
mode == EM28XX_ANALOG_MODE ?
|
|
dev->analog_ep_isoc :
|
|
dev->analog_ep_isoc :
|
|
dev->dvb_ep_isoc);
|
|
dev->dvb_ep_isoc);
|
|
- usb_fill_int_urb(urb, dev->udev, pipe,
|
|
|
|
|
|
+ usb_fill_int_urb(urb, udev, pipe,
|
|
usb_bufs->transfer_buffer[i], sb_size,
|
|
usb_bufs->transfer_buffer[i], sb_size,
|
|
em28xx_irq_callback, dev, 1);
|
|
em28xx_irq_callback, dev, 1);
|
|
urb->transfer_flags = URB_ISO_ASAP |
|
|
urb->transfer_flags = URB_ISO_ASAP |
|
|
@@ -995,6 +999,7 @@ int em28xx_init_usb_xfer(struct em28xx *dev, enum em28xx_mode mode,
|
|
struct em28xx_dmaqueue *dma_q = &dev->vidq;
|
|
struct em28xx_dmaqueue *dma_q = &dev->vidq;
|
|
struct em28xx_dmaqueue *vbi_dma_q = &dev->vbiq;
|
|
struct em28xx_dmaqueue *vbi_dma_q = &dev->vbiq;
|
|
struct em28xx_usb_bufs *usb_bufs;
|
|
struct em28xx_usb_bufs *usb_bufs;
|
|
|
|
+ struct usb_device *udev = interface_to_usbdev(dev->intf);
|
|
int i;
|
|
int i;
|
|
int rc;
|
|
int rc;
|
|
int alloc;
|
|
int alloc;
|
|
@@ -1021,7 +1026,7 @@ int em28xx_init_usb_xfer(struct em28xx *dev, enum em28xx_mode mode,
|
|
}
|
|
}
|
|
|
|
|
|
if (xfer_bulk) {
|
|
if (xfer_bulk) {
|
|
- rc = usb_clear_halt(dev->udev, usb_bufs->urb[0]->pipe);
|
|
|
|
|
|
+ rc = usb_clear_halt(udev, usb_bufs->urb[0]->pipe);
|
|
if (rc < 0) {
|
|
if (rc < 0) {
|
|
dev_err(&dev->intf->dev,
|
|
dev_err(&dev->intf->dev,
|
|
"failed to clear USB bulk endpoint stall/halt condition (error=%i)\n",
|
|
"failed to clear USB bulk endpoint stall/halt condition (error=%i)\n",
|