Re: [PATCH net-next 3/3] dpll: zl3073x: Implement device mode setting support

From: Ivan Vecera

Date: Mon Jan 12 2026 - 08:27:57 EST


On 1/12/26 12:37 PM, Vadim Fedorenko wrote:
+    if (mode == DPLL_MODE_MANUAL) {
+        /* We are switching from automatic to manual mode:
+         * - if we have a valid reference selected during auto mode then
+         *   we will switch to forced reference lock mode and use this
+         *   reference for selection
+         * - if NO valid reference is selected, we will switch to forced
+         *   holdover mode or freerun mode, depending on the current
+         *   lock status
+         */
+        if (ZL3073X_DPLL_REF_IS_VALID(ref))
+            hw_mode = ZL_DPLL_MODE_REFSEL_MODE_REFLOCK;
+        else if (zldpll->lock_status == DPLL_LOCK_STATUS_UNLOCKED)
+            hw_mode = ZL_DPLL_MODE_REFSEL_MODE_FREERUN;
+        else
+            hw_mode = ZL_DPLL_MODE_REFSEL_MODE_HOLDOVER;
+    } else {
+        /* We are switching from manual to automatic mode:
+         * - if there is a valid reference selected then ensure that
+         *   it is selectable after switch to automatic mode
+         * - switch to automatic mode
+         */
+        struct zl3073x_dpll_pin *pin;
+
+        pin = zl3073x_dpll_pin_get_by_ref(zldpll, ref);
+        if (pin && !pin->selectable) {
+            /* Restore pin priority in HW */
+            rc = zl3073x_dpll_ref_prio_set(pin, pin->prio);
+            if (rc)
+                return rc;

I think it's better to fill-up extack here to give at least some info of
what's happened?

Will add, thanks for pointing this out.

Ivan