1d593d64fSPrasad Sodagudi // SPDX-License-Identifier: GPL-2.0-only 2d593d64fSPrasad Sodagudi /* 3d593d64fSPrasad Sodagudi * Register read and write tracepoints 4d593d64fSPrasad Sodagudi * 5d593d64fSPrasad Sodagudi * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. 6d593d64fSPrasad Sodagudi */ 7d593d64fSPrasad Sodagudi 8d593d64fSPrasad Sodagudi #include <linux/ftrace.h> 9d593d64fSPrasad Sodagudi #include <linux/module.h> 10d593d64fSPrasad Sodagudi #include <asm-generic/io.h> 11d593d64fSPrasad Sodagudi 12d593d64fSPrasad Sodagudi #define CREATE_TRACE_POINTS 13d593d64fSPrasad Sodagudi #include <trace/events/rwmmio.h> 14d593d64fSPrasad Sodagudi 15d593d64fSPrasad Sodagudi #ifdef CONFIG_TRACE_MMIO_ACCESS 16d593d64fSPrasad Sodagudi void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr, 17*5e5ff73cSSai Prakash Ranjan unsigned long caller_addr, unsigned long caller_addr0) 18d593d64fSPrasad Sodagudi { 19*5e5ff73cSSai Prakash Ranjan trace_rwmmio_write(caller_addr, caller_addr0, val, width, addr); 20d593d64fSPrasad Sodagudi } 21d593d64fSPrasad Sodagudi EXPORT_SYMBOL_GPL(log_write_mmio); 22d593d64fSPrasad Sodagudi EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_write); 23d593d64fSPrasad Sodagudi 24d593d64fSPrasad Sodagudi void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr, 25*5e5ff73cSSai Prakash Ranjan unsigned long caller_addr, unsigned long caller_addr0) 26d593d64fSPrasad Sodagudi { 27*5e5ff73cSSai Prakash Ranjan trace_rwmmio_post_write(caller_addr, caller_addr0, val, width, addr); 28d593d64fSPrasad Sodagudi } 29d593d64fSPrasad Sodagudi EXPORT_SYMBOL_GPL(log_post_write_mmio); 30d593d64fSPrasad Sodagudi EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_post_write); 31d593d64fSPrasad Sodagudi 32d593d64fSPrasad Sodagudi void log_read_mmio(u8 width, const volatile void __iomem *addr, 33*5e5ff73cSSai Prakash Ranjan unsigned long caller_addr, unsigned long caller_addr0) 34d593d64fSPrasad Sodagudi { 35*5e5ff73cSSai Prakash Ranjan trace_rwmmio_read(caller_addr, caller_addr0, width, addr); 36d593d64fSPrasad Sodagudi } 37d593d64fSPrasad Sodagudi EXPORT_SYMBOL_GPL(log_read_mmio); 38d593d64fSPrasad Sodagudi EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_read); 39d593d64fSPrasad Sodagudi 40d593d64fSPrasad Sodagudi void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr, 41*5e5ff73cSSai Prakash Ranjan unsigned long caller_addr, unsigned long caller_addr0) 42d593d64fSPrasad Sodagudi { 43*5e5ff73cSSai Prakash Ranjan trace_rwmmio_post_read(caller_addr, caller_addr0, val, width, addr); 44d593d64fSPrasad Sodagudi } 45d593d64fSPrasad Sodagudi EXPORT_SYMBOL_GPL(log_post_read_mmio); 46d593d64fSPrasad Sodagudi EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_post_read); 47d593d64fSPrasad Sodagudi #endif /* CONFIG_TRACE_MMIO_ACCESS */ 48