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