Hi, John Youn <John.Youn@xxxxxxxxxxxx> writes: > On 6/3/2016 8:59 AM, dinguyen@xxxxxxxxxxxxxxxxxxxxx wrote: >> From: Dinh Nguyen <dinguyen@xxxxxxxxxxxxxxxxxxxxx> >> >> Allow for platforms that have a reset controller driver in place to bring >> the USB IP out of reset. >> >> Signed-off-by: Dinh Nguyen <dinguyen@xxxxxxxxxxxxxxxxxxxxx> >> Acked-by: John Youn <johnyoun@xxxxxxxxxxxx> >> Tested-by: Stefan Wahren <stefan.wahren@xxxxxxxx> >> --- >> v7: Use devm_reset_control_get_optional() >> v6: fix 80 line checkpatch warning in dev_err print >> v5: updated error conditions for not finding the reset property >> v4: use dev_dbg() if not a -EPROBE_DEFER >> v3: fix compile error >> v2: move to lowlevel_hw_init() >> --- >> drivers/usb/dwc2/core.h | 1 + >> drivers/usb/dwc2/platform.c | 22 ++++++++++++++++++++++ >> 2 files changed, 23 insertions(+) >> >> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h >> index 3c58d63..f748132 100644 >> --- a/drivers/usb/dwc2/core.h >> +++ b/drivers/usb/dwc2/core.h >> @@ -837,6 +837,7 @@ struct dwc2_hsotg { >> void *priv; >> int irq; >> struct clk *clk; >> + struct reset_control *reset; >> >> unsigned int queuing_high_bandwidth:1; >> unsigned int srp_success:1; >> diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c >> index 88629be..d34f169 100644 >> --- a/drivers/usb/dwc2/platform.c >> +++ b/drivers/usb/dwc2/platform.c >> @@ -45,6 +45,7 @@ >> #include <linux/platform_device.h> >> #include <linux/phy/phy.h> >> #include <linux/platform_data/s3c-hsotg.h> >> +#include <linux/reset.h> >> >> #include <linux/usb/of.h> >> >> @@ -337,6 +338,24 @@ static int dwc2_lowlevel_hw_init(struct dwc2_hsotg *hsotg) >> { >> int i, ret; >> >> + hsotg->reset = devm_reset_control_get_optional(hsotg->dev, "dwc2"); >> + if (IS_ERR(hsotg->reset)) { >> + ret = PTR_ERR(hsotg->reset); >> + switch (ret) { >> + case -ENOENT: >> + case -ENOTSUPP: >> + hsotg->reset = NULL; >> + break; >> + default: >> + dev_err(hsotg->dev, "error getting reset control %d\n", >> + ret); >> + return ret; >> + } >> + } >> + >> + if (hsotg->reset) >> + reset_control_deassert(hsotg->reset); >> + >> /* Set default UTMI width */ >> hsotg->phyif = GUSBCFG_PHYIF16; >> >> @@ -434,6 +453,9 @@ static int dwc2_driver_remove(struct platform_device *dev) >> if (hsotg->ll_hw_enabled) >> dwc2_lowlevel_hw_disable(hsotg); >> >> + if (hsotg->reset) >> + reset_control_assert(hsotg->reset); >> + >> return 0; >> } >> >> > > Hi Felipe, > > This patch depends on this one in the reset control tree. > > http://marc.info/?l=linux-usb&m=146473891018262&w=2 > > Should you also have this patch in your tree? Or what is the best way > to deal with it? We have two ways of dealing with this: 1. We wait for v4.9 2. Reset folks take this patch together with the rest of the changes I'm fine with either way. Should (2) be chosen here's my ack: Acked-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> -- balbi
Attachment:
signature.asc
Description: PGP signature