Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1204697 > unrolled thread

[PATCH v1] usb: dwc2: reset AHB hclk domain before init

Started byYunzhi Li <lyz@rock-chips.com>
First post2015-08-11 04:30 +0200
Last post2015-08-13 16:30 +0200
Articles 6 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH v1] usb: dwc2: reset AHB hclk domain before init Yunzhi Li <lyz@rock-chips.com> - 2015-08-11 04:30 +0200
    Re: [PATCH v1] usb: dwc2: reset AHB hclk domain before init Felipe Balbi <balbi@ti.com> - 2015-08-11 16:20 +0200
      Re: [PATCH v1] usb: dwc2: reset AHB hclk domain before init Yunzhi Li <lyz@rock-chips.com> - 2015-08-12 13:10 +0200
        Re: [PATCH v1] usb: dwc2: reset AHB hclk domain before init Felipe Balbi <balbi@ti.com> - 2015-08-12 21:40 +0200
          Re: [PATCH v1] usb: dwc2: reset AHB hclk domain before init John Youn <John.Youn@synopsys.com> - 2015-08-13 10:40 +0200
            Re: [PATCH v1] usb: dwc2: reset AHB hclk domain before init Felipe Balbi <balbi@ti.com> - 2015-08-13 16:30 +0200

#1204697 — [PATCH v1] usb: dwc2: reset AHB hclk domain before init

FromYunzhi Li <lyz@rock-chips.com>
Date2015-08-11 04:30 +0200
Subject[PATCH v1] usb: dwc2: reset AHB hclk domain before init
Message-ID<pW7u9-8lO-1@gated-at.bofh.it>
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 <lyz@rock-chips.com>

---

 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..3da21ab 100644
--- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c
@@ -42,6 +42,7 @@
 #include <linux/of_device.h>
 #include <linux/mutex.h>
 #include <linux/platform_device.h>
+#include <linux/reset.h>
 
 #include <linux/usb/of.h>
 
@@ -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_reset");
+	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


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1205171

FromFelipe Balbi <balbi@ti.com>
Date2015-08-11 16:20 +0200
Message-ID<pWizh-7wA-43@gated-at.bofh.it>
In reply to#1204697

[Multipart message — attachments visible in raw view] — view raw

Hi,

On Tue, Aug 11, 2015 at 10:27:42AM +0800, Yunzhi Li wrote:
> 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 <lyz@rock-chips.com>
> 
> ---
> 
>  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..3da21ab 100644
> --- a/drivers/usb/dwc2/platform.c
> +++ b/drivers/usb/dwc2/platform.c
> @@ -42,6 +42,7 @@
>  #include <linux/of_device.h>
>  #include <linux/mutex.h>
>  #include <linux/platform_device.h>
> +#include <linux/reset.h>
>  
>  #include <linux/usb/of.h>
>  
> @@ -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_reset");

why isn't this done in core so PCI systems can also make use of it ?

-- 
balbi

[toc] | [prev] | [next] | [standalone]


#1205965

FromYunzhi Li <lyz@rock-chips.com>
Date2015-08-12 13:10 +0200
Message-ID<pWC4V-2z5-17@gated-at.bofh.it>
In reply to#1205171
Hi ,
在 2015/8/11 22:12, Felipe Balbi 写道:
> Hi,
>
> On Tue, Aug 11, 2015 at 10:27:42AM +0800, Yunzhi Li wrote:
>> 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 <lyz@rock-chips.com>
>>
>> ---
>>
>>   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..3da21ab 100644
>> --- a/drivers/usb/dwc2/platform.c
>> +++ b/drivers/usb/dwc2/platform.c
>> @@ -42,6 +42,7 @@
>>   #include <linux/of_device.h>
>>   #include <linux/mutex.h>
>>   #include <linux/platform_device.h>
>> +#include <linux/reset.h>
>>   
>>   #include <linux/usb/of.h>
>>   
>> @@ -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_reset");
> why isn't this done in core so PCI systems can also make use of it ?
>
I have no ides about how to reset a PCI interface dwc2 controller, John 
could you please give some infomation about it ?
Is it also needed for PCI interface dwc2 IP ?

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1206345

FromFelipe Balbi <balbi@ti.com>
Date2015-08-12 21:40 +0200
Message-ID<pWK2v-5uP-27@gated-at.bofh.it>
In reply to#1205965

[Multipart message — attachments visible in raw view] — view raw

