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

Reply via email to