Re: [PATCH v1] chipidea: pci: register nop PHY

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2014-11-17 at 09:46 +0800, Peter Chen wrote:
> On Fri, Nov 14, 2014 at 04:33:22PM +0200, Andy Shevchenko wrote:
> > Since PHY for Chipidea is optional (not all SoCs having PHY for Chipidea should
> > be programmed), we register 'nop' PHY for platforms that does not have
> > programmable PHY.
> > 

My answers below.

> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
> > ---
> >  drivers/usb/chipidea/ci_hdrc_pci.c | 32 +++++++++++++++++++++++++-------
> >  1 file changed, 25 insertions(+), 7 deletions(-)
> > 
> > diff --git a/drivers/usb/chipidea/ci_hdrc_pci.c b/drivers/usb/chipidea/ci_hdrc_pci.c
> > index 241ae34..7e0b701 100644
> > --- a/drivers/usb/chipidea/ci_hdrc_pci.c
> > +++ b/drivers/usb/chipidea/ci_hdrc_pci.c
> > @@ -16,10 +16,16 @@
> >  #include <linux/interrupt.h>
> >  #include <linux/usb/gadget.h>
> >  #include <linux/usb/chipidea.h>
> > +#include <linux/usb/usb_phy_generic.h>
> >  
> >  /* driver name */
> >  #define UDC_DRIVER_NAME   "ci_hdrc_pci"
> >  
> > +struct ci_hdrc_pci {
> > +	struct platform_device	*ci;
> > +	struct platform_device	*phy;
> > +};
> > +
> >  /******************************************************************************
> >   * PCI block
> >   *****************************************************************************/
> > @@ -52,7 +58,7 @@ static int ci_hdrc_pci_probe(struct pci_dev *pdev,
> >  				       const struct pci_device_id *id)
> >  {
> >  	struct ci_hdrc_platform_data *platdata = (void *)id->driver_data;
> > -	struct platform_device *plat_ci;
> > +	struct ci_hdrc_pci *ci;
> >  	struct resource res[3];
> >  	int retval = 0, nres = 2;
> >  
> > @@ -61,6 +67,10 @@ static int ci_hdrc_pci_probe(struct pci_dev *pdev,
> >  		return -ENODEV;
> >  	}
> >  
> > +	ci = devm_kzalloc(&pdev->dev, sizeof(*ci), GFP_KERNEL);
> > +	if (!ci)
> > +		return -ENOMEM;
> > +
> >  	retval = pcim_enable_device(pdev);
> >  	if (retval)
> >  		return retval;
> > @@ -73,20 +83,27 @@ static int ci_hdrc_pci_probe(struct pci_dev *pdev,
> >  	pci_set_master(pdev);
> >  	pci_try_set_mwi(pdev);
> >  
> > +	/* register a nop PHY */
> > +	ci->phy = usb_phy_generic_register();
> > +	if (!ci->phy)
> > +		return -ENOMEM;
> 
> Rebase my next tree where antoine's generic phy support for chipidea
> driver in it, and for usb phy, the "phy" changes to "usb_phy".

Okay, I'm going to change the name in this structure, otherwise how the
new patches in your tree helps me (PCI driver)?

> 
> > +
> >  	memset(res, 0, sizeof(res));
> > +
> 
> Why this blank line is needed?

Not needed.

> 
> >  	res[0].start	= pci_resource_start(pdev, 0);
> >  	res[0].end	= pci_resource_end(pdev, 0);
> >  	res[0].flags	= IORESOURCE_MEM;
> >  	res[1].start	= pdev->irq;
> >  	res[1].flags	= IORESOURCE_IRQ;
> >  
> > -	plat_ci = ci_hdrc_add_device(&pdev->dev, res, nres, platdata);
> > -	if (IS_ERR(plat_ci)) {
> > +	ci->ci = ci_hdrc_add_device(&pdev->dev, res, nres, platdata);
> > +	if (IS_ERR(ci->ci)) {
> >  		dev_err(&pdev->dev, "ci_hdrc_add_device failed!\n");
> > -		return PTR_ERR(plat_ci);
> > +		usb_phy_generic_unregister(ci->phy);
> > +		return PTR_ERR(ci->ci);
> >  	}
> >  
> > -	pci_set_drvdata(pdev, plat_ci);
> > +	pci_set_drvdata(pdev, ci);
> >  
> >  	return 0;
> >  }
> > @@ -101,9 +118,10 @@ static int ci_hdrc_pci_probe(struct pci_dev *pdev,
> >   */
> >  static void ci_hdrc_pci_remove(struct pci_dev *pdev)
> >  {
> > -	struct platform_device *plat_ci = pci_get_drvdata(pdev);
> > +	struct ci_hdrc_pci *ci = pci_get_drvdata(pdev);
> >  
> > -	ci_hdrc_remove_device(plat_ci);
> > +	ci_hdrc_remove_device(ci->ci);
> > +	usb_phy_generic_unregister(ci->phy);
> >  }
> >  
> >  /**
> > -- 
> > 2.1.3
> > 
> 


-- 
Andy Shevchenko <andriy.shevchenko@xxxxxxxxx>
Intel Finland Oy

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux