From: Lad Prabhakar Date: Thu, 21 Aug 2025 15:59:57 +0000 (+0100) Subject: phy: renesas: rcar-gen3-usb2: Fix ID check logic with VBUS valid X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=356590cd61cf89e2420d5628e35b6e73c6b6a770;p=users%2Fhch%2Fmisc.git phy: renesas: rcar-gen3-usb2: Fix ID check logic with VBUS valid The existing ID detection logic returned false when both IDDIG and VBUSVALID were set, which caused incorrect role determination in some cases. The condition: !(device && !vbus_valid) did not properly reflect the intended relationship between IDDIG and VBUSVALID signals. Update the logic to: return vbus_valid ? device : !device; This ensures that when VBUS is valid, the role follows the IDDIG value, and when VBUS is not valid, the role is inverted, matching the expected OTG behavior. Fixes: b725741f1c21 ("phy: renesas: rcar-gen3-usb2: Add support for RZ/T2H SoC") Signed-off-by: Lad Prabhakar Link: https://lore.kernel.org/r/20250821155957.1088337-1-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Vinod Koul --- diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c index bab2d4dce5b3..3f6b480e1092 100644 --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c @@ -302,7 +302,7 @@ static bool rcar_gen3_check_id(struct rcar_gen3_chan *ch) device = !!(readl(ch->base + USB2_ADPCTRL) & USB2_ADPCTRL_IDDIG); vbus_valid = !!(readl(ch->base + USB2_ADPCTRL) & USB2_ADPCTRL_VBUSVALID); - return !(device && !vbus_valid); + return vbus_valid ? device : !device; } if (!ch->uses_otg_pins)