[PATCH] media: dvb_frontend: cleanup zigzag drift/inversion logic

From: Mauro Carvalho Chehab
Date: Mon Nov 11 2024 - 08:44:10 EST


Move the logic which sets LNB drift and inversion to a separate
function, to make the code cleaner.

No functional changes.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx>
---
drivers/media/dvb-core/dvb_frontend.c | 83 +++++++++++++++------------
1 file changed, 45 insertions(+), 38 deletions(-)

diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c
index a05aa271a1ba..6ee46bf6e45a 100644
--- a/drivers/media/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb-core/dvb_frontend.c
@@ -375,32 +375,13 @@ static void dvb_frontend_swzigzag_update_delay(struct dvb_frontend_private *fepr
fepriv->delay = fepriv->min_delay + q2 * HZ / (128 * 128);
}

-/**
- * dvb_frontend_swzigzag_autotune - Performs automatic twiddling of frontend
- * parameters.
- *
- * @fe: The frontend concerned.
- * @check_wrapped: Checks if an iteration has completed.
- * DO NOT SET ON THE FIRST ATTEMPT.
- *
- * return: Number of complete iterations that have been performed.
- */
-static int dvb_frontend_swzigzag_autotune(struct dvb_frontend *fe, int check_wrapped)
+static void dvb_frontend_swzigzag_inversion_drift(struct dvb_frontend *fe,
+ int autoinversion)
{
- int autoinversion;
- int ready = 0;
- int fe_set_err = 0;
struct dvb_frontend_private *fepriv = fe->frontend_priv;
- struct dtv_frontend_properties *c = &fe->dtv_property_cache, tmp;
- int original_inversion = c->inversion;
- u32 original_frequency = c->frequency;
-
- /* are we using autoinversion? */
- autoinversion = ((!(fe->ops.info.caps & FE_CAN_INVERSION_AUTO)) &&
- (c->inversion == INVERSION_AUTO));

/* setup parameters correctly */
- while (!ready) {
+ while (1) {
/* calculate the lnb_drift */
fepriv->lnb_drift = fepriv->auto_step * fepriv->step_size;

@@ -415,40 +396,66 @@ static int dvb_frontend_swzigzag_autotune(struct dvb_frontend *fe, int check_wra
switch (fepriv->auto_sub_step) {
case 0:
/* try with the current inversion and current drift setting */
- ready = 1;
- break;
+ return;

case 1:
- if (!autoinversion) break;
+ if (!autoinversion)
+ return;

- fepriv->inversion = (fepriv->inversion == INVERSION_OFF) ? INVERSION_ON : INVERSION_OFF;
- ready = 1;
- break;
+ fepriv->inversion = (fepriv->inversion == INVERSION_OFF) ?
+ INVERSION_ON : INVERSION_OFF;
+ return;

case 2:
- if (fepriv->lnb_drift == 0) break;
+ if (fepriv->lnb_drift == 0)
+ return;

fepriv->lnb_drift = -fepriv->lnb_drift;
- ready = 1;
- break;
+ return;

case 3:
- if (fepriv->lnb_drift == 0) break;
- if (!autoinversion) break;
+ if (fepriv->lnb_drift == 0)
+ return;
+ if (!autoinversion)
+ return;

- fepriv->inversion = (fepriv->inversion == INVERSION_OFF) ? INVERSION_ON : INVERSION_OFF;
+ fepriv->inversion = (fepriv->inversion == INVERSION_OFF) ?
+ INVERSION_ON : INVERSION_OFF;
fepriv->lnb_drift = -fepriv->lnb_drift;
- ready = 1;
- break;
+ return;

default:
fepriv->auto_step++;
fepriv->auto_sub_step = 0;
continue;
}
-
- if (!ready) fepriv->auto_sub_step++;
}
+}
+/**
+ * dvb_frontend_swzigzag_autotune - Performs automatic twiddling of frontend
+ * parameters.
+ *
+ * @fe: The frontend concerned.
+ * @check_wrapped: Checks if an iteration has completed.
+ * DO NOT SET ON THE FIRST ATTEMPT.
+ *
+ * return: Number of complete iterations that have been performed.
+ */
+static int dvb_frontend_swzigzag_autotune(struct dvb_frontend *fe, int check_wrapped)
+{
+ int fe_set_err = 0;
+ struct dvb_frontend_private *fepriv = fe->frontend_priv;
+ struct dtv_frontend_properties *c = &fe->dtv_property_cache, tmp;
+ int original_inversion = c->inversion;
+ u32 original_frequency = c->frequency;
+ int autoinversion;
+
+ /* are we using autoinversion? */
+ autoinversion = ((!(fe->ops.info.caps & FE_CAN_INVERSION_AUTO)) &&
+ (c->inversion == INVERSION_AUTO));
+
+ /* setup parameters correctly */
+ dvb_frontend_swzigzag_inversion_drift(fe, autoinversion);

/* if this attempt would hit where we started, indicate a complete
* iteration has occurred */
--
2.47.0