Re: [PATCH] phy: rockchip-typec: fix tcphy_get_mode error case

From: Lee Jones
Date: Thu Jan 26 2023 - 11:42:00 EST


On Thu, 26 Jan 2023, Neill Kapron wrote:

> The existing logic in tcphy_get_mode() can cause the phy to be
> incorrectly configured to USB UFP or DisplayPort mode when
> extcon_get_state returns an error code.
>
> extcon_get_state() can return 0, 1, or a negative error code.
>
> It is possible to get into the failing state with an extcon driver
> which does not support the extcon connector id specified as the
> second argument to extcon_get_state().
>
> tcphy_get_mode()
> ->extcon_get_state()
> -->find_cable_index_by_id()
> --->return -EINVAL;
>
> Fixes: e96be45cb84e ("phy: Add USB Type-C PHY driver for rk3399")
> Signed-off-by: Neill Kapron <nkapron@xxxxxxxxxx>
> ---
> drivers/phy/rockchip/phy-rockchip-typec.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)

Good catch.

Reviewed-by: Lee Jones <lee@xxxxxxxxxx>

> diff --git a/drivers/phy/rockchip/phy-rockchip-typec.c b/drivers/phy/rockchip/phy-rockchip-typec.c
> index d76440ae10ff..6aea512e5d4e 100644
> --- a/drivers/phy/rockchip/phy-rockchip-typec.c
> +++ b/drivers/phy/rockchip/phy-rockchip-typec.c
> @@ -821,10 +821,10 @@ static int tcphy_get_mode(struct rockchip_typec_phy *tcphy)
> mode = MODE_DFP_USB;
> id = EXTCON_USB_HOST;
>
> - if (ufp) {
> + if (ufp > 0) {
> mode = MODE_UFP_USB;
> id = EXTCON_USB;
> - } else if (dp) {
> + } else if (dp > 0) {
> mode = MODE_DFP_DP;
> id = EXTCON_DISP_DP;
>
> --
> 2.39.1.456.gfc5497dd1b-goog

--
Lee Jones [李琼斯]