Commit bd7db979 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

V4L/DVB (3405): Fixes tvp5150a/am1 detection.

- Tvp5150 type were determined by a secondary register instead of
  using ROM code.
- tvp5150am1 have ROM=4.0, while tvp5150a have ROM=3.33 (decimal).
  All other ROM versions are reported as unknown tvp5150.
- Except for reporting, current code doesn't enable any special feature
  for tvp5150am1 or tvp5150a. Code should work for both models (but were
  tested only for tvp5150am1).
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent e94785c9
...@@ -746,24 +746,27 @@ static int tvp5150_set_std(struct i2c_client *c, v4l2_std_id std) ...@@ -746,24 +746,27 @@ static int tvp5150_set_std(struct i2c_client *c, v4l2_std_id std)
static inline void tvp5150_reset(struct i2c_client *c) static inline void tvp5150_reset(struct i2c_client *c)
{ {
u8 type, ver_656, msb_id, lsb_id, msb_rom, lsb_rom; u8 msb_id, lsb_id, msb_rom, lsb_rom;
struct tvp5150 *decoder = i2c_get_clientdata(c); struct tvp5150 *decoder = i2c_get_clientdata(c);
type=tvp5150_read(c,TVP5150_AUTOSW_MSK);
msb_id=tvp5150_read(c,TVP5150_MSB_DEV_ID); msb_id=tvp5150_read(c,TVP5150_MSB_DEV_ID);
lsb_id=tvp5150_read(c,TVP5150_LSB_DEV_ID); lsb_id=tvp5150_read(c,TVP5150_LSB_DEV_ID);
msb_rom=tvp5150_read(c,TVP5150_ROM_MAJOR_VER); msb_rom=tvp5150_read(c,TVP5150_ROM_MAJOR_VER);
lsb_rom=tvp5150_read(c,TVP5150_ROM_MINOR_VER); lsb_rom=tvp5150_read(c,TVP5150_ROM_MINOR_VER);
if (type==0xdc) { if ((msb_rom==4)&&(lsb_rom==0)) { /* Is TVP5150AM1 */
ver_656=tvp5150_read(c,TVP5150_REV_SELECT); tvp5150_info("tvp%02x%02xam1 detected.\n",msb_id, lsb_id);
tvp5150_info("tvp%02x%02xam1 detected 656 version is %d.\n",msb_id, lsb_id,ver_656);
} else if (type==0xfc) { /* ITU-T BT.656.4 timing */
tvp5150_info("tvp%02x%02xa detected.\n",msb_id, lsb_id); tvp5150_write(c,TVP5150_REV_SELECT,0);
} else { } else {
tvp5150_info("unknown tvp%02x%02x chip detected(%d).\n",msb_id,lsb_id,type); if ((msb_rom==3)||(lsb_rom==0x21)) { /* Is TVP5150A */
tvp5150_info("tvp%02x%02xa detected.\n",msb_id, lsb_id);
} else {
tvp5150_info("*** unknown tvp%02x%02x chip detected.\n",msb_id,lsb_id);
tvp5150_info("*** Rom ver is %d.%d\n",msb_rom,lsb_rom);
}
} }
tvp5150_info("Rom ver is %d.%d\n",msb_rom,lsb_rom);
/* Initializes TVP5150 to its default values */ /* Initializes TVP5150 to its default values */
tvp5150_write_inittab(c, tvp5150_init_default); tvp5150_write_inittab(c, tvp5150_init_default);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment