RE: [PATCH 1/2] usb: chipiea: add flags for id and vbus from external block

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

 



Hi Peter,

> -----Original Message-----
> From: Peter Chen
> Sent: 2019年3月1日 11:04
> To: Jun Li <jun.li@xxxxxxx>
> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; linux-usb@xxxxxxxxxxxxxxx; dl-linux-imx
> <linux-imx@xxxxxxx>
> Subject: RE: [PATCH 1/2] usb: chipiea: add flags for id and vbus from external block
> 
> 
> > >
> > >
> > > >  drivers/usb/chipidea/core.c  | 2 ++  include/linux/usb/chipidea.h
> > > > |
> > > > 4 ++++
> > > >  2 files changed, 6 insertions(+)
> > > >
> > > > diff --git a/drivers/usb/chipidea/core.c
> > > > b/drivers/usb/chipidea/core.c index
> > > > 7bfcbb2..0bfa850 100644
> > > > --- a/drivers/usb/chipidea/core.c
> > > > +++ b/drivers/usb/chipidea/core.c
> > > > @@ -706,6 +706,7 @@ static int ci_get_platdata(struct device *dev,
> > > >  	cable->edev = ext_vbus;
> > > >
> > > >  	if (!IS_ERR(ext_vbus)) {
> > > > +		platdata->ext_vbus = true;
> > > >  		ret = extcon_get_state(cable->edev, EXTCON_USB);
> > > >  		if (ret)
> > > >  			cable->connected = true;
> > > > @@ -718,6 +719,7 @@ static int ci_get_platdata(struct device *dev,
> > > >  	cable->edev = ext_id;
> > > >
> > > >  	if (!IS_ERR(ext_id)) {
> > > > +		platdata->ext_id = true;
> > > >  		ret = extcon_get_state(cable->edev, EXTCON_USB_HOST);
> > > >  		if (ret)
> > > >  			cable->connected = true;
> > > > diff --git a/include/linux/usb/chipidea.h
> > > > b/include/linux/usb/chipidea.h index
> > > > 911e05a..cd72d82 100644
> > > > --- a/include/linux/usb/chipidea.h
> > > > +++ b/include/linux/usb/chipidea.h
> > > > @@ -70,6 +70,10 @@ struct ci_hdrc_platform_data {
> > > >  	struct regulator	*reg_vbus;
> > > >  	struct usb_otg_caps	ci_otg_caps;
> > > >  	bool			tpl_support;
> > > > +	/* ID state is from external event out side of USB */
> > > > +	bool			ext_id;
> > > > +	/* VBUS state is from external event out side of USB */
> > > > +	bool			ext_vbus;
> > >
> > > We already have struct ci_hdrc_cable at this structure, please use it instead.
> >
> > I am going to extend ci_hdrc_cable also for type-C case, which has no
> > edev, So it's OK to add a flag in ci_hdrc_cable for both edev and
> > type-C to indicate external block is used?
> >
> 
> Why there is no external cable (edev) for Type-C case? If there is no external cable
> phandle at controller dts, how driver knows the Type-C connection occurs?

The new usb_role class doesn't depends on edev, see how this can work on dwc3:
https://patchwork.kernel.org/patch/10836519/

Li Jun

> 
> Peter





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

  Powered by Linux