| /* |
| * Copyright (C) 2013 Google, Inc. |
| * |
| * This software is licensed under the terms of the GNU General Public |
| * License version 2, as published by the Free Software Foundation, and |
| * may be copied, distributed, and modified under those terms. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| */ |
| |
| #undef TRACE_SYSTEM |
| #define TRACE_SYSTEM mmc |
| |
| #if !defined(_TRACE_MMC_H) || defined(TRACE_HEADER_MULTI_READ) |
| #define _TRACE_MMC_H |
| |
| #include <linux/tracepoint.h> |
| #include <linux/mmc/mmc.h> |
| #include <linux/mmc/core.h> |
| |
| /* |
| * Unconditional logging of mmc block erase operations, |
| * including cmd, address, size |
| */ |
| DECLARE_EVENT_CLASS(mmc_blk_erase_class, |
| TP_PROTO(unsigned int cmd, unsigned int addr, unsigned int size), |
| TP_ARGS(cmd, addr, size), |
| TP_STRUCT__entry( |
| __field(unsigned int, cmd) |
| __field(unsigned int, addr) |
| __field(unsigned int, size) |
| ), |
| TP_fast_assign( |
| __entry->cmd = cmd; |
| __entry->addr = addr; |
| __entry->size = size; |
| ), |
| TP_printk("cmd=%u,addr=0x%08x,size=0x%08x", |
| __entry->cmd, __entry->addr, __entry->size) |
| ); |
| |
| DEFINE_EVENT(mmc_blk_erase_class, mmc_blk_erase_start, |
| TP_PROTO(unsigned int cmd, unsigned int addr, unsigned int size), |
| TP_ARGS(cmd, addr, size)); |
| |
| DEFINE_EVENT(mmc_blk_erase_class, mmc_blk_erase_end, |
| TP_PROTO(unsigned int cmd, unsigned int addr, unsigned int size), |
| TP_ARGS(cmd, addr, size)); |
| |
| /* |
| * Logging of start of read or write mmc block operation, |
| * including cmd, address, size |
| */ |
| DECLARE_EVENT_CLASS(mmc_blk_rw_class, |
| TP_PROTO(unsigned int cmd, unsigned int addr, struct mmc_data *data), |
| TP_ARGS(cmd, addr, data), |
| TP_STRUCT__entry( |
| __field(unsigned int, cmd) |
| __field(unsigned int, addr) |
| __field(unsigned int, size) |
| ), |
| TP_fast_assign( |
| __entry->cmd = cmd; |
| __entry->addr = addr; |
| __entry->size = data->blocks; |
| ), |
| TP_printk("cmd=%u,addr=0x%08x,size=0x%08x", |
| __entry->cmd, __entry->addr, __entry->size) |
| ); |
| |
| DEFINE_EVENT_CONDITION(mmc_blk_rw_class, mmc_blk_rw_start, |
| TP_PROTO(unsigned int cmd, unsigned int addr, struct mmc_data *data), |
| TP_ARGS(cmd, addr, data), |
| TP_CONDITION(((cmd == MMC_READ_MULTIPLE_BLOCK) || |
| (cmd == MMC_WRITE_MULTIPLE_BLOCK)) && |
| data)); |
| |
| DEFINE_EVENT_CONDITION(mmc_blk_rw_class, mmc_blk_rw_end, |
| TP_PROTO(unsigned int cmd, unsigned int addr, struct mmc_data *data), |
| TP_ARGS(cmd, addr, data), |
| TP_CONDITION(((cmd == MMC_READ_MULTIPLE_BLOCK) || |
| (cmd == MMC_WRITE_MULTIPLE_BLOCK)) && |
| data)); |
| #endif /* _TRACE_MMC_H */ |
| |
| /* This part must be outside protection */ |
| #include <trace/define_trace.h> |