summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-12-13 12:18:08 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-12-13 12:18:07 -0800
commit3162449f7d245d45f007d4ea3224576ddf1bcc63 (patch)
tree2f0a32dd27a32c0eea0e2f6c076946fa1598e411 /drivers/usb
parent2b66512ac300bc2819a599127f7e9c497fbf1ddb (diff)
parent4c551536eeb6828378bbdad5f1a6d4a387debfed (diff)
Merge "USB: dwc3: msm: Fail probe if core-clk-rate is not passed from dts"
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/dwc3/dwc3-msm.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/drivers/usb/dwc3/dwc3-msm.c b/drivers/usb/dwc3/dwc3-msm.c
index fa93740c8bb7..15c994294c63 100644
--- a/drivers/usb/dwc3/dwc3-msm.c
+++ b/drivers/usb/dwc3/dwc3-msm.c
@@ -1757,6 +1757,7 @@ static void dwc3_msm_power_collapse_por(struct dwc3_msm *mdwc)
{
struct dwc3 *dwc = platform_get_drvdata(mdwc->dwc3);
u32 val;
+ int ret;
/* Configure AHB2PHY for one wait state read/write */
if (mdwc->ahb2phy_base) {
@@ -1775,7 +1776,11 @@ static void dwc3_msm_power_collapse_por(struct dwc3_msm *mdwc)
if (!mdwc->init) {
dbg_event(0xFF, "dwc3 init",
atomic_read(&mdwc->dev->power.usage_count));
- dwc3_core_pre_init(dwc);
+ ret = dwc3_core_pre_init(dwc);
+ if (ret) {
+ dev_err(mdwc->dev, "dwc3_core_pre_init failed\n");
+ return;
+ }
mdwc->init = true;
}
@@ -2390,12 +2395,15 @@ static int dwc3_msm_get_clk_gdsc(struct dwc3_msm *mdwc)
return ret;
}
- if (!of_property_read_u32(mdwc->dev->of_node, "qcom,core-clk-rate",
+ if (of_property_read_u32(mdwc->dev->of_node, "qcom,core-clk-rate",
(u32 *)&mdwc->core_clk_rate)) {
- mdwc->core_clk_rate = clk_round_rate(mdwc->core_clk,
- mdwc->core_clk_rate);
+ dev_err(mdwc->dev, "USB core-clk-rate is not present\n");
+ return -EINVAL;
}
+ mdwc->core_clk_rate = clk_round_rate(mdwc->core_clk,
+ mdwc->core_clk_rate);
+
dev_dbg(mdwc->dev, "USB core frequency = %ld\n",
mdwc->core_clk_rate);
ret = clk_set_rate(mdwc->core_clk, mdwc->core_clk_rate);
@@ -2538,8 +2546,12 @@ static int dwc3_msm_extcon_register(struct dwc3_msm *mdwc)
struct extcon_dev *edev;
int ret = 0;
- if (!of_property_read_bool(node, "extcon"))
- return 0;
+ if (!of_property_read_bool(node, "extcon")) {
+ if (usb_get_dr_mode(&mdwc->dwc3->dev) == USB_DR_MODE_HOST)
+ return 0;
+ dev_err(mdwc->dev, "extcon property doesn't exist\n");
+ return -EINVAL;
+ }
edev = extcon_get_edev_by_phandle(mdwc->dev, 0);
if (IS_ERR(edev) && PTR_ERR(edev) != -ENODEV)