[linux-dvb] [PATCH] Nebula DVB-T with MT352 Frontend

David Johnson dj at david-web.co.uk
Fri Aug 5 16:14:55 CEST 2005


On Thursday 04 August 2005 14:03, Johannes Stezenbach wrote:
>
> For the Nebula it may be that simple, but in the general case there
> might be more work to do (e.g. first make sure the demod is not
> in sleep state, need to probe PLL seperately etc.). Every time
> there's a new Nebula version the code needs updateing and gets more
> complex...
>

Mainly as an exercise for myself, I've coded this up.
So instead of trying to attach each frontend in turn, we attempt to read a 
register on the nxt6000. Basically if the i2c read succeeds, we know that 
we've got the nxt6000 frontend, otherwise it's the mt352. This also isn't a 
terribly clean way of doing it, but it's how Nebula do it.

As I say, this was mainly an exercise for myself to see if I could implement 
it successfully, so I won't be too upset if you decide it isn't worth doing.

Here's the code (hopefully it won't get too messed up by my MUA):

int i2cret;
u8 b0[] = { 0x00 };
u8 b1[] = { 0 };
struct i2c_msg msgs[] = {
  {.addr = 0x14,.flags = 0,.buf = b0,.len = 1},
  {.addr = 0x14,.flags = I2C_M_RD,.buf = b1,.len = 1}
};

i2cret = i2c_transfer(card->i2c_adapter, msgs, 2);

dprintk ("dvb_bt8xx: i2c read got value %d, function returned %d\n", b1[0], 
               i2cret);

if (b1[0] == 0x0b) {
  /* Old Nebula (marked (c)2003 on high profile pci card) has nxt6000 demod */
  card->fe = nxt6000_attach(&vp3021_alps_tded4_config, card->i2c_adapter);
  dprintk ("dvb_bt8xx: an nxt6000 was detected on your digitv card\n");
} else {
  /* New Nebula (marked (c)2005 on low profile pci card) has mt352 demod */
  digitv_alps_tded4_reset(card);
  card->fe = mt352_attach(&digitv_alps_tded4_config, card->i2c_adapter);
  dprintk ("dvb_bt8xx: an mt352 was detected on your digitv card\n");
}

if (card->fe == NULL)
  dprintk ("dvb_bt8xx: a supported frontend was not found on your digitv 
                card\n");

I don't have an nxt6000-based card to test with, but the code compiles cleanly 
and succeeds in reading a value from the mt352 if I change the I2C address.

If you think doing this detection is worthwhile, I'll create a patch and get 
somebody to test it with an nxt6000, otherwise I'll create a patch to remove 
the comment from the code and stop bothering you :-)

Regards,
David.




More information about the linux-dvb mailing list