U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Kever Yang <kever.yang@rock-chips.com>
To: Jonas Karlman <jonas@kwiboo.se>, Simon Glass <sjg@chromium.org>,
	Philipp Tomsich <philipp.tomsich@vrull.eu>,
	Tom Rini <trini@konsulko.com>
Cc: Yao Zi <ziyao@disroot.org>, Chukun Pan <amadeus@jmu.edu.cn>,
	u-boot@lists.denx.de
Subject: Re: [PATCH v2 26/30] phy: rockchip-inno-usb2: Add support for clkout_ctl_phy
Date: Tue, 8 Apr 2025 11:24:21 +0800	[thread overview]
Message-ID: <b39375ca-9511-499c-b4ee-41ea627af357@rock-chips.com> (raw)
In-Reply-To: <20250407224743.2423921-27-jonas@kwiboo.se>


On 2025/4/8 06:46, Jonas Karlman wrote:
> The 480m clk is controlled using regs in the PHY address space and not
> in the USB GRF address space on e.g. RK3528 and RK3506.
>
> Add a clkout_ctl_phy usb2phy_reg to handle enable/disable of the 480m
> clk on these SoCs.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
> v2: New patch
> ---
>   drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 43 ++++++++++++++-----
>   1 file changed, 33 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
> index 43f6e020a6a0..f40a86bc9dae 100644
> --- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
> +++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
> @@ -40,11 +40,13 @@ struct rockchip_usb2phy_port_cfg {
>   struct rockchip_usb2phy_cfg {
>   	unsigned int reg;
>   	struct usb2phy_reg	clkout_ctl;
> +	struct usb2phy_reg	clkout_ctl_phy;
>   	const struct rockchip_usb2phy_port_cfg port_cfgs[USB2PHY_NUM_PORTS];
>   };
>   
>   struct rockchip_usb2phy {
>   	struct regmap *reg_base;
> +	struct regmap *phy_base;
>   	struct clk phyclk;
>   	const struct rockchip_usb2phy_cfg *phy_cfg;
>   };
> @@ -165,6 +167,22 @@ static struct phy_ops rockchip_usb2phy_ops = {
>   	.of_xlate = rockchip_usb2phy_of_xlate,
>   };
>   
> +static void rockchip_usb2phy_clkout_ctl(struct clk *clk, struct regmap **base,
> +					const struct usb2phy_reg **clkout_ctl)
> +{
> +	struct udevice *parent = dev_get_parent(clk->dev);
> +	struct rockchip_usb2phy *priv = dev_get_priv(parent);
> +	const struct rockchip_usb2phy_cfg *phy_cfg = priv->phy_cfg;
> +
> +	if (priv->phy_cfg->clkout_ctl_phy.enable) {
> +		*base = priv->phy_base;
> +		*clkout_ctl = &phy_cfg->clkout_ctl_phy;
> +	} else {
> +		*base = priv->reg_base;
> +		*clkout_ctl = &phy_cfg->clkout_ctl;
> +	}
> +}
> +
>   /**
>    * round_rate() - Adjust a rate to the exact rate a clock can provide.
>    * @clk:	The clock to manipulate.
> @@ -185,13 +203,14 @@ ulong rockchip_usb2phy_clk_round_rate(struct clk *clk, ulong rate)
>    */
>   int rockchip_usb2phy_clk_enable(struct clk *clk)
>   {
> -	struct udevice *parent = dev_get_parent(clk->dev);
> -	struct rockchip_usb2phy *priv = dev_get_priv(parent);
> -	const struct rockchip_usb2phy_cfg *phy_cfg = priv->phy_cfg;
> +	const struct usb2phy_reg *clkout_ctl;
> +	struct regmap *base;
> +
> +	rockchip_usb2phy_clkout_ctl(clk, &base, &clkout_ctl);
>   
>   	/* turn on 480m clk output if it is off */
> -	if (!property_enabled(priv->reg_base, &phy_cfg->clkout_ctl)) {
> -		property_enable(priv->reg_base, &phy_cfg->clkout_ctl, true);
> +	if (!property_enabled(base, clkout_ctl)) {
> +		property_enable(base, clkout_ctl, true);
>   
>   		/* waiting for the clk become stable */
>   		usleep_range(1200, 1300);
> @@ -208,12 +227,13 @@ int rockchip_usb2phy_clk_enable(struct clk *clk)
>    */
>   int rockchip_usb2phy_clk_disable(struct clk *clk)
>   {
> -	struct udevice *parent = dev_get_parent(clk->dev);
> -	struct rockchip_usb2phy *priv = dev_get_priv(parent);
> -	const struct rockchip_usb2phy_cfg *phy_cfg = priv->phy_cfg;
> +	const struct usb2phy_reg *clkout_ctl;
> +	struct regmap *base;
> +
> +	rockchip_usb2phy_clkout_ctl(clk, &base, &clkout_ctl);
>   
>   	/* turn off 480m clk output */
> -	property_enable(priv->reg_base, &phy_cfg->clkout_ctl, false);
> +	property_enable(base, clkout_ctl, false);
>   
>   	return 0;
>   }
> @@ -281,7 +301,10 @@ static int rockchip_usb2phy_probe(struct udevice *dev)
>   		return ret;
>   	}
>   
> -	return 0;
> +	if (priv->phy_cfg->clkout_ctl_phy.enable)
> +		ret = regmap_init_mem_index(dev_ofnode(dev), &priv->phy_base, 0);
> +
> +	return ret;
>   }
>   
>   static int rockchip_usb2phy_bind(struct udevice *dev)

  reply	other threads:[~2025-04-08  3:26 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-07 22:46 [PATCH v2 00/30] rockchip: Add initial support for RK3528 Jonas Karlman
2025-04-07 22:46 ` [PATCH v2 01/30] dt-bindings: clock: Document clock and reset unit of RK3528 Jonas Karlman
2025-04-08  3:21   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 02/30] arm64: dts: rockchip: Add clock generators for RK3528 SoC Jonas Karlman
2025-04-08  3:21   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 03/30] arm64: dts: rockchip: Add UART clocks " Jonas Karlman
2025-04-08  3:21   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 04/30] arm64: dts: rockchip: Add pinctrl and gpio nodes for RK3528 Jonas Karlman
2025-04-08  3:21   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 05/30] arm64: dts: rockchip: Add rk3528 QoS register node Jonas Karlman
2025-04-08  3:21   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 06/30] arm64: dts: rockchip: enable SCMI clk for RK3528 SoC Jonas Karlman
2025-04-08  3:21   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 07/30] arm64: dts: rockchip: Add SARADC node for RK3528 Jonas Karlman
2025-04-08  3:21   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 08/30] arm64: dts: rockchip: Add SDHCI controller " Jonas Karlman
2025-04-08  3:21   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 09/30] arm64: dts: rockchip: Add uart0 pinctrl to Radxa E20C Jonas Karlman
2025-04-08  3:22   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 10/30] arm64: dts: rockchip: Add leds node " Jonas Karlman
2025-04-08  3:22   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 11/30] arm64: dts: rockchip: Add user button " Jonas Karlman
2025-04-08  3:22   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 12/30] arm64: dts: rockchip: Add maskrom " Jonas Karlman
2025-04-08  3:22   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 13/30] arm64: dts: rockchip: Enable onboard eMMC on " Jonas Karlman
2025-04-08  3:22   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 14/30] rockchip: mkimage: Add support for RK3528 Jonas Karlman
2025-04-08  3:22   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 15/30] ram: rockchip: Add basic " Jonas Karlman
2025-04-08  3:22   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 16/30] clk: rockchip: Add " Jonas Karlman
2025-04-08  3:23   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 17/30] pinctrl: " Jonas Karlman
2025-04-08  3:23   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 18/30] arm: dts: rockchip: Add rk3528-u-boot.dtsi Jonas Karlman
2025-04-08  3:23   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 19/30] arch: arm: rockchip: Add initial support for RK3528 Jonas Karlman
2025-04-08  3:23   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 20/30] mmc: rockchip_sdhci: Extend variant configuration Jonas Karlman
2025-04-08  3:23   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 21/30] mmc: rockchip_sdhci: Add initial support for RK3528 Jonas Karlman
2025-04-08  3:23   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 22/30] mmc: rockchip_sdhci: Gate clock for glitch free phase switching Jonas Karlman
2025-04-08  3:23   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 23/30] rockchip: otp: Add support for RK3528 Jonas Karlman
2025-04-08  3:23   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 24/30] adc: rockchip-saradc: " Jonas Karlman
2025-04-08  3:24   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 25/30] rng: rockchip: Add support for rkrng variant Jonas Karlman
2025-04-08  3:24   ` Kever Yang
2025-04-07 22:46 ` [PATCH v2 26/30] phy: rockchip-inno-usb2: Add support for clkout_ctl_phy Jonas Karlman
2025-04-08  3:24   ` Kever Yang [this message]
2025-04-07 22:47 ` [PATCH v2 27/30] phy: rockchip-inno-usb2: Add support for RK3528 Jonas Karlman
2025-04-08  3:24   ` Kever Yang
2025-04-07 22:47 ` [PATCH v2 28/30] net: dwc_eth_qos_rockchip: " Jonas Karlman
2025-04-08  3:24   ` Kever Yang
2025-04-07 22:47 ` [PATCH v2 29/30] board: rockchip: Add minimal generic RK3528 board Jonas Karlman
2025-04-08  3:24   ` Kever Yang
2025-04-07 22:47 ` [PATCH v2 30/30] board: rockchip: Add Radxa E20C Jonas Karlman
2025-04-08  3:25   ` Kever Yang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b39375ca-9511-499c-b4ee-41ea627af357@rock-chips.com \
    --to=kever.yang@rock-chips.com \
    --cc=amadeus@jmu.edu.cn \
    --cc=jonas@kwiboo.se \
    --cc=philipp.tomsich@vrull.eu \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=ziyao@disroot.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox