mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:24:45 +01:00
When multiple DWC3 controllers are being used, trace events from different instances get mixed up making debugging difficult as there's no way to distinguish which instance generated the trace. Use the register base address of dwc3 controller and append it to trace events, so that the source instance is clearly identifiable. Example trace output, before -> dwc3_event: event (00000101): Reset [U0] after -> dwc3_event: 0x000000000a600000: event (00000101): Reset [U0] Signed-off-by: Prashanth K <prashanth.k@oss.qualcomm.com> Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com> Link: https://patch.msgid.link/20260122105000.4126769-1-prashanth.k@oss.qualcomm.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
60 lines
1.7 KiB
C
60 lines
1.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* io.h - DesignWare USB3 DRD IO Header
|
|
*
|
|
* Copyright (C) 2010-2011 Texas Instruments Incorporated - https://www.ti.com
|
|
*
|
|
* Authors: Felipe Balbi <balbi@ti.com>,
|
|
* Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
*/
|
|
|
|
#ifndef __DRIVERS_USB_DWC3_IO_H
|
|
#define __DRIVERS_USB_DWC3_IO_H
|
|
|
|
#include <linux/io.h>
|
|
#include "trace.h"
|
|
#include "debug.h"
|
|
#include "core.h"
|
|
|
|
static inline u32 dwc3_readl(struct dwc3 *dwc, u32 offset)
|
|
{
|
|
u32 value;
|
|
void __iomem *base = dwc->regs;
|
|
|
|
/*
|
|
* We requested the mem region starting from the Globals address
|
|
* space, see dwc3_probe in core.c.
|
|
* However, the offsets are given starting from xHCI address space.
|
|
*/
|
|
value = readl(base + offset - DWC3_GLOBALS_REGS_START);
|
|
|
|
/*
|
|
* When tracing we want to make it easy to find the correct address on
|
|
* documentation, so we revert it back to the proper addresses, the
|
|
* same way they are described on SNPS documentation
|
|
*/
|
|
trace_dwc3_readl(dwc, base - DWC3_GLOBALS_REGS_START, offset, value);
|
|
|
|
return value;
|
|
}
|
|
|
|
static inline void dwc3_writel(struct dwc3 *dwc, u32 offset, u32 value)
|
|
{
|
|
void __iomem *base = dwc->regs;
|
|
|
|
/*
|
|
* We requested the mem region starting from the Globals address
|
|
* space, see dwc3_probe in core.c.
|
|
* However, the offsets are given starting from xHCI address space.
|
|
*/
|
|
writel(value, base + offset - DWC3_GLOBALS_REGS_START);
|
|
|
|
/*
|
|
* When tracing we want to make it easy to find the correct address on
|
|
* documentation, so we revert it back to the proper addresses, the
|
|
* same way they are described on SNPS documentation
|
|
*/
|
|
trace_dwc3_writel(dwc, base - DWC3_GLOBALS_REGS_START, offset, value);
|
|
}
|
|
|
|
#endif /* __DRIVERS_USB_DWC3_IO_H */
|