[PATCH] phy: renesas: rcar-gen3-usb2: Simplify ID/VBUS detection logic
Prabhakar
prabhakar.csengg at gmail.com
Tue Mar 24 05:16:08 PDT 2026
From: Lad Prabhakar <prabhakar.mahadev-lad.rj at bp.renesas.com>
Read the USB2_ADPCTRL register once in rcar_gen3_check_id() and reuse
the value instead of performing multiple MMIO reads.
Simplify the return logic by comparing the IDDIG and VBUSVALID bits
directly. This preserves the existing behaviour while improving code
clarity and avoiding redundant register accesses.
Reported-by: Pavel Machek <pavel at nabladev.com>
Closes: https://lore.kernel.org/all/acJV-Xq-2uq_JFMn@duo.ucw.cz/
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj at bp.renesas.com>
---
Note, patch applies on top of next-20260323.
---
drivers/phy/renesas/phy-rcar-gen3-usb2.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
index 79e820e2fe55..74d7561dbf79 100644
--- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c
+++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c
@@ -314,13 +314,14 @@ static void rcar_gen3_init_from_a_peri_to_a_host(struct rcar_gen3_chan *ch)
static bool rcar_gen3_check_id(struct rcar_gen3_chan *ch)
{
if (ch->phy_data->vblvl_ctrl) {
+ u32 val = readl(ch->base + USB2_ADPCTRL);
bool vbus_valid;
bool device;
- device = !!(readl(ch->base + USB2_ADPCTRL) & USB2_ADPCTRL_IDDIG);
- vbus_valid = !!(readl(ch->base + USB2_ADPCTRL) & USB2_ADPCTRL_VBUSVALID);
+ device = !!(val & USB2_ADPCTRL_IDDIG);
+ vbus_valid = !!(val & USB2_ADPCTRL_VBUSVALID);
- return vbus_valid ? device : !device;
+ return device == vbus_valid;
}
if (!ch->uses_otg_pins)
--
2.53.0
More information about the linux-phy
mailing list