diff options
author | Mauro Carvalho Chehab <mchehab@infradead.org> | 2009-01-19 06:01:24 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-03-30 11:42:35 -0400 |
commit | aaf50d7d0e12ec797dc0677c4fc853839bdcf07d (patch) | |
tree | 7f37b0e8d20d4a87623968927769cfb27f676847 /drivers | |
parent | 9a909447d3af6917bf2f7eaae08af0c9e1c3593e (diff) |
V4L/DVB (10394): KWorld ATSC 115 all static
saa7134: Fix tuner access on Kworld ATSC110
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/video/saa7134/saa7134-cards.c | 46 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134.h | 23 |
2 files changed, 49 insertions, 20 deletions
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c index 0d50d7448fc5..42684d162040 100644 --- a/drivers/media/video/saa7134/saa7134-cards.c +++ b/drivers/media/video/saa7134/saa7134-cards.c | |||
@@ -5896,6 +5896,32 @@ static void hauppauge_eeprom(struct saa7134_dev *dev, u8 *eeprom_data) | |||
5896 | 5896 | ||
5897 | /* ----------------------------------------------------------- */ | 5897 | /* ----------------------------------------------------------- */ |
5898 | 5898 | ||
5899 | static void nxt200x_gate_ctrl(struct saa7134_dev *dev, int open) | ||
5900 | { | ||
5901 | /* enable tuner */ | ||
5902 | int i; | ||
5903 | static const u8 buffer [][2] = { | ||
5904 | { 0x10, 0x12 }, | ||
5905 | { 0x13, 0x04 }, | ||
5906 | { 0x16, 0x00 }, | ||
5907 | { 0x14, 0x04 }, | ||
5908 | { 0x17, 0x00 }, | ||
5909 | }; | ||
5910 | |||
5911 | dev->i2c_client.addr = 0x0a; | ||
5912 | |||
5913 | /* FIXME: don't know how to close the i2c gate on NXT200x */ | ||
5914 | if (!open) | ||
5915 | return; | ||
5916 | |||
5917 | for (i = 0; i < ARRAY_SIZE(buffer); i++) | ||
5918 | if (2 != i2c_master_send(&dev->i2c_client, | ||
5919 | &buffer[i][0], ARRAY_SIZE(buffer[0]))) | ||
5920 | printk(KERN_WARNING | ||
5921 | "%s: Unable to enable tuner(%i).\n", | ||
5922 | dev->name, i); | ||
5923 | } | ||
5924 | |||
5899 | int saa7134_board_init1(struct saa7134_dev *dev) | 5925 | int saa7134_board_init1(struct saa7134_dev *dev) |
5900 | { | 5926 | { |
5901 | /* Always print gpio, often manufacturers encode tuner type and other info. */ | 5927 | /* Always print gpio, often manufacturers encode tuner type and other info. */ |
@@ -6089,6 +6115,10 @@ int saa7134_board_init1(struct saa7134_dev *dev) | |||
6089 | "are supported for now.\n", | 6115 | "are supported for now.\n", |
6090 | dev->name, card(dev).name, dev->name); | 6116 | dev->name, card(dev).name, dev->name); |
6091 | break; | 6117 | break; |
6118 | case SAA7134_BOARD_ADS_INSTANT_HDTV_PCI: | ||
6119 | case SAA7134_BOARD_KWORLD_ATSC110: | ||
6120 | dev->gate_ctrl = nxt200x_gate_ctrl; | ||
6121 | break; | ||
6092 | } | 6122 | } |
6093 | return 0; | 6123 | return 0; |
6094 | } | 6124 | } |
@@ -6350,22 +6380,6 @@ int saa7134_board_init2(struct saa7134_dev *dev) | |||
6350 | i2c_transfer(&dev->i2c_adap, &msg, 1); | 6380 | i2c_transfer(&dev->i2c_adap, &msg, 1); |
6351 | break; | 6381 | break; |
6352 | } | 6382 | } |
6353 | case SAA7134_BOARD_ADS_INSTANT_HDTV_PCI: | ||
6354 | case SAA7134_BOARD_KWORLD_ATSC110: | ||
6355 | { | ||
6356 | /* enable tuner */ | ||
6357 | int i; | ||
6358 | static const u8 buffer [] = { 0x10, 0x12, 0x13, 0x04, 0x16, | ||
6359 | 0x00, 0x14, 0x04, 0x17, 0x00 }; | ||
6360 | dev->i2c_client.addr = 0x0a; | ||
6361 | for (i = 0; i < 5; i++) | ||
6362 | if (2 != i2c_master_send(&dev->i2c_client, | ||
6363 | &buffer[i*2], 2)) | ||
6364 | printk(KERN_WARNING | ||
6365 | "%s: Unable to enable tuner(%i).\n", | ||
6366 | dev->name, i); | ||
6367 | break; | ||
6368 | } | ||
6369 | case SAA7134_BOARD_VIDEOMATE_DVBT_200: | 6383 | case SAA7134_BOARD_VIDEOMATE_DVBT_200: |
6370 | case SAA7134_BOARD_VIDEOMATE_DVBT_200A: | 6384 | case SAA7134_BOARD_VIDEOMATE_DVBT_200A: |
6371 | /* The T200 and the T200A share the same pci id. Consequently, | 6385 | /* The T200 and the T200A share the same pci id. Consequently, |
diff --git a/drivers/media/video/saa7134/saa7134.h b/drivers/media/video/saa7134/saa7134.h index bb6952118d01..6fbf5088c97a 100644 --- a/drivers/media/video/saa7134/saa7134.h +++ b/drivers/media/video/saa7134/saa7134.h | |||
@@ -589,6 +589,7 @@ struct saa7134_dev { | |||
589 | int (*original_set_voltage)(struct dvb_frontend *fe, fe_sec_voltage_t voltage); | 589 | int (*original_set_voltage)(struct dvb_frontend *fe, fe_sec_voltage_t voltage); |
590 | int (*original_set_high_voltage)(struct dvb_frontend *fe, long arg); | 590 | int (*original_set_high_voltage)(struct dvb_frontend *fe, long arg); |
591 | #endif | 591 | #endif |
592 | void (*gate_ctrl)(struct saa7134_dev *dev, int open); | ||
592 | }; | 593 | }; |
593 | 594 | ||
594 | /* ----------------------------------------------------------- */ | 595 | /* ----------------------------------------------------------- */ |
@@ -618,10 +619,24 @@ struct saa7134_dev { | |||
618 | V4L2_STD_PAL_60) | 619 | V4L2_STD_PAL_60) |
619 | 620 | ||
620 | #define GRP_EMPRESS (1) | 621 | #define GRP_EMPRESS (1) |
621 | #define saa_call_all(dev, o, f, args...) \ | 622 | #define saa_call_all(dev, o, f, args...) do { \ |
622 | v4l2_device_call_all(&(dev)->v4l2_dev, 0, o, f , ##args) | 623 | if (dev->gate_ctrl) \ |
623 | #define saa_call_empress(dev, o, f, args...) \ | 624 | dev->gate_ctrl(dev, 1); \ |
624 | v4l2_device_call_until_err(&(dev)->v4l2_dev, GRP_EMPRESS, o, f , ##args) | 625 | v4l2_device_call_all(&(dev)->v4l2_dev, 0, o, f , ##args); \ |
626 | if (dev->gate_ctrl) \ | ||
627 | dev->gate_ctrl(dev, 0); \ | ||
628 | } while (0) | ||
629 | |||
630 | #define saa_call_empress(dev, o, f, args...) ({ \ | ||
631 | long _rc; \ | ||
632 | if (dev->gate_ctrl) \ | ||
633 | dev->gate_ctrl(dev, 1); \ | ||
634 | _rc = v4l2_device_call_until_err(&(dev)->v4l2_dev, \ | ||
635 | GRP_EMPRESS, o, f , ##args); \ | ||
636 | if (dev->gate_ctrl) \ | ||
637 | dev->gate_ctrl(dev, 0); \ | ||
638 | _rc; \ | ||
639 | }) | ||
625 | 640 | ||
626 | /* ----------------------------------------------------------- */ | 641 | /* ----------------------------------------------------------- */ |
627 | /* saa7134-core.c */ | 642 | /* saa7134-core.c */ |