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]

 



> >
> > > >
> > > >
> > > > >  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/
> 

I see, you could add role switch class for chipidea first, then put Type-C on it.

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