[PATCH 02/10] phy: rockchip: usbdp: Simplify init ops

Kever Yang kever.yang at rock-chips.com
Sat Aug 30 18:45:45 CEST 2025


On 2025/7/22 06:07, Jonas Karlman wrote:
> With working shared reference counting for Generic PHY ops there is no
> need for the Rockchip USBDP PHY driver to keep its own status (reference
> counting) handling.
>
> Simplify the init ops now that shared reference counting is working.
> This also removes the unused mode_change handling as part of the
> simplication.
>
> No runtime change is expected with this simplication.
>
> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>

Thanks,
- Kever
> ---
>   drivers/phy/rockchip/phy-rockchip-usbdp.c | 71 +++--------------------
>   1 file changed, 8 insertions(+), 63 deletions(-)
>
> diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockchip/phy-rockchip-usbdp.c
> index 56963c87183e..6cfbef02b4ac 100644
> --- a/drivers/phy/rockchip/phy-rockchip-usbdp.c
> +++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c
> @@ -96,9 +96,7 @@ struct rockchip_udphy {
>   
>   	/* PHY status management */
>   	bool flip;
> -	bool mode_change;
>   	u8 mode;
> -	u8 status;
>   
>   	/* utilized for USB */
>   	bool hs; /* flag for high-speed */
> @@ -525,65 +523,6 @@ static int udphy_parse_dt(struct rockchip_udphy *udphy, struct udevice *dev)
>   	return 0;
>   }
>   
> -static int udphy_power_on(struct rockchip_udphy *udphy, u8 mode)
> -{
> -	int ret;
> -
> -	if (!(udphy->mode & mode)) {
> -		dev_info(udphy->dev, "mode 0x%02x is not support\n", mode);
> -		return 0;
> -	}
> -
> -	if (udphy->status == UDPHY_MODE_NONE) {
> -		udphy->mode_change = false;
> -		ret = udphy_setup(udphy);
> -		if (ret)
> -			return ret;
> -
> -		if (udphy->mode & UDPHY_MODE_USB)
> -			udphy_u3_port_disable(udphy, false);
> -	} else if (udphy->mode_change) {
> -		udphy->mode_change = false;
> -		udphy->status = UDPHY_MODE_NONE;
> -		if (udphy->mode == UDPHY_MODE_DP)
> -			udphy_u3_port_disable(udphy, true);
> -
> -		ret = udphy_disable(udphy);
> -		if (ret)
> -			return ret;
> -		ret = udphy_setup(udphy);
> -		if (ret)
> -			return ret;
> -	}
> -
> -	udphy->status |= mode;
> -
> -	return 0;
> -}
> -
> -static int udphy_power_off(struct rockchip_udphy *udphy, u8 mode)
> -{
> -	int ret;
> -
> -	if (!(udphy->mode & mode)) {
> -		dev_info(udphy->dev, "mode 0x%02x is not supported\n", mode);
> -		return 0;
> -	}
> -
> -	if (!udphy->status)
> -		return 0;
> -
> -	udphy->status &= ~mode;
> -
> -	if (udphy->status == UDPHY_MODE_NONE) {
> -		ret = udphy_disable(udphy);
> -		if (ret)
> -			return ret;
> -	}
> -
> -	return 0;
> -}
> -
>   static int rockchip_u3phy_of_xlate(struct phy *phy,
>   				   struct ofnode_phandle_args *args)
>   {
> @@ -603,6 +542,7 @@ static int rockchip_u3phy_of_xlate(struct phy *phy,
>   static int rockchip_u3phy_init(struct phy *phy)
>   {
>   	struct rockchip_udphy *udphy = dev_get_priv(phy->dev);
> +	int ret;
>   
>   	/* DP only or high-speed, disable U3 port */
>   	if (!(udphy->mode & UDPHY_MODE_USB) || udphy->hs) {
> @@ -610,7 +550,12 @@ static int rockchip_u3phy_init(struct phy *phy)
>   		return 0;
>   	}
>   
> -	return udphy_power_on(udphy, UDPHY_MODE_USB);
> +	ret = udphy_setup(udphy);
> +	if (ret)
> +		return ret;
> +
> +	udphy_u3_port_disable(udphy, false);
> +	return 0;
>   }
>   
>   static int rockchip_u3phy_exit(struct phy *phy)
> @@ -621,7 +566,7 @@ static int rockchip_u3phy_exit(struct phy *phy)
>   	if (!(udphy->mode & UDPHY_MODE_USB) || udphy->hs)
>   		return 0;
>   
> -	return udphy_power_off(udphy, UDPHY_MODE_USB);
> +	return udphy_disable(udphy);
>   }
>   
>   static const struct phy_ops rockchip_u3phy_ops = {


More information about the U-Boot mailing list