On 6/21/2016 1:06 AM, Felipe Balbi wrote: > > 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> > Hi Dinh, Can you resend this to Philipp Zabel. Hi Philipp, Could you take this in your reset/next tree? It depends on the following patch there: http://marc.info/?l=linux-usb&m=146473891018262&w=2 Regards, John -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html