Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Handling of frontend automatic inversion?



Attached are two patches which tweak the handling of the INVERSION_AUTO by the grundig_29504-401 and tda1004x frontends.

When reading through the grundig datasheet some time ago I noticed that the driver already enables the "automatic TPS update" feature of the frontend. I believe that this feature allows the frontend to determine the correct inversion setting automatically, but the driver doesn't claim to support this feature. The patch for this frontend adds support for setting this mode (but the auto TPS mode was already permenantly enabled anyway).

The tda1004x driver claims to support auto inversion, but was rejecting it as an invalid parameter if the application (e.g. scan) tried to use it. I assume that this frontend uses the same auto-TPS mechanism as the grundig frontend.

The datasheet that i've found seems a bit light on technical information but it does claim:
"For maximum ease of use, the TDA10045 features fully automatic
transmission parameter detection"

Does anyone have a more detailed register guide to confirm whether this feature is actually enabled? I'll try tuning with both inversion on and off and see whether it really does get it correct.

Jon


diff -urw dvb-kernel-cvs/linux/drivers/media/dvb/frontends/tda1004x.c dvb-kernel/linux/drivers/media/dvb/frontends/tda1004x.c
--- dvb-kernel-cvs/linux/drivers/media/dvb/frontends/tda1004x.c	2003-09-11 17:35:55.000000000 +0100
+++ dvb-kernel/linux/drivers/media/dvb/frontends/tda1004x.c	2003-09-14 00:09:15.000000000 +0100
@@ -681,6 +681,7 @@
 	// set inversion
 	switch (fe_params->inversion) {
 	case INVERSION_OFF:
+	case INVERSION_AUTO:
 		tda1004x_write_mask(i2c, tda_state, TDA1004X_CONFC1, 0x20, 0);
 		break;
 
--- dvb-kernel-cvs/linux/drivers/media/dvb/frontends/grundig_29504-401.c	2003-09-11 17:35:55.000000000 +0100
+++ dvb-kernel/linux/drivers/media/dvb/frontends/grundig_29504-401.c	2003-09-14 00:19:02.000000000 +0100
@@ -45,7 +45,8 @@
 /*      .frequency_tolerance = ???,*/
 /*      .symbol_rate_tolerance = ???,*/
 	.notifier_delay = 0,
-	.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
+	.caps = FE_CAN_INVERSION_AUTO |
+	      FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
 	      FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
 	      FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 |
 	      FE_CAN_MUTE_TS /*| FE_CAN_CLEAN_SETUP*/
@@ -179,7 +180,8 @@
 	int bw = p->bandwidth - BANDWIDTH_8_MHZ;
 
 	if (param->inversion != INVERSION_ON &&
-	    param->inversion != INVERSION_OFF)
+	    param->inversion != INVERSION_OFF &&
+	    param->inversion != INVERSION_AUTO)
 		return -EINVAL;
 
 	if (bw < 0 || bw > 2)

Home | Main Index | Thread Index