diff options
author | Malcolm Priestley <tvboxspy@gmail.com> | 2011-12-15 16:43:44 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-01-06 10:14:54 -0500 |
commit | f0e07d7658a81bc185b8ba58f062c16b79ac0e2b (patch) | |
tree | 2a39452aea9a3bc60a62311c447ead7b55e647c6 /drivers | |
parent | 6a2329ad1cb80b158a75bbf1901b86dc2deb88ee (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.c | 9 |
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) |