diff options
Diffstat (limited to 'drivers/media/video')
-rw-r--r-- | drivers/media/video/saa7134/saa7134-cards.c | 44 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-input.c | 14 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134.h | 1 |
3 files changed, 59 insertions, 0 deletions
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c index 863522899e85..f0b95804e414 100644 --- a/drivers/media/video/saa7134/saa7134-cards.c +++ b/drivers/media/video/saa7134/saa7134-cards.c | |||
@@ -4606,6 +4606,43 @@ struct saa7134_board saa7134_boards[] = { | |||
4606 | .gpio = 0x0200000, | 4606 | .gpio = 0x0200000, |
4607 | }, | 4607 | }, |
4608 | }, | 4608 | }, |
4609 | [SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG] = { | ||
4610 | .name = "Kworld Plus TV Analog Lite PCI", | ||
4611 | .audio_clock = 0x00187de7, | ||
4612 | .tuner_type = TUNER_YMEC_TVF_5533MF, | ||
4613 | .radio_type = TUNER_TEA5767, | ||
4614 | .tuner_addr = ADDR_UNSET, | ||
4615 | .radio_addr = ADDR_UNSET, | ||
4616 | .gpiomask = 0x80000700, | ||
4617 | .inputs = { { | ||
4618 | .name = name_tv, | ||
4619 | .vmux = 1, | ||
4620 | .amux = LINE2, | ||
4621 | .tv = 1, | ||
4622 | .gpio = 0x100, | ||
4623 | }, { | ||
4624 | .name = name_comp1, | ||
4625 | .vmux = 3, | ||
4626 | .amux = LINE1, | ||
4627 | .gpio = 0x200, | ||
4628 | }, { | ||
4629 | .name = name_svideo, | ||
4630 | .vmux = 8, | ||
4631 | .amux = LINE1, | ||
4632 | .gpio = 0x200, | ||
4633 | } }, | ||
4634 | .radio = { | ||
4635 | .name = name_radio, | ||
4636 | .vmux = 1, | ||
4637 | .amux = LINE1, | ||
4638 | .gpio = 0x100, | ||
4639 | }, | ||
4640 | .mute = { | ||
4641 | .name = name_mute, | ||
4642 | .vmux = 8, | ||
4643 | .amux = 2, | ||
4644 | }, | ||
4645 | }, | ||
4609 | }; | 4646 | }; |
4610 | 4647 | ||
4611 | const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); | 4648 | const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); |
@@ -5653,6 +5690,12 @@ struct pci_device_id saa7134_pci_tbl[] = { | |||
5653 | .subdevice = 0x4878, /* REV:1.02G */ | 5690 | .subdevice = 0x4878, /* REV:1.02G */ |
5654 | .driver_data = SAA7134_BOARD_ASUSTeK_TIGER_3IN1, | 5691 | .driver_data = SAA7134_BOARD_ASUSTeK_TIGER_3IN1, |
5655 | }, { | 5692 | }, { |
5693 | .vendor = PCI_VENDOR_ID_PHILIPS, | ||
5694 | .device = PCI_DEVICE_ID_PHILIPS_SAA7134, | ||
5695 | .subvendor = 0x17de, | ||
5696 | .subdevice = 0x7128, | ||
5697 | .driver_data = SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG, | ||
5698 | }, { | ||
5656 | /* --- boards without eeprom + subsystem ID --- */ | 5699 | /* --- boards without eeprom + subsystem ID --- */ |
5657 | .vendor = PCI_VENDOR_ID_PHILIPS, | 5700 | .vendor = PCI_VENDOR_ID_PHILIPS, |
5658 | .device = PCI_DEVICE_ID_PHILIPS_SAA7134, | 5701 | .device = PCI_DEVICE_ID_PHILIPS_SAA7134, |
@@ -5880,6 +5923,7 @@ int saa7134_board_init1(struct saa7134_dev *dev) | |||
5880 | case SAA7134_BOARD_BEHOLD_507_9FM: | 5923 | case SAA7134_BOARD_BEHOLD_507_9FM: |
5881 | case SAA7134_BOARD_GENIUS_TVGO_A11MCE: | 5924 | case SAA7134_BOARD_GENIUS_TVGO_A11MCE: |
5882 | case SAA7134_BOARD_REAL_ANGEL_220: | 5925 | case SAA7134_BOARD_REAL_ANGEL_220: |
5926 | case SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG: | ||
5883 | dev->has_remote = SAA7134_REMOTE_GPIO; | 5927 | dev->has_remote = SAA7134_REMOTE_GPIO; |
5884 | break; | 5928 | break; |
5885 | case SAA7134_BOARD_FLYDVBS_LR300: | 5929 | case SAA7134_BOARD_FLYDVBS_LR300: |
diff --git a/drivers/media/video/saa7134/saa7134-input.c b/drivers/media/video/saa7134/saa7134-input.c index c53fd5f9f6b5..d2124f64e4e2 100644 --- a/drivers/media/video/saa7134/saa7134-input.c +++ b/drivers/media/video/saa7134/saa7134-input.c | |||
@@ -97,6 +97,15 @@ static int build_key(struct saa7134_dev *dev) | |||
97 | dprintk("build_key gpio=0x%x mask=0x%x data=%d\n", | 97 | dprintk("build_key gpio=0x%x mask=0x%x data=%d\n", |
98 | gpio, ir->mask_keycode, data); | 98 | gpio, ir->mask_keycode, data); |
99 | 99 | ||
100 | switch (dev->board) { | ||
101 | case SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG: | ||
102 | if (data == ir->mask_keycode) | ||
103 | ir_input_nokey(ir->dev, &ir->ir); | ||
104 | else | ||
105 | ir_input_keydown(ir->dev, &ir->ir, data, data); | ||
106 | return 0; | ||
107 | } | ||
108 | |||
100 | if (ir->polling) { | 109 | if (ir->polling) { |
101 | if ((ir->mask_keydown && (0 != (gpio & ir->mask_keydown))) || | 110 | if ((ir->mask_keydown && (0 != (gpio & ir->mask_keydown))) || |
102 | (ir->mask_keyup && (0 == (gpio & ir->mask_keyup)))) { | 111 | (ir->mask_keyup && (0 == (gpio & ir->mask_keyup)))) { |
@@ -586,6 +595,11 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
586 | mask_keyup = 0x4000; | 595 | mask_keyup = 0x4000; |
587 | polling = 50; /* ms */ | 596 | polling = 50; /* ms */ |
588 | break; | 597 | break; |
598 | case SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG: | ||
599 | ir_codes = ir_codes_kworld_plus_tv_analog; | ||
600 | mask_keycode = 0x7f; | ||
601 | polling = 40; /* ms */ | ||
602 | break; | ||
589 | } | 603 | } |
590 | if (NULL == ir_codes) { | 604 | if (NULL == ir_codes) { |
591 | printk("%s: Oops: IR config error [card=%d]\n", | 605 | printk("%s: Oops: IR config error [card=%d]\n", |
diff --git a/drivers/media/video/saa7134/saa7134.h b/drivers/media/video/saa7134/saa7134.h index 9070efe4a4d0..f6c1fcc72070 100644 --- a/drivers/media/video/saa7134/saa7134.h +++ b/drivers/media/video/saa7134/saa7134.h | |||
@@ -275,6 +275,7 @@ struct saa7134_format { | |||
275 | #define SAA7134_BOARD_REAL_ANGEL_220 150 | 275 | #define SAA7134_BOARD_REAL_ANGEL_220 150 |
276 | #define SAA7134_BOARD_ADS_INSTANT_HDTV_PCI 151 | 276 | #define SAA7134_BOARD_ADS_INSTANT_HDTV_PCI 151 |
277 | #define SAA7134_BOARD_ASUSTeK_TIGER 152 | 277 | #define SAA7134_BOARD_ASUSTeK_TIGER 152 |
278 | #define SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG 153 | ||
278 | 279 | ||
279 | #define SAA7134_MAXBOARDS 32 | 280 | #define SAA7134_MAXBOARDS 32 |
280 | #define SAA7134_INPUT_MAX 8 | 281 | #define SAA7134_INPUT_MAX 8 |