static int lme2510_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct usb_device *udev = interface_to_usbdev(intf); int ret = 0; usb_reset_configuration(udev); usb_set_interface(udev, intf->cur_altsetting->desc.bInterfaceNumber, 1); if (udev->speed != USB_SPEED_HIGH) { ret = usb_reset_device(udev); info("DEV Failed to connect in HIGH SPEED mode"); return -ENODEV; } lme_firmware_switch(udev, 0); if (0 == dvb_usb_device_init(intf, &lme2510_properties, THIS_MODULE, NULL, adapter_nr)) { info("DEV registering device driver"); return 0; } if (0 == dvb_usb_device_init(intf, &lme2510c_properties, THIS_MODULE, NULL, adapter_nr)) { info("DEV registering device driver"); return 0; } info("DEV lme2510 Error"); return -ENODEV; }
static int ttusb2_probe(struct usb_interface *intf, const struct usb_device_id *id) { if (0 == dvb_usb_device_init(intf, &ttusb2_properties, THIS_MODULE, NULL, adapter_nr) || 0 == dvb_usb_device_init(intf, &ttusb2_properties_s2400, THIS_MODULE, NULL, adapter_nr)) return 0; return -ENODEV; }
static int gl861_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct dvb_usb_device *d; struct usb_host_interface *alt; int ret; if (intf->num_altsetting < 2) return -ENODEV; ret = dvb_usb_device_init(intf, &gl861_properties, THIS_MODULE, &d, adapter_nr); if (ret == 0) { alt = usb_altnum_to_altsetting(intf, 0); if (alt == NULL) { deb_rc("not alt found!\n"); return -ENODEV; } ret = usb_set_interface(d->udev, alt->desc.bInterfaceNumber, alt->desc.bAlternateSetting); } return ret; }
static int m920x_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct dvb_usb_device *d; struct usb_host_interface *alt; int ret; if ((ret = dvb_usb_device_init(intf, &megasky_properties, THIS_MODULE, &d)) == 0) { deb_rc("probed!\n"); alt = usb_altnum_to_altsetting(intf, 1); if (alt == NULL) { deb_rc("not alt found!\n"); return -ENODEV; } ret = usb_set_interface(d->udev, alt->desc.bInterfaceNumber, alt->desc.bAlternateSetting); if (ret < 0) return ret; deb_rc("Changed to alternate setting!\n"); if ((ret = m9206_rc_init(d->udev)) != 0) return ret; } return ret; }
static int anysee_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct dvb_usb_device *d; struct usb_host_interface *alt; int ret; /* There is one interface with two alternate settings. Alternate setting 0 is for bulk transfer. Alternate setting 1 is for isochronous transfer. We use bulk transfer (alternate setting 0). */ if (intf->num_altsetting < 1) return -ENODEV; ret = dvb_usb_device_init(intf, &anysee_properties, THIS_MODULE, &d, adapter_nr); if (ret) return ret; alt = usb_altnum_to_altsetting(intf, 0); if (alt == NULL) { deb_info("%s: no alt found!\n", __func__); return -ENODEV; } ret = usb_set_interface(d->udev, alt->desc.bInterfaceNumber, alt->desc.bAlternateSetting); if (ret) return ret; if (d) ret = anysee_init(d); return ret; }
static int dtv5100_probe(struct usb_interface *intf, const struct usb_device_id *id) { int i, ret; struct usb_device *udev = interface_to_usbdev(intf); /* */ for (i = 0; dtv5100_init[i].request; i++) { ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), dtv5100_init[i].request, USB_TYPE_VENDOR | USB_DIR_OUT, dtv5100_init[i].value, dtv5100_init[i].index, NULL, 0, DTV5100_USB_TIMEOUT); if (ret) return ret; } ret = dvb_usb_device_init(intf, &dtv5100_properties, THIS_MODULE, NULL, adapter_nr); if (ret) return ret; return 0; }
static int friio_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct dvb_usb_device *d; struct usb_host_interface *alt; int ret; if (intf->num_altsetting < GL861_ALTSETTING_COUNT) return -ENODEV; alt = usb_altnum_to_altsetting(intf, FRIIO_BULK_ALTSETTING); if (alt == NULL) { deb_rc("not alt found!\n"); return -ENODEV; } ret = usb_set_interface(interface_to_usbdev(intf), alt->desc.bInterfaceNumber, alt->desc.bAlternateSetting); if (ret != 0) { deb_rc("failed to set alt-setting!\n"); return ret; } ret = dvb_usb_device_init(intf, &friio_properties, THIS_MODULE, &d, adapter_nr); if (ret == 0) friio_streaming_ctrl(&d->adapter[0], 1); return ret; }
static int af9015_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) { int ret = 0; struct dvb_usb_device *d = NULL; struct usb_device *udev = interface_to_usbdev(intf); u8 i; deb_info("%s: interface:%d\n", __func__, intf->cur_altsetting->desc.bInterfaceNumber); /* interface 0 is used by DVB-T receiver and interface 1 is for remote controller (HID) */ if (intf->cur_altsetting->desc.bInterfaceNumber == 0) { ret = af9015_read_config(udev); if (ret) return ret; for (i = 0; i < af9015_properties_count; i++) { ret = dvb_usb_device_init(intf, &af9015_properties[i], THIS_MODULE, &d, adapter_nr); if (!ret) break; if (ret != -ENODEV) return ret; } if (ret) return ret; if (d) ret = af9015_init(d); } return ret; }
static int vp702x_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct dvb_usb_device *d; struct vp702x_device_state *st; int ret; ret = dvb_usb_device_init(intf, &vp702x_properties, THIS_MODULE, &d, adapter_nr); if (ret) goto out; st = d->priv; st->buf_len = 16; st->buf = kmalloc(st->buf_len, GFP_KERNEL); if (!st->buf) { ret = -ENOMEM; dvb_usb_device_exit(intf); goto out; } mutex_init(&st->buf_mutex); out: return ret; }
static int au6610_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct dvb_usb_device *d; struct usb_host_interface *alt; int ret; if (intf->num_altsetting < AU6610_ALTSETTING_COUNT) return -ENODEV; ret = dvb_usb_device_init(intf, &au6610_properties, THIS_MODULE, &d, adapter_nr); if (ret == 0) { alt = usb_altnum_to_altsetting(intf, AU6610_ALTSETTING); if (alt == NULL) { deb_info("%s: no alt found!\n", __func__); return -ENODEV; } ret = usb_set_interface(d->udev, alt->desc.bInterfaceNumber, alt->desc.bAlternateSetting); } return ret; }
static int umt_probe(struct usb_interface *intf, const struct usb_device_id *id) { if (0 == dvb_usb_device_init(intf, &umt_properties, THIS_MODULE, NULL, adapter_nr)) return 0; return -EINVAL; }
//#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) static int rtl2832u_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) { if ( ( 0== dvb_usb_device_init(intf,&rtl2832u_1st_properties,THIS_MODULE,NULL,adapter_nr) )|| ( 0== dvb_usb_device_init(intf,&rtl2832u_2nd_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_3th_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_4th_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_5th_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_6th_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_7th_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_8th_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_9th_properties,THIS_MODULE,NULL,adapter_nr) ) ) return 0; return -ENODEV; }
static int lme2510_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct usb_device *udev = usb_get_dev(interface_to_usbdev(intf)); if (usb_set_interface(udev,0,1) < 0) err("set interface to alts=1 failed"); if (0 == dvb_usb_device_init(intf, &lme2510_properties, THIS_MODULE, NULL, adapter_nr)) return 0; return -ENODEV; }
//#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) static int rtl2832u_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) { /* Thats avoids bugs with 2 instances of driver that operate same hardware */ /* https://gitorious.org/rtl2832/rtl2832/commit/5495b3fda9e2c3bf4feef5d5751f6f2343380ea9 */ if (!intf->altsetting->desc.bNumEndpoints) return -ENODEV; if ( ( 0== dvb_usb_device_init(intf,&rtl2832u_1st_properties,THIS_MODULE,NULL,adapter_nr) )|| ( 0== dvb_usb_device_init(intf,&rtl2832u_2nd_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_3th_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_4th_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_5th_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_6th_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_7th_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_8th_properties,THIS_MODULE,NULL,adapter_nr) ) || ( 0== dvb_usb_device_init(intf,&rtl2832u_9th_properties,THIS_MODULE,NULL,adapter_nr) ) ) return 0; return -ENODEV; }
static int digitv_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct dvb_usb_device *d; int ret; if ((ret = dvb_usb_device_init(intf,&digitv_properties,THIS_MODULE,&d)) == 0) { u8 b[4] = { 0 }; b[0] = 1; digitv_ctrl_msg(d,USB_WRITE_REMOTE_TYPE,0,b,4,NULL,0); b[0] = 0; digitv_ctrl_msg(d,USB_WRITE_REMOTE,0,b,4,NULL,0); } return ret; }
static int vp7045_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct dvb_usb_device *d; int ret = dvb_usb_device_init(intf, &vp7045_properties, THIS_MODULE, &d, adapter_nr); if (ret) return ret; d->priv = kmalloc(20, GFP_KERNEL); if (!d->priv) { dvb_usb_device_exit(intf); return -ENOMEM; } return ret; }
static int ec168_probe(struct usb_interface *intf, const struct usb_device_id *id) { int ret; deb_info("%s: interface:%d\n", __func__, intf->cur_altsetting->desc.bInterfaceNumber); ret = dvb_usb_device_init(intf, &ec168_properties, THIS_MODULE, NULL, adapter_nr); if (ret) goto error; return ret; error: deb_info("%s: failed:%d\n", __func__, ret); return ret; }
static int cinergyt2_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct dvb_usb_device *d; struct cinergyt2_state *st; int ret; ret = dvb_usb_device_init(intf, &cinergyt2_properties, THIS_MODULE, &d, adapter_nr); if (ret < 0) return ret; st = d->priv; mutex_init(&st->data_mutex); return 0; }
static int digitv_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct dvb_usb_device *d; int ret; if ((ret = dvb_usb_device_init(intf,&digitv_properties,THIS_MODULE,&d)) == 0) { u8 b[4] = { 0 }; if (d != NULL) { /* do that only when the firmware is loaded */ b[0] = 1; digitv_ctrl_msg(d,USB_WRITE_REMOTE_TYPE,0,b,4,NULL,0); b[0] = 0; digitv_ctrl_msg(d,USB_WRITE_REMOTE,0,b,4,NULL,0); } } return ret; }
static int rtl28xxu_probe(struct usb_interface *intf, const struct usb_device_id *id) { int ret, i; int properties_count = ARRAY_SIZE(rtl28xxu_properties); struct dvb_usb_device *d; deb_info("%s: interface=%d\n", __func__, intf->cur_altsetting->desc.bInterfaceNumber); if (intf->cur_altsetting->desc.bInterfaceNumber != 0) return 0; for (i = 0; i < properties_count; i++) { ret = dvb_usb_device_init(intf, &rtl28xxu_properties[i], THIS_MODULE, &d, adapter_nr); if (ret == 0 || ret != -ENODEV) break; } if (ret) goto err; ret = rtl2831_wr_reg(d, USB_SYSCTL_0, 0x09); if (ret) goto err; ret = rtl2831_wr_regs(d, USB_EPA_MAXPKT, "\x00\x02\x00\x00", 4); if (ret) goto err; ret = rtl2831_wr_regs(d, USB_EPA_FIFO_CFG, "\x14\x00\x00\x00", 4); if (ret) goto err; return ret; err: deb_info("%s: failed=%d\n", __func__, ret); return ret; }
static int anysee_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct dvb_usb_device *d; struct usb_host_interface *alt; int ret; /* There is one interface with two alternate settings. Alternate setting 0 is for bulk transfer. Alternate setting 1 is for isochronous transfer. We use bulk transfer (alternate setting 0). */ if (intf->num_altsetting < 1) return -ENODEV; /* * Anysee is always warm (its USB-bridge, Cypress FX2, uploads * firmware from eeprom). If dvb_usb_device_init() succeeds that * means d is a valid pointer. */ ret = dvb_usb_device_init(intf, &anysee_properties, THIS_MODULE, &d, adapter_nr); if (ret) return ret; alt = usb_altnum_to_altsetting(intf, 0); if (alt == NULL) { deb_info("%s: no alt found!\n", __func__); return -ENODEV; } ret = usb_set_interface(d->udev, alt->desc.bInterfaceNumber, alt->desc.bAlternateSetting); if (ret) return ret; return anysee_init(d); }
static int rtl28xxu_probe(struct usb_interface *intf, const struct usb_device_id *id) { int ret, i; u8 val; int properties_count = ARRAY_SIZE(rtl28xxu_properties); struct dvb_usb_device *d; struct usb_device *udev; bool found; deb_info("%s: interface=%d\n", __func__, intf->cur_altsetting->desc.bInterfaceNumber); if (intf->cur_altsetting->desc.bInterfaceNumber != 0) return 0; /* Dynamic USB ID support. Replaces first device ID with current one .*/ udev = interface_to_usbdev(intf); for (i = 0, found = false; i < ARRAY_SIZE(rtl28xxu_table) - 1; i++) { if (rtl28xxu_table[i].idVendor == le16_to_cpu(udev->descriptor.idVendor) && rtl28xxu_table[i].idProduct == le16_to_cpu(udev->descriptor.idProduct)) { found = true; break; } } if (!found) { deb_info("%s: using dynamic ID %04x:%04x\n", __func__, le16_to_cpu(udev->descriptor.idVendor), le16_to_cpu(udev->descriptor.idProduct)); rtl28xxu_properties[0].devices[0].warm_ids[0]->idVendor = le16_to_cpu(udev->descriptor.idVendor); rtl28xxu_properties[0].devices[0].warm_ids[0]->idProduct = le16_to_cpu(udev->descriptor.idProduct); } for (i = 0; i < properties_count; i++) { ret = dvb_usb_device_init(intf, &rtl28xxu_properties[i], THIS_MODULE, &d, adapter_nr); if (ret == 0 || ret != -ENODEV) break; } if (ret) goto err; /* init USB endpoints */ ret = rtl28xx_rd_reg(d, USB_SYSCTL_0, &val); if (ret) goto err; /* enable DMA and Full Packet Mode*/ val |= 0x09; ret = rtl28xx_wr_reg(d, USB_SYSCTL_0, val); if (ret) goto err; /* set EPA maximum packet size to 0x0200 */ ret = rtl28xx_wr_regs(d, USB_EPA_MAXPKT, "\x00\x02\x00\x00", 4); if (ret) goto err; /* change EPA FIFO length */ ret = rtl28xx_wr_regs(d, USB_EPA_FIFO_CFG, "\x14\x00\x00\x00", 4); if (ret) goto err; return ret; err: deb_info("%s: failed=%d\n", __func__, ret); return ret; }
static int dibusb_mc_probe(struct usb_interface *intf, const struct usb_device_id *id) { return dvb_usb_device_init(intf,&dibusb_mc_properties,THIS_MODULE); }
static int vp702x_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) { return dvb_usb_device_init(intf, &vp702x_properties, THIS_MODULE, NULL, adapter_nr); }
static int m920x_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct dvb_usb_device *d = NULL; int ret; struct m920x_inits *rc_init_seq = NULL; int bInterfaceNumber = intf->cur_altsetting->desc.bInterfaceNumber; deb("Probing for m920x device at interface %d\n", bInterfaceNumber); if (bInterfaceNumber == 0) { /* Single-tuner device, or first interface on * multi-tuner device */ ret = dvb_usb_device_init(intf, &megasky_properties, THIS_MODULE, &d, adapter_nr); if (ret == 0) { rc_init_seq = megasky_rc_init; goto found; } ret = dvb_usb_device_init(intf, &digivox_mini_ii_properties, THIS_MODULE, &d, adapter_nr); if (ret == 0) { /* No remote control, so no rc_init_seq */ goto found; } /* This configures both tuners on the TV Walker Twin */ ret = dvb_usb_device_init(intf, &tvwalkertwin_properties, THIS_MODULE, &d, adapter_nr); if (ret == 0) { rc_init_seq = tvwalkertwin_rc_init; goto found; } ret = dvb_usb_device_init(intf, &dposh_properties, THIS_MODULE, &d, adapter_nr); if (ret == 0) { /* Remote controller not supported yet. */ goto found; } ret = dvb_usb_device_init(intf, &pinnacle_pctv310e_properties, THIS_MODULE, &d, adapter_nr); if (ret == 0) { rc_init_seq = pinnacle310e_init; goto found; } return ret; } else { /* Another interface on a multi-tuner device */ /* The LifeView TV Walker Twin gets here, but struct * tvwalkertwin_properties already configured both * tuners, so there is nothing for us to do here */ } found: if ((ret = m920x_init_ep(intf)) < 0) return ret; if (d && (ret = m920x_init(d, rc_init_seq)) != 0) return ret; return ret; }
static int ttusb2_probe(struct usb_interface *intf, const struct usb_device_id *id) { return dvb_usb_device_init(intf,&ttusb2_properties,THIS_MODULE,NULL); }