diff options
author | Malcolm Priestley <tvboxspy@gmail.com> | 2011-11-06 08:24:30 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-11-08 07:45:19 -0500 |
commit | 3822c7cef7b422833f1b58949a01bd87b822d280 (patch) | |
tree | 3571d74d19bd82616b0a3908367db6c8fcb78ad9 | |
parent | 2da12fcbea0a2faa94a5d4e58eb2f0f79f9739db (diff) |
[media] it913x ver 1.09 support for USB 1 devices (IT9135)
IT9135 devices do support USB 1.
Support added with restricton on pid count to 5.
IT9137 devices wil not connect in USB 1 mode.
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/dvb/dvb-usb/it913x.c | 23 |
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 | ||
677 | MODULE_AUTHOR("Malcolm Priestley <tvboxspy@gmail.com>"); | 694 | MODULE_AUTHOR("Malcolm Priestley <tvboxspy@gmail.com>"); |
678 | MODULE_DESCRIPTION("it913x USB 2 Driver"); | 695 | MODULE_DESCRIPTION("it913x USB 2 Driver"); |
679 | MODULE_VERSION("1.08"); | 696 | MODULE_VERSION("1.09"); |
680 | MODULE_LICENSE("GPL"); | 697 | MODULE_LICENSE("GPL"); |