diff options
author | Steven Toth <stoth@hauppauge.com> | 2008-01-10 01:40:49 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-01-25 16:04:49 -0500 |
commit | 7b8880140ff6aec6a5bec7929b03ce0b96a7c79a (patch) | |
tree | b2646197762030abaa1110be0d2a9474bce20c3e /drivers/media/video/cx23885/cx23885-i2c.c | |
parent | c771261330c90b7c77f686a1aa0fb4f756e07b5f (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.c | 31 |
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 | ||
271 | static int attach_inform(struct i2c_client *client) | 271 | static 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; |