From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: Felipe Balbi <balbi@kernel.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Cc: Yu Chen <chenyu56@huawei.com>, <linux-usb@vger.kernel.org>,
<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<john.stultz@linaro.org>, <suzhuangluan@hisilicon.com>,
<kongfei@hisilicon.com>, <liuyu712@hisilicon.com>,
<wanghu17@hisilicon.com>, <butao@hisilicon.com>,
<chenyao11@huawei.com>, <fangshengzhou@hisilicon.com>,
<lipengcheng8@huawei.com>, <songxiaowei@hisilicon.com>,
<xuyiping@hisilicon.com>, <xuyoujun4@huawei.com>,
<yudongbin@hisilicon.com>, <zangleigang@hisilicon.com>,
Andy Shevchenko <andy.shevchenko@gmail.com>,
Binghui Wang <wangbinghui@hisilicon.com>
Subject: Re: [PATCH v6 04/13] usb: dwc3: Add splitdisable quirk for Hisilicon Kirin Soc
Date: Mon, 7 Sep 2020 15:06:31 +0200 [thread overview]
Message-ID: <20200907150631.70e1bce0@coco.lan> (raw)
In-Reply-To: <20190420064019.57522-5-chenyu56@huawei.com>
Hi Felipe/Greg,
What's the status of this patch?
I tested here, together with the Hikey 970 phy RFC patches I sent
last week.
Without this patch, the USB HID driver receives -EPROTO from
submitted URBs, causing it to enter into an endless reset cycle
on every 500 ms, at the hid_io_error() logic.
Tested-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
If you prefer, I can re-submit this one with my SOB.
Thanks,
Mauro
Em Sat, 20 Apr 2019 14:40:10 +0800
Yu Chen <chenyu56@huawei.com> escreveu:
> SPLIT_BOUNDARY_DISABLE should be set for DesignWare USB3 DRD Core
> of Hisilicon Kirin Soc when dwc3 core act as host.
>
> Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
> Cc: Felipe Balbi <balbi@kernel.org>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: John Stultz <john.stultz@linaro.org>
> Cc: Binghui Wang <wangbinghui@hisilicon.com>
> Signed-off-by: Yu Chen <chenyu56@huawei.com>
> ---
> v4:
> * Add dwc3_complete definition while CONFIG_PM_SLEEP does not defined.
> * Add description for 'dis_split_quirk'.
> ---
> ---
> drivers/usb/dwc3/core.c | 26 ++++++++++++++++++++++++++
> drivers/usb/dwc3/core.h | 7 +++++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index a1b126f90261..c3ef6bd2b0d4 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -117,6 +117,7 @@ static void __dwc3_set_mode(struct work_struct *work)
> struct dwc3 *dwc = work_to_dwc(work);
> unsigned long flags;
> int ret;
> + u32 reg;
>
> if (dwc->dr_mode != USB_DR_MODE_OTG)
> return;
> @@ -169,6 +170,11 @@ static void __dwc3_set_mode(struct work_struct *work)
> phy_set_mode(dwc->usb2_generic_phy, PHY_MODE_USB_HOST);
> phy_set_mode(dwc->usb3_generic_phy, PHY_MODE_USB_HOST);
> phy_calibrate(dwc->usb2_generic_phy);
> + if (dwc->dis_split_quirk) {
> + reg = dwc3_readl(dwc->regs, DWC3_GUCTL3);
> + reg |= DWC3_GUCTL3_SPLITDISABLE;
> + dwc3_writel(dwc->regs, DWC3_GUCTL3, reg);
> + }
> }
> break;
> case DWC3_GCTL_PRTCAP_DEVICE:
> @@ -1306,6 +1312,9 @@ static void dwc3_get_properties(struct dwc3 *dwc)
> dwc->dis_metastability_quirk = device_property_read_bool(dev,
> "snps,dis_metastability_quirk");
>
> + dwc->dis_split_quirk = device_property_read_bool(dev,
> + "snps,dis-split-quirk");
> +
> dwc->lpm_nyet_threshold = lpm_nyet_threshold;
> dwc->tx_de_emphasis = tx_de_emphasis;
>
> @@ -1825,10 +1834,27 @@ static int dwc3_resume(struct device *dev)
>
> return 0;
> }
> +
> +static void dwc3_complete(struct device *dev)
> +{
> + struct dwc3 *dwc = dev_get_drvdata(dev);
> + u32 reg;
> +
> + if (dwc->current_dr_role == DWC3_GCTL_PRTCAP_HOST &&
> + dwc->dis_split_quirk) {
> + dev_dbg(dwc->dev, "set DWC3_GUCTL3_SPLITDISABLE\n");
> + reg = dwc3_readl(dwc->regs, DWC3_GUCTL3);
> + reg |= DWC3_GUCTL3_SPLITDISABLE;
> + dwc3_writel(dwc->regs, DWC3_GUCTL3, reg);
> + }
> +}
> +#else
> +#define dwc3_complete NULL
> #endif /* CONFIG_PM_SLEEP */
>
> static const struct dev_pm_ops dwc3_dev_pm_ops = {
> SET_SYSTEM_SLEEP_PM_OPS(dwc3_suspend, dwc3_resume)
> + .complete = dwc3_complete,
> SET_RUNTIME_PM_OPS(dwc3_runtime_suspend, dwc3_runtime_resume,
> dwc3_runtime_idle)
> };
> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
> index 1528d395b156..28475e301ad9 100644
> --- a/drivers/usb/dwc3/core.h
> +++ b/drivers/usb/dwc3/core.h
> @@ -136,6 +136,7 @@
> #define DWC3_GEVNTCOUNT(n) (0xc40c + ((n) * 0x10))
>
> #define DWC3_GHWPARAMS8 0xc600
> +#define DWC3_GUCTL3 0xc60c
> #define DWC3_GFLADJ 0xc630
>
> /* Device Registers */
> @@ -370,6 +371,9 @@
> /* Global User Control Register 2 */
> #define DWC3_GUCTL2_RST_ACTBITLATER BIT(14)
>
> +/* Global User Control Register 3 */
> +#define DWC3_GUCTL3_SPLITDISABLE BIT(14)
> +
> /* Device Configuration Register */
> #define DWC3_DCFG_DEVADDR(addr) ((addr) << 3)
> #define DWC3_DCFG_DEVADDR_MASK DWC3_DCFG_DEVADDR(0x7f)
> @@ -1030,6 +1034,7 @@ struct dwc3_scratchpad_array {
> * 2 - No de-emphasis
> * 3 - Reserved
> * @dis_metastability_quirk: set to disable metastability quirk.
> + * @dis_split_quirk: set to disable split boundary.
> * @imod_interval: set the interrupt moderation interval in 250ns
> * increments or 0 to disable.
> */
> @@ -1216,6 +1221,8 @@ struct dwc3 {
>
> unsigned dis_metastability_quirk:1;
>
> + unsigned dis_split_quirk:1;
> +
> u16 imod_interval;
> };
>
Thanks,
Mauro
next prev parent reply other threads:[~2020-09-07 13:07 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-20 6:40 [PATCH v6 00/13] Add support for usb on Hikey960 Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 ` [v6,04/13] usb: dwc3: Add splitdisable quirk for Hisilicon Kirin Soc Yu Chen
2019-04-20 6:40 ` [PATCH v6 04/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2020-09-07 13:06 ` Mauro Carvalho Chehab [this message]
2020-09-07 14:04 ` Felipe Balbi
2020-09-07 14:50 ` Mauro Carvalho Chehab
2020-09-08 6:09 ` Felipe Balbi
2020-09-08 6:49 ` Mauro Carvalho Chehab
2020-09-08 17:40 ` Thinh Nguyen
2020-09-08 6:42 ` Mauro Carvalho Chehab
2019-04-29 15:42 ` [PATCH v6 00/13] Add support for usb on Hikey960 Valentin Schneider
-- strict thread matches above, loose matches on Subject: below --
2019-04-20 6:40 [v6,01/13] dt-bindings: phy: Add support for HiSilicon's hi3660 USB PHY Yu Chen
2019-04-20 6:40 ` [PATCH v6 01/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 [v6,02/13] dt-bindings: misc: Add bindings for HiSilicon usb hub and data role switch functionality on HiKey960 Yu Chen
2019-04-20 6:40 ` [PATCH v6 02/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 [v6,03/13] usb: dwc3: dwc3-of-simple: Add support for dwc3 of Hisilicon Soc Platform Yu Chen
2019-04-20 6:40 ` [PATCH v6 03/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 [v6,05/13] usb: dwc3: Execute GCTL Core Soft Reset while switch mdoe for Hisilicon Kirin Soc Yu Chen
2019-04-20 6:40 ` [PATCH v6 05/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 [v6,06/13] usb: dwc3: Increase timeout for CmdAct cleared by device controller Yu Chen
2019-04-20 6:40 ` [PATCH v6 06/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 [v6,07/13] phy: Add usb phy support for hi3660 Soc of Hisilicon Yu Chen
2019-04-20 6:40 ` [PATCH v6 07/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 [v6,08/13] usb: roles: Introduce stubs for the exiting functions in role.h Yu Chen
2019-04-20 6:40 ` [PATCH v6 08/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 [v6,09/13] usb: roles: Add usb role switch notifier Yu Chen
2019-04-20 6:40 ` [PATCH v6 09/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 [v6,10/13] usb: dwc3: Registering a role switch in the DRD code Yu Chen
2019-04-20 6:40 ` [PATCH v6 10/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 [v6,11/13] hikey960: Support usb functionality of Hikey960 Yu Chen
2019-04-20 6:40 ` [PATCH v6 11/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 [v6,12/13] usb: gadget: Add configfs attribuite for controling match_existing_only Yu Chen
2019-04-20 6:40 ` [PATCH v6 12/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 [v6,13/13] dts: hi3660: Add support for usb on Hikey960 Yu Chen
2019-04-20 6:40 ` [PATCH v6 13/13] " Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-20 6:40 ` Yu Chen
2019-04-25 21:35 [v6,02/13] dt-bindings: misc: Add bindings for HiSilicon usb hub and data role switch functionality on HiKey960 Rob Herring
2019-04-25 21:35 ` [PATCH v6 02/13] " Rob Herring
2019-04-25 21:36 [v6,03/13] usb: dwc3: dwc3-of-simple: Add support for dwc3 of Hisilicon Soc Platform Rob Herring
2019-04-25 21:36 ` [PATCH v6 03/13] " Rob Herring
2019-04-25 22:00 [v6,13/13] dts: hi3660: Add support for usb on Hikey960 Rob Herring
2019-04-25 22:00 ` [PATCH v6 13/13] " Rob Herring
2019-04-25 22:00 ` Rob Herring
2019-04-30 6:07 [v6,02/13] dt-bindings: misc: Add bindings for HiSilicon usb hub and data role switch functionality on HiKey960 Yu Chen
2019-04-30 6:07 ` [PATCH v6 02/13] " Chen Yu
2019-04-30 6:07 ` Chen Yu
2019-04-30 7:15 [v6,13/13] dts: hi3660: Add support for usb on Hikey960 Yu Chen
2019-04-30 7:15 ` [PATCH v6 13/13] " Chen Yu
2019-04-30 7:15 ` Chen Yu
2019-05-01 16:27 [v6,02/13] dt-bindings: misc: Add bindings for HiSilicon usb hub and data role switch functionality on HiKey960 Rob Herring
2019-05-01 16:27 ` [PATCH v6 02/13] " Rob Herring
2019-05-02 5:44 [v6,13/13] dts: hi3660: Add support for usb on Hikey960 shufan_lee(李書帆)
2019-05-02 5:44 ` [PATCH v6 13/13] " shufan_lee(李書帆)
2019-05-02 5:44 ` shufan_lee(李書帆)
2019-05-02 5:44 ` shufan_lee(李書帆)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200907150631.70e1bce0@coco.lan \
--to=mchehab+huawei@kernel.org \
--cc=andy.shevchenko@gmail.com \
--cc=balbi@kernel.org \
--cc=butao@hisilicon.com \
--cc=chenyao11@huawei.com \
--cc=chenyu56@huawei.com \
--cc=devicetree@vger.kernel.org \
--cc=fangshengzhou@hisilicon.com \
--cc=gregkh@linuxfoundation.org \
--cc=john.stultz@linaro.org \
--cc=kongfei@hisilicon.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=lipengcheng8@huawei.com \
--cc=liuyu712@hisilicon.com \
--cc=songxiaowei@hisilicon.com \
--cc=suzhuangluan@hisilicon.com \
--cc=wangbinghui@hisilicon.com \
--cc=wanghu17@hisilicon.com \
--cc=xuyiping@hisilicon.com \
--cc=xuyoujun4@huawei.com \
--cc=yudongbin@hisilicon.com \
--cc=zangleigang@hisilicon.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.