Re: [PATCH v1] mtd: rawnand: cafe: Use generic power management'

Vaibhav Gupta
2026-02-21T07:53:35Z

On Tue, Feb 17, 2026 at 09:55:25AM -0600, Bjorn Helgaas wrote:
> On Mon, Feb 16, 2026 at 09:02:44AM +0000, Vaibhav Gupta wrote:
> > Switch to the generic PCI power management framework and remove legacy
> > callbacks like .resume(). With the generic framework, the standard PCI
> > related work like:
> > - pci_save/restore_state()
> > - pci_enable/disable_device()
> > - pci_set_power_state()
> > is handled by the PCI core.
> >
> > This driver should implement only cafe_nand specific operations in its
> > callback function for resume.
>
> Looks good to me, thanks for doing this!
>
> I think the commit log is a bit overly specific since this driver
> never did any of the PCI-related work it mentions. IMO something like
> this would be sufficient:
>
> Switch from PCI power management to the generic power management
> framework so the pci_driver hooks can eventually be retired.
>
> Reviewed-by: Bjorn Helgaas <bhelgaas@google.com>
>
Hey Bjorn,

Thanks for the review. I will send a v2, and I will add your review tag there.

Thanks!

-- Vaibhav
> > Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
> > ---
> > drivers/mtd/nand/raw/cafe_nand.c | 7 +++++--
> > 1 file changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/mtd/nand/raw/cafe_nand.c b/drivers/mtd/nand/raw/cafe_nand.c
> > index 66385c4fb994..af771c379ec1 100644
> > --- a/drivers/mtd/nand/raw/cafe_nand.c
> > +++ b/drivers/mtd/nand/raw/cafe_nand.c
> > @@ -837,9 +837,10 @@ static const struct pci_device_id cafe_nand_tbl[] = {
> >
> > MODULE_DEVICE_TABLE(pci, cafe_nand_tbl);
> >
> > -static int cafe_nand_resume(struct pci_dev *pdev)
> > +static int cafe_nand_resume(struct device *dev)
> > {
> > uint32_t ctrl;
> > + struct pci_dev *pdev = to_pci_dev(dev);
> > struct mtd_info *mtd = pci_get_drvdata(pdev);
> > struct nand_chip *chip = mtd_to_nand(mtd);
> > struct cafe_priv *cafe = nand_get_controller_data(chip);
> > @@ -877,12 +878,14 @@ static int cafe_nand_resume(struct pci_dev *pdev)
> > return 0;
> > }
> >
> > +static DEFINE_SIMPLE_DEV_PM_OPS(cafe_nand_ops, NULL, cafe_nand_resume);
> > +
> > static struct pci_driver cafe_nand_pci_driver = {
> > .name = "CAFÉ NAND",
> > .id_table = cafe_nand_tbl,
> > .probe = cafe_nand_probe,
> > .remove = cafe_nand_remove,
> > - .resume = cafe_nand_resume,
> > + .driver.pm = &cafe_nand_ops,
> > };
> >
> > module_pci_driver(cafe_nand_pci_driver);
> > --
> > 2.53.0
> >