On Tue, Mar 31, 2009 at 10:57 AM, Devin Heitmueller <devin.heitmueller@xxxxxxxxx> wrote: > On Mon, Mar 30, 2009 at 10:47 PM, David Wong <davidtlwong@xxxxxxxxx> wrote: >> Does anyone know how to get XC5000 working for DVB-T, especially 8MHz bandwidth? >> Current driver only supports ATSC with 6MHz bandwidth only. >> It seems there is a trick at setting compensated RF frequency. >> >> DVB-T 8MHz support would probably works for DMB-TH, but DMB-TH >> settings is very welcome. >> >> Regards, >> David >> -- >> 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 >> > > All of my xc5000 work has been with ATSC/QAM, so I can't say > authoritatively what is required to make it work. > > Well, at a minimum you will have to modify xc5000_set_params to > support setting priv->video_standard to DTV8. Beyond that, I don't > think you need to do anything specific for DVB-T. > > Devin > > -- > Devin J. Heitmueller > http://www.devinheitmueller.com > AIM: devinheitmueller > I have tried followings in xc5000_set_params() if (fe->ops.info.type == FE_ATSC) { ... } else if (fe->ops.info.type == FE_OFDM) { switch (params->u.ofdm.bandwidth) { case BANDWIDTH_6_MHZ: printk("xc5000 bandwidth 6MHz\n"); priv->bandwidth = BANDWIDTH_6_MHZ; priv->video_standard = DTV6; break; case BANDWIDTH_7_MHZ: printk("xc5000 bandwidth 7MHz\n"); priv->bandwidth = BANDWIDTH_7_MHZ; priv->video_standard = DTV7; break; case BANDWIDTH_8_MHZ: printk("xc5000 bandwidth 8MHz\n"); priv->bandwidth = BANDWIDTH_8_MHZ; priv->video_standard = DTV8; break; default: printk("xc5000 bandwidth not set!\n"); return -EINVAL; } priv->rf_mode = XC_RF_MODE_AIR; priv->freq_hz = params->frequency - 1750000; } But no success yet. I am wondering the -1750000 compensation for DTV8. BTW, The xc_debug_dump() could get more information like firmware build number and tuner total gain diff -r 2276e777f950 linux/drivers/media/common/tuners/xc5000.c --- a/linux/drivers/media/common/tuners/xc5000.c Thu Mar 26 22:17:48 2009 -0300 +++ b/linux/drivers/media/common/tuners/xc5000.c Mon Mar 30 16:23:11 2009 +0800 @@ -84,6 +84,7 @@ #define XREG_IF_OUT 0x05 #define XREG_SEEK_MODE 0x07 #define XREG_POWER_DOWN 0x0A +#define XREG_OUTPUT_AMP 0x0B #define XREG_SIGNALSOURCE 0x0D /* 0=Air, 1=Cable */ #define XREG_SMOOTHEDCVBS 0x0E #define XREG_XTALFREQ 0x0F @@ -100,6 +101,8 @@ #define XREG_VERSION 0x07 #define XREG_PRODUCT_ID 0x08 #define XREG_BUSY 0x09 +#define XREG_BUILD_NUM 0x0D +#define XREG_TOTAL_GAIN 0x0F /* Basic firmware description. This will remain with @@ -468,7 +485,8 @@ static int xc_get_version(struct xc5000_priv *priv, u8 *hw_majorversion, u8 *hw_minorversion, - u8 *fw_majorversion, u8 *fw_minorversion) + u8 *fw_majorversion, u8 *fw_minorversion, + u16 *fw_buildnum) { u16 data; int result; @@ -481,6 +499,11 @@ (*hw_minorversion) = (data >> 8) & 0x0F; (*fw_majorversion) = (data >> 4) & 0x0F; (*fw_minorversion) = data & 0x0F; + + result = xc_read_reg(priv, XREG_BUILD_NUM, &data); + if (result) + return result; + *fw_buildnum = data; return 0; } @@ -506,6 +529,11 @@ static int xc_get_quality(struct xc5000_priv *priv, u16 *quality) { return xc_read_reg(priv, XREG_QUALITY, quality); +} + +static int xc_get_total_gain(struct xc5000_priv *priv, u16 *gain) +{ + return xc_read_reg(priv, XREG_TOTAL_GAIN, gain); } static u16 WaitForLock(struct xc5000_priv *priv) @@ -626,8 +654,10 @@ u32 hsync_freq_hz = 0; u16 frame_lines; u16 quality; + u16 gain; u8 hw_majorversion = 0, hw_minorversion = 0; u8 fw_majorversion = 0, fw_minorversion = 0; + u16 fw_buildnum = 0; /* Wait for stats to stabilize. * Frame Lines needs two frame times after initial lock @@ -646,10 +676,11 @@ lock_status); xc_get_version(priv, &hw_majorversion, &hw_minorversion, - &fw_majorversion, &fw_minorversion); - dprintk(1, "*** HW: V%02x.%02x, FW: V%02x.%02x\n", + &fw_majorversion, &fw_minorversion, &fw_buildnum); + dprintk(1, "*** HW: V%02x.%02x, FW: V%02x.%02x build %d\n", hw_majorversion, hw_minorversion, - fw_majorversion, fw_minorversion); + fw_majorversion, fw_minorversion, + fw_buildnum); xc_get_hsync_freq(priv, &hsync_freq_hz); dprintk(1, "*** Horizontal sync frequency = %d Hz\n", hsync_freq_hz); @@ -659,6 +690,9 @@ xc_get_quality(priv, &quality); dprintk(1, "*** Quality (0:<8dB, 7:>56dB) = %d\n", quality); + + xc_get_total_gain(priv, &gain); + dprintk(1, "*** Total Gain = %d mdB\n", gain * 1000 / 256); } -- 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