aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/em28xx/em28xx-dvb.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-05-20 12:37:45 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-20 12:37:45 -0400
commitfb091be08d1acf184e8801dfdcace6e0cb19b1fe (patch)
treecbd0c4200fd8628d592167589ca790e36fc4ae26 /drivers/media/video/em28xx/em28xx-dvb.c
parentbd7fc2f2d807fdb254f7efc542f8eec3f23e289e (diff)
parente8d0416796d43a950ec7b65629e53419b2e22453 (diff)
Merge branch 'v4l_for_2.6.35' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
* 'v4l_for_2.6.35' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (534 commits) V4L/DVB (13554a): v4l: Use the video_drvdata function in drivers V4L/DVB: vivi and mem2mem_testdev need slab.h to build V4L/DVB: tm6000: bugfix image position V4L/DVB: IR/imon: remove dead IMON_KEY_RELEASE_OFFSET V4L/DVB: tm6000: README - add vbi V4L/DVB: Fix unlock logic at medusa_video_init V4L/DVB: fix dvb frontend lockup V4L/DVB: s2255drv: remove dead code V4L/DVB: s2255drv: return if vdev not found V4L/DVB: ov511: cleanup: remove unneeded null check V4L/DVB: media/mem2mem: dereferencing free memory V4L/DVB: media/IR: Add missing include file to rc-map.c V4L/DVB: dvb/stv6110x: cleanup error handling V4L/DVB: ngene: Add lgdt3303 and mt2131 deps to Kconfig V4L/DVB: ngene: start separating out DVB functions into separate file V4L/DVB: ngene: split out card specific code into a separate file V4L/DVB: ngene: split out i2c code into a separate file V4L/DVB: ngene: add initial support for digital side of Avermedia m780 V4L/DVB: ngene: properly support boards where channel 0 isn't a TS input V4L-DVB: ngene: make sure that tuner headers are included ...
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-dvb.c')
-rw-r--r--drivers/media/video/em28xx/em28xx-dvb.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/media/video/em28xx/em28xx-dvb.c b/drivers/media/video/em28xx/em28xx-dvb.c
index bcd3c371009b..cf1d8c3655fc 100644
--- a/drivers/media/video/em28xx/em28xx-dvb.c
+++ b/drivers/media/video/em28xx/em28xx-dvb.c
@@ -467,6 +467,7 @@ static int dvb_init(struct em28xx *dev)
467 } 467 }
468 dev->dvb = dvb; 468 dev->dvb = dvb;
469 469
470 mutex_lock(&dev->lock);
470 em28xx_set_mode(dev, EM28XX_DIGITAL_MODE); 471 em28xx_set_mode(dev, EM28XX_DIGITAL_MODE);
471 /* init frontend */ 472 /* init frontend */
472 switch (dev->model) { 473 switch (dev->model) {
@@ -506,6 +507,7 @@ static int dvb_init(struct em28xx *dev)
506 case EM2880_BOARD_TERRATEC_HYBRID_XS_FR: 507 case EM2880_BOARD_TERRATEC_HYBRID_XS_FR:
507 case EM2881_BOARD_PINNACLE_HYBRID_PRO: 508 case EM2881_BOARD_PINNACLE_HYBRID_PRO:
508 case EM2882_BOARD_DIKOM_DK300: 509 case EM2882_BOARD_DIKOM_DK300:
510 case EM2882_BOARD_KWORLD_VS_DVBT:
509 dvb->frontend = dvb_attach(zl10353_attach, 511 dvb->frontend = dvb_attach(zl10353_attach,
510 &em28xx_zl10353_xc3028_no_i2c_gate, 512 &em28xx_zl10353_xc3028_no_i2c_gate,
511 &dev->i2c_adap); 513 &dev->i2c_adap);
@@ -589,15 +591,16 @@ static int dvb_init(struct em28xx *dev)
589 if (result < 0) 591 if (result < 0)
590 goto out_free; 592 goto out_free;
591 593
592 em28xx_set_mode(dev, EM28XX_SUSPEND);
593 em28xx_info("Successfully loaded em28xx-dvb\n"); 594 em28xx_info("Successfully loaded em28xx-dvb\n");
594 return 0; 595ret:
596 em28xx_set_mode(dev, EM28XX_SUSPEND);
597 mutex_unlock(&dev->lock);
598 return result;
595 599
596out_free: 600out_free:
597 em28xx_set_mode(dev, EM28XX_SUSPEND);
598 kfree(dvb); 601 kfree(dvb);
599 dev->dvb = NULL; 602 dev->dvb = NULL;
600 return result; 603 goto ret;
601} 604}
602 605
603static int dvb_fini(struct em28xx *dev) 606static int dvb_fini(struct em28xx *dev)