Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: alps_tdlb7 broken in current dvb-kernel



Hi,

On Friday 24 September 2004 16:53, Juri Haberland wrote:
> Hi,
>
> I'm resending this, because I didn't get any answer from a developer.
>
> In current dvb-kernel the alps_tdlb7 doesn't work anymore. It loads
> without a problem, but tuning fails:
>
> # /usr/src/DVB/apps/szap/tzap -a0 -r K44
> using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
> tuning to 658000000 Hz
> video pid 0x0181, audio pid 0x0182
> status 00 | signal 0000 | snr b7fd | ber 00000000 | unc 00000000 |
> status 16 | signal 0000 | snr b7fd | ber 00000000 | unc 00000000 |
> FE_HAS_LOCK
> status 00 | signal 0000 | snr b7fd | ber 00000000 | unc 00000000 |
> status 16 | signal 0000 | snr b7fd | ber 00000000 | unc 00000000 |
> FE_HAS_LOCK
> status 00 | signal 0000 | snr b7fd | ber 00000000 | unc 00000000 |
>
> It seems that the transition to kernel-i2c is responsible for this
> problem - I even found a corresponding entry from Michael Hunold in the
>
> cvs commit log:
> > - convert to kernel i2c
> > - firmware upload works, but access to the sp5659 tuner module fails
> > (so no tuning) (maybe my card is broken... 8-(
>
> Can any of the developers look into this?
>
> Thanks,
> Juri

The patch below should make it work. Maybe someone can commit it also to cvs.

Greetings
Juergen

--------------------------------------------------------------------------------------

--- alps_tdlb7.c_org 2004-09-26 14:00:55.000000000 +0200
+++ alps_tdlb7.c 2004-09-26 14:25:06.000000000 +0200
@@ -24,7 +24,7 @@
  * "<kerneldir>/Documentation/dvb/get_dvb_firmware alps_tdlb7" to
  * download/extract it, and then copy it to /usr/lib/hotplug/firmware.
  */ 
-#define SP887X_DEFAULT_FIRMWARE "dvb-fe-tdlb7-2.16.fw"
+#define SP8870_DEFAULT_FIRMWARE "dvb-fe-tdlb7.fw"
 
 #include <linux/init.h>
 #include <linux/module.h>
@@ -51,7 +51,7 @@
 /* firmware size for sp8870 */
 #define SP8870_FIRMWARE_SIZE 16382
 
-/* starting point for firmware in file 'Sc_main.mc' */
+/* starting point for firmware in file */
 #define SP8870_FIRMWARE_OFFSET 0x0A
 
 static struct dvb_frontend_info tdlb7_info = {
@@ -186,8 +186,6 @@
   }
   fw_pos += tx_len;
  }
-
- dprintk ("%s: done!\n", __FUNCTION__);
  return 0;
 };
 
@@ -581,18 +579,14 @@
 
         case FE_INIT:
   sp8870_wake_up(i2c);
-  if (fe->data == NULL) {  // first time initialisation...
-   fe->data = (void*) ~0;
-   sp8870_init (i2c);
-  }
   break;
 
  case FE_GET_TUNE_SETTINGS:
  {
          struct dvb_frontend_tune_settings* fesettings = (struct 
dvb_frontend_tune_settings*) arg;
-         fesettings->min_delay_ms = 150;
-         fesettings->step_size = 166667;
-         fesettings->max_drift = 166667*2;
+         fesettings->min_delay_ms = 350;
+         fesettings->step_size = 0; //166667;
+         fesettings->max_drift = 0; //166667*2;
          return 0;
  }     
      
@@ -648,23 +642,27 @@
 
  /* request the firmware, this will block until someone uploads it */
  printk("tdlb7: waiting for firmware upload...\n");
- ret = request_firmware(&fw, SP887X_DEFAULT_FIRMWARE, &client->dev);
+ ret = request_firmware(&fw, SP8870_DEFAULT_FIRMWARE, &client->dev);
  if (ret) {
   printk("tdlb7: no firmware upload (timeout or file not found?)\n");
   goto out;
  }
 
+ printk ("tdlb7: firmware upload...\n");
  ret = sp8870_firmware_upload(adapter, fw);
  if (ret) {
   printk("tdlb7: writing firmware to device failed\n");
   release_firmware(fw);
   goto out;
  }
+ printk("tdlb7: firmware upload done\n");
 
+ sp8870_init (adapter);
+ 
  ret = dvb_register_frontend(tdlb7_ioctl, state->dvb, state,
      &tdlb7_info, THIS_MODULE);
  if (ret) {
-  printk("tdlb7: registering frontend to dvb-core failed.\n");
+  printk("tdlb7: registering frontend to dvb-core failed\n");
   release_firmware(fw);
   goto out;
  }





Home | Main Index | Thread Index