aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorDevin Heitmueller <devin.heitmueller@gmail.com>2008-11-12 00:05:24 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2008-12-29 14:53:32 -0500
commitebef13d480f0223512963ee785bd93770d404fe3 (patch)
treec93421d0cd8466bc2659675f8607eddb42f980ee /drivers/media
parent24a613e4b08c4077b4c809bebab1d4a36d541fcc (diff)
V4L/DVB (9589): Properly support capture start on em2874
Properly support capture start on em2874 The transport stream enable register moved in the em2874, so make it work properly. Thanks for Ray Lu from Empia for providing the em2874 datasheet. Signed-off-by: Devin Heitmueller <devin.heitmueller@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/em28xx/em28xx-core.c18
-rw-r--r--drivers/media/video/em28xx/em28xx-reg.h9
2 files changed, 27 insertions, 0 deletions
diff --git a/drivers/media/video/em28xx/em28xx-core.c b/drivers/media/video/em28xx/em28xx-core.c
index 094548903cb9..d4dee8480e9f 100644
--- a/drivers/media/video/em28xx/em28xx-core.c
+++ b/drivers/media/video/em28xx/em28xx-core.c
@@ -373,6 +373,24 @@ int em28xx_colorlevels_set_default(struct em28xx *dev)
373int em28xx_capture_start(struct em28xx *dev, int start) 373int em28xx_capture_start(struct em28xx *dev, int start)
374{ 374{
375 int rc; 375 int rc;
376
377 if (dev->chip_id == CHIP_ID_EM2874) {
378 /* The Transport Stream Enable Register moved in em2874 */
379 if (!start) {
380 rc = em28xx_write_reg_bits(dev, EM2874_R5F_TS_ENABLE,
381 0x00,
382 EM2874_TS1_CAPTURE_ENABLE);
383 return rc;
384 }
385
386 /* Enable Transport Stream */
387 rc = em28xx_write_reg_bits(dev, EM2874_R5F_TS_ENABLE,
388 EM2874_TS1_CAPTURE_ENABLE,
389 EM2874_TS1_CAPTURE_ENABLE);
390 return rc;
391 }
392
393
376 /* FIXME: which is the best order? */ 394 /* FIXME: which is the best order? */
377 /* video registers are sampled by VREF */ 395 /* video registers are sampled by VREF */
378 rc = em28xx_write_reg_bits(dev, EM28XX_R0C_USBSUSP, 396 rc = em28xx_write_reg_bits(dev, EM28XX_R0C_USBSUSP,
diff --git a/drivers/media/video/em28xx/em28xx-reg.h b/drivers/media/video/em28xx/em28xx-reg.h
index 1f0e8a34e8c9..50d1790d84fc 100644
--- a/drivers/media/video/em28xx/em28xx-reg.h
+++ b/drivers/media/video/em28xx/em28xx-reg.h
@@ -77,8 +77,17 @@
77#define EM28XX_R14_VIDEO_AC97 0x14 77#define EM28XX_R14_VIDEO_AC97 0x14
78 78
79/* em2874 registers */ 79/* em2874 registers */
80#define EM2874_R5F_TS_ENABLE 0x5f
80#define EM2874_R80_GPIO 0x80 81#define EM2874_R80_GPIO 0x80
81 82
83/* em2874 Transport Stream Enable Register (0x5f) */
84#define EM2874_TS1_CAPTURE_ENABLE (1 << 0)
85#define EM2874_TS1_FILTER_ENABLE (1 << 1)
86#define EM2874_TS1_NULL_DISCARD (1 << 2)
87#define EM2874_TS2_CAPTURE_ENABLE (1 << 4)
88#define EM2874_TS2_FILTER_ENABLE (1 << 5)
89#define EM2874_TS2_NULL_DISCARD (1 << 6)
90
82/* register settings */ 91/* register settings */
83#define EM2800_AUDIO_SRC_TUNER 0x0d 92#define EM2800_AUDIO_SRC_TUNER 0x0d
84#define EM2800_AUDIO_SRC_LINE 0x0c 93#define EM2800_AUDIO_SRC_LINE 0x0c