On 26/05/22 15:12, Sarthak Garg wrote: > Define a new vendor ops to let vendor initialize card as wakeup source Did you consider using the existing ->init_card() op? > and enable wakeup capability specially for SDIO cards which supports > waking host from system suspend through external dedicated pins. > > Signed-off-by: Sarthak Garg <quic_sartgarg@xxxxxxxxxxx> > --- > drivers/mmc/core/bus.c | 3 +++ > include/linux/mmc/host.h | 7 +++++++ > 2 files changed, 10 insertions(+) > > diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c > index 58a60afa650b..6192a52288fd 100644 > --- a/drivers/mmc/core/bus.c > +++ b/drivers/mmc/core/bus.c > @@ -364,6 +364,9 @@ int mmc_add_card(struct mmc_card *card) > #endif > card->dev.of_node = mmc_of_find_child_device(card->host, 0); > > + if (card->host->ops->card_init_wakeup) > + card->host->ops->card_init_wakeup(card); > + > device_enable_async_suspend(&card->dev); > > ret = device_add(&card->dev); > diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h > index c193c50ccd78..3bd4374a64b8 100644 > --- a/include/linux/mmc/host.h > +++ b/include/linux/mmc/host.h > @@ -193,6 +193,13 @@ struct mmc_host_ops { > > /* Initialize an SD express card, mandatory for MMC_CAP2_SD_EXP. */ > int (*init_sd_express)(struct mmc_host *host, struct mmc_ios *ios); > + > + /* > + * Optional for vendor to initialize card as wakeup source and > + * enable wakeup capability specially for SDIO cards which supports > + * waking host from suspend through external dedicated pins. > + */ > + void (*card_init_wakeup)(struct mmc_card *card); > }; > > struct mmc_cqe_ops {