mirror of
https://github.com/hardkernel/kernel_common_drivers.git
synced 2026-06-25 12:03:48 +09:00
dtv_demod: calibrate dvbt/t2 strength (r842) (v3.7.5.1) [1/1]
PD#TV-168004 Problem: dvbt/t2 strength is inaccurate Solution: calibrate dvbt/t2 strength Verify: BR30A4 Change-Id: I8ff0455037fa0f3eba474ececc7b3508a8215f88 Signed-off-by: caiyi.xu <caiyi.xu@amlogic.com>
This commit is contained in:
@@ -2427,9 +2427,12 @@ static int aml_dtvdm_read_signal_strength(struct dvb_frontend *fe,
|
||||
#endif
|
||||
#ifdef AML_DEMOD_SUPPORT_DVBT
|
||||
case SYS_DVBT:
|
||||
case SYS_DVBT2:
|
||||
ret = gxtv_demod_dvbt_read_signal_strength(fe, (s16 *)strength);
|
||||
break;
|
||||
|
||||
case SYS_DVBT2:
|
||||
ret = gxtv_demod_dvbt2_read_signal_strength(fe, (s16 *)strength);
|
||||
break;
|
||||
#endif
|
||||
#ifdef AML_DEMOD_SUPPORT_ISDBT
|
||||
case SYS_ISDBT:
|
||||
@@ -3035,9 +3038,12 @@ static int aml_dtvdm_get_property(struct dvb_frontend *fe,
|
||||
#endif
|
||||
#ifdef AML_DEMOD_SUPPORT_DVBT
|
||||
case SYS_DVBT:
|
||||
case SYS_DVBT2:
|
||||
gxtv_demod_dvbt_read_signal_strength(fe, &strength);
|
||||
break;
|
||||
|
||||
case SYS_DVBT2:
|
||||
gxtv_demod_dvbt2_read_signal_strength(fe, &strength);
|
||||
break;
|
||||
#endif
|
||||
#ifdef AML_DEMOD_SUPPORT_ISDBT
|
||||
case SYS_ISDBT:
|
||||
|
||||
@@ -495,7 +495,7 @@ static int dvbt2_read_status(struct dvb_frontend *fe, enum fe_status *status, in
|
||||
if (devp->tuner_strength_limit)
|
||||
strength_limit = devp->tuner_strength_limit;
|
||||
|
||||
gxtv_demod_dvbt_read_signal_strength(fe, &strength);
|
||||
gxtv_demod_dvbt2_read_signal_strength(fe, &strength);
|
||||
if (!tuner_find_by_name(fe, "mxl661") || demod->last_status != 0x1F) {
|
||||
if (strength < strength_limit) {
|
||||
if (!(no_signal_cnt++ % 20))
|
||||
@@ -764,10 +764,37 @@ int gxtv_demod_dvbt_read_signal_strength(struct dvb_frontend *fe,
|
||||
*strength = (s16)tuner_get_ch_power(fe);
|
||||
if (tuner_find_by_name(fe, "r842") ||
|
||||
tuner_find_by_name(fe, "r836") ||
|
||||
tuner_find_by_name(fe, "r850"))
|
||||
*strength += 7;
|
||||
else if (tuner_find_by_name(fe, "mxl661"))
|
||||
tuner_find_by_name(fe, "r850")) {
|
||||
*strength -= 3;
|
||||
if (fe->dtv_property_cache.frequency == 474000000)
|
||||
*strength -= 1;
|
||||
else if (fe->dtv_property_cache.frequency == 690000000)
|
||||
*strength -= 3;
|
||||
} else if (tuner_find_by_name(fe, "mxl661")) {
|
||||
*strength += 3;
|
||||
}
|
||||
|
||||
PR_DVBT("[id %d] strength %d dBm\n", demod->id, *strength);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int gxtv_demod_dvbt2_read_signal_strength(struct dvb_frontend *fe, s16 *strength)
|
||||
{
|
||||
struct aml_dtvdemod *demod = (struct aml_dtvdemod *)fe->demodulator_priv;
|
||||
|
||||
*strength = (s16)tuner_get_ch_power(fe);
|
||||
if (tuner_find_by_name(fe, "r842") ||
|
||||
tuner_find_by_name(fe, "r836") ||
|
||||
tuner_find_by_name(fe, "r850")) {
|
||||
*strength += 6;
|
||||
if (fe->dtv_property_cache.frequency == 474000000)
|
||||
*strength += 2;
|
||||
else if (fe->dtv_property_cache.frequency == 578000000)
|
||||
*strength += 3;
|
||||
} else if (tuner_find_by_name(fe, "mxl661")) {
|
||||
*strength += 3;
|
||||
}
|
||||
|
||||
PR_DVBT("[id %d] strength %d dBm\n", demod->id, *strength);
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ int dvbt_read_ber(struct dvb_frontend *fe, u32 *ber);
|
||||
int dvbt_read_snr(struct dvb_frontend *fe, u16 *snr);
|
||||
int dvbt2_read_snr(struct dvb_frontend *fe, u16 *snr);
|
||||
int gxtv_demod_dvbt_read_signal_strength(struct dvb_frontend *fe, s16 *strength);
|
||||
int gxtv_demod_dvbt2_read_signal_strength(struct dvb_frontend *fe, s16 *strength);
|
||||
int dvbt_set_frontend(struct dvb_frontend *fe);
|
||||
int dvbt2_set_frontend(struct dvb_frontend *fe);
|
||||
int dvbt_tune(struct dvb_frontend *fe, bool re_tune,
|
||||
|
||||
@@ -205,6 +205,7 @@
|
||||
/* V3.7.003 fix dvbc_auto_qam_process stack allocation */
|
||||
/* V3.7.004 fix isdbt frontend(t6d) and ambus(t5m) */
|
||||
/* V3.7.005 improve dvbs bindscan(2) and adapter tuner (rt710/rda5815m) */
|
||||
/* V3.7.005.1 calibrate dvbt/t2 strength (r842) */
|
||||
/****************************************************/
|
||||
/****************************************************************/
|
||||
/* AMLDTVDEMOD_VER Description: */
|
||||
@@ -221,8 +222,8 @@
|
||||
/*->The last four digits indicate the release time */
|
||||
/****************************************************************/
|
||||
#define KERNEL_4_9_EN 1
|
||||
#define AMLDTVDEMOD_VER "V3.7.005"
|
||||
#define DTVDEMOD_VER "2025/06/04 improve dvbs bindscan(2) and adapter tuner (rt710/rda5815m)"
|
||||
#define AMLDTVDEMOD_VER "V3.7.5.1"
|
||||
#define DTVDEMOD_VER "2025/07/03 calibrate dvbt/t2 strength (r842)"
|
||||
#define AMLDTVDEMOD_T2_FW_VER "v1059.20250521"
|
||||
#define DEMOD_DEVICE_NAME "dtvdemod"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user