Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] saa7134: Add support for Snazio TvPVR PRO

This board has PCI ID: 1779:13cf

[mchehab@osg.samsung.com: Make scripts/checkpatch.pl happy]
Signed-off-by: Pojar George <geoubuntu@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>

authored by

GEORGE and committed by
Mauro Carvalho Chehab
9c91738d 174ced21

+60 -1
+1
Documentation/video4linux/CARDLIST.saa7134
··· 194 194 193 -> WIS Voyager or compatible [1905:7007] 195 195 194 -> AverMedia AverTV/505 [1461:a10a] 196 196 195 -> Leadtek Winfast TV2100 FM [107d:6f3a] 197 + 196 -> SnaZio* TVPVR PRO [1779:13cf]
+37 -1
drivers/media/pci/saa7134/saa7134-cards.c
··· 5733 5733 .gpio = 0x08, 5734 5734 }, 5735 5735 }, 5736 - 5736 + [SAA7134_BOARD_SNAZIO_TVPVR_PRO] = { 5737 + .name = "SnaZio* TVPVR PRO", 5738 + .audio_clock = 0x00187de7, 5739 + .tuner_type = TUNER_PHILIPS_TDA8290, 5740 + .radio_type = UNSET, 5741 + .tuner_addr = ADDR_UNSET, 5742 + .radio_addr = ADDR_UNSET, 5743 + .gpiomask = 1 << 21, 5744 + .inputs = { { 5745 + .type = SAA7134_INPUT_TV, 5746 + .vmux = 1, 5747 + .amux = TV, 5748 + .gpio = 0x0000000, 5749 + }, { 5750 + .type = SAA7134_INPUT_COMPOSITE1, 5751 + .vmux = 3, 5752 + .amux = LINE2, 5753 + .gpio = 0x0000000, 5754 + }, { 5755 + .type = SAA7134_INPUT_SVIDEO, 5756 + .vmux = 8, 5757 + .amux = LINE2, 5758 + .gpio = 0x0000000, 5759 + } }, 5760 + .radio = { 5761 + .type = SAA7134_INPUT_RADIO, 5762 + .amux = TV, 5763 + .gpio = 0x0200000, 5764 + }, 5765 + }, 5737 5766 }; 5738 5767 5739 5768 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); ··· 7033 7004 .subdevice = 0x6f3a, 7034 7005 .driver_data = SAA7134_BOARD_LEADTEK_WINFAST_TV2100_FM, 7035 7006 }, { 7007 + .vendor = PCI_VENDOR_ID_PHILIPS, 7008 + .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 7009 + .subvendor = 0x1779, /* V One Multimedia PTE Ltd */ 7010 + .subdevice = 0x13cf, 7011 + .driver_data = SAA7134_BOARD_SNAZIO_TVPVR_PRO, 7012 + }, { 7036 7013 /* --- boards without eeprom + subsystem ID --- */ 7037 7014 .vendor = PCI_VENDOR_ID_PHILIPS, 7038 7015 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, ··· 7569 7534 case SAA7134_BOARD_BEHOLD_H7: 7570 7535 case SAA7134_BOARD_BEHOLD_A7: 7571 7536 case SAA7134_BOARD_KWORLD_PC150U: 7537 + case SAA7134_BOARD_SNAZIO_TVPVR_PRO: 7572 7538 dev->has_remote = SAA7134_REMOTE_I2C; 7573 7539 break; 7574 7540 case SAA7134_BOARD_AVERMEDIA_A169_B:
+21
drivers/media/pci/saa7134/saa7134-input.c
··· 975 975 msg_msi.addr, dev->i2c_adap.name, 976 976 (1 == rc) ? "yes" : "no"); 977 977 break; 978 + case SAA7134_BOARD_SNAZIO_TVPVR_PRO: 979 + dev->init_data.name = "SnaZio* TVPVR PRO"; 980 + dev->init_data.get_key = get_key_msi_tvanywhere_plus; 981 + dev->init_data.ir_codes = RC_MAP_MSI_TVANYWHERE_PLUS; 982 + /* 983 + * MSI TV@nyware Plus requires more frequent polling 984 + * otherwise it will miss some keypresses 985 + */ 986 + dev->init_data.polling_interval = 50; 987 + info.addr = 0x30; 988 + /* 989 + * MSI TV@nywhere Plus controller doesn't seem to 990 + * respond to probes unless we read something from 991 + * an existing device. Weird... 992 + * REVISIT: might no longer be needed 993 + */ 994 + rc = i2c_transfer(&dev->i2c_adap, &msg_msi, 1); 995 + input_dbg("probe 0x%02x @ %s: %s\n", 996 + msg_msi.addr, dev->i2c_adap.name, 997 + (rc == 1) ? "yes" : "no"); 998 + break; 978 999 case SAA7134_BOARD_KWORLD_PC150U: 979 1000 /* copied and modified from MSI TV@nywhere Plus */ 980 1001 dev->init_data.name = "Kworld PC150-U";
+1
drivers/media/pci/saa7134/saa7134.h
··· 343 343 #define SAA7134_BOARD_WIS_VOYAGER 193 344 344 #define SAA7134_BOARD_AVERMEDIA_505 194 345 345 #define SAA7134_BOARD_LEADTEK_WINFAST_TV2100_FM 195 346 + #define SAA7134_BOARD_SNAZIO_TVPVR_PRO 196 346 347 347 348 #define SAA7134_MAXBOARDS 32 348 349 #define SAA7134_INPUT_MAX 8