aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx23885/cx23885-i2c.c
diff options
context:
space:
mode:
authorSteven Toth <stoth@hauppauge.com>2008-01-10 01:40:49 -0500
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-01-25 16:04:49 -0500
commit7b8880140ff6aec6a5bec7929b03ce0b96a7c79a (patch)
treeb2646197762030abaa1110be0d2a9474bce20c3e /drivers/media/video/cx23885/cx23885-i2c.c
parentc771261330c90b7c77f686a1aa0fb4f756e07b5f (diff)
V4L/DVB (7007): cx23885: Add basic video support for the HVR1800
This enabled basic preview NTSC and PAL support for the HVR1800. Signed-off-by: Steven Toth <stoth@hauppauge.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/cx23885/cx23885-i2c.c')
-rw-r--r--drivers/media/video/cx23885/cx23885-i2c.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/drivers/media/video/cx23885/cx23885-i2c.c b/drivers/media/video/cx23885/cx23885-i2c.c
index b2ffbf04ef2c..fbc4a57a236b 100644
--- a/drivers/media/video/cx23885/cx23885-i2c.c
+++ b/drivers/media/video/cx23885/cx23885-i2c.c
@@ -270,7 +270,9 @@ static int i2c_xfer(struct i2c_adapter *i2c_adap,
270 270
271static int attach_inform(struct i2c_client *client) 271static int attach_inform(struct i2c_client *client)
272{ 272{
273 struct cx23885_dev *dev = i2c_get_adapdata(client->adapter); 273 struct cx23885_i2c *bus = i2c_get_adapdata(client->adapter);
274 struct cx23885_dev *dev = bus->dev;
275 struct tuner_setup tun_setup;
274 276
275 dprintk(1, "%s i2c attach [addr=0x%x,client=%s]\n", 277 dprintk(1, "%s i2c attach [addr=0x%x,client=%s]\n",
276 client->driver->driver.name, client->addr, client->name); 278 client->driver->driver.name, client->addr, client->name);
@@ -278,6 +280,31 @@ static int attach_inform(struct i2c_client *client)
278 if (!client->driver->command) 280 if (!client->driver->command)
279 return 0; 281 return 0;
280 282
283 if (dev->tuner_type != UNSET) {
284
285 dprintk(1, "%s (tuner) i2c attach [addr=0x%x,client=%s]\n",
286 client->driver->driver.name, client->addr,
287 client->name);
288
289 if ((dev->tuner_addr == ADDR_UNSET) ||
290 (dev->tuner_addr == client->addr)) {
291
292 dprintk(1, "%s (tuner || addr UNSET)\n",
293 client->driver->driver.name);
294
295 dprintk(1, "%s i2c attach [addr=0x%x,client=%s]\n",
296 client->driver->driver.name,
297 client->addr, client->name);
298
299 tun_setup.mode_mask = T_ANALOG_TV;
300 tun_setup.type = dev->tuner_type;
301 tun_setup.addr = dev->tuner_addr;
302
303 client->driver->command(client, TUNER_SET_TYPE_ADDR,
304 &tun_setup);
305 }
306 }
307
281 return 0; 308 return 0;
282} 309}
283 310
@@ -316,6 +343,7 @@ static struct i2c_adapter cx23885_i2c_adap_template = {
316 .owner = THIS_MODULE, 343 .owner = THIS_MODULE,
317 .id = I2C_HW_B_CX23885, 344 .id = I2C_HW_B_CX23885,
318 .algo = &cx23885_i2c_algo_template, 345 .algo = &cx23885_i2c_algo_template,
346 .class = I2C_CLASS_TV_ANALOG,
319 .client_register = attach_inform, 347 .client_register = attach_inform,
320 .client_unregister = detach_inform, 348 .client_unregister = detach_inform,
321}; 349};
@@ -371,6 +399,7 @@ int cx23885_i2c_register(struct cx23885_i2c *bus)
371 399
372 bus->i2c_algo.data = bus; 400 bus->i2c_algo.data = bus;
373 bus->i2c_adap.algo_data = bus; 401 bus->i2c_adap.algo_data = bus;
402 i2c_set_adapdata(&bus->i2c_adap, bus);
374 i2c_add_adapter(&bus->i2c_adap); 403 i2c_add_adapter(&bus->i2c_adap);
375 404
376 bus->i2c_client.adapter = &bus->i2c_adap; 405 bus->i2c_client.adapter = &bus->i2c_adap;