[PATCH 3/5] phy: fsl-imx8mq-usb: add tca function driver for imx95

Xu Yang xu.yang_2 at nxp.com
Sun Aug 4 20:27:29 PDT 2024


On Fri, Aug 02, 2024 at 04:52:06PM +0300, Dmitry Baryshkov wrote:
> On Fri, Aug 02, 2024 at 05:17:00PM GMT, Xu Yang wrote:
> > The i.MX95 USB3 phy has a Type-C Assist block (TCA). This block consists
> > two functional blocks (XBar assist and VBus assist) and one system
> > access interface using APB.
> > 
> > The primary functionality of XBar assist is:
> >  - switching lane for flip
> >  - moving unused lanes into lower power states.
> > 
> > This info can be get from:
> > i.MX95 RM Chapter 163.3.8 Type-C assist (TCA) block.
> > 
> > This will add support for TCA block to achieve lane switching and tca
> > lower power functionality.
> > 
> > Signed-off-by: Xu Yang <xu.yang_2 at nxp.com>
> > Reviewed-by: Jun Li <jun.li at nxp.com>
> > ---
> >  drivers/phy/freescale/Kconfig              |   1 +
> >  drivers/phy/freescale/phy-fsl-imx8mq-usb.c | 238 +++++++++++++++++++++
> >  2 files changed, 239 insertions(+)
> > 
> 
> [..]
> 
> > @@ -398,6 +624,10 @@ static int imx8mq_usb_phy_probe(struct platform_device *pdev)
> >  
> >  	phy_set_drvdata(imx_phy->phy, imx_phy);
> >  
> > +	if (device_is_compatible(dev, "fsl,imx95-usb-phy") &&
> > +			imx95_usb_phy_get_tca(pdev, imx_phy) < 0)
> > +		return dev_err_probe(dev, -ENODEV, "failed to get tca\n");
> 
> Pleas propagate error returned by imx95_usb_phy_get_tca() instead of
> always returning -ENODEV.

Okay.

Thanks,
Xu Yang

> 
> > +
> >  	imx8m_get_phy_tuning_data(imx_phy);
> >  
> >  	phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
> > @@ -405,8 +635,16 @@ static int imx8mq_usb_phy_probe(struct platform_device *pdev)
> >  	return PTR_ERR_OR_ZERO(phy_provider);
> >  }
> >  
> > +static void imx8mq_usb_phy_remove(struct platform_device *pdev)
> > +{
> > +	struct imx8mq_usb_phy *imx_phy = platform_get_drvdata(pdev);
> > +
> > +	imx95_usb_phy_put_tca(imx_phy);
> > +}
> > +
> >  static struct platform_driver imx8mq_usb_phy_driver = {
> >  	.probe	= imx8mq_usb_phy_probe,
> > +	.remove = imx8mq_usb_phy_remove,
> >  	.driver = {
> >  		.name	= "imx8mq-usb-phy",
> >  		.of_match_table	= imx8mq_usb_phy_of_match,
> > -- 
> > 2.34.1
> > 
> 
> -- 
> With best wishes
> Dmitry



More information about the linux-phy mailing list