[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20141219153051.GA5046@ulmo.nvidia.com>
Date: Fri, 19 Dec 2014 16:30:53 +0100
From: Thierry Reding <thierry.reding@...il.com>
To: Mark Zhang <markz@...dia.com>
Cc: Sean Paul <seanpaul@...omium.org>, tbergstrom@...dia.com,
Dave Airlie <airlied@...ux.ie>,
Stephen Warren <swarren@...dotorg.org>, gnurou@...il.com,
dri-devel <dri-devel@...ts.freedesktop.org>,
"linux-tegra@...r.kernel.org" <linux-tegra@...r.kernel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] drm/tegra: dsi: Add suspend/resume support
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@...dia.com> 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
Content of type "application/pgp-signature" skipped
Powered by blists - more mailing lists