mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-24 03:25:38 +00:00
V4L/DVB (7128): tuner: properly handle failed calls to simple_tuner_attach
If simple_tuner_attach fails, set t->type to TUNER_ABSENT, set t->mode_mask to T_UNINITIALIZED, and exit the set_type function. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
060a5bd764
commit
b65aa26056
@ -317,11 +317,6 @@ static void tuner_i2c_address_check(struct tuner *t)
|
|||||||
tuner_warn("====================== WARNING! ======================\n");
|
tuner_warn("====================== WARNING! ======================\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void attach_simple_tuner(struct tuner *t)
|
|
||||||
{
|
|
||||||
simple_tuner_attach(&t->fe, t->i2c->adapter, t->i2c->addr, t->type);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void attach_tda829x(struct tuner *t)
|
static void attach_tda829x(struct tuner *t)
|
||||||
{
|
{
|
||||||
struct tda829x_config cfg = {
|
struct tda829x_config cfg = {
|
||||||
@ -399,7 +394,12 @@ static void set_type(struct i2c_client *c, unsigned int type,
|
|||||||
buffer[2] = 0x86;
|
buffer[2] = 0x86;
|
||||||
buffer[3] = 0x54;
|
buffer[3] = 0x54;
|
||||||
i2c_master_send(c, buffer, 4);
|
i2c_master_send(c, buffer, 4);
|
||||||
attach_simple_tuner(t);
|
if (simple_tuner_attach(&t->fe, t->i2c->adapter, t->i2c->addr,
|
||||||
|
t->type) == NULL) {
|
||||||
|
t->type = TUNER_ABSENT;
|
||||||
|
t->mode_mask = T_UNINITIALIZED;
|
||||||
|
return;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case TUNER_PHILIPS_TD1316:
|
case TUNER_PHILIPS_TD1316:
|
||||||
buffer[0] = 0x0b;
|
buffer[0] = 0x0b;
|
||||||
@ -407,7 +407,12 @@ static void set_type(struct i2c_client *c, unsigned int type,
|
|||||||
buffer[2] = 0x86;
|
buffer[2] = 0x86;
|
||||||
buffer[3] = 0xa4;
|
buffer[3] = 0xa4;
|
||||||
i2c_master_send(c,buffer,4);
|
i2c_master_send(c,buffer,4);
|
||||||
attach_simple_tuner(t);
|
if (simple_tuner_attach(&t->fe, t->i2c->adapter,
|
||||||
|
t->i2c->addr, t->type) == NULL) {
|
||||||
|
t->type = TUNER_ABSENT;
|
||||||
|
t->mode_mask = T_UNINITIALIZED;
|
||||||
|
return;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case TUNER_XC2028:
|
case TUNER_XC2028:
|
||||||
{
|
{
|
||||||
@ -445,7 +450,12 @@ static void set_type(struct i2c_client *c, unsigned int type,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
attach_simple_tuner(t);
|
if (simple_tuner_attach(&t->fe, t->i2c->adapter,
|
||||||
|
t->i2c->addr, t->type) == NULL) {
|
||||||
|
t->type = TUNER_ABSENT;
|
||||||
|
t->mode_mask = T_UNINITIALIZED;
|
||||||
|
return;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user