root/drivers/usb/dwc3/io.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. dwc3_readl
  2. dwc3_writel

   1 // SPDX-License-Identifier: GPL-2.0
   2 /**
   3  * io.h - DesignWare USB3 DRD IO Header
   4  *
   5  * Copyright (C) 2010-2011 Texas Instruments Incorporated - http://www.ti.com
   6  *
   7  * Authors: Felipe Balbi <balbi@ti.com>,
   8  *          Sebastian Andrzej Siewior <bigeasy@linutronix.de>
   9  */
  10 
  11 #ifndef __DRIVERS_USB_DWC3_IO_H
  12 #define __DRIVERS_USB_DWC3_IO_H
  13 
  14 #include <linux/io.h>
  15 #include "trace.h"
  16 #include "debug.h"
  17 #include "core.h"
  18 
  19 static inline u32 dwc3_readl(void __iomem *base, u32 offset)
  20 {
  21         u32 value;
  22 
  23         /*
  24          * We requested the mem region starting from the Globals address
  25          * space, see dwc3_probe in core.c.
  26          * However, the offsets are given starting from xHCI address space.
  27          */
  28         value = readl(base + offset - DWC3_GLOBALS_REGS_START);
  29 
  30         /*
  31          * When tracing we want to make it easy to find the correct address on
  32          * documentation, so we revert it back to the proper addresses, the
  33          * same way they are described on SNPS documentation
  34          */
  35         trace_dwc3_readl(base - DWC3_GLOBALS_REGS_START, offset, value);
  36 
  37         return value;
  38 }
  39 
  40 static inline void dwc3_writel(void __iomem *base, u32 offset, u32 value)
  41 {
  42         /*
  43          * We requested the mem region starting from the Globals address
  44          * space, see dwc3_probe in core.c.
  45          * However, the offsets are given starting from xHCI address space.
  46          */
  47         writel(value, base + offset - DWC3_GLOBALS_REGS_START);
  48 
  49         /*
  50          * When tracing we want to make it easy to find the correct address on
  51          * documentation, so we revert it back to the proper addresses, the
  52          * same way they are described on SNPS documentation
  53          */
  54         trace_dwc3_writel(base - DWC3_GLOBALS_REGS_START, offset, value);
  55 }
  56 
  57 #endif /* __DRIVERS_USB_DWC3_IO_H */

/* [<][>][^][v][top][bottom][index][help] */