net: eth-phy: Handle gpio_request_by_name() return value
authorMarek Vasut <marex@denx.de>
Sat, 13 Nov 2021 02:23:11 +0000 (03:23 +0100)
committerRamon Fried <rfried.dev@gmail.com>
Thu, 2 Dec 2021 06:35:37 +0000 (08:35 +0200)
commit8777033722719a37eac8d07efa3e4b3a665612e1
treed8a6754950a9dffe875484e66324c1ac0d6ebe4a
parent4a14bfffd42f968ed9d72a780a8d44a9053c5b95
net: eth-phy: Handle gpio_request_by_name() return value

The gpio_request_by_name() returns zero in case of success, however the
conditional return value check in gpio_request_by_name() checks only for
(ret != -ENOENT) and if the condition is true, returns ret outright.

This leads to a situation where successful gpio_request_by_name() return
leads to immediate successful eth_phy_of_to_plat() return as well, and
to skipped parsing of "reset-assert-us" and "reset-deassert-us", so the
PHY driver operates with valid reset GPIO, but with assert/deassert times
set to default, which is 0, instead of the values from DT. This breaks
PHY reset.

Fix this by checking if return value is non-zero and then for this one
single allowed non-zero return value, -ENOENT.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Ramon Fried <rfried.dev@gmail.com>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
drivers/net/eth-phy-uclass.c