diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-20 12:37:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-20 12:37:45 -0400 |
commit | fb091be08d1acf184e8801dfdcace6e0cb19b1fe (patch) | |
tree | cbd0c4200fd8628d592167589ca790e36fc4ae26 /drivers/media/video/em28xx/em28xx-dvb.c | |
parent | bd7fc2f2d807fdb254f7efc542f8eec3f23e289e (diff) | |
parent | e8d0416796d43a950ec7b65629e53419b2e22453 (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.c | 11 |
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; | 595 | ret: |
596 | em28xx_set_mode(dev, EM28XX_SUSPEND); | ||
597 | mutex_unlock(&dev->lock); | ||
598 | return result; | ||
595 | 599 | ||
596 | out_free: | 600 | out_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 | ||
603 | static int dvb_fini(struct em28xx *dev) | 606 | static int dvb_fini(struct em28xx *dev) |