Switches IF AGC control via GPIO 21 of the saa7134. Improves DTV reception and FM radio reception. Signed-off-by: Henk.Vergonet@xxxxxxxxx diff -r 29e4ba1a09bc linux/drivers/media/video/saa7134/saa7134-cards.c --- a/linux/drivers/media/video/saa7134/saa7134-cards.c Sat Sep 19 09:45:22 2009 -0300 +++ b/linux/drivers/media/video/saa7134/saa7134-cards.c Tue Sep 22 22:06:31 2009 +0200 @@ -6651,6 +6651,22 @@ return 0; } +static inline int saa7134_tda18271_zolid_toggle_agc(struct saa7134_dev *dev, + enum tda18271_mode mode) +{ + switch (mode) { + case TDA18271_ANALOG: + saa7134_set_gpio(dev, 21, 0); + break; + case TDA18271_DIGITAL: + saa7134_set_gpio(dev, 21, 1); + break; + default: + return -EINVAL; + } + return 0; +} + static int saa7134_tda8290_18271_callback(struct saa7134_dev *dev, int command, int arg) { @@ -6663,7 +6679,8 @@ case SAA7134_BOARD_HAUPPAUGE_HVR1120: ret = saa7134_tda18271_hvr11x0_toggle_agc(dev, arg); break; - default: + case SAA7134_BOARD_ZOLID_HYBRID_PCI: + ret = saa7134_tda18271_zolid_toggle_agc(dev, arg); break; } break; @@ -6682,6 +6699,7 @@ switch (dev->board) { case SAA7134_BOARD_HAUPPAUGE_HVR1150: case SAA7134_BOARD_HAUPPAUGE_HVR1120: + case SAA7134_BOARD_ZOLID_HYBRID_PCI: /* tda8290 + tda18271 */ ret = saa7134_tda8290_18271_callback(dev, command, arg); break; @@ -6985,6 +7003,11 @@ saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00008000, 0x00008000); saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00008000); break; + case SAA7134_BOARD_ZOLID_HYBRID_PCI: + saa7134_set_gpio(dev, 21, 0); /* s0 HC4052 */ + saa7134_set_gpio(dev, 22, 0); /* vsync tda18271 - TODO implement saa713x driven sync in analog TV modes */ + saa7134_set_gpio(dev, 23, 0); /* s1 HC4052 */ + break; } return 0; } diff -r 29e4ba1a09bc linux/drivers/media/video/saa7134/saa7134-dvb.c --- a/linux/drivers/media/video/saa7134/saa7134-dvb.c Sat Sep 19 09:45:22 2009 -0300 +++ b/linux/drivers/media/video/saa7134/saa7134-dvb.c Tue Sep 22 22:06:31 2009 +0200 @@ -1026,8 +1026,17 @@ .disable_gate_access = 1, }; +static struct tda18271_std_map zolid_tda18271_std_map = { + /* FM reception via RF_IN */ + .fm_radio = { .if_freq = 1250, .fm_rfn = 0, .agc_mode = 3, .std = 0, + .if_lvl = 0, .rfagc_top = 0x2c, }, +}; + static struct tda18271_config zolid_tda18271_config = { + .std_map = &zolid_tda18271_std_map, .gate = TDA18271_GATE_ANALOG, + .config = 3, + .output_opt = TDA18271_OUTPUT_LT_OFF, }; /* ================================================================== -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html