1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 27962fc37SBaolin Wang #undef TRACE_SYSTEM 37962fc37SBaolin Wang #define TRACE_SYSTEM mmc 47962fc37SBaolin Wang 57962fc37SBaolin Wang #if !defined(_TRACE_MMC_H) || defined(TRACE_HEADER_MULTI_READ) 67962fc37SBaolin Wang #define _TRACE_MMC_H 77962fc37SBaolin Wang 87962fc37SBaolin Wang #include <linux/blkdev.h> 97962fc37SBaolin Wang #include <linux/mmc/core.h> 107962fc37SBaolin Wang #include <linux/mmc/host.h> 117962fc37SBaolin Wang #include <linux/tracepoint.h> 127962fc37SBaolin Wang 137962fc37SBaolin Wang TRACE_EVENT(mmc_request_start, 147962fc37SBaolin Wang 157962fc37SBaolin Wang TP_PROTO(struct mmc_host *host, struct mmc_request *mrq), 167962fc37SBaolin Wang 177962fc37SBaolin Wang TP_ARGS(host, mrq), 187962fc37SBaolin Wang 197962fc37SBaolin Wang TP_STRUCT__entry( 207962fc37SBaolin Wang __field(u32, cmd_opcode) 217962fc37SBaolin Wang __field(u32, cmd_arg) 227962fc37SBaolin Wang __field(unsigned int, cmd_flags) 237962fc37SBaolin Wang __field(unsigned int, cmd_retries) 247962fc37SBaolin Wang __field(u32, stop_opcode) 257962fc37SBaolin Wang __field(u32, stop_arg) 267962fc37SBaolin Wang __field(unsigned int, stop_flags) 277962fc37SBaolin Wang __field(unsigned int, stop_retries) 287962fc37SBaolin Wang __field(u32, sbc_opcode) 297962fc37SBaolin Wang __field(u32, sbc_arg) 307962fc37SBaolin Wang __field(unsigned int, sbc_flags) 317962fc37SBaolin Wang __field(unsigned int, sbc_retries) 327962fc37SBaolin Wang __field(unsigned int, blocks) 33d2f82254SAdrian Hunter __field(unsigned int, blk_addr) 347962fc37SBaolin Wang __field(unsigned int, blksz) 357962fc37SBaolin Wang __field(unsigned int, data_flags) 36d2f82254SAdrian Hunter __field(int, tag) 377962fc37SBaolin Wang __field(unsigned int, can_retune) 387962fc37SBaolin Wang __field(unsigned int, doing_retune) 397962fc37SBaolin Wang __field(unsigned int, retune_now) 407962fc37SBaolin Wang __field(int, need_retune) 417962fc37SBaolin Wang __field(int, hold_retune) 427962fc37SBaolin Wang __field(unsigned int, retune_period) 437962fc37SBaolin Wang __field(struct mmc_request *, mrq) 447962fc37SBaolin Wang __string(name, mmc_hostname(host)) 457962fc37SBaolin Wang ), 467962fc37SBaolin Wang 477962fc37SBaolin Wang TP_fast_assign( 48d2f82254SAdrian Hunter __entry->cmd_opcode = mrq->cmd ? mrq->cmd->opcode : 0; 49d2f82254SAdrian Hunter __entry->cmd_arg = mrq->cmd ? mrq->cmd->arg : 0; 50d2f82254SAdrian Hunter __entry->cmd_flags = mrq->cmd ? mrq->cmd->flags : 0; 51d2f82254SAdrian Hunter __entry->cmd_retries = mrq->cmd ? mrq->cmd->retries : 0; 527962fc37SBaolin Wang __entry->stop_opcode = mrq->stop ? mrq->stop->opcode : 0; 537962fc37SBaolin Wang __entry->stop_arg = mrq->stop ? mrq->stop->arg : 0; 547962fc37SBaolin Wang __entry->stop_flags = mrq->stop ? mrq->stop->flags : 0; 557962fc37SBaolin Wang __entry->stop_retries = mrq->stop ? mrq->stop->retries : 0; 567962fc37SBaolin Wang __entry->sbc_opcode = mrq->sbc ? mrq->sbc->opcode : 0; 577962fc37SBaolin Wang __entry->sbc_arg = mrq->sbc ? mrq->sbc->arg : 0; 587962fc37SBaolin Wang __entry->sbc_flags = mrq->sbc ? mrq->sbc->flags : 0; 597962fc37SBaolin Wang __entry->sbc_retries = mrq->sbc ? mrq->sbc->retries : 0; 607962fc37SBaolin Wang __entry->blksz = mrq->data ? mrq->data->blksz : 0; 617962fc37SBaolin Wang __entry->blocks = mrq->data ? mrq->data->blocks : 0; 62d2f82254SAdrian Hunter __entry->blk_addr = mrq->data ? mrq->data->blk_addr : 0; 637962fc37SBaolin Wang __entry->data_flags = mrq->data ? mrq->data->flags : 0; 64d2f82254SAdrian Hunter __entry->tag = mrq->tag; 657962fc37SBaolin Wang __entry->can_retune = host->can_retune; 667962fc37SBaolin Wang __entry->doing_retune = host->doing_retune; 677962fc37SBaolin Wang __entry->retune_now = host->retune_now; 687962fc37SBaolin Wang __entry->need_retune = host->need_retune; 697962fc37SBaolin Wang __entry->hold_retune = host->hold_retune; 707962fc37SBaolin Wang __entry->retune_period = host->retune_period; 717962fc37SBaolin Wang __assign_str(name, mmc_hostname(host)); 727962fc37SBaolin Wang __entry->mrq = mrq; 737962fc37SBaolin Wang ), 747962fc37SBaolin Wang 757962fc37SBaolin Wang TP_printk("%s: start struct mmc_request[%p]: " 767962fc37SBaolin Wang "cmd_opcode=%u cmd_arg=0x%x cmd_flags=0x%x cmd_retries=%u " 777962fc37SBaolin Wang "stop_opcode=%u stop_arg=0x%x stop_flags=0x%x stop_retries=%u " 787962fc37SBaolin Wang "sbc_opcode=%u sbc_arg=0x%x sbc_flags=0x%x sbc_retires=%u " 79d2f82254SAdrian Hunter "blocks=%u block_size=%u blk_addr=%u data_flags=0x%x " 80d2f82254SAdrian Hunter "tag=%d can_retune=%u doing_retune=%u retune_now=%u " 817962fc37SBaolin Wang "need_retune=%d hold_retune=%d retune_period=%u", 827962fc37SBaolin Wang __get_str(name), __entry->mrq, 837962fc37SBaolin Wang __entry->cmd_opcode, __entry->cmd_arg, 847962fc37SBaolin Wang __entry->cmd_flags, __entry->cmd_retries, 857962fc37SBaolin Wang __entry->stop_opcode, __entry->stop_arg, 867962fc37SBaolin Wang __entry->stop_flags, __entry->stop_retries, 877962fc37SBaolin Wang __entry->sbc_opcode, __entry->sbc_arg, 887962fc37SBaolin Wang __entry->sbc_flags, __entry->sbc_retries, 89*c658dc58SAdrian Hunter __entry->blocks, __entry->blksz, 90*c658dc58SAdrian Hunter __entry->blk_addr, __entry->data_flags, __entry->tag, 917962fc37SBaolin Wang __entry->can_retune, __entry->doing_retune, 927962fc37SBaolin Wang __entry->retune_now, __entry->need_retune, 937962fc37SBaolin Wang __entry->hold_retune, __entry->retune_period) 947962fc37SBaolin Wang ); 957962fc37SBaolin Wang 967962fc37SBaolin Wang TRACE_EVENT(mmc_request_done, 977962fc37SBaolin Wang 987962fc37SBaolin Wang TP_PROTO(struct mmc_host *host, struct mmc_request *mrq), 997962fc37SBaolin Wang 1007962fc37SBaolin Wang TP_ARGS(host, mrq), 1017962fc37SBaolin Wang 1027962fc37SBaolin Wang TP_STRUCT__entry( 1037962fc37SBaolin Wang __field(u32, cmd_opcode) 1047962fc37SBaolin Wang __field(int, cmd_err) 1057962fc37SBaolin Wang __array(u32, cmd_resp, 4) 1067962fc37SBaolin Wang __field(unsigned int, cmd_retries) 1077962fc37SBaolin Wang __field(u32, stop_opcode) 1087962fc37SBaolin Wang __field(int, stop_err) 1097962fc37SBaolin Wang __array(u32, stop_resp, 4) 1107962fc37SBaolin Wang __field(unsigned int, stop_retries) 1117962fc37SBaolin Wang __field(u32, sbc_opcode) 1127962fc37SBaolin Wang __field(int, sbc_err) 1137962fc37SBaolin Wang __array(u32, sbc_resp, 4) 1147962fc37SBaolin Wang __field(unsigned int, sbc_retries) 1157962fc37SBaolin Wang __field(unsigned int, bytes_xfered) 1167962fc37SBaolin Wang __field(int, data_err) 117d2f82254SAdrian Hunter __field(int, tag) 1187962fc37SBaolin Wang __field(unsigned int, can_retune) 1197962fc37SBaolin Wang __field(unsigned int, doing_retune) 1207962fc37SBaolin Wang __field(unsigned int, retune_now) 1217962fc37SBaolin Wang __field(int, need_retune) 1227962fc37SBaolin Wang __field(int, hold_retune) 1237962fc37SBaolin Wang __field(unsigned int, retune_period) 1247962fc37SBaolin Wang __field(struct mmc_request *, mrq) 1257962fc37SBaolin Wang __string(name, mmc_hostname(host)) 1267962fc37SBaolin Wang ), 1277962fc37SBaolin Wang 1287962fc37SBaolin Wang TP_fast_assign( 129d2f82254SAdrian Hunter __entry->cmd_opcode = mrq->cmd ? mrq->cmd->opcode : 0; 130d2f82254SAdrian Hunter __entry->cmd_err = mrq->cmd ? mrq->cmd->error : 0; 131d2f82254SAdrian Hunter __entry->cmd_resp[0] = mrq->cmd ? mrq->cmd->resp[0] : 0; 132d2f82254SAdrian Hunter __entry->cmd_resp[1] = mrq->cmd ? mrq->cmd->resp[1] : 0; 133d2f82254SAdrian Hunter __entry->cmd_resp[2] = mrq->cmd ? mrq->cmd->resp[2] : 0; 134d2f82254SAdrian Hunter __entry->cmd_resp[3] = mrq->cmd ? mrq->cmd->resp[3] : 0; 135d2f82254SAdrian Hunter __entry->cmd_retries = mrq->cmd ? mrq->cmd->retries : 0; 1367962fc37SBaolin Wang __entry->stop_opcode = mrq->stop ? mrq->stop->opcode : 0; 1377962fc37SBaolin Wang __entry->stop_err = mrq->stop ? mrq->stop->error : 0; 1387962fc37SBaolin Wang __entry->stop_resp[0] = mrq->stop ? mrq->stop->resp[0] : 0; 1397962fc37SBaolin Wang __entry->stop_resp[1] = mrq->stop ? mrq->stop->resp[1] : 0; 1407962fc37SBaolin Wang __entry->stop_resp[2] = mrq->stop ? mrq->stop->resp[2] : 0; 1417962fc37SBaolin Wang __entry->stop_resp[3] = mrq->stop ? mrq->stop->resp[3] : 0; 1427962fc37SBaolin Wang __entry->stop_retries = mrq->stop ? mrq->stop->retries : 0; 1437962fc37SBaolin Wang __entry->sbc_opcode = mrq->sbc ? mrq->sbc->opcode : 0; 1447962fc37SBaolin Wang __entry->sbc_err = mrq->sbc ? mrq->sbc->error : 0; 1457962fc37SBaolin Wang __entry->sbc_resp[0] = mrq->sbc ? mrq->sbc->resp[0] : 0; 1467962fc37SBaolin Wang __entry->sbc_resp[1] = mrq->sbc ? mrq->sbc->resp[1] : 0; 1477962fc37SBaolin Wang __entry->sbc_resp[2] = mrq->sbc ? mrq->sbc->resp[2] : 0; 1487962fc37SBaolin Wang __entry->sbc_resp[3] = mrq->sbc ? mrq->sbc->resp[3] : 0; 1497962fc37SBaolin Wang __entry->sbc_retries = mrq->sbc ? mrq->sbc->retries : 0; 1507962fc37SBaolin Wang __entry->bytes_xfered = mrq->data ? mrq->data->bytes_xfered : 0; 1517962fc37SBaolin Wang __entry->data_err = mrq->data ? mrq->data->error : 0; 152d2f82254SAdrian Hunter __entry->tag = mrq->tag; 1537962fc37SBaolin Wang __entry->can_retune = host->can_retune; 1547962fc37SBaolin Wang __entry->doing_retune = host->doing_retune; 1557962fc37SBaolin Wang __entry->retune_now = host->retune_now; 1567962fc37SBaolin Wang __entry->need_retune = host->need_retune; 1577962fc37SBaolin Wang __entry->hold_retune = host->hold_retune; 1587962fc37SBaolin Wang __entry->retune_period = host->retune_period; 1597962fc37SBaolin Wang __assign_str(name, mmc_hostname(host)); 1607962fc37SBaolin Wang __entry->mrq = mrq; 1617962fc37SBaolin Wang ), 1627962fc37SBaolin Wang 1637962fc37SBaolin Wang TP_printk("%s: end struct mmc_request[%p]: " 1647962fc37SBaolin Wang "cmd_opcode=%u cmd_err=%d cmd_resp=0x%x 0x%x 0x%x 0x%x " 1657962fc37SBaolin Wang "cmd_retries=%u stop_opcode=%u stop_err=%d " 1667962fc37SBaolin Wang "stop_resp=0x%x 0x%x 0x%x 0x%x stop_retries=%u " 1677962fc37SBaolin Wang "sbc_opcode=%u sbc_err=%d sbc_resp=0x%x 0x%x 0x%x 0x%x " 168d2f82254SAdrian Hunter "sbc_retries=%u bytes_xfered=%u data_err=%d tag=%d " 1697962fc37SBaolin Wang "can_retune=%u doing_retune=%u retune_now=%u need_retune=%d " 1707962fc37SBaolin Wang "hold_retune=%d retune_period=%u", 1717962fc37SBaolin Wang __get_str(name), __entry->mrq, 1727962fc37SBaolin Wang __entry->cmd_opcode, __entry->cmd_err, 1737962fc37SBaolin Wang __entry->cmd_resp[0], __entry->cmd_resp[1], 1747962fc37SBaolin Wang __entry->cmd_resp[2], __entry->cmd_resp[3], 1757962fc37SBaolin Wang __entry->cmd_retries, 1767962fc37SBaolin Wang __entry->stop_opcode, __entry->stop_err, 1777962fc37SBaolin Wang __entry->stop_resp[0], __entry->stop_resp[1], 1787962fc37SBaolin Wang __entry->stop_resp[2], __entry->stop_resp[3], 1797962fc37SBaolin Wang __entry->stop_retries, 1807962fc37SBaolin Wang __entry->sbc_opcode, __entry->sbc_err, 1817962fc37SBaolin Wang __entry->sbc_resp[0], __entry->sbc_resp[1], 1827962fc37SBaolin Wang __entry->sbc_resp[2], __entry->sbc_resp[3], 1837962fc37SBaolin Wang __entry->sbc_retries, 184d2f82254SAdrian Hunter __entry->bytes_xfered, __entry->data_err, __entry->tag, 1857962fc37SBaolin Wang __entry->can_retune, __entry->doing_retune, 1867962fc37SBaolin Wang __entry->retune_now, __entry->need_retune, 1877962fc37SBaolin Wang __entry->hold_retune, __entry->retune_period) 1887962fc37SBaolin Wang ); 1897962fc37SBaolin Wang 1907962fc37SBaolin Wang #endif /* _TRACE_MMC_H */ 1917962fc37SBaolin Wang 1927962fc37SBaolin Wang /* This part must be outside protection */ 1937962fc37SBaolin Wang #include <trace/define_trace.h> 194