Re: [PATCH v6 1/6] phy: realtek: usb2: introduce vstatus/new_reg_req variables to driver data

Manivannan Sadhasivam <[email protected]>
Newsgroups org.infradead.lists.linux-phy,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel
Message-ID <kce2vypa2ueuodxguuubyflnmsbmak5gjnjtmbjr24p3wvo6ep@6jrbxalol5ty>
On Wed, May 20, 2026 at 10:57:23PM +0500, Rustam Adilov wrote:
> In RTL9607C SoC, the vstatus register is located at a certain offset from
> the base and so introduce the vstatus_offset to handle it.
> 
> Busy bit of the vstatus and new_reg_req bit are also different and so
> introduce these variables to the driver data as well.
> 
> Add these variables to the pre-existing phy cfg structs for RTD SoCs and
> assign them the default values.
> 
> Co-developed-by: Michael Zavertkin <[email protected]>
> Signed-off-by: Michael Zavertkin <[email protected]>
> Signed-off-by: Rustam Adilov <[email protected]>
> ---
>  drivers/phy/realtek/phy-rtk-usb2.c | 68 +++++++++++++++++++++++-------
>  1 file changed, 53 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/phy/realtek/phy-rtk-usb2.c b/drivers/phy/realtek/phy-rtk-usb2.c
> index 248550ef98ca..bd9ee895b9f9 100644
> --- a/drivers/phy/realtek/phy-rtk-usb2.c
> +++ b/drivers/phy/realtek/phy-rtk-usb2.c
> @@ -64,6 +64,9 @@ struct phy_reg {
>  	void __iomem *reg_wrap_vstatus;
>  	void __iomem *reg_gusb2phyacc0;
>  	int vstatus_index;
> +	int vstatus_offset;
> +	u32 vstatus_busy;
> +	u32 new_reg_req;
>  };
>  
>  struct phy_data {
> @@ -96,6 +99,9 @@ struct phy_cfg {
>  	bool do_toggle_driving;
>  	bool use_default_parameter;
>  	bool is_double_sensitivity_mode;
> +	int vstatus_offset;
> +	u32 vstatus_busy;
> +	u32 new_reg_req;

I don't like the fact the fields are getting duplicated in two structs. In the
next patch also, you are adding the duplicate read/write callbacks. So I'd
suggest coming up with a per-SoC const struct and passing that pointer in
'phy_cfg' through drvdata and copying it to 'phy_reg':

	struct phy_reg_desc {
		int vstatus_offset;
		...
	};

	static const struct phy_reg_desc phy_reg_desc_rtd1295 = {
		.vstatus_offset = 0,
		...
	};

	...

	struct phy_reg {
		...
		const struct phy_reg_desc *desc;
	};

	struct phy_cfg {
		...
		const struct phy_reg_desc *reg_desc;
	};

	...

	static const struct phy_cfg rtd1295_phy_cfg = {
		...
		.reg_desc = &phy_reg_desc_rtd1295,
	};

	...

	phy_parameter->phy_reg.desc = phy_cfg->reg_desc;

- Mani

-- 
மணிவண்ணன் சதாசிவம்

-- 
linux-phy mailing list
[email protected]
https://lists.infradead.org/mailman/listinfo/linux-phy
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.