On Wed, Aug 12, 2015 at 07:06:09PM +0800, Yunzhi Li wrote:
> Hi ,
> 在 2015/8/11 22:12, Felipe Balbi 写道:
> >Hi,
> >
> >On Tue, Aug 11, 2015 at 10:27:42AM +0800, Yunzhi Li wrote:
> >>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 <lyz@rock-chips.com>
> >>
> >>---
> >>
> >>  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..3da21ab 100644
> >>--- a/drivers/usb/dwc2/platform.c
> >>+++ b/drivers/usb/dwc2/platform.c
> >>@@ -42,6 +42,7 @@
> >>  #include <linux/of_device.h>
> >>  #include <linux/mutex.h>
> >>  #include <linux/platform_device.h>
> >>+#include <linux/reset.h>
> >>  #include <linux/usb/of.h>
> >>@@ -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_reset");
> >why isn't this done in core so PCI systems can also make use of it ?
> >
> I have no ides about how to reset a PCI interface dwc2 controller, John
> could you please give some infomation about it ?
> Is it also needed for PCI interface dwc2 IP ?

even on platform only, how do you know all users provide a ahb_reset
reset controller ?

-- 
balbi

[toc] | [prev] | [next] | [standalone]


#1206601

FromJohn Youn <John.Youn@synopsys.com>
Date2015-08-13 10:40 +0200
Message-ID<pWWdj-6oF-5@gated-at.bofh.it>
In reply to#1206345
On 8/12/2015 12:33 PM, Felipe Balbi wrote:
> On Wed, Aug 12, 2015 at 07:06:09PM +0800, Yunzhi Li wrote:
>> Hi ,
>> 在 2015/8/11 22:12, Felipe Balbi 写道:
>>> Hi,
>>>
>>> On Tue, Aug 11, 2015 at 10:27:42AM +0800, Yunzhi Li wrote:
>>>> 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 <lyz@rock-chips.com>
>>>>
>>>> ---
>>>>
>>>>  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..3da21ab 100644
>>>> --- a/drivers/usb/dwc2/platform.c
>>>> +++ b/drivers/usb/dwc2/platform.c
>>>> @@ -42,6 +42,7 @@
>>>>  #include <linux/of_device.h>
>>>>  #include <linux/mutex.h>
>>>>  #include <linux/platform_device.h>
>>>> +#include <linux/reset.h>
>>>>  #include <linux/usb/of.h>
>>>> @@ -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_reset");
>>> why isn't this done in core so PCI systems can also make use of it ?
>>>
>> I have no ides about how to reset a PCI interface dwc2 controller, John
>> could you please give some infomation about it ?
>> Is it also needed for PCI interface dwc2 IP ?
> 
> even on platform only, how do you know all users provide a ahb_reset
> reset controller ?
> 

Also where do you provide the ahb_reset? I don't see it as a
property for dwc2.

With regards to PCI, I'm also not sure how you'd accomplish
something like this. But the platform I use at least doesn't need
this.

Regards,
John





--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1206854

FromFelipe Balbi <balbi@ti.com>
Date2015-08-13 16:30 +0200
Message-ID<pX1G2-5TR-15@gated-at.bofh.it>
In reply to#1206601

[Multipart message — attachments visible in raw view] — view raw

On Thu, Aug 13, 2015 at 08:37:36AM +0000, John Youn wrote:
> On 8/12/2015 12:33 PM, Felipe Balbi wrote:
> > On Wed, Aug 12, 2015 at 07:06:09PM +0800, Yunzhi Li wrote:
> >> Hi ,
> >> 在 2015/8/11 22:12, Felipe Balbi 写道:
> >>> Hi,
> >>>
> >>> On Tue, Aug 11, 2015 at 10:27:42AM +0800, Yunzhi Li wrote:
> >>>> 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 <lyz@rock-chips.com>
> >>>>
> >>>> ---
> >>>>
> >>>>  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..3da21ab 100644
> >>>> --- a/drivers/usb/dwc2/platform.c
> >>>> +++ b/drivers/usb/dwc2/platform.c
> >>>> @@ -42,6 +42,7 @@
> >>>>  #include <linux/of_device.h>
> >>>>  #include <linux/mutex.h>
> >>>>  #include <linux/platform_device.h>
> >>>> +#include <linux/reset.h>
> >>>>  #include <linux/usb/of.h>
> >>>> @@ -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_reset");
> >>> why isn't this done in core so PCI systems can also make use of it ?
> >>>
> >> I have no ides about how to reset a PCI interface dwc2 controller, John
> >> could you please give some infomation about it ?
> >> Is it also needed for PCI interface dwc2 IP ?
> > 
> > even on platform only, how do you know all users provide a ahb_reset
> > reset controller ?
> > 
> 
> Also where do you provide the ahb_reset? I don't see it as a
> property for dwc2.
> 
> With regards to PCI, I'm also not sure how you'd accomplish
> something like this. But the platform I use at least doesn't need
> this.

Is the reset controller optional ? That _optional should always return a
valid pointer, right ? Even if that valid pointer is NULL :-)

-- 
balbi

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web