
On 08/04/2016 11:26 AM, Rajat Srivastava wrote:
Adds helper functions to enable snooping and outstanding burst beat settings.
Signed-off-by: Rajat Srivastava rajat.srivastava@nxp.com Signed-off-by: Rajesh Bhagat rajesh.bhagat@nxp.com
Changes in v3:
- Changed operator for code cleanup
Changes in v2:
- Removes SoC specific flags and added helper functions
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);
You can use clrsetbits_le32() or such if this is not direct port from Linux.
break;
- }
+}
+void dwc3_core_set_snooping(int index, bool snoop) +{
- struct dwc3 *dwc;
- u32 reg;
- 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)
Parens around number are not necessary, please remove.
struct dwc3_request { struct usb_request request; struct list_head list;