From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933871AbbHKH5E (ORCPT ); Tue, 11 Aug 2015 03:57:04 -0400 Received: from regular1.263xmail.com ([211.150.99.138]:48022 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933731AbbHKH5B (ORCPT ); Tue, 11 Aug 2015 03:57:01 -0400 X-Greylist: delayed 19718 seconds by postgrey-1.27 at vger.kernel.org; Tue, 11 Aug 2015 03:56:58 EDT X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-ADDR-CHECKED: 0 X-RL-SENDER: lyz@rock-chips.com X-FST-TO: jwerner@chromium.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: lyz@rock-chips.com X-UNIQUE-TAG: <380479a95643d4dd09d91b3d30e82ae6> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 From: Yunzhi Li To: jwerner@chromium.org, dianders@chromium.org Cc: huangtao@rock-chips.com, cf@rock-chips.com, hl@rock-chips.com, wulf@rock-chips.com, gregory.herrero@intel.com, linux-rockchip@lists.infradead.org, Yunzhi Li , John Youn , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 1/3] usb: dwc2: reset AHB hclk domain before init Date: Tue, 11 Aug 2015 15:56:25 +0800 Message-Id: <1439279787-26674-1-git-send-email-lyz@rock-chips.com> X-Mailer: git-send-email 2.0.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We initiate dwc2 usb controller in BIOS, when kernel driver start-up we should reset AHB hclk domain to reset all AHB interface registers to default. Without this the FIFO value setting might be incorrect because calculating FIFO size need the power-on value of GRXFSIZ/GNPTXFSIZ/HPTXFSIZ registers. This patch could avoid warnning massage like in rk3288 platform: [ 2.074764] dwc2 ff580000.usb: 256 invalid for host_perio_tx_fifo_size. Check HW configuration. Signed-off-by: Yunzhi Li --- drivers/usb/dwc2/platform.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c index 9093530..ec6bf6b 100644 --- a/drivers/usb/dwc2/platform.c +++ b/drivers/usb/dwc2/platform.c @@ -42,6 +42,7 @@ #include #include #include +#include #include @@ -165,6 +166,7 @@ static int dwc2_driver_probe(struct platform_device *dev) struct resource *res; struct phy *phy; struct usb_phy *uphy; + struct reset_control *rst; int retval; int irq; @@ -189,6 +191,16 @@ static int dwc2_driver_probe(struct platform_device *dev) hsotg->dev = &dev->dev; + /* AHB hclk domain reset, set all AHB interface registers to default */ + rst = devm_reset_control_get_optional(&dev->dev, "ahb"); + if (IS_ERR(rst)) { + dev_dbg(&dev->dev, "Can't get dwc2 AHB reset\n"); + } else { + reset_control_assert(rst); + udelay(5); + reset_control_deassert(rst); + } + /* * Use reasonable defaults so platforms don't have to provide these. */ -- 2.0.0