Add 2 flags for id and vbus if the state is from external blocks instead of OTG block inside of USB controller. Signed-off-by: Li Jun <jun.li@xxxxxxx> --- 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; /* interrupt threshold setting */ u32 itc_setting; u32 ahb_burst_config; -- 2.7.4