Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

phy: renesas: rcar-gen3-usb2: Factor out VBUS control logic

Refactor the VBUS control logic into a new helper function to improve
code clarity and reduce duplication. This makes it easier to handle
different VBUS control register cases and aids future maintenance.

Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Link: https://patch.msgid.link/2d94c9876b965bdf7cd74cdbbc0c54689e122798.1766405010.git.tommaso.merciai.xr@bp.renesas.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>

authored by

Tommaso Merciai and committed by
Vinod Koul
d6db3b3a 642c4628

+22 -12
+22 -12
drivers/phy/renesas/phy-rcar-gen3-usb2.c
··· 204 204 writel(val, usb2_base + USB2_LINECTRL1); 205 205 } 206 206 207 - static void rcar_gen3_enable_vbus_ctrl(struct rcar_gen3_chan *ch, int vbus) 207 + static void rcar_gen3_phy_usb2_set_vbus(struct rcar_gen3_chan *ch, 208 + u32 vbus_ctrl_reg, 209 + u32 vbus_ctrl_val, 210 + bool enable) 208 211 { 209 212 void __iomem *usb2_base = ch->base; 210 - u32 vbus_ctrl_reg = USB2_ADPCTRL; 211 - u32 vbus_ctrl_val = USB2_ADPCTRL_DRVVBUS; 212 213 u32 val; 213 214 215 + val = readl(usb2_base + vbus_ctrl_reg); 216 + if (enable) 217 + val |= vbus_ctrl_val; 218 + else 219 + val &= ~vbus_ctrl_val; 220 + writel(val, usb2_base + vbus_ctrl_reg); 221 + 222 + dev_vdbg(ch->dev, "%s: reg=0x%08x, val=%08x, enable=%d\n", 223 + __func__, vbus_ctrl_reg, val, enable); 224 + } 225 + 226 + static void rcar_gen3_enable_vbus_ctrl(struct rcar_gen3_chan *ch, int vbus) 227 + { 214 228 if (ch->phy_data->no_adp_ctrl || ch->phy_data->vblvl_ctrl) { 215 229 if (ch->vbus) 216 230 regulator_hardware_enable(ch->vbus, vbus); 217 231 218 - vbus_ctrl_reg = USB2_VBCTRL; 219 - vbus_ctrl_val = USB2_VBCTRL_VBOUT; 232 + rcar_gen3_phy_usb2_set_vbus(ch, USB2_VBCTRL, 233 + USB2_VBCTRL_VBOUT, vbus); 234 + return; 220 235 } 221 236 222 - val = readl(usb2_base + vbus_ctrl_reg); 223 - if (vbus) 224 - val |= vbus_ctrl_val; 225 - else 226 - val &= ~vbus_ctrl_val; 227 - dev_vdbg(ch->dev, "%s: %08x, %d\n", __func__, val, vbus); 228 - writel(val, usb2_base + vbus_ctrl_reg); 237 + rcar_gen3_phy_usb2_set_vbus(ch, USB2_ADPCTRL, 238 + USB2_ADPCTRL_DRVVBUS, vbus); 229 239 } 230 240 231 241 static void rcar_gen3_control_otg_irq(struct rcar_gen3_chan *ch, int enable)