From 83e104196c7f1adb62ba1a8e859a090fb5cf20ad Mon Sep 17 00:00:00 2001 From: Harsh Agarwal Date: Mon, 8 Feb 2021 17:55:48 +0530 Subject: [PATCH] usb: dwc3-msm: Prevent switch to peripheral for host-mode only core Currently certain platforms have cores which are only host-mode compatible. Prevent switch to peripharal mode for such cores so as to prevent unanticipated core behavior and crashes. Change-Id: I163e878bfe7428ed339409adb8a491a6673ca055 Signed-off-by: Harsh Agarwal --- drivers/usb/dwc3/dwc3-msm.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c index 8227cc6c2d7a..dfae9cc54ed5 100644 --- a/drivers/usb/dwc3/dwc3-msm.c +++ b/drivers/usb/dwc3/dwc3-msm.c @@ -3869,8 +3869,14 @@ static ssize_t mode_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct dwc3_msm *mdwc = dev_get_drvdata(dev); + struct dwc3 *dwc = platform_get_drvdata(mdwc->dwc3); if (sysfs_streq(buf, "peripheral")) { + if (dwc->dr_mode == USB_DR_MODE_HOST) { + dev_err(dev, "Core supports host mode only.\n"); + return -EINVAL; + } + mdwc->vbus_active = true; mdwc->id_state = DWC3_ID_FLOAT; } else if (sysfs_streq(buf, "host")) {