Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 294914
b: refs/heads/master
c: 3691a0d
h: refs/heads/master
v: v3
  • Loading branch information
Malcolm Priestley authored and Mauro Carvalho Chehab committed Feb 14, 2012
1 parent 89773ef commit 83af157
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 23 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 65dd3b699f38b9252e5e1aa2ad7fb37ef9c61f37
refs/heads/master: 3691a0dd3a3e53d4b74c7a412f7e58929b65584e
104 changes: 82 additions & 22 deletions trunk/drivers/media/dvb/dvb-usb/it913x.c
Original file line number Diff line number Diff line change
Expand Up @@ -429,24 +429,74 @@ static int ite_firmware_select(struct usb_device *udev,
return 0;
}

static void it913x_select_remote(struct usb_device *udev,
struct dvb_usb_device_properties *props)
{
switch (le16_to_cpu(udev->descriptor.idProduct)) {
case USB_PID_ITETECH_IT9135_9005:
props->rc.core.rc_codes = RC_MAP_IT913X_V2;
return;
default:
props->rc.core.rc_codes = RC_MAP_IT913X_V1;
}
return;
}

#define TS_MPEG_PKT_SIZE 188
#define EP_LOW 21
#define TS_BUFFER_SIZE_PID (EP_LOW*TS_MPEG_PKT_SIZE)
#define EP_HIGH 348
#define TS_BUFFER_SIZE_MAX (EP_HIGH*TS_MPEG_PKT_SIZE)

static int it913x_identify_state(struct usb_device *udev,
struct dvb_usb_device_properties *props,
struct dvb_usb_device_description **desc,
int *cold)
static int it913x_select_config(struct usb_device *udev,
struct dvb_usb_device_properties *props)
{
int ret = 0, firm_no;
u8 reg, remote;
int ret = 0, reg;
bool proprietary_ir = false;

firm_no = it913x_return_status(udev);
if (it913x_config.chip_ver == 0x02
&& it913x_config.chip_type == 0x9135)
reg = it913x_read_reg(udev, 0x461d);
else
reg = it913x_read_reg(udev, 0x461b);

if (reg < 0)
return reg;

if (reg == 0) {
it913x_config.dual_mode = 0;
it913x_config.tuner_id_0 = IT9135_38;
proprietary_ir = true;
} else {
/* TS mode */
reg = it913x_read_reg(udev, 0x49c5);
if (reg < 0)
return reg;
it913x_config.dual_mode = reg;

/* IR mode type */
reg = it913x_read_reg(udev, 0x49ac);
if (reg < 0)
return reg;
if (reg == 5) {
info("Remote propriety (raw) mode");
proprietary_ir = true;
} else if (reg == 1) {
info("Remote HID mode NOT SUPPORTED");
proprietary_ir = false;
props->rc.core.rc_codes = NULL;
} else
props->rc.core.rc_codes = NULL;

/* Tuner_id */
reg = it913x_read_reg(udev, 0x49d0);
if (reg < 0)
return reg;
it913x_config.tuner_id_0 = reg;
}

/* checnk for dual mode */
it913x_config.dual_mode = it913x_read_reg(udev, 0x49c5);
if (proprietary_ir)
it913x_select_remote(udev, props);

if (udev->speed != USB_SPEED_HIGH) {
props->adapter[0].fe[0].pid_filter_count = 5;
Expand All @@ -461,17 +511,6 @@ static int it913x_identify_state(struct usb_device *udev,
if(props->adapter[0].fe[0].pid_filter_count == 5)
props->adapter[0].fe[0].pid_filter_count = 31;

/* TODO different remotes */
remote = it913x_read_reg(udev, 0x49ac); /* Remote */
if (remote == 0)
props->rc.core.rc_codes = NULL;

/* TODO at the moment tuner_id is always assigned to 0x38 */
it913x_config.tuner_id_0 = it913x_read_reg(udev, 0x49d0);

info("Dual mode=%x Remote=%x Tuner Type=%x", it913x_config.dual_mode
, remote, it913x_config.tuner_id_0);

/* Select Stream Buffer Size and pid filter option*/
if (pid_filter) {
props->adapter[0].fe[0].stream.u.bulk.buffersize =
Expand All @@ -492,8 +531,29 @@ static int it913x_identify_state(struct usb_device *udev,
} else
props->num_adapters = 1;

info("Dual mode=%x Tuner Type=%x", it913x_config.dual_mode,
it913x_config.tuner_id_0);

ret = ite_firmware_select(udev, props);

return ret;
}

static int it913x_identify_state(struct usb_device *udev,
struct dvb_usb_device_properties *props,
struct dvb_usb_device_description **desc,
int *cold)
{
int ret = 0, firm_no;
u8 reg;

firm_no = it913x_return_status(udev);

/* Read and select config */
ret = it913x_select_config(udev, props);
if (ret < 0)
return ret;

if (firm_no > 0) {
*cold = 0;
return 0;
Expand Down Expand Up @@ -791,7 +851,7 @@ static struct dvb_usb_device_properties it913x_properties = {
.rc_query = it913x_rc_query,
.rc_interval = IT913X_POLL,
.allowed_protos = RC_TYPE_NEC,
.rc_codes = RC_MAP_MSI_DIGIVOX_III,
.rc_codes = RC_MAP_IT913X_V1,
},
.i2c_algo = &it913x_i2c_algo,
.num_device_descs = 5,
Expand Down Expand Up @@ -825,5 +885,5 @@ module_usb_driver(it913x_driver);

MODULE_AUTHOR("Malcolm Priestley <tvboxspy@gmail.com>");
MODULE_DESCRIPTION("it913x USB 2 Driver");
MODULE_VERSION("1.24");
MODULE_VERSION("1.25");
MODULE_LICENSE("GPL");

0 comments on commit 83af157

Please sign in to comment.