Message ID | 20200721144326.7976-7-alcooperx@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | usb: bdc: Updates and fixes to the USB BDC driver | expand |
On 7/21/20 7:43 AM, Al Cooper wrote: > From: Danesh Petigara <danesh.petigara@broadcom.com> > > GISB bus error kernel panics have been observed during S2 transition > tests on the 7271t platform. The errors are a result of the BDC > interrupt handler trying to access BDC register space after the > system's suspend callbacks have completed. > > Adding a suspend hook to the BDC driver that halts the controller before > S2 entry thus preventing unwanted access to the BDC register space during > this transition. > > Signed-off-by: Danesh Petigara <danesh.petigara@broadcom.com> > Signed-off-by: Al Cooper <alcooperx@gmail.com> Acked-by: Florian Fainelli <f.fainelli@gmail.com>
diff --git a/drivers/usb/gadget/udc/bdc/bdc_core.c b/drivers/usb/gadget/udc/bdc/bdc_core.c index 2c2f7aef7ba7..c1650247ea39 100644 --- a/drivers/usb/gadget/udc/bdc/bdc_core.c +++ b/drivers/usb/gadget/udc/bdc/bdc_core.c @@ -607,9 +607,14 @@ static int bdc_remove(struct platform_device *pdev) static int bdc_suspend(struct device *dev) { struct bdc *bdc = dev_get_drvdata(dev); + int ret; - clk_disable_unprepare(bdc->clk); - return 0; + /* Halt the controller */ + ret = bdc_stop(bdc); + if (!ret) + clk_disable_unprepare(bdc->clk); + + return ret; } static int bdc_resume(struct device *dev)