X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=include%2Fiotrace.h;h=be1d2753e195632fbf6daace82a2ad2165532257;hb=9dcb9d763d328da903194d0f14f97d9620a6f52d;hp=e4ceb6180537ed62ce4ae96f60ca56268ab9f5e8;hpb=08ca213acadef61748dc62d48b0f5c4bed8b8c2d;p=oweals%2Fu-boot.git diff --git a/include/iotrace.h b/include/iotrace.h index e4ceb61805..be1d2753e1 100644 --- a/include/iotrace.h +++ b/include/iotrace.h @@ -1,14 +1,41 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright (c) 2014 Google, Inc. - * - * SPDX-License-Identifier: GPL-2.0+ */ #ifndef __IOTRACE_H #define __IOTRACE_H +//#include #include +/* Support up to the machine word length for now */ +typedef ulong iovalue_t; + +enum iotrace_flags { + IOT_8 = 0, + IOT_16, + IOT_32, + + IOT_READ = 0 << 3, + IOT_WRITE = 1 << 3, +}; + +/** + * struct iotrace_record - Holds a single I/O trace record + * + * @flags: I/O access type + * @timestamp: Timestamp of access + * @addr: Address of access + * @value: Value written or read + */ +struct iotrace_record { + enum iotrace_flags flags; + u64 timestamp; + phys_addr_t addr; + iovalue_t value; +}; + /* * This file is designed to be included in arch//include/asm/io.h. * It redirects all IO access through a tracing/checksumming feature for @@ -59,6 +86,30 @@ void iotrace_reset_checksum(void); */ u32 iotrace_get_checksum(void); +/** + * iotrace_set_region() - Set whether iotrace is limited to a specific + * io region. + * + * Defines the address and size of the limited region. + * + * @start: address of the beginning of the region + * @size: size of the region in bytes. + */ +void iotrace_set_region(ulong start, ulong size); + +/** + * iotrace_reset_region() - Reset the region limit + */ +void iotrace_reset_region(void); + +/** + * iotrace_get_region() - Get region information + * + * @start: Returns start address of region + * @size: Returns size of region in bytes + */ +void iotrace_get_region(ulong *start, ulong *size); + /** * iotrace_set_enabled() - Set whether iotracing is enabled or not * @@ -95,11 +146,12 @@ 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 + * @size: Returns actual size of buffer in bytes + * @needed_size: Returns needed 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); +void iotrace_get_buffer(ulong *start, ulong *size, ulong *needed_size, ulong *offset, ulong *count); #endif /* __IOTRACE_H */