]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ice: disallow DPLL_PIN_STATE_SELECTABLE for dpll output pins
authorArkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Thu, 12 Sep 2024 08:54:28 +0000 (10:54 +0200)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Mon, 30 Sep 2024 21:23:32 +0000 (14:23 -0700)
Currently the user may request DPLL_PIN_STATE_SELECTABLE for an output
pin, and this would actually set the DISCONNECTED state instead.

It doesn't make any sense. SELECTABLE is valid only in case of input pins
(on AUTOMATIC type dpll), where dpll itself would select best valid input.
For the output pin only CONNECTED/DISCONNECTED are expected.

Fixes: d7999f5ea64b ("ice: implement dpll interface to control cgu")
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_dpll.c

index 8b6dc4d54fdc72fb9e3a77107f1612f620b4f12c..74c0e7319a4cac58f9b76a4616bbdde79e004d3d 100644 (file)
@@ -656,6 +656,8 @@ ice_dpll_output_state_set(const struct dpll_pin *pin, void *pin_priv,
        struct ice_dpll_pin *p = pin_priv;
        struct ice_dpll *d = dpll_priv;
 
+       if (state == DPLL_PIN_STATE_SELECTABLE)
+               return -EINVAL;
        if (!enable && p->state[d->dpll_idx] == DPLL_PIN_STATE_DISCONNECTED)
                return 0;