diff options
| author | Stefan Ringel <stefan.ringel@arcor.de> | 2010-05-23 14:31:44 -0400 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-06-01 00:22:07 -0400 |
| commit | 7e2d9820c37525da2469147eec897488ec141bcf (patch) | |
| tree | 956b28000e146aca764e8d868bcafac224c82823 | |
| parent | dcf5d3aa081617a4a8aa56b7e24988d600148f50 (diff) | |
V4L/DVB: tm6000: add DVB support for tuner xc5000
[mchehab@redhat.com: Fix compilation breakage due to duplicate cfg config delaration without {}]
Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| -rw-r--r-- | drivers/staging/tm6000/tm6000-dvb.c | 69 |
1 files changed, 49 insertions, 20 deletions
diff --git a/drivers/staging/tm6000/tm6000-dvb.c b/drivers/staging/tm6000/tm6000-dvb.c index e6a802e9c48a..261e66acbe46 100644 --- a/drivers/staging/tm6000/tm6000-dvb.c +++ b/drivers/staging/tm6000/tm6000-dvb.c | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | #include <media/tuner.h> | 28 | #include <media/tuner.h> |
| 29 | 29 | ||
| 30 | #include "tuner-xc2028.h" | 30 | #include "tuner-xc2028.h" |
| 31 | #include "xc5000.h" | ||
| 31 | 32 | ||
| 32 | static void inline print_err_status (struct tm6000_core *dev, | 33 | static void inline print_err_status (struct tm6000_core *dev, |
| 33 | int packet, int status) | 34 | int packet, int status) |
| @@ -257,27 +258,55 @@ int tm6000_dvb_register(struct tm6000_core *dev) | |||
| 257 | dvb->adapter.priv = dev; | 258 | dvb->adapter.priv = dev; |
| 258 | 259 | ||
| 259 | if (dvb->frontend) { | 260 | if (dvb->frontend) { |
| 260 | struct xc2028_config cfg = { | 261 | switch (dev->tuner_type) { |
| 261 | .i2c_adap = &dev->i2c_adap, | 262 | case TUNER_XC2028: { |
| 262 | .i2c_addr = dev->tuner_addr, | 263 | struct xc2028_config cfg = { |
| 263 | }; | 264 | .i2c_adap = &dev->i2c_adap, |
| 264 | 265 | .i2c_addr = dev->tuner_addr, | |
| 265 | dvb->frontend->callback = tm6000_tuner_callback; | 266 | }; |
| 266 | ret = dvb_register_frontend(&dvb->adapter, dvb->frontend); | 267 | |
| 267 | if (ret < 0) { | 268 | dvb->frontend->callback = tm6000_tuner_callback; |
| 268 | printk(KERN_ERR | 269 | ret = dvb_register_frontend(&dvb->adapter, dvb->frontend); |
| 269 | "tm6000: couldn't register frontend\n"); | 270 | if (ret < 0) { |
| 270 | goto adapter_err; | 271 | printk(KERN_ERR |
| 272 | "tm6000: couldn't register frontend\n"); | ||
| 273 | goto adapter_err; | ||
| 274 | } | ||
| 275 | |||
| 276 | if (!dvb_attach(xc2028_attach, dvb->frontend, &cfg)) { | ||
| 277 | printk(KERN_ERR "tm6000: couldn't register " | ||
| 278 | "frontend (xc3028)\n"); | ||
| 279 | ret = -EINVAL; | ||
| 280 | goto frontend_err; | ||
| 281 | } | ||
| 282 | printk(KERN_INFO "tm6000: XC2028/3028 asked to be " | ||
| 283 | "attached to frontend!\n"); | ||
| 284 | break; | ||
| 285 | } | ||
| 286 | case TUNER_XC5000: { | ||
| 287 | struct xc5000_config cfg = { | ||
| 288 | .i2c_address = dev->tuner_addr, | ||
| 289 | }; | ||
| 290 | |||
| 291 | dvb->frontend->callback = tm6000_xc5000_callback; | ||
| 292 | ret = dvb_register_frontend(&dvb->adapter, dvb->frontend); | ||
| 293 | if (ret < 0) { | ||
| 294 | printk(KERN_ERR | ||
| 295 | "tm6000: couldn't register frontend\n"); | ||
| 296 | goto adapter_err; | ||
| 297 | } | ||
| 298 | |||
| 299 | if (!dvb_attach(xc5000_attach, dvb->frontend, &dev->i2c_adap, &cfg)) { | ||
| 300 | printk(KERN_ERR "tm6000: couldn't register " | ||
| 301 | "frontend (xc5000)\n"); | ||
| 302 | ret = -EINVAL; | ||
| 303 | goto frontend_err; | ||
| 304 | } | ||
| 305 | printk(KERN_INFO "tm6000: XC5000 asked to be " | ||
| 306 | "attached to frontend!\n"); | ||
| 307 | break; | ||
| 308 | } | ||
| 271 | } | 309 | } |
| 272 | |||
| 273 | if (!dvb_attach(xc2028_attach, dvb->frontend, &cfg)) { | ||
| 274 | printk(KERN_ERR "tm6000: couldn't register " | ||
| 275 | "frontend (xc3028)\n"); | ||
| 276 | ret = -EINVAL; | ||
| 277 | goto frontend_err; | ||
| 278 | } | ||
| 279 | printk(KERN_INFO "tm6000: XC2028/3028 asked to be " | ||
| 280 | "attached to frontend!\n"); | ||
| 281 | } else { | 310 | } else { |
| 282 | printk(KERN_ERR "tm6000: no frontend found\n"); | 311 | printk(KERN_ERR "tm6000: no frontend found\n"); |
| 283 | } | 312 | } |
