RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-10 Thread Roman Bacik
> -Original Message-
> From: John Youn [mailto:john.y...@synopsys.com]
> Sent: September-10-15 12:08 PM
> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
> u...@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> On 9/10/2015 10:56 AM, Roman Bacik wrote:
> >> -Original Message-
> >> From: Roman Bacik
> >> Sent: September-09-15 7:59 PM
> >> To: 'John Youn'; Scott Branden; 'Greg Kroah-Hartman'; 'linux-
> >> u...@vger.kernel.org'
> >> Cc: 'linux-kernel@vger.kernel.org'; bcm-kernel-feedback-list
> >> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >> isochronous mode
> >>
> >>> -Original Message-
> >>> From: Roman Bacik
> >>> Sent: September-09-15 7:36 PM
> >>> To: 'John Youn'; Scott Branden; Greg Kroah-Hartman; linux-
> >>> u...@vger.kernel.org
> >>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >>> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >>> isochronous mode
> >>>
> >>>> -Original Message-
> >>>> From: John Youn [mailto:john.y...@synopsys.com]
> >>>> Sent: September-09-15 7:25 PM
> >>>> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
> >>>> linux- u...@vger.kernel.org
> >>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >>>> isochronous mode
> >>>>
> >>>> On 9/9/2015 7:16 PM, Roman Bacik wrote:
> >>>>>> -----Original Message-
> >>>>>> From: John Youn [mailto:john.y...@synopsys.com]
> >>>>>> Sent: September-09-15 7:11 PM
> >>>>>> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
> >>>>>> linux- u...@vger.kernel.org
> >>>>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >>>>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >>>>>> isochronous mode
> >>>>>>
> >>>>>> On 9/9/2015 11:16 AM, Roman Bacik wrote:
> >>>>>>>> -Original Message-
> >>>>>>>> From: John Youn [mailto:john.y...@synopsys.com]
> >>>>>>>> Sent: September-03-15 11:53 PM
> >>>>>>>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> >>>>>>>> u...@vger.kernel.org; Roman Bacik
> >>>>>>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >>>>>>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >>>>>>>> isochronous mode
> >>>>>>>>
> >>>>>>>> On 8/31/2015 9:17 AM, Scott Branden wrote:
> >>>>>>>>> From: Roman Bacik 
> >>>>>>>>>
> >>>>>>>>> USB OTG driver in isochronous mode has to set the parity of
> >>>>>>>>> the receiving microframe. The parity is set to even by
> >>>>>>>>> default. This causes problems for an audio gadget, if the host
> >>>>>>>>> starts transmitting on odd
> >>>>>>>> microframes.
> >>>>>>>>>
> >>>>>>>>> This fix uses Incomplete Periodic Transfer interrupt to toggle
> >>>>>>>>> between even and odd parity until the Transfer Complete
> >>>>>>>>> interrupt is
> >>>>>> received.
> >>>>>>>>>
> >>>>>>>>> Signed-off-by: Roman Bacik 
> >>>>>>>>> Reviewed-by: Abhinav Ratna 
> >>>>>>>>> Reviewed-by: Srinath Mannam
> >> 
> >>>>>>>>> Signed-off-by: Scott Branden 
> >>>>>>>>> ---
> >>>>>>>>>  drivers/usb/dwc2/core.h   |  1 +
> >>>>>>>>>  drivers/usb/dwc2/gadget.c | 51
> >>>>>>>> ++-
> >>>>>>>>>  drivers/usb/dwc2/hw.h |  1 +
> >>>>>>>>>  3 files changed, 52 insertions(+), 1 deletion(-)
> >>>

Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-10 Thread John Youn
On 9/10/2015 10:56 AM, Roman Bacik wrote:
>> -Original Message-
>> From: Roman Bacik
>> Sent: September-09-15 7:59 PM
>> To: 'John Youn'; Scott Branden; 'Greg Kroah-Hartman'; 'linux-
>> u...@vger.kernel.org'
>> Cc: 'linux-kernel@vger.kernel.org'; bcm-kernel-feedback-list
>> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
>>
>>> -Original Message-
>>> From: Roman Bacik
>>> Sent: September-09-15 7:36 PM
>>> To: 'John Youn'; Scott Branden; Greg Kroah-Hartman; linux-
>>> u...@vger.kernel.org
>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>>> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
>>> isochronous mode
>>>
>>>> -Original Message-
>>>> From: John Youn [mailto:john.y...@synopsys.com]
>>>> Sent: September-09-15 7:25 PM
>>>> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
>>>> linux- u...@vger.kernel.org
>>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
>>>> isochronous mode
>>>>
>>>> On 9/9/2015 7:16 PM, Roman Bacik wrote:
>>>>>> -Original Message-
>>>>>> From: John Youn [mailto:john.y...@synopsys.com]
>>>>>> Sent: September-09-15 7:11 PM
>>>>>> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
>>>>>> linux- u...@vger.kernel.org
>>>>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>>>>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
>>>>>> isochronous mode
>>>>>>
>>>>>> On 9/9/2015 11:16 AM, Roman Bacik wrote:
>>>>>>>> -Original Message-
>>>>>>>> From: John Youn [mailto:john.y...@synopsys.com]
>>>>>>>> Sent: September-03-15 11:53 PM
>>>>>>>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
>>>>>>>> u...@vger.kernel.org; Roman Bacik
>>>>>>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>>>>>>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
>>>>>>>> isochronous mode
>>>>>>>>
>>>>>>>> On 8/31/2015 9:17 AM, Scott Branden wrote:
>>>>>>>>> From: Roman Bacik 
>>>>>>>>>
>>>>>>>>> USB OTG driver in isochronous mode has to set the parity of
>>>>>>>>> the receiving microframe. The parity is set to even by
>>>>>>>>> default. This causes problems for an audio gadget, if the host
>>>>>>>>> starts transmitting on odd
>>>>>>>> microframes.
>>>>>>>>>
>>>>>>>>> This fix uses Incomplete Periodic Transfer interrupt to toggle
>>>>>>>>> between even and odd parity until the Transfer Complete
>>>>>>>>> interrupt is
>>>>>> received.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Roman Bacik 
>>>>>>>>> Reviewed-by: Abhinav Ratna 
>>>>>>>>> Reviewed-by: Srinath Mannam
>> 
>>>>>>>>> Signed-off-by: Scott Branden 
>>>>>>>>> ---
>>>>>>>>>  drivers/usb/dwc2/core.h   |  1 +
>>>>>>>>>  drivers/usb/dwc2/gadget.c | 51
>>>>>>>> ++-
>>>>>>>>>  drivers/usb/dwc2/hw.h |  1 +
>>>>>>>>>  3 files changed, 52 insertions(+), 1 deletion(-)
>>>>>>>>>
>>>>>>>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
>>>>>>>>> index 0ed87620..a5634fd 100644
>>>>>>>>> --- a/drivers/usb/dwc2/core.h
>>>>>>>>> +++ b/drivers/usb/dwc2/core.h
>>>>>>>>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
>>>>>>>>>   unsigned intperiodic:1;
>>>>>>>>>   unsigned intisochronous:1;
>>>>>>>>>   unsigned intsend_zlp:1;
>>>>>>>>> + unsigned inthas_correct_parity:1;
>>&

RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-10 Thread Roman Bacik
> -Original Message-
> From: Roman Bacik
> Sent: September-09-15 7:59 PM
> To: 'John Youn'; Scott Branden; 'Greg Kroah-Hartman'; 'linux-
> u...@vger.kernel.org'
> Cc: 'linux-kernel@vger.kernel.org'; bcm-kernel-feedback-list
> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> > -Original Message-
> > From: Roman Bacik
> > Sent: September-09-15 7:36 PM
> > To: 'John Youn'; Scott Branden; Greg Kroah-Hartman; linux-
> > u...@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > isochronous mode
> >
> > > -Original Message-
> > > From: John Youn [mailto:john.y...@synopsys.com]
> > > Sent: September-09-15 7:25 PM
> > > To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
> > > linux- u...@vger.kernel.org
> > > Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > > Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > > isochronous mode
> > >
> > > On 9/9/2015 7:16 PM, Roman Bacik wrote:
> > > >> -Original Message-
> > > >> From: John Youn [mailto:john.y...@synopsys.com]
> > > >> Sent: September-09-15 7:11 PM
> > > >> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
> > > >> linux- u...@vger.kernel.org
> > > >> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > > >> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > > >> isochronous mode
> > > >>
> > > >> On 9/9/2015 11:16 AM, Roman Bacik wrote:
> > > >>>> -----Original Message-
> > > >>>> From: John Youn [mailto:john.y...@synopsys.com]
> > > >>>> Sent: September-03-15 11:53 PM
> > > >>>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> > > >>>> u...@vger.kernel.org; Roman Bacik
> > > >>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > > >>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > > >>>> isochronous mode
> > > >>>>
> > > >>>> On 8/31/2015 9:17 AM, Scott Branden wrote:
> > > >>>>> From: Roman Bacik 
> > > >>>>>
> > > >>>>> USB OTG driver in isochronous mode has to set the parity of
> > > >>>>> the receiving microframe. The parity is set to even by
> > > >>>>> default. This causes problems for an audio gadget, if the host
> > > >>>>> starts transmitting on odd
> > > >>>> microframes.
> > > >>>>>
> > > >>>>> This fix uses Incomplete Periodic Transfer interrupt to toggle
> > > >>>>> between even and odd parity until the Transfer Complete
> > > >>>>> interrupt is
> > > >> received.
> > > >>>>>
> > > >>>>> Signed-off-by: Roman Bacik 
> > > >>>>> Reviewed-by: Abhinav Ratna 
> > > >>>>> Reviewed-by: Srinath Mannam
> 
> > > >>>>> Signed-off-by: Scott Branden 
> > > >>>>> ---
> > > >>>>>  drivers/usb/dwc2/core.h   |  1 +
> > > >>>>>  drivers/usb/dwc2/gadget.c | 51
> > > >>>> ++-
> > > >>>>>  drivers/usb/dwc2/hw.h |  1 +
> > > >>>>>  3 files changed, 52 insertions(+), 1 deletion(-)
> > > >>>>>
> > > >>>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
> > > >>>>> index 0ed87620..a5634fd 100644
> > > >>>>> --- a/drivers/usb/dwc2/core.h
> > > >>>>> +++ b/drivers/usb/dwc2/core.h
> > > >>>>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
> > > >>>>> unsigned intperiodic:1;
> > > >>>>> unsigned intisochronous:1;
> > > >>>>> unsigned intsend_zlp:1;
> > > >>>>> +   unsigned inthas_correct_parity:1;
> > > >>>>>
> > > >>>>> charname[10];
> > > >>>>>  };
> > > >>>>> diff --git 

RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-10 Thread Roman Bacik
> -Original Message-
> From: John Youn [mailto:john.y...@synopsys.com]
> Sent: September-10-15 12:08 PM
> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
> u...@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> On 9/10/2015 10:56 AM, Roman Bacik wrote:
> >> -Original Message-
> >> From: Roman Bacik
> >> Sent: September-09-15 7:59 PM
> >> To: 'John Youn'; Scott Branden; 'Greg Kroah-Hartman'; 'linux-
> >> u...@vger.kernel.org'
> >> Cc: 'linux-kernel@vger.kernel.org'; bcm-kernel-feedback-list
> >> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >> isochronous mode
> >>
> >>> -Original Message-
> >>> From: Roman Bacik
> >>> Sent: September-09-15 7:36 PM
> >>> To: 'John Youn'; Scott Branden; Greg Kroah-Hartman; linux-
> >>> u...@vger.kernel.org
> >>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >>> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >>> isochronous mode
> >>>
> >>>> -Original Message-
> >>>> From: John Youn [mailto:john.y...@synopsys.com]
> >>>> Sent: September-09-15 7:25 PM
> >>>> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
> >>>> linux- u...@vger.kernel.org
> >>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >>>> isochronous mode
> >>>>
> >>>> On 9/9/2015 7:16 PM, Roman Bacik wrote:
> >>>>>> -----Original Message-
> >>>>>> From: John Youn [mailto:john.y...@synopsys.com]
> >>>>>> Sent: September-09-15 7:11 PM
> >>>>>> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
> >>>>>> linux- u...@vger.kernel.org
> >>>>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >>>>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >>>>>> isochronous mode
> >>>>>>
> >>>>>> On 9/9/2015 11:16 AM, Roman Bacik wrote:
> >>>>>>>> -Original Message-
> >>>>>>>> From: John Youn [mailto:john.y...@synopsys.com]
> >>>>>>>> Sent: September-03-15 11:53 PM
> >>>>>>>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> >>>>>>>> u...@vger.kernel.org; Roman Bacik
> >>>>>>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >>>>>>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >>>>>>>> isochronous mode
> >>>>>>>>
> >>>>>>>> On 8/31/2015 9:17 AM, Scott Branden wrote:
> >>>>>>>>> From: Roman Bacik <rba...@broadcom.com>
> >>>>>>>>>
> >>>>>>>>> USB OTG driver in isochronous mode has to set the parity of
> >>>>>>>>> the receiving microframe. The parity is set to even by
> >>>>>>>>> default. This causes problems for an audio gadget, if the host
> >>>>>>>>> starts transmitting on odd
> >>>>>>>> microframes.
> >>>>>>>>>
> >>>>>>>>> This fix uses Incomplete Periodic Transfer interrupt to toggle
> >>>>>>>>> between even and odd parity until the Transfer Complete
> >>>>>>>>> interrupt is
> >>>>>> received.
> >>>>>>>>>
> >>>>>>>>> Signed-off-by: Roman Bacik <rba...@broadcom.com>
> >>>>>>>>> Reviewed-by: Abhinav Ratna <ara...@broadcom.com>
> >>>>>>>>> Reviewed-by: Srinath Mannam
> >> <srinath.man...@broadcom.com>
> >>>>>>>>> Signed-off-by: Scott Branden <sbran...@broadcom.com>
> >>>>>>>>> ---
> >>>>>>>>>  drivers/usb/dwc2/core.h   |  1 +
> >>>>>>>>>  drivers/usb/dwc2/gadget.c | 51
> >>>>>>>> ++-
> >>>>>>>&g

Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-10 Thread John Youn
On 9/10/2015 10:56 AM, Roman Bacik wrote:
>> -Original Message-
>> From: Roman Bacik
>> Sent: September-09-15 7:59 PM
>> To: 'John Youn'; Scott Branden; 'Greg Kroah-Hartman'; 'linux-
>> u...@vger.kernel.org'
>> Cc: 'linux-kernel@vger.kernel.org'; bcm-kernel-feedback-list
>> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
>>
>>> -Original Message-
>>> From: Roman Bacik
>>> Sent: September-09-15 7:36 PM
>>> To: 'John Youn'; Scott Branden; Greg Kroah-Hartman; linux-
>>> u...@vger.kernel.org
>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>>> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
>>> isochronous mode
>>>
>>>> -Original Message-
>>>> From: John Youn [mailto:john.y...@synopsys.com]
>>>> Sent: September-09-15 7:25 PM
>>>> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
>>>> linux- u...@vger.kernel.org
>>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
>>>> isochronous mode
>>>>
>>>> On 9/9/2015 7:16 PM, Roman Bacik wrote:
>>>>>> -Original Message-
>>>>>> From: John Youn [mailto:john.y...@synopsys.com]
>>>>>> Sent: September-09-15 7:11 PM
>>>>>> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
>>>>>> linux- u...@vger.kernel.org
>>>>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>>>>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
>>>>>> isochronous mode
>>>>>>
>>>>>> On 9/9/2015 11:16 AM, Roman Bacik wrote:
>>>>>>>> -Original Message-
>>>>>>>> From: John Youn [mailto:john.y...@synopsys.com]
>>>>>>>> Sent: September-03-15 11:53 PM
>>>>>>>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
>>>>>>>> u...@vger.kernel.org; Roman Bacik
>>>>>>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>>>>>>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
>>>>>>>> isochronous mode
>>>>>>>>
>>>>>>>> On 8/31/2015 9:17 AM, Scott Branden wrote:
>>>>>>>>> From: Roman Bacik <rba...@broadcom.com>
>>>>>>>>>
>>>>>>>>> USB OTG driver in isochronous mode has to set the parity of
>>>>>>>>> the receiving microframe. The parity is set to even by
>>>>>>>>> default. This causes problems for an audio gadget, if the host
>>>>>>>>> starts transmitting on odd
>>>>>>>> microframes.
>>>>>>>>>
>>>>>>>>> This fix uses Incomplete Periodic Transfer interrupt to toggle
>>>>>>>>> between even and odd parity until the Transfer Complete
>>>>>>>>> interrupt is
>>>>>> received.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Roman Bacik <rba...@broadcom.com>
>>>>>>>>> Reviewed-by: Abhinav Ratna <ara...@broadcom.com>
>>>>>>>>> Reviewed-by: Srinath Mannam
>> <srinath.man...@broadcom.com>
>>>>>>>>> Signed-off-by: Scott Branden <sbran...@broadcom.com>
>>>>>>>>> ---
>>>>>>>>>  drivers/usb/dwc2/core.h   |  1 +
>>>>>>>>>  drivers/usb/dwc2/gadget.c | 51
>>>>>>>> ++-
>>>>>>>>>  drivers/usb/dwc2/hw.h |  1 +
>>>>>>>>>  3 files changed, 52 insertions(+), 1 deletion(-)
>>>>>>>>>
>>>>>>>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
>>>>>>>>> index 0ed87620..a5634fd 100644
>>>>>>>>> --- a/drivers/usb/dwc2/core.h
>>>>>>>>> +++ b/drivers/usb/dwc2/core.h
>>>>>>>>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
>>>>>>>>>   unsigned intperiodic:1;
>>>>>>>>>   unsigned intisochronous:1;
>>>>>>>>>

RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-10 Thread Roman Bacik
> -Original Message-
> From: Roman Bacik
> Sent: September-09-15 7:59 PM
> To: 'John Youn'; Scott Branden; 'Greg Kroah-Hartman'; 'linux-
> u...@vger.kernel.org'
> Cc: 'linux-kernel@vger.kernel.org'; bcm-kernel-feedback-list
> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> > -Original Message-
> > From: Roman Bacik
> > Sent: September-09-15 7:36 PM
> > To: 'John Youn'; Scott Branden; Greg Kroah-Hartman; linux-
> > u...@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > isochronous mode
> >
> > > -Original Message-
> > > From: John Youn [mailto:john.y...@synopsys.com]
> > > Sent: September-09-15 7:25 PM
> > > To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
> > > linux- u...@vger.kernel.org
> > > Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > > Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > > isochronous mode
> > >
> > > On 9/9/2015 7:16 PM, Roman Bacik wrote:
> > > >> -Original Message-
> > > >> From: John Youn [mailto:john.y...@synopsys.com]
> > > >> Sent: September-09-15 7:11 PM
> > > >> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
> > > >> linux- u...@vger.kernel.org
> > > >> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > > >> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > > >> isochronous mode
> > > >>
> > > >> On 9/9/2015 11:16 AM, Roman Bacik wrote:
> > > >>>> -----Original Message-
> > > >>>> From: John Youn [mailto:john.y...@synopsys.com]
> > > >>>> Sent: September-03-15 11:53 PM
> > > >>>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> > > >>>> u...@vger.kernel.org; Roman Bacik
> > > >>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > > >>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > > >>>> isochronous mode
> > > >>>>
> > > >>>> On 8/31/2015 9:17 AM, Scott Branden wrote:
> > > >>>>> From: Roman Bacik <rba...@broadcom.com>
> > > >>>>>
> > > >>>>> USB OTG driver in isochronous mode has to set the parity of
> > > >>>>> the receiving microframe. The parity is set to even by
> > > >>>>> default. This causes problems for an audio gadget, if the host
> > > >>>>> starts transmitting on odd
> > > >>>> microframes.
> > > >>>>>
> > > >>>>> This fix uses Incomplete Periodic Transfer interrupt to toggle
> > > >>>>> between even and odd parity until the Transfer Complete
> > > >>>>> interrupt is
> > > >> received.
> > > >>>>>
> > > >>>>> Signed-off-by: Roman Bacik <rba...@broadcom.com>
> > > >>>>> Reviewed-by: Abhinav Ratna <ara...@broadcom.com>
> > > >>>>> Reviewed-by: Srinath Mannam
> <srinath.man...@broadcom.com>
> > > >>>>> Signed-off-by: Scott Branden <sbran...@broadcom.com>
> > > >>>>> ---
> > > >>>>>  drivers/usb/dwc2/core.h   |  1 +
> > > >>>>>  drivers/usb/dwc2/gadget.c | 51
> > > >>>> ++-
> > > >>>>>  drivers/usb/dwc2/hw.h |  1 +
> > > >>>>>  3 files changed, 52 insertions(+), 1 deletion(-)
> > > >>>>>
> > > >>>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
> > > >>>>> index 0ed87620..a5634fd 100644
> > > >>>>> --- a/drivers/usb/dwc2/core.h
> > > >>>>> +++ b/drivers/usb/dwc2/core.h
> > > >>>>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
> > > >>>>> unsigned intperiodic:1;
> > > >>>>> unsigned intisochronous:1;
> > > >>>>> unsigned intsend_zlp:1;
> > > >>>>> +   unsigned inthas_correct_parity:1;
> > > >>>>>
&g

RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread Roman Bacik
> -Original Message-
> From: Roman Bacik
> Sent: September-09-15 7:36 PM
> To: 'John Youn'; Scott Branden; Greg Kroah-Hartman; linux-
> u...@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> > -Original Message-
> > From: John Youn [mailto:john.y...@synopsys.com]
> > Sent: September-09-15 7:25 PM
> > To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
> > u...@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > isochronous mode
> >
> > On 9/9/2015 7:16 PM, Roman Bacik wrote:
> > >> -Original Message-
> > >> From: John Youn [mailto:john.y...@synopsys.com]
> > >> Sent: September-09-15 7:11 PM
> > >> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
> > >> linux- u...@vger.kernel.org
> > >> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > >> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > >> isochronous mode
> > >>
> > >> On 9/9/2015 11:16 AM, Roman Bacik wrote:
> > >>>> -Original Message-
> > >>>> From: John Youn [mailto:john.y...@synopsys.com]
> > >>>> Sent: September-03-15 11:53 PM
> > >>>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> > >>>> u...@vger.kernel.org; Roman Bacik
> > >>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > >>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > >>>> isochronous mode
> > >>>>
> > >>>> On 8/31/2015 9:17 AM, Scott Branden wrote:
> > >>>>> From: Roman Bacik 
> > >>>>>
> > >>>>> USB OTG driver in isochronous mode has to set the parity of the
> > >>>>> receiving microframe. The parity is set to even by default. This
> > >>>>> causes problems for an audio gadget, if the host starts
> > >>>>> transmitting on odd
> > >>>> microframes.
> > >>>>>
> > >>>>> This fix uses Incomplete Periodic Transfer interrupt to toggle
> > >>>>> between even and odd parity until the Transfer Complete
> > >>>>> interrupt is
> > >> received.
> > >>>>>
> > >>>>> Signed-off-by: Roman Bacik 
> > >>>>> Reviewed-by: Abhinav Ratna 
> > >>>>> Reviewed-by: Srinath Mannam 
> > >>>>> Signed-off-by: Scott Branden 
> > >>>>> ---
> > >>>>>  drivers/usb/dwc2/core.h   |  1 +
> > >>>>>  drivers/usb/dwc2/gadget.c | 51
> > >>>> ++-
> > >>>>>  drivers/usb/dwc2/hw.h |  1 +
> > >>>>>  3 files changed, 52 insertions(+), 1 deletion(-)
> > >>>>>
> > >>>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
> > >>>>> index 0ed87620..a5634fd 100644
> > >>>>> --- a/drivers/usb/dwc2/core.h
> > >>>>> +++ b/drivers/usb/dwc2/core.h
> > >>>>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
> > >>>>>   unsigned intperiodic:1;
> > >>>>>   unsigned intisochronous:1;
> > >>>>>   unsigned intsend_zlp:1;
> > >>>>> + unsigned inthas_correct_parity:1;
> > >>>>>
> > >>>>>   charname[10];
> > >>>>>  };
> > >>>>> diff --git a/drivers/usb/dwc2/gadget.c
> > >>>>> b/drivers/usb/dwc2/gadget.c index 4d47b7c..fac3e2f 100644
> > >>>>> --- a/drivers/usb/dwc2/gadget.c
> > >>>>> +++ b/drivers/usb/dwc2/gadget.c
> > >>>>> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct
> > >>>>> dwc2_hsotg
> > >>>> *hsotg, unsigned int idx,
> > >>>>>   ints &= ~DXEPINT_XFERCOMPL;
> > >>>>>
> > >>>>>   if (ints & DXEPINT_XFERCOMPL) {
> > >>>>> + hs_ep->has_correct_parity = 1;
> > >>>>> 

RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread Roman Bacik
> -Original Message-
> From: John Youn [mailto:john.y...@synopsys.com]
> Sent: September-09-15 7:25 PM
> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
> u...@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> On 9/9/2015 7:16 PM, Roman Bacik wrote:
> >> -Original Message-
> >> From: John Youn [mailto:john.y...@synopsys.com]
> >> Sent: September-09-15 7:11 PM
> >> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
> >> u...@vger.kernel.org
> >> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >> isochronous mode
> >>
> >> On 9/9/2015 11:16 AM, Roman Bacik wrote:
> >>>> -Original Message-
> >>>> From: John Youn [mailto:john.y...@synopsys.com]
> >>>> Sent: September-03-15 11:53 PM
> >>>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> >>>> u...@vger.kernel.org; Roman Bacik
> >>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >>>> isochronous mode
> >>>>
> >>>> On 8/31/2015 9:17 AM, Scott Branden wrote:
> >>>>> From: Roman Bacik 
> >>>>>
> >>>>> USB OTG driver in isochronous mode has to set the parity of the
> >>>>> receiving microframe. The parity is set to even by default. This
> >>>>> causes problems for an audio gadget, if the host starts
> >>>>> transmitting on odd
> >>>> microframes.
> >>>>>
> >>>>> This fix uses Incomplete Periodic Transfer interrupt to toggle
> >>>>> between even and odd parity until the Transfer Complete interrupt
> >>>>> is
> >> received.
> >>>>>
> >>>>> Signed-off-by: Roman Bacik 
> >>>>> Reviewed-by: Abhinav Ratna 
> >>>>> Reviewed-by: Srinath Mannam 
> >>>>> Signed-off-by: Scott Branden 
> >>>>> ---
> >>>>>  drivers/usb/dwc2/core.h   |  1 +
> >>>>>  drivers/usb/dwc2/gadget.c | 51
> >>>> ++-
> >>>>>  drivers/usb/dwc2/hw.h |  1 +
> >>>>>  3 files changed, 52 insertions(+), 1 deletion(-)
> >>>>>
> >>>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
> >>>>> index 0ed87620..a5634fd 100644
> >>>>> --- a/drivers/usb/dwc2/core.h
> >>>>> +++ b/drivers/usb/dwc2/core.h
> >>>>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
> >>>>> unsigned intperiodic:1;
> >>>>> unsigned intisochronous:1;
> >>>>> unsigned intsend_zlp:1;
> >>>>> +   unsigned inthas_correct_parity:1;
> >>>>>
> >>>>> charname[10];
> >>>>>  };
> >>>>> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> >>>>> index 4d47b7c..fac3e2f 100644
> >>>>> --- a/drivers/usb/dwc2/gadget.c
> >>>>> +++ b/drivers/usb/dwc2/gadget.c
> >>>>> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct
> >>>>> dwc2_hsotg
> >>>> *hsotg, unsigned int idx,
> >>>>> ints &= ~DXEPINT_XFERCOMPL;
> >>>>>
> >>>>> if (ints & DXEPINT_XFERCOMPL) {
> >>>>> +   hs_ep->has_correct_parity = 1;
> >>>>> if (hs_ep->isochronous && hs_ep->interval == 1) {
> >>>>> if (ctrl & DXEPCTL_EOFRNUM)
> >>>>> ctrl |= DXEPCTL_SETEVENFR;
> >>>>> @@ -2316,7 +2317,8 @@ void
> s3c_hsotg_core_init_disconnected(struct
> >>>> dwc2_hsotg *hsotg,
> >>>>> GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
> >>>>> GINTSTS_RESETDET | GINTSTS_ENUMDONE |
> >>>>> GINTSTS_OTGINT | GINTSTS_USBSUSP |
> >>>>> -   GINTSTS_WKUPINT,
> >>>>> +  

Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread John Youn
On 9/9/2015 7:16 PM, Roman Bacik wrote:
>> -Original Message-
>> From: John Youn [mailto:john.y...@synopsys.com]
>> Sent: September-09-15 7:11 PM
>> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
>> u...@vger.kernel.org
>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
>>
>> On 9/9/2015 11:16 AM, Roman Bacik wrote:
>>>> -Original Message-
>>>> From: John Youn [mailto:john.y...@synopsys.com]
>>>> Sent: September-03-15 11:53 PM
>>>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
>>>> u...@vger.kernel.org; Roman Bacik
>>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
>>>> isochronous mode
>>>>
>>>> On 8/31/2015 9:17 AM, Scott Branden wrote:
>>>>> From: Roman Bacik 
>>>>>
>>>>> USB OTG driver in isochronous mode has to set the parity of the
>>>>> receiving microframe. The parity is set to even by default. This
>>>>> causes problems for an audio gadget, if the host starts transmitting
>>>>> on odd
>>>> microframes.
>>>>>
>>>>> This fix uses Incomplete Periodic Transfer interrupt to toggle
>>>>> between even and odd parity until the Transfer Complete interrupt is
>> received.
>>>>>
>>>>> Signed-off-by: Roman Bacik 
>>>>> Reviewed-by: Abhinav Ratna 
>>>>> Reviewed-by: Srinath Mannam 
>>>>> Signed-off-by: Scott Branden 
>>>>> ---
>>>>>  drivers/usb/dwc2/core.h   |  1 +
>>>>>  drivers/usb/dwc2/gadget.c | 51
>>>> ++-
>>>>>  drivers/usb/dwc2/hw.h |  1 +
>>>>>  3 files changed, 52 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h index
>>>>> 0ed87620..a5634fd 100644
>>>>> --- a/drivers/usb/dwc2/core.h
>>>>> +++ b/drivers/usb/dwc2/core.h
>>>>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
>>>>>   unsigned intperiodic:1;
>>>>>   unsigned intisochronous:1;
>>>>>   unsigned intsend_zlp:1;
>>>>> + unsigned inthas_correct_parity:1;
>>>>>
>>>>>   charname[10];
>>>>>  };
>>>>> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
>>>>> index 4d47b7c..fac3e2f 100644
>>>>> --- a/drivers/usb/dwc2/gadget.c
>>>>> +++ b/drivers/usb/dwc2/gadget.c
>>>>> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg
>>>> *hsotg, unsigned int idx,
>>>>>   ints &= ~DXEPINT_XFERCOMPL;
>>>>>
>>>>>   if (ints & DXEPINT_XFERCOMPL) {
>>>>> + hs_ep->has_correct_parity = 1;
>>>>>   if (hs_ep->isochronous && hs_ep->interval == 1) {
>>>>>   if (ctrl & DXEPCTL_EOFRNUM)
>>>>>   ctrl |= DXEPCTL_SETEVENFR;
>>>>> @@ -2316,7 +2317,8 @@ void s3c_hsotg_core_init_disconnected(struct
>>>> dwc2_hsotg *hsotg,
>>>>>   GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
>>>>>   GINTSTS_RESETDET | GINTSTS_ENUMDONE |
>>>>>   GINTSTS_OTGINT | GINTSTS_USBSUSP |
>>>>> - GINTSTS_WKUPINT,
>>>>> + GINTSTS_WKUPINT |
>>>>> + GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
>>>>>   hsotg->regs + GINTMSK);
>>>>>
>>>>>   if (using_dma(hsotg))
>>>>> @@ -2581,6 +2583,52 @@ irq_retry:
>>>>>   s3c_hsotg_dump(hsotg);
>>>>>   }
>>>>>
>>>>> + if (gintsts & GINTSTS_INCOMPL_SOIN) {
>>>>> + u32 idx, epctl_reg, ctrl;
>>>>> + struct s3c_hsotg_ep *hs_ep;
>>>>> +
>>>>> + dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOIN\n",
>>>> __func__);
>>>>> + for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {
>>>>
>>>> Valid endpoints are only up to hsotg->num_of_eps so this might crash
>>

RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread Roman Bacik
> -Original Message-
> From: Roman Bacik
> Sent: September-09-15 7:17 PM
> To: 'John Youn'; Scott Branden; Greg Kroah-Hartman; linux-
> u...@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> > -Original Message-
> > From: John Youn [mailto:john.y...@synopsys.com]
> > Sent: September-09-15 7:11 PM
> > To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
> > u...@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > isochronous mode
> >
> > On 9/9/2015 11:16 AM, Roman Bacik wrote:
> > >> -Original Message-
> > >> From: John Youn [mailto:john.y...@synopsys.com]
> > >> Sent: September-03-15 11:53 PM
> > >> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> > >> u...@vger.kernel.org; Roman Bacik
> > >> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > >> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > >> isochronous mode
> > >>
> > >> On 8/31/2015 9:17 AM, Scott Branden wrote:
> > >>> From: Roman Bacik 
> > >>>
> > >>> USB OTG driver in isochronous mode has to set the parity of the
> > >>> receiving microframe. The parity is set to even by default. This
> > >>> causes problems for an audio gadget, if the host starts
> > >>> transmitting on odd
> > >> microframes.
> > >>>
> > >>> This fix uses Incomplete Periodic Transfer interrupt to toggle
> > >>> between even and odd parity until the Transfer Complete interrupt
> > >>> is
> > received.
> > >>>
> > >>> Signed-off-by: Roman Bacik 
> > >>> Reviewed-by: Abhinav Ratna 
> > >>> Reviewed-by: Srinath Mannam 
> > >>> Signed-off-by: Scott Branden 
> > >>> ---
> > >>>  drivers/usb/dwc2/core.h   |  1 +
> > >>>  drivers/usb/dwc2/gadget.c | 51
> > >> ++-
> > >>>  drivers/usb/dwc2/hw.h |  1 +
> > >>>  3 files changed, 52 insertions(+), 1 deletion(-)
> > >>>
> > >>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
> > >>> index 0ed87620..a5634fd 100644
> > >>> --- a/drivers/usb/dwc2/core.h
> > >>> +++ b/drivers/usb/dwc2/core.h
> > >>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
> > >>> unsigned intperiodic:1;
> > >>> unsigned intisochronous:1;
> > >>> unsigned intsend_zlp:1;
> > >>> +   unsigned inthas_correct_parity:1;
> > >>>
> > >>> charname[10];
> > >>>  };
> > >>> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> > >>> index 4d47b7c..fac3e2f 100644
> > >>> --- a/drivers/usb/dwc2/gadget.c
> > >>> +++ b/drivers/usb/dwc2/gadget.c
> > >>> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct
> > >>> dwc2_hsotg
> > >> *hsotg, unsigned int idx,
> > >>> ints &= ~DXEPINT_XFERCOMPL;
> > >>>
> > >>> if (ints & DXEPINT_XFERCOMPL) {
> > >>> +   hs_ep->has_correct_parity = 1;
> > >>> if (hs_ep->isochronous && hs_ep->interval == 1) {
> > >>> if (ctrl & DXEPCTL_EOFRNUM)
> > >>> ctrl |= DXEPCTL_SETEVENFR;
> > >>> @@ -2316,7 +2317,8 @@ void
> s3c_hsotg_core_init_disconnected(struct
> > >> dwc2_hsotg *hsotg,
> > >>> GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
> > >>> GINTSTS_RESETDET | GINTSTS_ENUMDONE |
> > >>> GINTSTS_OTGINT | GINTSTS_USBSUSP |
> > >>> -   GINTSTS_WKUPINT,
> > >>> +   GINTSTS_WKUPINT |
> > >>> +   GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
> > >>> hsotg->regs + GINTMSK);
> > >>>
> > >>> if (using_dma(hsotg))
> > >>> @@ -2581,6 +2583,52 @@ irq_retry:
> > 

RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread Roman Bacik
> -Original Message-
> From: John Youn [mailto:john.y...@synopsys.com]
> Sent: September-09-15 7:11 PM
> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
> u...@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> On 9/9/2015 11:16 AM, Roman Bacik wrote:
> >> -Original Message-
> >> From: John Youn [mailto:john.y...@synopsys.com]
> >> Sent: September-03-15 11:53 PM
> >> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> >> u...@vger.kernel.org; Roman Bacik
> >> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >> isochronous mode
> >>
> >> On 8/31/2015 9:17 AM, Scott Branden wrote:
> >>> From: Roman Bacik 
> >>>
> >>> USB OTG driver in isochronous mode has to set the parity of the
> >>> receiving microframe. The parity is set to even by default. This
> >>> causes problems for an audio gadget, if the host starts transmitting
> >>> on odd
> >> microframes.
> >>>
> >>> This fix uses Incomplete Periodic Transfer interrupt to toggle
> >>> between even and odd parity until the Transfer Complete interrupt is
> received.
> >>>
> >>> Signed-off-by: Roman Bacik 
> >>> Reviewed-by: Abhinav Ratna 
> >>> Reviewed-by: Srinath Mannam 
> >>> Signed-off-by: Scott Branden 
> >>> ---
> >>>  drivers/usb/dwc2/core.h   |  1 +
> >>>  drivers/usb/dwc2/gadget.c | 51
> >> ++-
> >>>  drivers/usb/dwc2/hw.h |  1 +
> >>>  3 files changed, 52 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h index
> >>> 0ed87620..a5634fd 100644
> >>> --- a/drivers/usb/dwc2/core.h
> >>> +++ b/drivers/usb/dwc2/core.h
> >>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
> >>>   unsigned intperiodic:1;
> >>>   unsigned intisochronous:1;
> >>>   unsigned intsend_zlp:1;
> >>> + unsigned inthas_correct_parity:1;
> >>>
> >>>   charname[10];
> >>>  };
> >>> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> >>> index 4d47b7c..fac3e2f 100644
> >>> --- a/drivers/usb/dwc2/gadget.c
> >>> +++ b/drivers/usb/dwc2/gadget.c
> >>> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg
> >> *hsotg, unsigned int idx,
> >>>   ints &= ~DXEPINT_XFERCOMPL;
> >>>
> >>>   if (ints & DXEPINT_XFERCOMPL) {
> >>> + hs_ep->has_correct_parity = 1;
> >>>   if (hs_ep->isochronous && hs_ep->interval == 1) {
> >>>   if (ctrl & DXEPCTL_EOFRNUM)
> >>>   ctrl |= DXEPCTL_SETEVENFR;
> >>> @@ -2316,7 +2317,8 @@ void s3c_hsotg_core_init_disconnected(struct
> >> dwc2_hsotg *hsotg,
> >>>   GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
> >>>   GINTSTS_RESETDET | GINTSTS_ENUMDONE |
> >>>   GINTSTS_OTGINT | GINTSTS_USBSUSP |
> >>> - GINTSTS_WKUPINT,
> >>> + GINTSTS_WKUPINT |
> >>> + GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
> >>>   hsotg->regs + GINTMSK);
> >>>
> >>>   if (using_dma(hsotg))
> >>> @@ -2581,6 +2583,52 @@ irq_retry:
> >>>   s3c_hsotg_dump(hsotg);
> >>>   }
> >>>
> >>> + if (gintsts & GINTSTS_INCOMPL_SOIN) {
> >>> + u32 idx, epctl_reg, ctrl;
> >>> + struct s3c_hsotg_ep *hs_ep;
> >>> +
> >>> + dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOIN\n",
> >> __func__);
> >>> + for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {
> >>
> >> Valid endpoints are only up to hsotg->num_of_eps so this might crash
> >> on certain configurations.
> >>
> >> Also, have you tried to find the endpoint which caused the incomplete
> >> interrupt by reading the control registers as described in the databook?
> >>
> >
> > We are using procedure based on description from this source:
> >
> > Sy

Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread John Youn
On 9/9/2015 11:16 AM, Roman Bacik wrote:
>> -Original Message-
>> From: John Youn [mailto:john.y...@synopsys.com]
>> Sent: September-03-15 11:53 PM
>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
>> u...@vger.kernel.org; Roman Bacik
>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
>>
>> On 8/31/2015 9:17 AM, Scott Branden wrote:
>>> From: Roman Bacik 
>>>
>>> USB OTG driver in isochronous mode has to set the parity of the
>>> receiving microframe. The parity is set to even by default. This
>>> causes problems for an audio gadget, if the host starts transmitting on odd
>> microframes.
>>>
>>> This fix uses Incomplete Periodic Transfer interrupt to toggle between
>>> even and odd parity until the Transfer Complete interrupt is received.
>>>
>>> Signed-off-by: Roman Bacik 
>>> Reviewed-by: Abhinav Ratna 
>>> Reviewed-by: Srinath Mannam 
>>> Signed-off-by: Scott Branden 
>>> ---
>>>  drivers/usb/dwc2/core.h   |  1 +
>>>  drivers/usb/dwc2/gadget.c | 51
>> ++-
>>>  drivers/usb/dwc2/hw.h |  1 +
>>>  3 files changed, 52 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h index
>>> 0ed87620..a5634fd 100644
>>> --- a/drivers/usb/dwc2/core.h
>>> +++ b/drivers/usb/dwc2/core.h
>>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
>>> unsigned intperiodic:1;
>>> unsigned intisochronous:1;
>>> unsigned intsend_zlp:1;
>>> +   unsigned inthas_correct_parity:1;
>>>
>>> charname[10];
>>>  };
>>> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
>>> index 4d47b7c..fac3e2f 100644
>>> --- a/drivers/usb/dwc2/gadget.c
>>> +++ b/drivers/usb/dwc2/gadget.c
>>> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg
>> *hsotg, unsigned int idx,
>>> ints &= ~DXEPINT_XFERCOMPL;
>>>
>>> if (ints & DXEPINT_XFERCOMPL) {
>>> +   hs_ep->has_correct_parity = 1;
>>> if (hs_ep->isochronous && hs_ep->interval == 1) {
>>> if (ctrl & DXEPCTL_EOFRNUM)
>>> ctrl |= DXEPCTL_SETEVENFR;
>>> @@ -2316,7 +2317,8 @@ void s3c_hsotg_core_init_disconnected(struct
>> dwc2_hsotg *hsotg,
>>> GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
>>> GINTSTS_RESETDET | GINTSTS_ENUMDONE |
>>> GINTSTS_OTGINT | GINTSTS_USBSUSP |
>>> -   GINTSTS_WKUPINT,
>>> +   GINTSTS_WKUPINT |
>>> +   GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
>>> hsotg->regs + GINTMSK);
>>>
>>> if (using_dma(hsotg))
>>> @@ -2581,6 +2583,52 @@ irq_retry:
>>> s3c_hsotg_dump(hsotg);
>>> }
>>>
>>> +   if (gintsts & GINTSTS_INCOMPL_SOIN) {
>>> +   u32 idx, epctl_reg, ctrl;
>>> +   struct s3c_hsotg_ep *hs_ep;
>>> +
>>> +   dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOIN\n",
>> __func__);
>>> +   for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {
>>
>> Valid endpoints are only up to hsotg->num_of_eps so this might crash on
>> certain configurations.
>>
>> Also, have you tried to find the endpoint which caused the incomplete
>> interrupt by reading the control registers as described in the databook?
>>
> 
> We are using procedure based on description from this source:
> 
> Synopsys, Inc. SolvNet 527
> DesignWare.com
> 3.00a
> April 2012
> USB 2.0 Hi-Speed On-The-Go (OTG) Databook Isochronous Endpoints in DWC_otg 
> Slave Mode
> 
> Synopsys databook is not in a public domain to quote the exact paragraph 
> here. You can find it in Chapter E, pp 526-527. There is no register in this 
> databook, which would provide information about the source endpoint of the 
> incomplete interrupt, as you have described.
> 
> Please, provide an exact reference and possibly enough information that we 
> can turn it into a working code.
> 

You can check the source of the interrupt by reading the DSTS and
ep control registers as described in the databook page 526, last
bullet, and 527 first bullet.

John









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


RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread Roman Bacik
> -Original Message-
> From: John Youn [mailto:john.y...@synopsys.com]
> Sent: September-03-15 11:53 PM
> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> u...@vger.kernel.org; Roman Bacik
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> On 8/31/2015 9:17 AM, Scott Branden wrote:
> > From: Roman Bacik 
> >
> > USB OTG driver in isochronous mode has to set the parity of the
> > receiving microframe. The parity is set to even by default. This
> > causes problems for an audio gadget, if the host starts transmitting on odd
> microframes.
> >
> > This fix uses Incomplete Periodic Transfer interrupt to toggle between
> > even and odd parity until the Transfer Complete interrupt is received.
> >
> > Signed-off-by: Roman Bacik 
> > Reviewed-by: Abhinav Ratna 
> > Reviewed-by: Srinath Mannam 
> > Signed-off-by: Scott Branden 
> > ---
> >  drivers/usb/dwc2/core.h   |  1 +
> >  drivers/usb/dwc2/gadget.c | 51
> ++-
> >  drivers/usb/dwc2/hw.h |  1 +
> >  3 files changed, 52 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h index
> > 0ed87620..a5634fd 100644
> > --- a/drivers/usb/dwc2/core.h
> > +++ b/drivers/usb/dwc2/core.h
> > @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
> > unsigned intperiodic:1;
> > unsigned intisochronous:1;
> > unsigned intsend_zlp:1;
> > +   unsigned inthas_correct_parity:1;
> >
> > charname[10];
> >  };
> > diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> > index 4d47b7c..fac3e2f 100644
> > --- a/drivers/usb/dwc2/gadget.c
> > +++ b/drivers/usb/dwc2/gadget.c
> > @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg
> *hsotg, unsigned int idx,
> > ints &= ~DXEPINT_XFERCOMPL;
> >
> > if (ints & DXEPINT_XFERCOMPL) {
> > +   hs_ep->has_correct_parity = 1;
> > if (hs_ep->isochronous && hs_ep->interval == 1) {
> > if (ctrl & DXEPCTL_EOFRNUM)
> > ctrl |= DXEPCTL_SETEVENFR;
> > @@ -2316,7 +2317,8 @@ void s3c_hsotg_core_init_disconnected(struct
> dwc2_hsotg *hsotg,
> > GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
> > GINTSTS_RESETDET | GINTSTS_ENUMDONE |
> > GINTSTS_OTGINT | GINTSTS_USBSUSP |
> > -   GINTSTS_WKUPINT,
> > +   GINTSTS_WKUPINT |
> > +   GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
> > hsotg->regs + GINTMSK);
> >
> > if (using_dma(hsotg))
> > @@ -2581,6 +2583,52 @@ irq_retry:
> > s3c_hsotg_dump(hsotg);
> > }
> >
> > +   if (gintsts & GINTSTS_INCOMPL_SOIN) {
> > +   u32 idx, epctl_reg, ctrl;
> > +   struct s3c_hsotg_ep *hs_ep;
> > +
> > +   dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOIN\n",
> __func__);
> > +   for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {
> 
> Valid endpoints are only up to hsotg->num_of_eps so this might crash on
> certain configurations.
> 
> Also, have you tried to find the endpoint which caused the incomplete
> interrupt by reading the control registers as described in the databook?
> 

We are using procedure based on description from this source:

Synopsys, Inc. SolvNet 527
DesignWare.com
3.00a
April 2012
USB 2.0 Hi-Speed On-The-Go (OTG) Databook Isochronous Endpoints in DWC_otg 
Slave Mode

Synopsys databook is not in a public domain to quote the exact paragraph here. 
You can find it in Chapter E, pp 526-527. There is no register in this 
databook, which would provide information about the source endpoint of the 
incomplete interrupt, as you have described.

Please, provide an exact reference and possibly enough information that we can 
turn it into a working code.

> > +   hs_ep = hsotg->eps_in[idx];
> > +
> > +   if (!hs_ep->isochronous || hs_ep-
> >has_correct_parity)
> > +   continue;
> > +
> > +   epctl_reg = DIEPCTL(idx);
> > +   ctrl = readl(hsotg->regs + epctl_reg);
> > +
> > +   if (ctrl & DXEPCTL_EOFRNUM)
> > +   ctrl |= DXEPCTL_SETEVENFR;
> > +   else
> > +   ctrl |= DXEPCTL_SETODDFR;
> > +   writel(ctrl, hsotg->regs + epctl_reg);
> 
> This toggling code could be moved out to a helper function to reduce
> redundancy as it is in three places now.
> 
> Regards,
> John

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


Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread John Youn
On 9/9/2015 11:16 AM, Roman Bacik wrote:
>> -Original Message-
>> From: John Youn [mailto:john.y...@synopsys.com]
>> Sent: September-03-15 11:53 PM
>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
>> u...@vger.kernel.org; Roman Bacik
>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
>>
>> On 8/31/2015 9:17 AM, Scott Branden wrote:
>>> From: Roman Bacik <rba...@broadcom.com>
>>>
>>> USB OTG driver in isochronous mode has to set the parity of the
>>> receiving microframe. The parity is set to even by default. This
>>> causes problems for an audio gadget, if the host starts transmitting on odd
>> microframes.
>>>
>>> This fix uses Incomplete Periodic Transfer interrupt to toggle between
>>> even and odd parity until the Transfer Complete interrupt is received.
>>>
>>> Signed-off-by: Roman Bacik <rba...@broadcom.com>
>>> Reviewed-by: Abhinav Ratna <ara...@broadcom.com>
>>> Reviewed-by: Srinath Mannam <srinath.man...@broadcom.com>
>>> Signed-off-by: Scott Branden <sbran...@broadcom.com>
>>> ---
>>>  drivers/usb/dwc2/core.h   |  1 +
>>>  drivers/usb/dwc2/gadget.c | 51
>> ++-
>>>  drivers/usb/dwc2/hw.h |  1 +
>>>  3 files changed, 52 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h index
>>> 0ed87620..a5634fd 100644
>>> --- a/drivers/usb/dwc2/core.h
>>> +++ b/drivers/usb/dwc2/core.h
>>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
>>> unsigned intperiodic:1;
>>> unsigned intisochronous:1;
>>> unsigned intsend_zlp:1;
>>> +   unsigned inthas_correct_parity:1;
>>>
>>> charname[10];
>>>  };
>>> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
>>> index 4d47b7c..fac3e2f 100644
>>> --- a/drivers/usb/dwc2/gadget.c
>>> +++ b/drivers/usb/dwc2/gadget.c
>>> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg
>> *hsotg, unsigned int idx,
>>> ints &= ~DXEPINT_XFERCOMPL;
>>>
>>> if (ints & DXEPINT_XFERCOMPL) {
>>> +   hs_ep->has_correct_parity = 1;
>>> if (hs_ep->isochronous && hs_ep->interval == 1) {
>>> if (ctrl & DXEPCTL_EOFRNUM)
>>> ctrl |= DXEPCTL_SETEVENFR;
>>> @@ -2316,7 +2317,8 @@ void s3c_hsotg_core_init_disconnected(struct
>> dwc2_hsotg *hsotg,
>>> GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
>>> GINTSTS_RESETDET | GINTSTS_ENUMDONE |
>>> GINTSTS_OTGINT | GINTSTS_USBSUSP |
>>> -   GINTSTS_WKUPINT,
>>> +   GINTSTS_WKUPINT |
>>> +   GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
>>> hsotg->regs + GINTMSK);
>>>
>>> if (using_dma(hsotg))
>>> @@ -2581,6 +2583,52 @@ irq_retry:
>>> s3c_hsotg_dump(hsotg);
>>> }
>>>
>>> +   if (gintsts & GINTSTS_INCOMPL_SOIN) {
>>> +   u32 idx, epctl_reg, ctrl;
>>> +   struct s3c_hsotg_ep *hs_ep;
>>> +
>>> +   dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOIN\n",
>> __func__);
>>> +   for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {
>>
>> Valid endpoints are only up to hsotg->num_of_eps so this might crash on
>> certain configurations.
>>
>> Also, have you tried to find the endpoint which caused the incomplete
>> interrupt by reading the control registers as described in the databook?
>>
> 
> We are using procedure based on description from this source:
> 
> Synopsys, Inc. SolvNet 527
> DesignWare.com
> 3.00a
> April 2012
> USB 2.0 Hi-Speed On-The-Go (OTG) Databook Isochronous Endpoints in DWC_otg 
> Slave Mode
> 
> Synopsys databook is not in a public domain to quote the exact paragraph 
> here. You can find it in Chapter E, pp 526-527. There is no register in this 
> databook, which would provide information about the source endpoint of the 
> incomplete interrupt, as you have described.
> 
> Please, provide an exact reference and possibly enough information that we 
> can turn it into a working code.
> 

You can check the source of the interrupt by reading the DSTS and
ep control registers as described in the databook page 526, last
bullet, and 527 first bullet.

John









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


RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread Roman Bacik
> -Original Message-
> From: John Youn [mailto:john.y...@synopsys.com]
> Sent: September-09-15 7:11 PM
> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
> u...@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> On 9/9/2015 11:16 AM, Roman Bacik wrote:
> >> -Original Message-
> >> From: John Youn [mailto:john.y...@synopsys.com]
> >> Sent: September-03-15 11:53 PM
> >> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> >> u...@vger.kernel.org; Roman Bacik
> >> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >> isochronous mode
> >>
> >> On 8/31/2015 9:17 AM, Scott Branden wrote:
> >>> From: Roman Bacik <rba...@broadcom.com>
> >>>
> >>> USB OTG driver in isochronous mode has to set the parity of the
> >>> receiving microframe. The parity is set to even by default. This
> >>> causes problems for an audio gadget, if the host starts transmitting
> >>> on odd
> >> microframes.
> >>>
> >>> This fix uses Incomplete Periodic Transfer interrupt to toggle
> >>> between even and odd parity until the Transfer Complete interrupt is
> received.
> >>>
> >>> Signed-off-by: Roman Bacik <rba...@broadcom.com>
> >>> Reviewed-by: Abhinav Ratna <ara...@broadcom.com>
> >>> Reviewed-by: Srinath Mannam <srinath.man...@broadcom.com>
> >>> Signed-off-by: Scott Branden <sbran...@broadcom.com>
> >>> ---
> >>>  drivers/usb/dwc2/core.h   |  1 +
> >>>  drivers/usb/dwc2/gadget.c | 51
> >> ++-
> >>>  drivers/usb/dwc2/hw.h |  1 +
> >>>  3 files changed, 52 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h index
> >>> 0ed87620..a5634fd 100644
> >>> --- a/drivers/usb/dwc2/core.h
> >>> +++ b/drivers/usb/dwc2/core.h
> >>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
> >>>   unsigned intperiodic:1;
> >>>   unsigned intisochronous:1;
> >>>   unsigned intsend_zlp:1;
> >>> + unsigned inthas_correct_parity:1;
> >>>
> >>>   charname[10];
> >>>  };
> >>> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> >>> index 4d47b7c..fac3e2f 100644
> >>> --- a/drivers/usb/dwc2/gadget.c
> >>> +++ b/drivers/usb/dwc2/gadget.c
> >>> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg
> >> *hsotg, unsigned int idx,
> >>>   ints &= ~DXEPINT_XFERCOMPL;
> >>>
> >>>   if (ints & DXEPINT_XFERCOMPL) {
> >>> + hs_ep->has_correct_parity = 1;
> >>>   if (hs_ep->isochronous && hs_ep->interval == 1) {
> >>>   if (ctrl & DXEPCTL_EOFRNUM)
> >>>   ctrl |= DXEPCTL_SETEVENFR;
> >>> @@ -2316,7 +2317,8 @@ void s3c_hsotg_core_init_disconnected(struct
> >> dwc2_hsotg *hsotg,
> >>>   GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
> >>>   GINTSTS_RESETDET | GINTSTS_ENUMDONE |
> >>>   GINTSTS_OTGINT | GINTSTS_USBSUSP |
> >>> - GINTSTS_WKUPINT,
> >>> + GINTSTS_WKUPINT |
> >>> + GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
> >>>   hsotg->regs + GINTMSK);
> >>>
> >>>   if (using_dma(hsotg))
> >>> @@ -2581,6 +2583,52 @@ irq_retry:
> >>>   s3c_hsotg_dump(hsotg);
> >>>   }
> >>>
> >>> + if (gintsts & GINTSTS_INCOMPL_SOIN) {
> >>> + u32 idx, epctl_reg, ctrl;
> >>> + struct s3c_hsotg_ep *hs_ep;
> >>> +
> >>> + dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOIN\n",
> >> __func__);
> >>> + for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {
> >>
> >> Valid endpoints are only up to hsotg->num_of_eps so this might crash
> >> on certain configurations.
> >>
> >> Also, have you tried to find the endpoint which caused the incomplete
> >> interrupt by reading the control registers as 

RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread Roman Bacik
> -Original Message-
> From: John Youn [mailto:john.y...@synopsys.com]
> Sent: September-09-15 7:25 PM
> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
> u...@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> On 9/9/2015 7:16 PM, Roman Bacik wrote:
> >> -Original Message-
> >> From: John Youn [mailto:john.y...@synopsys.com]
> >> Sent: September-09-15 7:11 PM
> >> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
> >> u...@vger.kernel.org
> >> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >> isochronous mode
> >>
> >> On 9/9/2015 11:16 AM, Roman Bacik wrote:
> >>>> -Original Message-
> >>>> From: John Youn [mailto:john.y...@synopsys.com]
> >>>> Sent: September-03-15 11:53 PM
> >>>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> >>>> u...@vger.kernel.org; Roman Bacik
> >>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> >>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> >>>> isochronous mode
> >>>>
> >>>> On 8/31/2015 9:17 AM, Scott Branden wrote:
> >>>>> From: Roman Bacik <rba...@broadcom.com>
> >>>>>
> >>>>> USB OTG driver in isochronous mode has to set the parity of the
> >>>>> receiving microframe. The parity is set to even by default. This
> >>>>> causes problems for an audio gadget, if the host starts
> >>>>> transmitting on odd
> >>>> microframes.
> >>>>>
> >>>>> This fix uses Incomplete Periodic Transfer interrupt to toggle
> >>>>> between even and odd parity until the Transfer Complete interrupt
> >>>>> is
> >> received.
> >>>>>
> >>>>> Signed-off-by: Roman Bacik <rba...@broadcom.com>
> >>>>> Reviewed-by: Abhinav Ratna <ara...@broadcom.com>
> >>>>> Reviewed-by: Srinath Mannam <srinath.man...@broadcom.com>
> >>>>> Signed-off-by: Scott Branden <sbran...@broadcom.com>
> >>>>> ---
> >>>>>  drivers/usb/dwc2/core.h   |  1 +
> >>>>>  drivers/usb/dwc2/gadget.c | 51
> >>>> ++-
> >>>>>  drivers/usb/dwc2/hw.h |  1 +
> >>>>>  3 files changed, 52 insertions(+), 1 deletion(-)
> >>>>>
> >>>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
> >>>>> index 0ed87620..a5634fd 100644
> >>>>> --- a/drivers/usb/dwc2/core.h
> >>>>> +++ b/drivers/usb/dwc2/core.h
> >>>>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
> >>>>> unsigned intperiodic:1;
> >>>>> unsigned intisochronous:1;
> >>>>> unsigned intsend_zlp:1;
> >>>>> +   unsigned inthas_correct_parity:1;
> >>>>>
> >>>>> charname[10];
> >>>>>  };
> >>>>> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> >>>>> index 4d47b7c..fac3e2f 100644
> >>>>> --- a/drivers/usb/dwc2/gadget.c
> >>>>> +++ b/drivers/usb/dwc2/gadget.c
> >>>>> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct
> >>>>> dwc2_hsotg
> >>>> *hsotg, unsigned int idx,
> >>>>> ints &= ~DXEPINT_XFERCOMPL;
> >>>>>
> >>>>> if (ints & DXEPINT_XFERCOMPL) {
> >>>>> +   hs_ep->has_correct_parity = 1;
> >>>>> if (hs_ep->isochronous && hs_ep->interval == 1) {
> >>>>> if (ctrl & DXEPCTL_EOFRNUM)
> >>>>> ctrl |= DXEPCTL_SETEVENFR;
> >>>>> @@ -2316,7 +2317,8 @@ void
> s3c_hsotg_core_init_disconnected(struct
> >>>> dwc2_hsotg *hsotg,
> >>>>> GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
> >>>>> GINTSTS_RESETDET | GINTSTS_ENUMDONE |
> >>>>>

RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread Roman Bacik
> -Original Message-
> From: Roman Bacik
> Sent: September-09-15 7:36 PM
> To: 'John Youn'; Scott Branden; Greg Kroah-Hartman; linux-
> u...@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> > -Original Message-
> > From: John Youn [mailto:john.y...@synopsys.com]
> > Sent: September-09-15 7:25 PM
> > To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
> > u...@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > isochronous mode
> >
> > On 9/9/2015 7:16 PM, Roman Bacik wrote:
> > >> -Original Message-
> > >> From: John Youn [mailto:john.y...@synopsys.com]
> > >> Sent: September-09-15 7:11 PM
> > >> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman;
> > >> linux- u...@vger.kernel.org
> > >> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > >> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > >> isochronous mode
> > >>
> > >> On 9/9/2015 11:16 AM, Roman Bacik wrote:
> > >>>> -Original Message-
> > >>>> From: John Youn [mailto:john.y...@synopsys.com]
> > >>>> Sent: September-03-15 11:53 PM
> > >>>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> > >>>> u...@vger.kernel.org; Roman Bacik
> > >>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > >>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > >>>> isochronous mode
> > >>>>
> > >>>> On 8/31/2015 9:17 AM, Scott Branden wrote:
> > >>>>> From: Roman Bacik <rba...@broadcom.com>
> > >>>>>
> > >>>>> USB OTG driver in isochronous mode has to set the parity of the
> > >>>>> receiving microframe. The parity is set to even by default. This
> > >>>>> causes problems for an audio gadget, if the host starts
> > >>>>> transmitting on odd
> > >>>> microframes.
> > >>>>>
> > >>>>> This fix uses Incomplete Periodic Transfer interrupt to toggle
> > >>>>> between even and odd parity until the Transfer Complete
> > >>>>> interrupt is
> > >> received.
> > >>>>>
> > >>>>> Signed-off-by: Roman Bacik <rba...@broadcom.com>
> > >>>>> Reviewed-by: Abhinav Ratna <ara...@broadcom.com>
> > >>>>> Reviewed-by: Srinath Mannam <srinath.man...@broadcom.com>
> > >>>>> Signed-off-by: Scott Branden <sbran...@broadcom.com>
> > >>>>> ---
> > >>>>>  drivers/usb/dwc2/core.h   |  1 +
> > >>>>>  drivers/usb/dwc2/gadget.c | 51
> > >>>> ++-
> > >>>>>  drivers/usb/dwc2/hw.h |  1 +
> > >>>>>  3 files changed, 52 insertions(+), 1 deletion(-)
> > >>>>>
> > >>>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
> > >>>>> index 0ed87620..a5634fd 100644
> > >>>>> --- a/drivers/usb/dwc2/core.h
> > >>>>> +++ b/drivers/usb/dwc2/core.h
> > >>>>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
> > >>>>>   unsigned intperiodic:1;
> > >>>>>   unsigned intisochronous:1;
> > >>>>>   unsigned intsend_zlp:1;
> > >>>>> + unsigned inthas_correct_parity:1;
> > >>>>>
> > >>>>>   charname[10];
> > >>>>>  };
> > >>>>> diff --git a/drivers/usb/dwc2/gadget.c
> > >>>>> b/drivers/usb/dwc2/gadget.c index 4d47b7c..fac3e2f 100644
> > >>>>> --- a/drivers/usb/dwc2/gadget.c
> > >>>>> +++ b/drivers/usb/dwc2/gadget.c
> > >>>>> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct
> > >>>>> dwc2_hsotg
> > >>>> *hsotg, unsigned int idx,
> > >>>>>   ints &= ~DXEPINT_XFERCOMPL;
> > >>>>>
> > >>>>>   if (i

RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread Roman Bacik
> -Original Message-
> From: Roman Bacik
> Sent: September-09-15 7:17 PM
> To: 'John Youn'; Scott Branden; Greg Kroah-Hartman; linux-
> u...@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> Subject: RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> > -Original Message-
> > From: John Youn [mailto:john.y...@synopsys.com]
> > Sent: September-09-15 7:11 PM
> > To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
> > u...@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > isochronous mode
> >
> > On 9/9/2015 11:16 AM, Roman Bacik wrote:
> > >> -Original Message-
> > >> From: John Youn [mailto:john.y...@synopsys.com]
> > >> Sent: September-03-15 11:53 PM
> > >> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> > >> u...@vger.kernel.org; Roman Bacik
> > >> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> > >> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
> > >> isochronous mode
> > >>
> > >> On 8/31/2015 9:17 AM, Scott Branden wrote:
> > >>> From: Roman Bacik <rba...@broadcom.com>
> > >>>
> > >>> USB OTG driver in isochronous mode has to set the parity of the
> > >>> receiving microframe. The parity is set to even by default. This
> > >>> causes problems for an audio gadget, if the host starts
> > >>> transmitting on odd
> > >> microframes.
> > >>>
> > >>> This fix uses Incomplete Periodic Transfer interrupt to toggle
> > >>> between even and odd parity until the Transfer Complete interrupt
> > >>> is
> > received.
> > >>>
> > >>> Signed-off-by: Roman Bacik <rba...@broadcom.com>
> > >>> Reviewed-by: Abhinav Ratna <ara...@broadcom.com>
> > >>> Reviewed-by: Srinath Mannam <srinath.man...@broadcom.com>
> > >>> Signed-off-by: Scott Branden <sbran...@broadcom.com>
> > >>> ---
> > >>>  drivers/usb/dwc2/core.h   |  1 +
> > >>>  drivers/usb/dwc2/gadget.c | 51
> > >> ++-
> > >>>  drivers/usb/dwc2/hw.h |  1 +
> > >>>  3 files changed, 52 insertions(+), 1 deletion(-)
> > >>>
> > >>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
> > >>> index 0ed87620..a5634fd 100644
> > >>> --- a/drivers/usb/dwc2/core.h
> > >>> +++ b/drivers/usb/dwc2/core.h
> > >>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
> > >>> unsigned intperiodic:1;
> > >>> unsigned intisochronous:1;
> > >>> unsigned intsend_zlp:1;
> > >>> +   unsigned inthas_correct_parity:1;
> > >>>
> > >>> charname[10];
> > >>>  };
> > >>> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> > >>> index 4d47b7c..fac3e2f 100644
> > >>> --- a/drivers/usb/dwc2/gadget.c
> > >>> +++ b/drivers/usb/dwc2/gadget.c
> > >>> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct
> > >>> dwc2_hsotg
> > >> *hsotg, unsigned int idx,
> > >>> ints &= ~DXEPINT_XFERCOMPL;
> > >>>
> > >>> if (ints & DXEPINT_XFERCOMPL) {
> > >>> +   hs_ep->has_correct_parity = 1;
> > >>> if (hs_ep->isochronous && hs_ep->interval == 1) {
> > >>> if (ctrl & DXEPCTL_EOFRNUM)
> > >>> ctrl |= DXEPCTL_SETEVENFR;
> > >>> @@ -2316,7 +2317,8 @@ void
> s3c_hsotg_core_init_disconnected(struct
> > >> dwc2_hsotg *hsotg,
> > >>> GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
> > >>> GINTSTS_RESETDET | GINTSTS_ENUMDONE |
> > >>> GINTSTS_OTGINT | GINTSTS_USBSUSP |
> > >>> -   GINTSTS_WKUPINT,
> > >>> +   GINTSTS_WKUPINT |
> > >>> +   GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
> > >>> hsotg->regs + GINTMSK);
> &g

Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread John Youn
On 9/9/2015 7:16 PM, Roman Bacik wrote:
>> -Original Message-
>> From: John Youn [mailto:john.y...@synopsys.com]
>> Sent: September-09-15 7:11 PM
>> To: Roman Bacik; John Youn; Scott Branden; Greg Kroah-Hartman; linux-
>> u...@vger.kernel.org
>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
>>
>> On 9/9/2015 11:16 AM, Roman Bacik wrote:
>>>> -Original Message-
>>>> From: John Youn [mailto:john.y...@synopsys.com]
>>>> Sent: September-03-15 11:53 PM
>>>> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
>>>> u...@vger.kernel.org; Roman Bacik
>>>> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
>>>> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in
>>>> isochronous mode
>>>>
>>>> On 8/31/2015 9:17 AM, Scott Branden wrote:
>>>>> From: Roman Bacik <rba...@broadcom.com>
>>>>>
>>>>> USB OTG driver in isochronous mode has to set the parity of the
>>>>> receiving microframe. The parity is set to even by default. This
>>>>> causes problems for an audio gadget, if the host starts transmitting
>>>>> on odd
>>>> microframes.
>>>>>
>>>>> This fix uses Incomplete Periodic Transfer interrupt to toggle
>>>>> between even and odd parity until the Transfer Complete interrupt is
>> received.
>>>>>
>>>>> Signed-off-by: Roman Bacik <rba...@broadcom.com>
>>>>> Reviewed-by: Abhinav Ratna <ara...@broadcom.com>
>>>>> Reviewed-by: Srinath Mannam <srinath.man...@broadcom.com>
>>>>> Signed-off-by: Scott Branden <sbran...@broadcom.com>
>>>>> ---
>>>>>  drivers/usb/dwc2/core.h   |  1 +
>>>>>  drivers/usb/dwc2/gadget.c | 51
>>>> ++-
>>>>>  drivers/usb/dwc2/hw.h |  1 +
>>>>>  3 files changed, 52 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h index
>>>>> 0ed87620..a5634fd 100644
>>>>> --- a/drivers/usb/dwc2/core.h
>>>>> +++ b/drivers/usb/dwc2/core.h
>>>>> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
>>>>>   unsigned intperiodic:1;
>>>>>   unsigned intisochronous:1;
>>>>>   unsigned intsend_zlp:1;
>>>>> + unsigned inthas_correct_parity:1;
>>>>>
>>>>>   charname[10];
>>>>>  };
>>>>> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
>>>>> index 4d47b7c..fac3e2f 100644
>>>>> --- a/drivers/usb/dwc2/gadget.c
>>>>> +++ b/drivers/usb/dwc2/gadget.c
>>>>> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg
>>>> *hsotg, unsigned int idx,
>>>>>   ints &= ~DXEPINT_XFERCOMPL;
>>>>>
>>>>>   if (ints & DXEPINT_XFERCOMPL) {
>>>>> + hs_ep->has_correct_parity = 1;
>>>>>   if (hs_ep->isochronous && hs_ep->interval == 1) {
>>>>>   if (ctrl & DXEPCTL_EOFRNUM)
>>>>>   ctrl |= DXEPCTL_SETEVENFR;
>>>>> @@ -2316,7 +2317,8 @@ void s3c_hsotg_core_init_disconnected(struct
>>>> dwc2_hsotg *hsotg,
>>>>>   GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
>>>>>   GINTSTS_RESETDET | GINTSTS_ENUMDONE |
>>>>>   GINTSTS_OTGINT | GINTSTS_USBSUSP |
>>>>> - GINTSTS_WKUPINT,
>>>>> + GINTSTS_WKUPINT |
>>>>> + GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
>>>>>   hsotg->regs + GINTMSK);
>>>>>
>>>>>   if (using_dma(hsotg))
>>>>> @@ -2581,6 +2583,52 @@ irq_retry:
>>>>>   s3c_hsotg_dump(hsotg);
>>>>>   }
>>>>>
>>>>> + if (gintsts & GINTSTS_INCOMPL_SOIN) {
>>>>> + u32 idx, epctl_reg, ctrl;
>>>>> + struct s3c_hsotg_ep *hs_ep;
>>>>> +
>>>>> + dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOIN\n",
>>>> __func__);
>>>>> + for (idx = 1; idx < MAX_EPS_CHA

RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-09 Thread Roman Bacik
> -Original Message-
> From: John Youn [mailto:john.y...@synopsys.com]
> Sent: September-03-15 11:53 PM
> To: Scott Branden; John Youn; Greg Kroah-Hartman; linux-
> u...@vger.kernel.org; Roman Bacik
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list
> Subject: Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> On 8/31/2015 9:17 AM, Scott Branden wrote:
> > From: Roman Bacik <rba...@broadcom.com>
> >
> > USB OTG driver in isochronous mode has to set the parity of the
> > receiving microframe. The parity is set to even by default. This
> > causes problems for an audio gadget, if the host starts transmitting on odd
> microframes.
> >
> > This fix uses Incomplete Periodic Transfer interrupt to toggle between
> > even and odd parity until the Transfer Complete interrupt is received.
> >
> > Signed-off-by: Roman Bacik <rba...@broadcom.com>
> > Reviewed-by: Abhinav Ratna <ara...@broadcom.com>
> > Reviewed-by: Srinath Mannam <srinath.man...@broadcom.com>
> > Signed-off-by: Scott Branden <sbran...@broadcom.com>
> > ---
> >  drivers/usb/dwc2/core.h   |  1 +
> >  drivers/usb/dwc2/gadget.c | 51
> ++-
> >  drivers/usb/dwc2/hw.h |  1 +
> >  3 files changed, 52 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h index
> > 0ed87620..a5634fd 100644
> > --- a/drivers/usb/dwc2/core.h
> > +++ b/drivers/usb/dwc2/core.h
> > @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
> > unsigned intperiodic:1;
> > unsigned intisochronous:1;
> > unsigned intsend_zlp:1;
> > +   unsigned inthas_correct_parity:1;
> >
> > charname[10];
> >  };
> > diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> > index 4d47b7c..fac3e2f 100644
> > --- a/drivers/usb/dwc2/gadget.c
> > +++ b/drivers/usb/dwc2/gadget.c
> > @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg
> *hsotg, unsigned int idx,
> > ints &= ~DXEPINT_XFERCOMPL;
> >
> > if (ints & DXEPINT_XFERCOMPL) {
> > +   hs_ep->has_correct_parity = 1;
> > if (hs_ep->isochronous && hs_ep->interval == 1) {
> > if (ctrl & DXEPCTL_EOFRNUM)
> > ctrl |= DXEPCTL_SETEVENFR;
> > @@ -2316,7 +2317,8 @@ void s3c_hsotg_core_init_disconnected(struct
> dwc2_hsotg *hsotg,
> > GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
> > GINTSTS_RESETDET | GINTSTS_ENUMDONE |
> > GINTSTS_OTGINT | GINTSTS_USBSUSP |
> > -   GINTSTS_WKUPINT,
> > +   GINTSTS_WKUPINT |
> > +   GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
> > hsotg->regs + GINTMSK);
> >
> > if (using_dma(hsotg))
> > @@ -2581,6 +2583,52 @@ irq_retry:
> > s3c_hsotg_dump(hsotg);
> > }
> >
> > +   if (gintsts & GINTSTS_INCOMPL_SOIN) {
> > +   u32 idx, epctl_reg, ctrl;
> > +   struct s3c_hsotg_ep *hs_ep;
> > +
> > +   dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOIN\n",
> __func__);
> > +   for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {
> 
> Valid endpoints are only up to hsotg->num_of_eps so this might crash on
> certain configurations.
> 
> Also, have you tried to find the endpoint which caused the incomplete
> interrupt by reading the control registers as described in the databook?
> 

We are using procedure based on description from this source:

Synopsys, Inc. SolvNet 527
DesignWare.com
3.00a
April 2012
USB 2.0 Hi-Speed On-The-Go (OTG) Databook Isochronous Endpoints in DWC_otg 
Slave Mode

Synopsys databook is not in a public domain to quote the exact paragraph here. 
You can find it in Chapter E, pp 526-527. There is no register in this 
databook, which would provide information about the source endpoint of the 
incomplete interrupt, as you have described.

Please, provide an exact reference and possibly enough information that we can 
turn it into a working code.

> > +   hs_ep = hsotg->eps_in[idx];
> > +
> > +   if (!hs_ep->isochronous || hs_ep-
> >has_correct_parity)
> > +   continue;
> > +
> > +   epctl_reg = DIEPCTL(idx);
> > +   ctrl = readl(hsotg->regs + epctl_reg);
> > +
> > +   if (ctrl & DXEPCTL_EOFRNUM)
> > +   ctrl |= DXEPCTL_SETEVENFR;
> > +   else
> > +   ctrl |= DXEPCTL_SETODDFR;
> > +   writel(ctrl, hsotg->regs + epctl_reg);
> 
> This toggling code could be moved out to a helper function to reduce
> redundancy as it is in three places now.
> 
> Regards,
> John

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


Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-04 Thread John Youn
On 8/31/2015 9:17 AM, Scott Branden wrote:
> From: Roman Bacik 
> 
> USB OTG driver in isochronous mode has to set the parity of the receiving
> microframe. The parity is set to even by default. This causes problems for
> an audio gadget, if the host starts transmitting on odd microframes.
> 
> This fix uses Incomplete Periodic Transfer interrupt to toggle between
> even and odd parity until the Transfer Complete interrupt is received.
> 
> Signed-off-by: Roman Bacik 
> Reviewed-by: Abhinav Ratna 
> Reviewed-by: Srinath Mannam 
> Signed-off-by: Scott Branden 
> ---
>  drivers/usb/dwc2/core.h   |  1 +
>  drivers/usb/dwc2/gadget.c | 51 
> ++-
>  drivers/usb/dwc2/hw.h |  1 +
>  3 files changed, 52 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
> index 0ed87620..a5634fd 100644
> --- a/drivers/usb/dwc2/core.h
> +++ b/drivers/usb/dwc2/core.h
> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
>   unsigned intperiodic:1;
>   unsigned intisochronous:1;
>   unsigned intsend_zlp:1;
> + unsigned inthas_correct_parity:1;
>  
>   charname[10];
>  };
> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> index 4d47b7c..fac3e2f 100644
> --- a/drivers/usb/dwc2/gadget.c
> +++ b/drivers/usb/dwc2/gadget.c
> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg *hsotg, 
> unsigned int idx,
>   ints &= ~DXEPINT_XFERCOMPL;
>  
>   if (ints & DXEPINT_XFERCOMPL) {
> + hs_ep->has_correct_parity = 1;
>   if (hs_ep->isochronous && hs_ep->interval == 1) {
>   if (ctrl & DXEPCTL_EOFRNUM)
>   ctrl |= DXEPCTL_SETEVENFR;
> @@ -2316,7 +2317,8 @@ void s3c_hsotg_core_init_disconnected(struct dwc2_hsotg 
> *hsotg,
>   GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
>   GINTSTS_RESETDET | GINTSTS_ENUMDONE |
>   GINTSTS_OTGINT | GINTSTS_USBSUSP |
> - GINTSTS_WKUPINT,
> + GINTSTS_WKUPINT |
> + GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
>   hsotg->regs + GINTMSK);
>  
>   if (using_dma(hsotg))
> @@ -2581,6 +2583,52 @@ irq_retry:
>   s3c_hsotg_dump(hsotg);
>   }
>  
> + if (gintsts & GINTSTS_INCOMPL_SOIN) {
> + u32 idx, epctl_reg, ctrl;
> + struct s3c_hsotg_ep *hs_ep;
> +
> + dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOIN\n", __func__);
> + for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {

Valid endpoints are only up to hsotg->num_of_eps so this might
crash on certain configurations.

Also, have you tried to find the endpoint which caused the
incomplete interrupt by reading the control registers as
described in the databook?

> + hs_ep = hsotg->eps_in[idx];
> +
> + if (!hs_ep->isochronous || hs_ep->has_correct_parity)
> + continue;
> +
> + epctl_reg = DIEPCTL(idx);
> + ctrl = readl(hsotg->regs + epctl_reg);
> +
> + if (ctrl & DXEPCTL_EOFRNUM)
> + ctrl |= DXEPCTL_SETEVENFR;
> + else
> + ctrl |= DXEPCTL_SETODDFR;
> + writel(ctrl, hsotg->regs + epctl_reg);

This toggling code could be moved out to a helper function to
reduce redundancy as it is in three places now.

Regards,
John

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


Re: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-04 Thread John Youn
On 8/31/2015 9:17 AM, Scott Branden wrote:
> From: Roman Bacik 
> 
> USB OTG driver in isochronous mode has to set the parity of the receiving
> microframe. The parity is set to even by default. This causes problems for
> an audio gadget, if the host starts transmitting on odd microframes.
> 
> This fix uses Incomplete Periodic Transfer interrupt to toggle between
> even and odd parity until the Transfer Complete interrupt is received.
> 
> Signed-off-by: Roman Bacik 
> Reviewed-by: Abhinav Ratna 
> Reviewed-by: Srinath Mannam 
> Signed-off-by: Scott Branden 
> ---
>  drivers/usb/dwc2/core.h   |  1 +
>  drivers/usb/dwc2/gadget.c | 51 
> ++-
>  drivers/usb/dwc2/hw.h |  1 +
>  3 files changed, 52 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
> index 0ed87620..a5634fd 100644
> --- a/drivers/usb/dwc2/core.h
> +++ b/drivers/usb/dwc2/core.h
> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
>   unsigned intperiodic:1;
>   unsigned intisochronous:1;
>   unsigned intsend_zlp:1;
> + unsigned inthas_correct_parity:1;
>  
>   charname[10];
>  };
> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> index 4d47b7c..fac3e2f 100644
> --- a/drivers/usb/dwc2/gadget.c
> +++ b/drivers/usb/dwc2/gadget.c
> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg *hsotg, 
> unsigned int idx,
>   ints &= ~DXEPINT_XFERCOMPL;
>  
>   if (ints & DXEPINT_XFERCOMPL) {
> + hs_ep->has_correct_parity = 1;
>   if (hs_ep->isochronous && hs_ep->interval == 1) {
>   if (ctrl & DXEPCTL_EOFRNUM)
>   ctrl |= DXEPCTL_SETEVENFR;
> @@ -2316,7 +2317,8 @@ void s3c_hsotg_core_init_disconnected(struct dwc2_hsotg 
> *hsotg,
>   GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
>   GINTSTS_RESETDET | GINTSTS_ENUMDONE |
>   GINTSTS_OTGINT | GINTSTS_USBSUSP |
> - GINTSTS_WKUPINT,
> + GINTSTS_WKUPINT |
> + GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
>   hsotg->regs + GINTMSK);
>  
>   if (using_dma(hsotg))
> @@ -2581,6 +2583,52 @@ irq_retry:
>   s3c_hsotg_dump(hsotg);
>   }
>  
> + if (gintsts & GINTSTS_INCOMPL_SOIN) {
> + u32 idx, epctl_reg, ctrl;
> + struct s3c_hsotg_ep *hs_ep;
> +
> + dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOIN\n", __func__);
> + for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {

Valid endpoints are only up to hsotg->num_of_eps so this might
crash on certain configurations.

Also, have you tried to find the endpoint which caused the
incomplete interrupt by reading the control registers as
described in the databook?

> + hs_ep = hsotg->eps_in[idx];
> +
> + if (!hs_ep->isochronous || hs_ep->has_correct_parity)
> + continue;
> +
> + epctl_reg = DIEPCTL(idx);
> + ctrl = readl(hsotg->regs + epctl_reg);
> +
> + if (ctrl & DXEPCTL_EOFRNUM)
> + ctrl |= DXEPCTL_SETEVENFR;
> + else
> + ctrl |= DXEPCTL_SETODDFR;
> + writel(ctrl, hsotg->regs + epctl_reg);

This toggling code could be moved out to a helper function to
reduce redundancy as it is in three places now.

Regards,
John

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


RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-03 Thread Roman Bacik
Is there anything else we should address in this patch?
Thanks,

Roman

> -Original Message-
> From: Scott Branden [mailto:sbran...@broadcom.com]
> Sent: August-31-15 9:17 AM
> To: John Youn; Greg Kroah-Hartman; linux-...@vger.kernel.org; Roman
> Bacik
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list; Scott Branden
> Subject: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> From: Roman Bacik 
> 
> USB OTG driver in isochronous mode has to set the parity of the receiving
> microframe. The parity is set to even by default. This causes problems for an
> audio gadget, if the host starts transmitting on odd microframes.
> 
> This fix uses Incomplete Periodic Transfer interrupt to toggle between even
> and odd parity until the Transfer Complete interrupt is received.
> 
> Signed-off-by: Roman Bacik 
> Reviewed-by: Abhinav Ratna 
> Reviewed-by: Srinath Mannam 
> Signed-off-by: Scott Branden 
> ---
>  drivers/usb/dwc2/core.h   |  1 +
>  drivers/usb/dwc2/gadget.c | 51
> ++-
>  drivers/usb/dwc2/hw.h |  1 +
>  3 files changed, 52 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h index
> 0ed87620..a5634fd 100644
> --- a/drivers/usb/dwc2/core.h
> +++ b/drivers/usb/dwc2/core.h
> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
>   unsigned intperiodic:1;
>   unsigned intisochronous:1;
>   unsigned intsend_zlp:1;
> + unsigned inthas_correct_parity:1;
> 
>   charname[10];
>  };
> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c index
> 4d47b7c..fac3e2f 100644
> --- a/drivers/usb/dwc2/gadget.c
> +++ b/drivers/usb/dwc2/gadget.c
> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg
> *hsotg, unsigned int idx,
>   ints &= ~DXEPINT_XFERCOMPL;
> 
>   if (ints & DXEPINT_XFERCOMPL) {
> + hs_ep->has_correct_parity = 1;
>   if (hs_ep->isochronous && hs_ep->interval == 1) {
>   if (ctrl & DXEPCTL_EOFRNUM)
>   ctrl |= DXEPCTL_SETEVENFR;
> @@ -2316,7 +2317,8 @@ void s3c_hsotg_core_init_disconnected(struct
> dwc2_hsotg *hsotg,
>   GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
>   GINTSTS_RESETDET | GINTSTS_ENUMDONE |
>   GINTSTS_OTGINT | GINTSTS_USBSUSP |
> - GINTSTS_WKUPINT,
> + GINTSTS_WKUPINT |
> + GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
>   hsotg->regs + GINTMSK);
> 
>   if (using_dma(hsotg))
> @@ -2581,6 +2583,52 @@ irq_retry:
>   s3c_hsotg_dump(hsotg);
>   }
> 
> + if (gintsts & GINTSTS_INCOMPL_SOIN) {
> + u32 idx, epctl_reg, ctrl;
> + struct s3c_hsotg_ep *hs_ep;
> +
> + dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOIN\n",
> __func__);
> + for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {
> + hs_ep = hsotg->eps_in[idx];
> +
> + if (!hs_ep->isochronous || hs_ep-
> >has_correct_parity)
> + continue;
> +
> + epctl_reg = DIEPCTL(idx);
> + ctrl = readl(hsotg->regs + epctl_reg);
> +
> + if (ctrl & DXEPCTL_EOFRNUM)
> + ctrl |= DXEPCTL_SETEVENFR;
> + else
> + ctrl |= DXEPCTL_SETODDFR;
> + writel(ctrl, hsotg->regs + epctl_reg);
> + }
> + writel(GINTSTS_INCOMPL_SOIN, hsotg->regs + GINTSTS);
> + }
> +
> + if (gintsts & GINTSTS_INCOMPL_SOOUT) {
> + u32 idx, epctl_reg, ctrl;
> + struct s3c_hsotg_ep *hs_ep;
> +
> + dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOOUT\n",
> __func__);
> + for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {
> + hs_ep = hsotg->eps_out[idx];
> +
> + if (!hs_ep->isochronous || hs_ep-
> >has_correct_parity)
> + continue;
> +
> + epctl_reg = DOEPCTL(idx);
> + ctrl = readl(hsotg->regs + epctl_reg);
> +
> + if (ctrl & DXEPCTL_EOFRNUM)
> + ctrl |= DXEPCTL_SETEVENFR;
> + else
> + ctrl |= DXEPCTL_SETODDFR;
> + writel(ctrl, hsotg->regs + epctl_reg);
> + }
> + writel(GINTSTS_INCOMPL_SOOUT, hsotg->regs + GINTSTS);
> + }
> +
>   /*
>* if we've had fifo events, we should try and go around the
>* loop again to see if there's any point in returning yet.
> @@ -2667,6 +2715,7 @@ static int s3c_hsotg_ep_enable(struct usb_ep *ep,
>   hs_ep->periodic = 0;
>   hs_ep->halted = 0;
>   hs_ep->interval = desc->bInterval;
> + hs_ep->has_correct_parity = 0;
> 
>   if (hs_ep->interval > 

RE: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode

2015-09-03 Thread Roman Bacik
Is there anything else we should address in this patch?
Thanks,

Roman

> -Original Message-
> From: Scott Branden [mailto:sbran...@broadcom.com]
> Sent: August-31-15 9:17 AM
> To: John Youn; Greg Kroah-Hartman; linux-...@vger.kernel.org; Roman
> Bacik
> Cc: linux-kernel@vger.kernel.org; bcm-kernel-feedback-list; Scott Branden
> Subject: [PATCH v2 1/1] usb: dwc2: gadget: parity fix in isochronous mode
> 
> From: Roman Bacik 
> 
> USB OTG driver in isochronous mode has to set the parity of the receiving
> microframe. The parity is set to even by default. This causes problems for an
> audio gadget, if the host starts transmitting on odd microframes.
> 
> This fix uses Incomplete Periodic Transfer interrupt to toggle between even
> and odd parity until the Transfer Complete interrupt is received.
> 
> Signed-off-by: Roman Bacik 
> Reviewed-by: Abhinav Ratna 
> Reviewed-by: Srinath Mannam 
> Signed-off-by: Scott Branden 
> ---
>  drivers/usb/dwc2/core.h   |  1 +
>  drivers/usb/dwc2/gadget.c | 51
> ++-
>  drivers/usb/dwc2/hw.h |  1 +
>  3 files changed, 52 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h index
> 0ed87620..a5634fd 100644
> --- a/drivers/usb/dwc2/core.h
> +++ b/drivers/usb/dwc2/core.h
> @@ -150,6 +150,7 @@ struct s3c_hsotg_ep {
>   unsigned intperiodic:1;
>   unsigned intisochronous:1;
>   unsigned intsend_zlp:1;
> + unsigned inthas_correct_parity:1;
> 
>   charname[10];
>  };
> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c index
> 4d47b7c..fac3e2f 100644
> --- a/drivers/usb/dwc2/gadget.c
> +++ b/drivers/usb/dwc2/gadget.c
> @@ -1954,6 +1954,7 @@ static void s3c_hsotg_epint(struct dwc2_hsotg
> *hsotg, unsigned int idx,
>   ints &= ~DXEPINT_XFERCOMPL;
> 
>   if (ints & DXEPINT_XFERCOMPL) {
> + hs_ep->has_correct_parity = 1;
>   if (hs_ep->isochronous && hs_ep->interval == 1) {
>   if (ctrl & DXEPCTL_EOFRNUM)
>   ctrl |= DXEPCTL_SETEVENFR;
> @@ -2316,7 +2317,8 @@ void s3c_hsotg_core_init_disconnected(struct
> dwc2_hsotg *hsotg,
>   GINTSTS_CONIDSTSCHNG | GINTSTS_USBRST |
>   GINTSTS_RESETDET | GINTSTS_ENUMDONE |
>   GINTSTS_OTGINT | GINTSTS_USBSUSP |
> - GINTSTS_WKUPINT,
> + GINTSTS_WKUPINT |
> + GINTSTS_INCOMPL_SOIN | GINTSTS_INCOMPL_SOOUT,
>   hsotg->regs + GINTMSK);
> 
>   if (using_dma(hsotg))
> @@ -2581,6 +2583,52 @@ irq_retry:
>   s3c_hsotg_dump(hsotg);
>   }
> 
> + if (gintsts & GINTSTS_INCOMPL_SOIN) {
> + u32 idx, epctl_reg, ctrl;
> + struct s3c_hsotg_ep *hs_ep;
> +
> + dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOIN\n",
> __func__);
> + for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {
> + hs_ep = hsotg->eps_in[idx];
> +
> + if (!hs_ep->isochronous || hs_ep-
> >has_correct_parity)
> + continue;
> +
> + epctl_reg = DIEPCTL(idx);
> + ctrl = readl(hsotg->regs + epctl_reg);
> +
> + if (ctrl & DXEPCTL_EOFRNUM)
> + ctrl |= DXEPCTL_SETEVENFR;
> + else
> + ctrl |= DXEPCTL_SETODDFR;
> + writel(ctrl, hsotg->regs + epctl_reg);
> + }
> + writel(GINTSTS_INCOMPL_SOIN, hsotg->regs + GINTSTS);
> + }
> +
> + if (gintsts & GINTSTS_INCOMPL_SOOUT) {
> + u32 idx, epctl_reg, ctrl;
> + struct s3c_hsotg_ep *hs_ep;
> +
> + dev_dbg(hsotg->dev, "%s: GINTSTS_INCOMPL_SOOUT\n",
> __func__);
> + for (idx = 1; idx < MAX_EPS_CHANNELS; idx++) {
> + hs_ep = hsotg->eps_out[idx];
> +
> + if (!hs_ep->isochronous || hs_ep-
> >has_correct_parity)
> + continue;
> +
> + epctl_reg = DOEPCTL(idx);
> + ctrl = readl(hsotg->regs + epctl_reg);
> +
> + if (ctrl & DXEPCTL_EOFRNUM)
> + ctrl |= DXEPCTL_SETEVENFR;
> + else
> + ctrl |= DXEPCTL_SETODDFR;
> + writel(ctrl, hsotg->regs + epctl_reg);
> + }
> + writel(GINTSTS_INCOMPL_SOOUT, hsotg->regs + GINTSTS);
> + }
> +
>   /*
>* if we've had fifo events, we should try and go around the
>* loop again to see if there's any point in returning yet.
> @@ -2667,6 +2715,7 @@ static int s3c_hsotg_ep_enable(struct usb_ep *ep,
>   hs_ep->periodic = 0;
>   hs_ep->halted = 0;