[U-Boot] [PATCH 08/14] usb: dwc3: Add helper functions to enable snooping and burst settings
Tom Rini
trini at konsulko.com
Tue May 16 19:32:32 UTC 2017
On Tue, May 16, 2017 at 08:16:28PM +0800, yinbo.zhu wrote:
> From: Rajat Srivastava <rajat.srivastava at nxp.com>
>
> Adds helper functions to enable snooping and outstanding burst beat
> settings.
>
> Signed-off-by: Rajat Srivastava <rajat.srivastava at nxp.com>
> Signed-off-by: Rajesh Bhagat <rajesh.bhagat at 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;
> +
> + 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)
> +
> struct dwc3_request {
> struct usb_request request;
> struct list_head list;
Marek?
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170516/a00a1a74/attachment.sig>
More information about the U-Boot
mailing list