diff options
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-dvb.c')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-dvb.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/media/video/em28xx/em28xx-dvb.c b/drivers/media/video/em28xx/em28xx-dvb.c index d38cb21834d9..9ad8527b3fda 100644 --- a/drivers/media/video/em28xx/em28xx-dvb.c +++ b/drivers/media/video/em28xx/em28xx-dvb.c | |||
@@ -28,6 +28,7 @@ | |||
28 | 28 | ||
29 | #include "lgdt330x.h" | 29 | #include "lgdt330x.h" |
30 | #include "zl10353.h" | 30 | #include "zl10353.h" |
31 | #include "s5h1409.h" | ||
31 | #ifdef EM28XX_DRX397XD_SUPPORT | 32 | #ifdef EM28XX_DRX397XD_SUPPORT |
32 | #include "drx397xD.h" | 33 | #include "drx397xD.h" |
33 | #endif | 34 | #endif |
@@ -232,6 +233,15 @@ static struct zl10353_config em28xx_zl10353_with_xc3028 = { | |||
232 | .if2 = 45600, | 233 | .if2 = 45600, |
233 | }; | 234 | }; |
234 | 235 | ||
236 | static struct s5h1409_config em28xx_s5h1409_with_xc3028 = { | ||
237 | .demod_address = 0x32 >> 1, | ||
238 | .output_mode = S5H1409_PARALLEL_OUTPUT, | ||
239 | .gpio = S5H1409_GPIO_OFF, | ||
240 | .inversion = S5H1409_INVERSION_OFF, | ||
241 | .status_mode = S5H1409_DEMODLOCKING, | ||
242 | .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK | ||
243 | }; | ||
244 | |||
235 | #ifdef EM28XX_DRX397XD_SUPPORT | 245 | #ifdef EM28XX_DRX397XD_SUPPORT |
236 | /* [TODO] djh - not sure yet what the device config needs to contain */ | 246 | /* [TODO] djh - not sure yet what the device config needs to contain */ |
237 | static struct drx397xD_config em28xx_drx397xD_with_xc3028 = { | 247 | static struct drx397xD_config em28xx_drx397xD_with_xc3028 = { |
@@ -412,7 +422,6 @@ static int dvb_init(struct em28xx *dev) | |||
412 | case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850: | 422 | case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850: |
413 | case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950: | 423 | case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950: |
414 | case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: | 424 | case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: |
415 | case EM2883_BOARD_KWORLD_HYBRID_A316: | ||
416 | case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600: | 425 | case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600: |
417 | dvb->frontend = dvb_attach(lgdt330x_attach, | 426 | dvb->frontend = dvb_attach(lgdt330x_attach, |
418 | &em2880_lgdt3303_dev, | 427 | &em2880_lgdt3303_dev, |
@@ -433,6 +442,15 @@ static int dvb_init(struct em28xx *dev) | |||
433 | goto out_free; | 442 | goto out_free; |
434 | } | 443 | } |
435 | break; | 444 | break; |
445 | case EM2883_BOARD_KWORLD_HYBRID_330U: | ||
446 | dvb->frontend = dvb_attach(s5h1409_attach, | ||
447 | &em28xx_s5h1409_with_xc3028, | ||
448 | &dev->i2c_adap); | ||
449 | if (attach_xc3028(0x61, dev) < 0) { | ||
450 | result = -EINVAL; | ||
451 | goto out_free; | ||
452 | } | ||
453 | break; | ||
436 | case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2: | 454 | case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2: |
437 | #ifdef EM28XX_DRX397XD_SUPPORT | 455 | #ifdef EM28XX_DRX397XD_SUPPORT |
438 | /* We don't have the config structure properly populated, so | 456 | /* We don't have the config structure properly populated, so |