mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-01 23:01:29 +00:00
[PATCH] v4l: 823: corrected probing code for tda8290
- Corrected probing code for tda8290 Signed-off-by: Hartmut Hackmann <hartmut.hackmann@t.online.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
48c425965e
commit
95736034df
@ -135,7 +135,7 @@ static void tda827x_tune(struct i2c_client *c, u16 ifc, unsigned int freq)
|
|||||||
i2c_transfer(c->adapter, &msg, 1);
|
i2c_transfer(c->adapter, &msg, 1);
|
||||||
|
|
||||||
reg2[0] = 0x60;
|
reg2[0] = 0x60;
|
||||||
reg2[1] = 0x7f;
|
reg2[1] = 0x3f;
|
||||||
i2c_transfer(c->adapter, &msg, 1);
|
i2c_transfer(c->adapter, &msg, 1);
|
||||||
|
|
||||||
reg2[0] = 0x80;
|
reg2[0] = 0x80;
|
||||||
@ -534,8 +534,8 @@ int tda8290_init(struct i2c_client *c)
|
|||||||
}
|
}
|
||||||
if (tuner_addrs == 0) {
|
if (tuner_addrs == 0) {
|
||||||
tuner_addrs = 0x61;
|
tuner_addrs = 0x61;
|
||||||
tuner_info ("Could not clearly identify tda8290/8275 tuner address.\n");
|
tuner_info ("could not clearly identify tuner address, defaulting to %x\n",
|
||||||
return -1;
|
tuner_addrs);
|
||||||
} else {
|
} else {
|
||||||
tuner_addrs = tuner_addrs & 0xff;
|
tuner_addrs = tuner_addrs & 0xff;
|
||||||
tuner_info ("setting tuner address to %x\n", tuner_addrs);
|
tuner_info ("setting tuner address to %x\n", tuner_addrs);
|
||||||
@ -567,6 +567,30 @@ int tda8290_init(struct i2c_client *c)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int tda8290_probe(struct i2c_client *c)
|
||||||
|
{
|
||||||
|
unsigned char soft_reset[] = { 0x00, 0x00 };
|
||||||
|
unsigned char easy_mode_b[] = { 0x01, 0x02 };
|
||||||
|
unsigned char easy_mode_g[] = { 0x01, 0x04 };
|
||||||
|
unsigned char addr_dto_lsb = 0x07;
|
||||||
|
unsigned char data;
|
||||||
|
|
||||||
|
i2c_master_send(c, easy_mode_b, 2);
|
||||||
|
i2c_master_send(c, soft_reset, 2);
|
||||||
|
i2c_master_send(c, &addr_dto_lsb, 1);
|
||||||
|
i2c_master_recv(c, &data, 1);
|
||||||
|
if (data == 0) {
|
||||||
|
i2c_master_send(c, easy_mode_g, 2);
|
||||||
|
i2c_master_send(c, soft_reset, 2);
|
||||||
|
i2c_master_send(c, &addr_dto_lsb, 1);
|
||||||
|
i2c_master_recv(c, &data, 1);
|
||||||
|
if (data == 0x7b) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Overrides for Emacs so that we follow Linus's tabbing style.
|
* Overrides for Emacs so that we follow Linus's tabbing style.
|
||||||
* ---------------------------------------------------------------------------
|
* ---------------------------------------------------------------------------
|
||||||
|
@ -380,8 +380,8 @@ static int tuner_attach(struct i2c_adapter *adap, int addr, int kind)
|
|||||||
case 0x42:
|
case 0x42:
|
||||||
case 0x43:
|
case 0x43:
|
||||||
case 0x4a:
|
case 0x4a:
|
||||||
case 0x44:
|
case 0x4b:
|
||||||
if (tda8290_init(&t->i2c)<0) {
|
if (tda8290_probe(&t->i2c) != 0) {
|
||||||
kfree(t);
|
kfree(t);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user