Re: mt2032 tuner initialization

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



Here is a context diff against tuner.c instead of bttv-cards.c.

--
-Torgeir
*** tuner.c-orig	Mon Oct  1 22:17:35 2001
--- tuner.c	Wed Oct  3 12:56:52 2001
***************
*** 273,278 ****
--- 273,328 ----
  }
  #endif
  
+ void mt2032_init(struct i2c_client *c)
+ {
+         unsigned char buf[21];
+         int ret;
+         unsigned char xok=0;
+         unsigned char xogc=0;
+         int loopkill = 10;
+ 
+         buf[0]=0;
+         ret=i2c_master_send(c,buf,1);
+         i2c_master_recv(c,buf,21);
+         buf[3]=0xff;
+         buf[4]=0x0f;
+         buf[5]=0x1f;
+         buf[7]=0xe4;
+         buf[8]=0x8f;
+         buf[9]=0xc3;
+         buf[10]=0x4e;
+         buf[11]=0xec;
+         buf[14]=0x32;
+         buf[0]=0;
+         ret=i2c_master_send(c,buf,14);
+         if (ret!=14)
+                 dprintk("mt2032_init failed with %d\n",ret);
+ 
+         // adjust xogc register
+         do {
+                 udelay(10);
+                 --loopkill;
+                 buf[0]=0x0e;
+                 i2c_master_send(c,buf,1);
+                 i2c_master_recv(c,buf,1);
+                 xok=buf[0]&0x01;
+                 if (xok == 1) break;
+ 
+                 buf[0]=0x07;
+                 i2c_master_send(c,buf,1);
+                 i2c_master_recv(c,buf,1);
+                 xogc=buf[0];
+                 if (xogc == 4) break;
+ 
+                 // decrement xogc and set, then loop
+                 buf[0]=0x07;
+                 buf[1]=(xogc & 0xf8) | ((xogc&0x07)-1);
+                 ret=i2c_master_send(c,buf,2);
+                 if (ret!=2)
+                         dprintk("mt2032_init failed with %d\n",ret);
+         } while (xok != 1 && loopkill > 0);
+ }
+ 
  int mt2032_compute_freq(int rfin, int if1, int if2, int spectrum_from,
                          int spectrum_to, unsigned char *buf) //all in Hz
  {
***************
*** 627,632 ****
--- 677,684 ----
                  t->type = -1;
          }
          i2c_attach_client(client);
+         if (t->type == TUNER_MT2032)
+                 mt2032_init(client);
          MOD_INC_USE_COUNT;
  
          return 0;
***************
*** 676,681 ****
--- 728,735 ----
                  dprintk("tuner: type set to %d (%s)\n",
                          t->type,tuners[t->type].name);
                  strncpy(client->name, tuners[t->type].name, sizeof(client->name));
+                 if (t->type == TUNER_MT2032)
+                         mt2032_init(client);
                  break;
          case AUDC_SET_RADIO:
                  t->radio = 1;

[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux