From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754657AbcGFQZn (ORCPT ); Wed, 6 Jul 2016 12:25:43 -0400 Received: from metis.ext.4.pengutronix.de ([92.198.50.35]:34181 "EHLO metis.ext.4.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754405AbcGFQZm (ORCPT ); Wed, 6 Jul 2016 12:25:42 -0400 Message-ID: <1467822335.2914.13.camel@pengutronix.de> Subject: Re: [RESEND PATCH] usb: dwc2: Add reset control to dwc2 From: Philipp Zabel To: dinguyen@opensource.altera.com Cc: dinh.linux@gmail.com, dinguyen@kernel.org, johnyoun@synopsys.com, linux-kernel@vger.kernel.org Date: Wed, 06 Jul 2016 18:25:35 +0200 In-Reply-To: <1466536333-17813-1-git-send-email-dinguyen@opensource.altera.com> References: <1466536333-17813-1-git-send-email-dinguyen@opensource.altera.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.12.9-1+b1 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-SA-Exim-Connect-IP: 2001:67c:670:100:96de:80ff:fec2:9969 X-SA-Exim-Mail-From: p.zabel@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Dinh, Am Dienstag, den 21.06.2016, 14:12 -0500 schrieb dinguyen@opensource.altera.com: > From: Dinh Nguyen > > Allow for platforms that have a reset controller driver in place to bring > the USB IP out of reset. > > Signed-off-by: Dinh Nguyen > Acked-by: John Youn > Tested-by: Stefan Wahren > Acked-by: Felipe Balbi Acked-by: Philipp Zabel This is an USB patch. Doesn't John collect patches and send pull requests? Then you should put Greg Kroah-Hartman and linux-usb@vger.kernel.org into Cc:. Things get easily lost on linux-kernel. regards Philipp > --- > 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 > #include > #include > +#include > > #include > > @@ -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; > } >