RE: [PATCH V1 1/2] mmc: core: Define new vendor ops to enable internal features

From: Sarthak Garg (QUIC)
Date: Fri Apr 14 2023 - 01:30:26 EST


Hi linus,

Thanks for your comments.

As mentioned in the cover letter that these ops are needed to implement clock scaling and partial init features for which we already had below discussions but faced strong resistance from community. Since these were huge code changes so maintainability was the main concern. Hence I have redesigned our entire logic and moved complete code to vendor specific file and to support this new design now I just need these two hooks in suspend and resume functions that’s why I have added these callbacks in host_ops.

I can rename these to vendor_suspend/resume ops to let vendor modify few things needed in suspend/resume paths. Also if you want to suggest any better name then I am open for that also.

Old discussion for Clock scaling feature :
https://patchwork.kernel.org/project/linux-mmc/cover/1571668177-3766-1-git-send-email-rampraka@xxxxxxxxxxxxxx/

Old discussion for Partial init feature :
https://patchwork.kernel.org/project/linux-mmc/patch/1650963852-4173-1-git-send-email-quic_spathi@xxxxxxxxxxx/

Thanks,
Sarthak

> -----Original Message-----
> From: Linus Walleij <linus.walleij@xxxxxxxxxx>
> Sent: Sunday, April 2, 2023 6:19 PM
> To: Sarthak Garg (QUIC) <quic_sartgarg@xxxxxxxxxxx>
> Cc: adrian.hunter@xxxxxxxxx; ulf.hansson@xxxxxxxxxx; linux-
> mmc@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linux-arm-
> msm@xxxxxxxxxxxxxxx; Ram Prakash Gupta (QUIC)
> <quic_rampraka@xxxxxxxxxxx>; Bhaskar Valaboju (QUIC)
> <quic_bhaskarv@xxxxxxxxxxx>; Sachin Gupta (QUIC)
> <quic_sachgupt@xxxxxxxxxxx>; Pradeep Pragallapati (QUIC)
> <quic_pragalla@xxxxxxxxxxx>; Sayali Lokhande (QUIC)
> <quic_sayalil@xxxxxxxxxxx>; Brian Norris <briannorris@xxxxxxxxxxxx>;
> Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>
> Subject: Re: [PATCH V1 1/2] mmc: core: Define new vendor ops to enable
> internal features
>
> Hi Sarthak,
>
> thanks for your patch!
>
> On Sat, Apr 1, 2023 at 6:57 PM Sarthak Garg <quic_sartgarg@xxxxxxxxxxx>
> wrote:
>
> > Define new ops to let vendor enable internal features in
> > mmc_suspend/resume paths like partial init feature.
> >
> > Signed-off-by: Sarthak Garg <quic_sartgarg@xxxxxxxxxxx>
> (...)
>
> > --- a/include/linux/mmc/host.h
> > +++ b/include/linux/mmc/host.h
> > @@ -212,6 +212,10 @@ 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);
> > +
> > + void (*cache_card_properties)(struct mmc_host *host);
> > + bool (*partial_init_card)(struct mmc_host *host);
>
> These have confusing names, first it has nothing to do with cards since the
> callbacks are to the host. Second the functions are named after usecases in a
> certain host rather than function.
>
> I would just call them .suspend() and .resume(), the use is obvious and they are
> called from the driver .suspend() and .resume() hooks.
>
> Yours,
> Linus Walleij