aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/dvb/dvb-usb/it913x.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/drivers/media/dvb/dvb-usb/it913x.c b/drivers/media/dvb/dvb-usb/it913x.c
index a541904851f5..9f582411e7d3 100644
--- a/drivers/media/dvb/dvb-usb/it913x.c
+++ b/drivers/media/dvb/dvb-usb/it913x.c
@@ -350,6 +350,19 @@ static int it913x_identify_state(struct usb_device *udev,
350 /* checnk for dual mode */ 350 /* checnk for dual mode */
351 it913x_config.dual_mode = it913x_read_reg(udev, 0x49c5); 351 it913x_config.dual_mode = it913x_read_reg(udev, 0x49c5);
352 352
353 if (udev->speed != USB_SPEED_HIGH) {
354 props->adapter[0].fe[0].pid_filter_count = 5;
355 info("USB 1 low speed mode - connect to USB 2 port");
356 if (pid_filter > 0)
357 pid_filter = 0;
358 if (it913x_config.dual_mode) {
359 it913x_config.dual_mode = 0;
360 info("Dual mode not supported in USB 1");
361 }
362 } else /* For replugging */
363 if(props->adapter[0].fe[0].pid_filter_count == 5)
364 props->adapter[0].fe[0].pid_filter_count = 31;
365
353 /* TODO different remotes */ 366 /* TODO different remotes */
354 remote = it913x_read_reg(udev, 0x49ac); /* Remote */ 367 remote = it913x_read_reg(udev, 0x49ac); /* Remote */
355 if (remote == 0) 368 if (remote == 0)
@@ -499,6 +512,10 @@ static int it913x_frontend_attach(struct dvb_usb_adapter *adap)
499 int ret = 0; 512 int ret = 0;
500 u8 adap_addr = I2C_BASE_ADDR + (adap->id << 5); 513 u8 adap_addr = I2C_BASE_ADDR + (adap->id << 5);
501 u16 ep_size = adap->props.fe[0].stream.u.bulk.buffersize; 514 u16 ep_size = adap->props.fe[0].stream.u.bulk.buffersize;
515 u8 pkt_size = 0x80;
516
517 if (adap->dev->udev->speed != USB_SPEED_HIGH)
518 pkt_size = 0x10;
502 519
503 it913x_config.adf = it913x_read_reg(udev, IO_MUX_POWER_CLK); 520 it913x_config.adf = it913x_read_reg(udev, IO_MUX_POWER_CLK);
504 521
@@ -514,13 +531,13 @@ static int it913x_frontend_attach(struct dvb_usb_adapter *adap)
514 ret = it913x_wr_reg(udev, DEV_0, EP4_TX_LEN_LSB, 531 ret = it913x_wr_reg(udev, DEV_0, EP4_TX_LEN_LSB,
515 ep_size & 0xff); 532 ep_size & 0xff);
516 ret = it913x_wr_reg(udev, DEV_0, EP4_TX_LEN_MSB, ep_size >> 8); 533 ret = it913x_wr_reg(udev, DEV_0, EP4_TX_LEN_MSB, ep_size >> 8);
517 ret = it913x_wr_reg(udev, DEV_0, EP4_MAX_PKT, 0x80); 534 ret = it913x_wr_reg(udev, DEV_0, EP4_MAX_PKT, pkt_size);
518 } else if (adap->id == 1 && adap->fe_adap[0].fe) { 535 } else if (adap->id == 1 && adap->fe_adap[0].fe) {
519 ret = it913x_wr_reg(udev, DEV_0, EP0_TX_EN, 0x6f); 536 ret = it913x_wr_reg(udev, DEV_0, EP0_TX_EN, 0x6f);
520 ret = it913x_wr_reg(udev, DEV_0, EP5_TX_LEN_LSB, 537 ret = it913x_wr_reg(udev, DEV_0, EP5_TX_LEN_LSB,
521 ep_size & 0xff); 538 ep_size & 0xff);
522 ret = it913x_wr_reg(udev, DEV_0, EP5_TX_LEN_MSB, ep_size >> 8); 539 ret = it913x_wr_reg(udev, DEV_0, EP5_TX_LEN_MSB, ep_size >> 8);
523 ret = it913x_wr_reg(udev, DEV_0, EP5_MAX_PKT, 0x80); 540 ret = it913x_wr_reg(udev, DEV_0, EP5_MAX_PKT, pkt_size);
524 ret = it913x_wr_reg(udev, DEV_0_DMOD, MP2IF2_EN, 0x1); 541 ret = it913x_wr_reg(udev, DEV_0_DMOD, MP2IF2_EN, 0x1);
525 ret = it913x_wr_reg(udev, DEV_1_DMOD, MP2IF_SERIAL, 0x1); 542 ret = it913x_wr_reg(udev, DEV_1_DMOD, MP2IF_SERIAL, 0x1);
526 ret = it913x_wr_reg(udev, DEV_1, TOP_HOSTB_SER_MODE, 0x1); 543 ret = it913x_wr_reg(udev, DEV_1, TOP_HOSTB_SER_MODE, 0x1);
@@ -676,5 +693,5 @@ module_exit(it913x_module_exit);
676 693
677MODULE_AUTHOR("Malcolm Priestley <tvboxspy@gmail.com>"); 694MODULE_AUTHOR("Malcolm Priestley <tvboxspy@gmail.com>");
678MODULE_DESCRIPTION("it913x USB 2 Driver"); 695MODULE_DESCRIPTION("it913x USB 2 Driver");
679MODULE_VERSION("1.08"); 696MODULE_VERSION("1.09");
680MODULE_LICENSE("GPL"); 697MODULE_LICENSE("GPL");