Commit a55bc848 authored by Manu Abraham's avatar Manu Abraham Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (9399): some cleanups at budget-ci



Still messing up:
* Cleanup
* Use KNC1's default settings to startup with
* Add in tuner wrapper calls

Signed-off-by: default avatarManu Abraham <manu@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 9e0dc660
Loading
Loading
Loading
Loading
+135 −11
Original line number Diff line number Diff line
@@ -1136,9 +1136,9 @@ static const struct stb0899_s1_reg tt3200_stb0899_s1_init_1[] = {
	{ STB0899_GPIO20CFG     	, 0x82 },
	{ STB0899_SDATCFG       	, 0xb8 },
	{ STB0899_SCLTCFG       	, 0xba },
	{ STB0899_AGCRFCFG      	, 0x1c },	// 0x11
	{ STB0899_GPIO22        	, 0x82 },	// AGCBB2CFG
	{ STB0899_GPIO21        	, 0x91 },	// AGCBB1CFG
	{ STB0899_AGCRFCFG      	, 0x1c }, /* 0x11 */
	{ STB0899_GPIO22        	, 0x82 }, /* AGCBB2CFG */
	{ STB0899_GPIO21        	, 0x91 }, /* AGCBB1CFG */
	{ STB0899_DIRCLKCFG     	, 0x82 },
	{ STB0899_CLKOUT27CFG   	, 0x7e },
	{ STB0899_STDBYCFG      	, 0x82 },
@@ -1153,8 +1153,8 @@ static const struct stb0899_s1_reg tt3200_stb0899_s1_init_1[] = {
	{ STB0899_GPIO37CFG		, 0x82 },
	{ STB0899_GPIO38CFG		, 0x82 },
	{ STB0899_GPIO39CFG		, 0x82 },
	{ STB0899_NCOARSE       	, 0x15 }, // 0x15 = 27 Mhz Clock, F/3 = 198MHz, F/6 = 99MHz
	{ STB0899_SYNTCTRL      	, 0x02 }, // 0x00 = CLK from CLKI, 0x02 = CLK from XTALI
	{ STB0899_NCOARSE       	, 0x15 }, /* 0x15 = 27 Mhz Clock, F/3 = 198MHz, F/6 = 99MHz */
	{ STB0899_SYNTCTRL      	, 0x02 }, /* 0x00 = CLK from CLKI, 0x02 = CLK from XTALI */
	{ STB0899_FILTCTRL      	, 0x00 },
	{ STB0899_SYSCTRL       	, 0x00 },
	{ STB0899_STOPCLK1      	, 0x20 },
@@ -1419,7 +1419,7 @@ static const struct stb0899_s1_reg tt3200_stb0899_s1_init_3[] = {
	{ STB0899_VTH78         	, 0x38 },
	{ STB0899_PRVIT         	, 0xff },
	{ STB0899_VITSYNC       	, 0x19 },
	{ STB0899_RSULC         	, 0xb1 }, // DVB = 0xb1, DSS = 0xa1
	{ STB0899_RSULC         	, 0xb1 }, /* DVB = 0xb1, DSS = 0xa1 */
	{ STB0899_TSULC         	, 0x42 },
	{ STB0899_RSLLC         	, 0x40 },
	{ STB0899_TSLPL	        	, 0x12 },
@@ -1545,6 +1545,109 @@ static const struct stb0899_s1_reg tt3200_stb0899_s1_init_5[] = {
	{ 0xffff		, 0xff },
};

#define TT3200_DVBS2_ESNO_AVE			3
#define TT3200_DVBS2_ESNO_QUANT			32
#define TT3200_DVBS2_AVFRAMES_COARSE		10
#define TT3200_DVBS2_AVFRAMES_FINE		20
#define TT3200_DVBS2_MISS_THRESHOLD		6
#define TT3200_DVBS2_UWP_THRESHOLD_ACQ		1125
#define TT3200_DVBS2_UWP_THRESHOLD_TRACK	758
#define TT3200_DVBS2_UWP_THRESHOLD_SOF		1350
#define TT3200_DVBS2_SOF_SEARCH_TIMEOUT		1664100

#define TT3200_DVBS2_BTR_NCO_BITS		28
#define TT3200_DVBS2_BTR_GAIN_SHIFT_OFFSET	15
#define TT3200_DVBS2_CRL_NCO_BITS		30
#define TT3200_DVBS2_LDPC_MAX_ITER		70

static int stb6100_get_frequency(struct dvb_frontend *fe, u32 *frequency)
{
	struct dvb_frontend_ops	*frontend_ops = NULL;
	struct dvb_tuner_ops	*tuner_ops = NULL;
	struct tuner_state	t_state;
	int err = 0;

	if (&fe->ops)
		frontend_ops = &fe->ops;
	if (&frontend_ops->tuner_ops)
		tuner_ops = &frontend_ops->tuner_ops;
	if (tuner_ops->get_state) {
		if ((err = tuner_ops->get_state(fe, DVBFE_TUNER_FREQUENCY, &t_state)) < 0) {
			printk("%s: Invalid parameter\n", __func__);
			return err;
		}
		*frequency = t_state.frequency;
		printk("%s: Frequency=%d\n", __func__, t_state.frequency);
	}
	return 0;
}

static int stb6100_set_frequency(struct dvb_frontend *fe, u32 frequency)
{
	struct dvb_frontend_ops	*frontend_ops = NULL;
	struct dvb_tuner_ops	*tuner_ops = NULL;
	struct tuner_state	t_state;
	int err = 0;

	t_state.frequency = frequency;
	if (&fe->ops)
		frontend_ops = &fe->ops;
	if (&frontend_ops->tuner_ops)
		tuner_ops = &frontend_ops->tuner_ops;
	if (tuner_ops->set_state) {
		if ((err = tuner_ops->set_state(fe, DVBFE_TUNER_FREQUENCY, &t_state)) < 0) {
			printk("%s: Invalid parameter\n", __func__);
			return err;
		}
	}
	printk("%s: Frequency=%d\n", __func__, t_state.frequency);
	return 0;
}

static int stb6100_get_bandwidth(struct dvb_frontend *fe, u32 *bandwidth)
{
	struct dvb_frontend_ops	*frontend_ops = &fe->ops;
	struct dvb_tuner_ops	*tuner_ops = &frontend_ops->tuner_ops;
	struct tuner_state	t_state;
	int err = 0;

	if (&fe->ops)
		frontend_ops = &fe->ops;
	if (&frontend_ops->tuner_ops)
		tuner_ops = &frontend_ops->tuner_ops;
	if (tuner_ops->get_state) {
		if ((err = tuner_ops->get_state(fe, DVBFE_TUNER_BANDWIDTH, &t_state)) < 0) {
			printk("%s: Invalid parameter\n", __func__);
			return err;
		}
		*bandwidth = t_state.bandwidth;
	}
	printk("%s: Bandwidth=%d\n", __func__, t_state.bandwidth);
	return 0;
}

static int stb6100_set_bandwidth(struct dvb_frontend *fe, u32 bandwidth)
{
	struct dvb_frontend_ops	*frontend_ops = NULL;
	struct dvb_tuner_ops	*tuner_ops = NULL;
	struct tuner_state	t_state;
	int err = 0;

	t_state.frequency = bandwidth;
	if (&fe->ops)
		frontend_ops = &fe->ops;
	if (&frontend_ops->tuner_ops)
		tuner_ops = &frontend_ops->tuner_ops;
	if (tuner_ops->set_state) {
		if ((err = tuner_ops->set_state(fe, DVBFE_TUNER_BANDWIDTH, &t_state)) < 0) {
			printk("%s: Invalid parameter\n", __func__);
			return err;
		}
	}
	printk("%s: Bandwidth=%d\n", __func__, t_state.frequency);
	return 0;
}

static struct stb0899_config tt3200_config = {
	.init_dev		= tt3200_stb0899_s1_init_1,
	.init_s2_demod		= tt3200_stb0899_s2_init_2,
@@ -1556,6 +1659,27 @@ static struct stb0899_config tt3200_config = {

	.xtal_freq		= 27000000,
	.inversion		= 1,

	.esno_ave		= TT3200_DVBS2_ESNO_AVE,
	.esno_quant		= TT3200_DVBS2_ESNO_QUANT,
	.avframes_coarse	= TT3200_DVBS2_AVFRAMES_COARSE,
	.avframes_fine		= TT3200_DVBS2_AVFRAMES_FINE,
	.miss_threshold		= TT3200_DVBS2_MISS_THRESHOLD,
	.uwp_threshold_acq	= TT3200_DVBS2_UWP_THRESHOLD_ACQ,
	.uwp_threshold_track	= TT3200_DVBS2_UWP_THRESHOLD_TRACK,
	.uwp_threshold_sof	= TT3200_DVBS2_UWP_THRESHOLD_SOF,
	.sof_search_timeout	= TT3200_DVBS2_SOF_SEARCH_TIMEOUT,

	.btr_nco_bits		= TT3200_DVBS2_BTR_NCO_BITS,
	.btr_gain_shift_offset	= TT3200_DVBS2_BTR_GAIN_SHIFT_OFFSET,
	.crl_nco_bits		= TT3200_DVBS2_CRL_NCO_BITS,
	.ldpc_max_iter		= TT3200_DVBS2_LDPC_MAX_ITER,

	.tuner_get_frequency	= stb6100_get_frequency,
	.tuner_set_frequency	= stb6100_set_frequency,
	.tuner_set_bandwidth	= stb6100_set_bandwidth,
	.tuner_get_bandwidth	= stb6100_get_bandwidth,
	.tuner_set_rfsiggain	= NULL,
};

struct stb6100_config tt3200_stb6100_config = {