Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 95736034 authored by Hartmut Hackmann's avatar Hartmut Hackmann Committed by Linus Torvalds
Browse files

[PATCH] v4l: 823: corrected probing code for tda8290



- Corrected probing code for tda8290

Signed-off-by: default avatarHartmut Hackmann <hartmut.hackmann@t.online.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@brturbo.com.br>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 48c42596
Loading
Loading
Loading
Loading
+27 −3
Original line number Diff line number Diff line
@@ -135,7 +135,7 @@ static void tda827x_tune(struct i2c_client *c, u16 ifc, unsigned int freq)
	i2c_transfer(c->adapter, &msg, 1);

	reg2[0] = 0x60;
	reg2[1] = 0x7f;
	reg2[1] = 0x3f;
	i2c_transfer(c->adapter, &msg, 1);

	reg2[0] = 0x80;
@@ -534,8 +534,8 @@ int tda8290_init(struct i2c_client *c)
		}
	if (tuner_addrs == 0) {
		tuner_addrs = 0x61;
		tuner_info ("Could not clearly identify tda8290/8275 tuner address.\n");
		return -1;
		tuner_info ("could not clearly identify tuner address, defaulting to %x\n",
		             tuner_addrs);
	} else {
		tuner_addrs = tuner_addrs & 0xff;
		tuner_info ("setting tuner address to %x\n", tuner_addrs);
@@ -567,6 +567,30 @@ int tda8290_init(struct i2c_client *c)
	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.
 * ---------------------------------------------------------------------------
+2 −2
Original line number Diff line number Diff line
@@ -380,8 +380,8 @@ static int tuner_attach(struct i2c_adapter *adap, int addr, int kind)
		case 0x42:
		case 0x43:
		case 0x4a:
		case 0x44:
			if (tda8290_init(&t->i2c)<0) {
		case 0x4b:
			if (tda8290_probe(&t->i2c) != 0) {
				kfree(t);
				return 0;
			}