aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMalcolm Priestley <tvboxspy@gmail.com>2011-12-15 16:43:44 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-01-06 10:14:54 -0500
commitf0e07d7658a81bc185b8ba58f062c16b79ac0e2b (patch)
tree2a39452aea9a3bc60a62311c447ead7b55e647c6 /drivers
parent6a2329ad1cb80b158a75bbf1901b86dc2deb88ee (diff)
[media] it913x changed firmware loader for chip version 2 types
On Thu, 2011-12-15 at 16:42 +0000, Malcolm Priestley wrote: > > [ 1103.536156] it913x: Chip Version=ec Chip Type=5830 > > [ 1104.336178] it913x: Dual mode=92 Remote=92 Tuner Type=92 > > [ 1106.248116] dvb-usb: found a 'ITE 9135(9006) Generic' in cold state, > > will try to load a firmware > > [ 1106.253773] dvb-usb: downloading firmware from file > > 'dvb-usb-it9135-02.fw' > > [ 1106.452123] it913x: FRM Starting Firmware Download > > [ 1130.756039] it913x: FRM Firmware Download Failed (ffffff92) > > [ 1130.956168] it913x: Chip Version=79 Chip Type=5823 > > [ 1131.592192] it913x: DEV it913x Error > > [ 1131.592271] usbcore: registered new interface driver it913x > > > > No frontend is generated anyway. > > Looks like the the firmware is not at all compatible with your device. > > Have you applied the patch cleanly to the latest media_build? > > These appear to be new version of the 9006. A supplier is sending me one > of these devices. > > As a last resort see if the device works with dvb-usb-it9137-01.fw > > You will have force to use this firmware > dvb-usb-it913x firmware=1 Here is a modified firmware loader for version 2 types. The firmware must be as in original ./dvb_get_firmware it9135 dd if=dvb-usb-it9135.fw ibs=1 skip=12866 count=5817 of=dvb-usb-it9135-02.fw Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/dvb/dvb-usb/it913x.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/media/dvb/dvb-usb/it913x.c b/drivers/media/dvb/dvb-usb/it913x.c
index eb6a1bb6bffc..654aa7ceddf9 100644
--- a/drivers/media/dvb/dvb-usb/it913x.c
+++ b/drivers/media/dvb/dvb-usb/it913x.c
@@ -558,7 +558,7 @@ static int it913x_download_firmware(struct usb_device *udev,
558 const struct firmware *fw) 558 const struct firmware *fw)
559{ 559{
560 int ret = 0, i = 0, pos = 0; 560 int ret = 0, i = 0, pos = 0;
561 u8 packet_size; 561 u8 packet_size, min_pkt;
562 u8 *fw_data; 562 u8 *fw_data;
563 563
564 ret = it913x_wr_reg(udev, DEV_0, I2C_CLK, I2C_CLK_100); 564 ret = it913x_wr_reg(udev, DEV_0, I2C_CLK, I2C_CLK_100);
@@ -570,11 +570,16 @@ static int it913x_download_firmware(struct usb_device *udev,
570 /* The firmware must start with 03 XX 00 */ 570 /* The firmware must start with 03 XX 00 */
571 /* and be the extact firmware length */ 571 /* and be the extact firmware length */
572 572
573 if (it913x_config.chip_ver == 2)
574 min_pkt = 0x11;
575 else
576 min_pkt = 0x19;
577
573 while (i <= fw->size) { 578 while (i <= fw->size) {
574 if (((fw->data[i] == 0x3) && (fw->data[i + 2] == 0x0)) 579 if (((fw->data[i] == 0x3) && (fw->data[i + 2] == 0x0))
575 || (i == fw->size)) { 580 || (i == fw->size)) {
576 packet_size = i - pos; 581 packet_size = i - pos;
577 if ((packet_size > 0x19) || (i == fw->size)) { 582 if ((packet_size > min_pkt) || (i == fw->size)) {
578 fw_data = (u8 *)(fw->data + pos); 583 fw_data = (u8 *)(fw->data + pos);
579 pos += packet_size; 584 pos += packet_size;
580 if (packet_size > 0) 585 if (packet_size > 0)