u-boot/include/iotrace.h
Tom Rini 83d290c56f SPDX: Convert all of our single license tags to Linux Kernel style
When U-Boot started using SPDX tags we were among the early adopters and
there weren't a lot of other examples to borrow from.  So we picked the
area of the file that usually had a full license text and replaced it
with an appropriate SPDX-License-Identifier: entry.  Since then, the
Linux Kernel has adopted SPDX tags and they place it as the very first
line in a file (except where shebangs are used, then it's second line)
and with slightly different comment styles than us.

In part due to community overlap, in part due to better tag visibility
and in part for other minor reasons, switch over to that style.

This commit changes all instances where we have a single declared
license in the tag as both the before and after are identical in tag
contents.  There's also a few places where I found we did not have a tag
and have introduced one.

Signed-off-by: Tom Rini <trini@konsulko.com>
2018-05-07 09:34:12 -04:00

104 lines
2.8 KiB
C

/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Copyright (c) 2014 Google, Inc.
*/
#ifndef __IOTRACE_H
#define __IOTRACE_H
#include <linux/types.h>
/*
* This file is designed to be included in arch/<arch>/include/asm/io.h.
* It redirects all IO access through a tracing/checksumming feature for
* testing purposes.
*/
#if defined(CONFIG_IO_TRACE) && !defined(IOTRACE_IMPL) && \
!defined(CONFIG_SPL_BUILD)
#undef readl
#define readl(addr) iotrace_readl((const void *)(addr))
#undef writel
#define writel(val, addr) iotrace_writel(val, (const void *)(addr))
#undef readw
#define readw(addr) iotrace_readw((const void *)(addr))
#undef writew
#define writew(val, addr) iotrace_writew(val, (const void *)(addr))
#undef readb
#define readb(addr) iotrace_readb((const void *)(uintptr_t)addr)
#undef writeb
#define writeb(val, addr) \
iotrace_writeb(val, (const void *)(uintptr_t)addr)
#endif
/* Tracing functions which mirror their io.h counterparts */
u32 iotrace_readl(const void *ptr);
void iotrace_writel(ulong value, const void *ptr);
u16 iotrace_readw(const void *ptr);
void iotrace_writew(ulong value, const void *ptr);
u8 iotrace_readb(const void *ptr);
void iotrace_writeb(ulong value, const void *ptr);
/**
* iotrace_reset_checksum() - Reset the iotrace checksum
*/
void iotrace_reset_checksum(void);
/**
* iotrace_get_checksum() - Get the current checksum value
*
* @return currect checksum value
*/
u32 iotrace_get_checksum(void);
/**
* iotrace_set_enabled() - Set whether iotracing is enabled or not
*
* This controls whether the checksum is updated and a trace record added
* for each I/O access.
*
* @enable: true to enable iotracing, false to disable
*/
void iotrace_set_enabled(int enable);
/**
* iotrace_get_enabled() - Get whether iotracing is enabled or not
*
* @return true if enabled, false if disabled
*/
int iotrace_get_enabled(void);
/**
* iotrace_set_buffer() - Set position and size of iotrace buffer
*
* Defines where the iotrace buffer goes, and resets the output pointer to
* the start of the buffer.
*
* The buffer can be 0 size in which case the checksum is updated but no
* trace records are writen. If the buffer is exhausted, the offset will
* continue to increase but not new data will be written.
*
* @start: Start address of buffer
* @size: Size of buffer in bytes
*/
void iotrace_set_buffer(ulong start, ulong size);
/**
* iotrace_get_buffer() - Get buffer information
*
* @start: Returns start address of buffer
* @size: Returns size of buffer in bytes
* @offset: Returns the byte offset where the next output trace record will
* @count: Returns the number of trace records recorded
* be written (or would be if the buffer was large enough)
*/
void iotrace_get_buffer(ulong *start, ulong *size, ulong *offset, ulong *count);
#endif /* __IOTRACE_H */