Re: [PATCH v2 13/19] media: sunxi: Add support for the A31 MIPI CSI-2 controller

From: Paul Kocialkowski
Date: Wed Dec 02 2020 - 11:10:11 EST


Hi,

On Wed 02 Dec 20, 16:48, Maxime Ripard wrote:
> On Wed, Dec 02, 2020 at 03:44:47PM +0100, Paul Kocialkowski wrote:
> > > > +static int __maybe_unused sun6i_mipi_csi2_suspend(struct device *dev)
> > > > +{
> > > > + struct sun6i_mipi_csi2_dev *cdev = dev_get_drvdata(dev);
> > > > +
> > > > + clk_disable_unprepare(cdev->clk_mod);
> > > > + clk_disable_unprepare(cdev->clk_bus);
> > > > + reset_control_assert(cdev->reset);
> > > > +
> > > > + return 0;
> > > > +}
> > > > +
> > > > +static int __maybe_unused sun6i_mipi_csi2_resume(struct device *dev)
> > > > +{
> > > > + struct sun6i_mipi_csi2_dev *cdev = dev_get_drvdata(dev);
> > > > + int ret;
> > > > +
> > > > + ret = reset_control_deassert(cdev->reset);
> > > > + if (ret) {
> > > > + dev_err(cdev->dev, "failed to deassert reset\n");
> > > > + return ret;
> > > > + }
> > > > +
> > > > + ret = clk_prepare_enable(cdev->clk_bus);
> > > > + if (ret) {
> > > > + dev_err(cdev->dev, "failed to enable bus clock\n");
> > > > + goto error_reset;
> > > > + }
> > > > +
> > > > + ret = clk_prepare_enable(cdev->clk_mod);
> > > > + if (ret) {
> > > > + dev_err(cdev->dev, "failed to enable module clock\n");
> > > > + goto error_clk_bus;
> > > > + }
> > > > +
> > > > + return 0;
> > > > +
> > > > +error_clk_bus:
> > > > + clk_disable_unprepare(cdev->clk_bus);
> > > > +
> > > > +error_reset:
> > > > + reset_control_assert(cdev->reset);
> > > > +
> > > > + return ret;
> > > > +}
> > >
> > > I'm guessing you set the __maybe_unused attribute because you're using
> > > SET_RUNTIME_PM_OPS, but what would happen if runtime_pm isn't selected?
> > > It looks like you don't handle that case.
> >
> > Indeed, __maybe_unused is because of the conditional definition of
> > SET_RUNTIME_PM_OPS. If CONFIG_PM is not selected, then I guess the controller
> > wouldn't be powered and wouldn't work. So I should definitely add a Kconfig
> > dependency on PM then, right?
>
> There's two ways we can do it. What you suggested is one, the other is
> to have something like our SPI driver to call directly the resume
> function if there's no runtime pm support.

Understood! I think I'll stick to depending on PM (unless you prefer not to)
but it's good to know.

Cheers,

Paul

--
Paul Kocialkowski, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com

Attachment: signature.asc
Description: PGP signature