On 05/16/2017 09:32 PM, Tom Rini wrote:
> On Tue, May 16, 2017 at 08:16:28PM +0800, yinbo.zhu wrote:
> 
>> From: Rajat Srivastava <rajat.srivast...@nxp.com>
>>
>> Adds helper functions to enable snooping and outstanding burst beat
>> settings.
>>
>> Signed-off-by: Rajat Srivastava <rajat.srivast...@nxp.com>
>> Signed-off-by: Rajesh Bhagat <rajesh.bha...@nxp.com>
>> ---
>>  drivers/usb/dwc3/core.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
>>  drivers/usb/dwc3/core.h |  7 +++++++
>>  2 files changed, 52 insertions(+)
>>
>> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
>> index 85cc96a..4ac599a 100644
>> --- a/drivers/usb/dwc3/core.c
>> +++ b/drivers/usb/dwc3/core.c
>> @@ -599,6 +599,51 @@ static void dwc3_core_exit_mode(struct dwc3 *dwc)
>>  
>>  #define DWC3_ALIGN_MASK             (16 - 1)
>>  
>> +void dwc3_core_incr_burst_enable(int index, int btype_incr_val,
>> +                             int breq_limit)
>> +{
>> +    struct dwc3 *dwc;
>> +    u32 reg;
>> +
>> +    list_for_each_entry(dwc, &dwc3_list, list) {
>> +            if (dwc->index != index)
>> +                    continue;
>> +
>> +            /*
>> +             * Change burst beat and outstanding pipelined
>> +             * transfers requests
>> +             */
>> +            reg = dwc3_readl(dwc->regs, DWC3_GSBUSCFG0);
>> +            reg = (reg & ~DWC3_INCR_BTYPE_MASK) | btype_incr_val;
>> +            dwc3_writel(dwc->regs, DWC3_GSBUSCFG0, reg);
>> +
>> +            reg = dwc3_readl(dwc->regs, DWC3_GSBUSCFG1);
>> +            reg = (reg & ~DWC3_BREQ_LIMIT_MASK) | (breq_limit << 8);
>> +            dwc3_writel(dwc->regs, DWC3_GSBUSCFG1, reg);
>> +            break;
>> +    }
>> +}
>> +
>> +void dwc3_core_set_snooping(int index, bool snoop)
>> +{
>> +    struct dwc3 *dwc;
>> +    u32 reg;

So how do you discern which controller should have this value
increased/set and which shouldn't ? I believe that information
should come from DT ... hacking it up such that you change it
for all controllers doesn't scale.

>> +    list_for_each_entry(dwc, &dwc3_list, list) {
>> +            if (dwc->index != index)
>> +                    continue;
>> +
>> +            /* Enable/Disable snooping */
>> +            reg = dwc3_readl(dwc->regs, DWC3_GSBUSCFG0);
>> +            if (snoop)
>> +                    reg |= DWC3_SNOOP_ENABLE;
>> +            else
>> +                    reg &= ~DWC3_SNOOP_ENABLE;
>> +            dwc3_writel(dwc->regs, DWC3_GSBUSCFG0, reg);
>> +            break;
>> +    }
>> +}
>> +
>>  /**
>>   * dwc3_uboot_init - dwc3 core uboot initialization code
>>   * @dwc3_dev: struct dwc3_device containing initialization data
>> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
>> index 72d2fcd..455e7fa 100644
>> --- a/drivers/usb/dwc3/core.h
>> +++ b/drivers/usb/dwc3/core.h
>> @@ -593,6 +593,13 @@ struct dwc3_hwparams {
>>  /* HWPARAMS7 */
>>  #define DWC3_RAM1_DEPTH(n)  ((n) & 0xffff)
>>  
>> +/* GSBUSCFG0 */
>> +#define DWC3_SNOOP_ENABLE   (0x22220000)
>> +#define DWC3_INCR_BTYPE_MASK        (0xff)
>> +
>> +/* GSBUSCFG1 */
>> +#define DWC3_BREQ_LIMIT_MASK        (0xf00)

Drop the parenthesis ...

>>  struct dwc3_request {
>>      struct usb_request      request;
>>      struct list_head        list;
> 
> Marek?
> 


-- 
Best regards,
Marek Vasut
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to