diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index c41f1f7e90a4..19cf91ca7835 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -459,3 +459,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_oom_swapmem_gather_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_read_fault); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_read); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_map_pages); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_blk_reset); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_attach_sd); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sdhci_get_cd); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_gpio_cd_irqt); diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index 735dfd57a5bd..cb9abe7f72be 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -1068,8 +1068,10 @@ static int mmc_blk_reset(struct mmc_blk_data *md, struct mmc_host *host, * in that case. */ main_md->part_curr = err ? MMC_BLK_PART_INVALID : main_md->part_type; - if (err) + if (err) { + trace_android_vh_mmc_blk_reset(host, err); return err; + } /* Ensure we switch back to the correct partition */ if (mmc_blk_part_switch(host->card, md->part_type)) /* diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index 45738e66d15a..95818d54f8ca 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c @@ -1885,5 +1885,7 @@ err: pr_err("%s: error %d whilst initialising SD card\n", mmc_hostname(host), err); + trace_android_vh_mmc_attach_sd(host, err); + return err; } diff --git a/drivers/mmc/core/slot-gpio.c b/drivers/mmc/core/slot-gpio.c index d5145c1ee81e..d7a6014392df 100644 --- a/drivers/mmc/core/slot-gpio.c +++ b/drivers/mmc/core/slot-gpio.c @@ -13,6 +13,7 @@ #include #include #include +#include #include "slot-gpio.h" @@ -31,6 +32,8 @@ static irqreturn_t mmc_gpio_cd_irqt(int irq, void *dev_id) struct mmc_host *host = dev_id; struct mmc_gpio *ctx = host->slot.handler_priv; + trace_android_vh_mmc_gpio_cd_irqt(host); + host->trigger_card_event = true; mmc_detect_change(host, msecs_to_jiffies(ctx->cd_debounce_delay_ms)); diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 536d21028a11..071aa16baa98 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -31,6 +31,7 @@ #include #include #include +#include #include "sdhci.h" @@ -2502,6 +2503,8 @@ static int sdhci_get_cd(struct mmc_host *mmc) if (!mmc_card_is_removable(mmc)) return 1; + trace_android_vh_sdhci_get_cd(host); + /* * Try slot gpio detect, if defined it take precedence * over build in controller functionality diff --git a/include/trace/hooks/mmc.h b/include/trace/hooks/mmc.h index d24319cdfee3..c18ccef67458 100644 --- a/include/trace/hooks/mmc.h +++ b/include/trace/hooks/mmc.h @@ -9,6 +9,7 @@ struct mmc_host; struct mmc_card; struct mmc_queue; +struct sdhci_host; /* * Following tracepoints are not exported in tracefs and provide a @@ -34,6 +35,22 @@ DECLARE_HOOK(android_vh_mmc_update_mmc_queue, TP_PROTO(struct mmc_card *card, struct mmc_queue *mq), TP_ARGS(card, mq)); +DECLARE_HOOK(android_vh_mmc_blk_reset, + TP_PROTO(struct mmc_host *host, int err), + TP_ARGS(host, err)); + +DECLARE_HOOK(android_vh_mmc_attach_sd, + TP_PROTO(struct mmc_host *host, int err), + TP_ARGS(host, err)); + +DECLARE_HOOK(android_vh_sdhci_get_cd, + TP_PROTO(struct sdhci_host *host), + TP_ARGS(host)); + +DECLARE_HOOK(android_vh_mmc_gpio_cd_irqt, + TP_PROTO(struct mmc_host *host), + TP_ARGS(host)); + #endif /* _TRACE_HOOK_MMC_H */ /* This part must be outside protection */ #include