aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx23885
diff options
context:
space:
mode:
authorSteven Toth <stoth@hauppauge.com>2008-08-04 20:36:49 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2008-10-12 07:36:48 -0400
commit0fbbff33fcab605b1a5c53a20c302aad24b082ef (patch)
tree3e2d03f01f45ef05cbacb4c6336d57d9d21f408a /drivers/media/video/cx23885
parentad4eada70b2a145aabb1814fdc080480f796decb (diff)
V4L/DVB (8642): cx23885: Factor out common cx23885 tuner callback
Tuners currently hook different things to the private pointer in their callback function. Longer term we should make that private pointer consistent, but for now separate out the guts of the cx23885 tuner callback so we can reuse it. Signed-off-by: Steven Toth <stoth@hauppauge.com> Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx23885')
-rw-r--r--drivers/media/video/cx23885/cx23885-cards.c20
-rw-r--r--drivers/media/video/cx23885/cx23885-dvb.c4
-rw-r--r--drivers/media/video/cx23885/cx23885.h2
3 files changed, 15 insertions, 11 deletions
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c
index c36d3f632104..e5e688e5e4b0 100644
--- a/drivers/media/video/cx23885/cx23885-cards.c
+++ b/drivers/media/video/cx23885/cx23885-cards.c
@@ -319,13 +319,9 @@ static void hauppauge_eeprom(struct cx23885_dev *dev, u8 *eeprom_data)
319 dev->name, tv.model); 319 dev->name, tv.model);
320} 320}
321 321
322/* Tuner callback function for cx23885 boards. Currently only needed 322static int cx23885_tuner_callback(struct cx23885_dev *dev, int port,
323 * for HVR1500Q, which has an xc5000 tuner. 323 int command, int arg)
324 */
325int cx23885_tuner_callback(void *priv, int command, int arg)
326{ 324{
327 struct cx23885_i2c *bus = priv;
328 struct cx23885_dev *dev = bus->dev;
329 u32 bitmask = 0; 325 u32 bitmask = 0;
330 326
331 if (command != 0) { 327 if (command != 0) {
@@ -345,9 +341,9 @@ int cx23885_tuner_callback(void *priv, int command, int arg)
345 341
346 /* Two identical tuners on two different i2c buses, 342 /* Two identical tuners on two different i2c buses,
347 * we need to reset the correct gpio. */ 343 * we need to reset the correct gpio. */
348 if (bus->nr == 0) 344 if (port == 0)
349 bitmask = 0x01; 345 bitmask = 0x01;
350 else if (bus->nr == 1) 346 else if (port == 1)
351 bitmask = 0x04; 347 bitmask = 0x04;
352 } 348 }
353 break; 349 break;
@@ -363,6 +359,14 @@ int cx23885_tuner_callback(void *priv, int command, int arg)
363 return 0; 359 return 0;
364} 360}
365 361
362int cx23885_xc5000_tuner_callback(void *priv, int command, int arg)
363{
364 struct cx23885_i2c *bus = priv;
365 struct cx23885_dev *dev = bus->dev;
366
367 return cx23885_tuner_callback(dev, bus->nr, command, arg);
368}
369
366void cx23885_gpio_setup(struct cx23885_dev *dev) 370void cx23885_gpio_setup(struct cx23885_dev *dev)
367{ 371{
368 switch(dev->board) { 372 switch(dev->board) {
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c
index 291b9d008da8..bfe49df3f6dd 100644
--- a/drivers/media/video/cx23885/cx23885-dvb.c
+++ b/drivers/media/video/cx23885/cx23885-dvb.c
@@ -188,13 +188,13 @@ static struct s5h1411_config dvico_s5h1411_config = {
188static struct xc5000_config hauppauge_hvr1500q_tunerconfig = { 188static struct xc5000_config hauppauge_hvr1500q_tunerconfig = {
189 .i2c_address = 0x61, 189 .i2c_address = 0x61,
190 .if_khz = 5380, 190 .if_khz = 5380,
191 .tuner_callback = cx23885_tuner_callback 191 .tuner_callback = cx23885_xc5000_tuner_callback,
192}; 192};
193 193
194static struct xc5000_config dvico_xc5000_tunerconfig = { 194static struct xc5000_config dvico_xc5000_tunerconfig = {
195 .i2c_address = 0x64, 195 .i2c_address = 0x64,
196 .if_khz = 5380, 196 .if_khz = 5380,
197 .tuner_callback = cx23885_tuner_callback 197 .tuner_callback = cx23885_xc5000_tuner_callback,
198}; 198};
199 199
200static struct tda829x_config tda829x_no_probe = { 200static struct tda829x_config tda829x_no_probe = {
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h
index e23d97c071e0..c3478b24012a 100644
--- a/drivers/media/video/cx23885/cx23885.h
+++ b/drivers/media/video/cx23885/cx23885.h
@@ -409,7 +409,7 @@ extern const unsigned int cx23885_bcount;
409extern struct cx23885_subid cx23885_subids[]; 409extern struct cx23885_subid cx23885_subids[];
410extern const unsigned int cx23885_idcount; 410extern const unsigned int cx23885_idcount;
411 411
412extern int cx23885_tuner_callback(void *priv, int command, int arg); 412extern int cx23885_xc5000_tuner_callback(void *priv, int command, int arg);
413extern void cx23885_card_list(struct cx23885_dev *dev); 413extern void cx23885_card_list(struct cx23885_dev *dev);
414extern int cx23885_ir_init(struct cx23885_dev *dev); 414extern int cx23885_ir_init(struct cx23885_dev *dev);
415extern void cx23885_gpio_setup(struct cx23885_dev *dev); 415extern void cx23885_gpio_setup(struct cx23885_dev *dev);