diff options
author | Devin Heitmueller <devin.heitmueller@gmail.com> | 2008-06-28 07:57:06 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-07-20 06:12:48 -0400 |
commit | a9fc52bcbeb5245b58d23c558f3e3e8f18bebbc3 (patch) | |
tree | bd0f1f54ed1ee0f3994a38ecebe6dc5fb00c4bc5 /drivers/media/video/em28xx/em28xx-cards.c | |
parent | 305519c924d8f2f2f85c390c6d456dc41dbe0284 (diff) |
V4L/DVB (8123): Add support for em2860 based PointNix Intra-Oral Camera
em28xx-cards.c
em28xx-input.c
em28xx-video.c
em28xx.h
- Add support for the PointNix Intra-Oral Camera, which required addition of
a construct for reading the "snapshot" button (provided on the em2860 and
em2880 chips, but this is the first case where I have seen it actually used
in a product). The button is wired to pin 56 on the em2880.
http://www.pointnix.com/ENG/dental/product_02.asp
Thanks to Roberto Mantovani <rmantovani@libero.it> for testing the changes
Signed-off-by: Devin Heitmueller <devin.heitmueller@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-cards.c')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-cards.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c index 938c51e1c86d..05f0d5a15058 100644 --- a/drivers/media/video/em28xx/em28xx-cards.c +++ b/drivers/media/video/em28xx/em28xx-cards.c | |||
@@ -426,6 +426,19 @@ struct em28xx_board em28xx_boards[] = { | |||
426 | .amux = EM28XX_AMUX_LINE_IN, | 426 | .amux = EM28XX_AMUX_LINE_IN, |
427 | } }, | 427 | } }, |
428 | }, | 428 | }, |
429 | [EM2860_BOARD_POINTNIX_INTRAORAL_CAMERA] = { | ||
430 | .name = "PointNix Intra-Oral Camera", | ||
431 | .has_snapshot_button = 1, | ||
432 | .vchannels = 1, | ||
433 | .tda9887_conf = TDA9887_PRESENT, | ||
434 | .tuner_type = TUNER_ABSENT, | ||
435 | .decoder = EM28XX_SAA7113, | ||
436 | .input = { { | ||
437 | .type = EM28XX_VMUX_SVIDEO, | ||
438 | .vmux = SAA7115_SVIDEO3, | ||
439 | .amux = 0, | ||
440 | } }, | ||
441 | }, | ||
429 | }; | 442 | }; |
430 | const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards); | 443 | const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards); |
431 | 444 | ||
@@ -522,6 +535,7 @@ static struct em28xx_hash_table em28xx_eeprom_hash [] = { | |||
522 | static struct em28xx_hash_table em28xx_i2c_hash[] = { | 535 | static struct em28xx_hash_table em28xx_i2c_hash[] = { |
523 | {0xb06a32c3, EM2800_BOARD_TERRATEC_CINERGY_200, TUNER_LG_PAL_NEW_TAPC}, | 536 | {0xb06a32c3, EM2800_BOARD_TERRATEC_CINERGY_200, TUNER_LG_PAL_NEW_TAPC}, |
524 | {0xf51200e3, EM2800_BOARD_VGEAR_POCKETTV, TUNER_LG_PAL_NEW_TAPC}, | 537 | {0xf51200e3, EM2800_BOARD_VGEAR_POCKETTV, TUNER_LG_PAL_NEW_TAPC}, |
538 | {0x1ba50080, EM2860_BOARD_POINTNIX_INTRAORAL_CAMERA, TUNER_ABSENT}, | ||
525 | }; | 539 | }; |
526 | 540 | ||
527 | int em28xx_tuner_callback(void *ptr, int command, int arg) | 541 | int em28xx_tuner_callback(void *ptr, int command, int arg) |
@@ -554,6 +568,7 @@ static void em28xx_set_model(struct em28xx *dev) | |||
554 | dev->has_12mhz_i2s = em28xx_boards[dev->model].has_12mhz_i2s; | 568 | dev->has_12mhz_i2s = em28xx_boards[dev->model].has_12mhz_i2s; |
555 | dev->max_range_640_480 = em28xx_boards[dev->model].max_range_640_480; | 569 | dev->max_range_640_480 = em28xx_boards[dev->model].max_range_640_480; |
556 | dev->has_dvb = em28xx_boards[dev->model].has_dvb; | 570 | dev->has_dvb = em28xx_boards[dev->model].has_dvb; |
571 | dev->has_snapshot_button = em28xx_boards[dev->model].has_snapshot_button; | ||
557 | } | 572 | } |
558 | 573 | ||
559 | /* Since em28xx_pre_card_setup() requires a proper dev->model, | 574 | /* Since em28xx_pre_card_setup() requires a proper dev->model, |
@@ -841,6 +856,9 @@ void em28xx_card_setup(struct em28xx *dev) | |||
841 | em28xx_set_model(dev); | 856 | em28xx_set_model(dev); |
842 | } | 857 | } |
843 | 858 | ||
859 | if (dev->has_snapshot_button) | ||
860 | em28xx_register_snapshot_button(dev); | ||
861 | |||
844 | /* Allow override tuner type by a module parameter */ | 862 | /* Allow override tuner type by a module parameter */ |
845 | if (tuner >= 0) | 863 | if (tuner >= 0) |
846 | dev->tuner_type = tuner; | 864 | dev->tuner_type = tuner; |