diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-10-14 08:03:44 +0200 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-10-14 08:03:44 +0200 |
| commit | 64f3b5a6bc49adf77d58eddd72a4bfccd492fa24 (patch) | |
| tree | cdd6aa7a0d21482ae4d1e76d837f3712c8c6481d /drivers/net/pse-pd/pse_core.c | |
| parent | USB: chaoskey: Fix possible deadlock chaoskey_list_lock (diff) | |
| parent | Linux 6.12-rc3 (diff) | |
| download | linux-64f3b5a6bc49adf77d58eddd72a4bfccd492fa24.tar.gz linux-64f3b5a6bc49adf77d58eddd72a4bfccd492fa24.zip | |
Merge 6.12-rc3 into usb-next
We need the USB fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/net/pse-pd/pse_core.c')
| -rw-r--r-- | drivers/net/pse-pd/pse_core.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/pse-pd/pse_core.c b/drivers/net/pse-pd/pse_core.c index 4f032b16a8a0..f8e6854781e6 100644 --- a/drivers/net/pse-pd/pse_core.c +++ b/drivers/net/pse-pd/pse_core.c @@ -785,6 +785,17 @@ static int pse_ethtool_c33_set_config(struct pse_control *psec, */ switch (config->c33_admin_control) { case ETHTOOL_C33_PSE_ADMIN_STATE_ENABLED: + /* We could have mismatch between admin_state_enabled and + * state reported by regulator_is_enabled. This can occur when + * the PI is forcibly turn off by the controller. Call + * regulator_disable on that case to fix the counters state. + */ + if (psec->pcdev->pi[psec->id].admin_state_enabled && + !regulator_is_enabled(psec->ps)) { + err = regulator_disable(psec->ps); + if (err) + break; + } if (!psec->pcdev->pi[psec->id].admin_state_enabled) err = regulator_enable(psec->ps); break; |
