Re: [PATCH] drm/tegra: dsi: Add suspend/resume support

From: Thierry Reding
Date: Fri Dec 19 2014 - 10:31:06 EST


On Wed, Dec 10, 2014 at 10:08:57AM +0800, Mark Zhang wrote:
> On 12/10/2014 03:29 AM, Sean Paul wrote:
> > On Sun, Dec 7, 2014 at 10:40 PM, Mark Zhang <markz@xxxxxxxxxx> wrote:
[...]
> >>
> >> err = clk_set_rate(dsi->clk_parent, plld);
> >> if (err < 0) {
> [...]
> >> +
> >> + drm_modeset_lock_all(tegra->drm);
> >> + list_for_each_entry(connector, &tegra->drm->mode_config.connector_list,
> >> + head) {
> >> + if (connector->funcs->dpms)
> >> + connector->funcs->dpms(connector, connector->dpms);
> >> + }
> >> + drm_modeset_unlock_all(tegra->drm);
> >> +
> >> + drm_helper_resume_force_mode(tegra->drm);
> >> +
> >> + return 0;
> >> +}
> >> +#endif
> >
> > So this is the tricky chunk, it definitely does not belong here. I
> > think it makes most sense for this to live in drm.c, however
> > host1x_driver doesn't have suspend/resume hooks.
> >
>
> Agree. drm.c is the best place for putting this.
>
> > I suspect the correct thing to do here is to add them to
> > host1x_driver, but I'm not sure how much effort is involved in doing
> > that.
> >
>
> I thought about this before. If we do it in host1x driver, IIUC, it
> means that when host1x starts suspending, it will suspend all host1x
> client devices, right? Honestly I feel this is not a good thing despite
> I can't tell what's the problem in this right now...

I've just sent out patches for review that add the missing
infrastructure to properly do suspend/resume. The idea behind this is
that the DRM host1x device's ->pm_ops are responsible for dealing with
the suspend/resume at a subsystem level (call connectors' ->dpms()
callbacks, etc.) whereas more fine-grained suspend/resume can further be
done in the ->pm_ops of the individual subdevices. The infrastructure
makes sure that these get called in the right order.

Thierry

Attachment: pgpaXyH1ebPnQ.pgp
Description: PGP signature