[PATCH] drm: call connector->dpms(OFF) when disabling
Rob Clark
rob.clark at linaro.org
Fri Sep 28 03:54:17 PDT 2012
On Fri, Sep 28, 2012 at 11:56 AM, Daniel Vetter <daniel at ffwll.ch> wrote:
> On Fri, Sep 28, 2012 at 09:27:18AM +0200, Rob Clark wrote:
>> From: Rob Clark <rob at ti.com>
>>
>> When disabling unused connectors, be sure to call connector->dpms(OFF),
>> so if there is actually some IP to turn off (such as external bridge
>> chips, etc), these actually do get turned off.
>>
>> Signed-off-by: Rob Clark <rob at ti.com>
>> Tested-by: Roger Quadros <rogerq at ti.com>
>
> I think this runs counter to the crtc helper design: connectors are pretty
> much just dummy entities, and any dpms handling is done in the
> encoders/crtcs. If you call connector->funcs->dpms you don't call a crtc
> helper function, but actually the official dpms interface (which then
> again calls down into the encoder/crtc dpms callbacks (which are again
> crtc helper private). This functions are called again a few lines down in
> disable_unused_functions anyway, so the only way this changes behaviour is
> if you already overwrite the dpms interface and don't directly use
> drm_helper_connector_dpms.
yeah, I do this.. I have my own fxn in the connector which does some
stuff, and then calls drm_helper_connector_dpms().
Maybe it just makes sense to always do connector->dpms(OFF) before
unhooking the chain, rather than directly calling dpms on the
encoder/crtc?
> Which is imo a clear sign that the crtc helper is a misfit for your hw and
> you should stop using it ;-) And adding special-case handling like this
> into common code, especially if it weakens the semantic concepts in the
> helper layer is a recipe for a maintainance disaster a few years down the
> road. Hence
well, I think by the time we start adding atomic-modeset and
common/dsi panel framework, there might be need for a new set of
helpers.. but I'm not sure that the hw is quite strange enough to need
an omap specific set of helpers. Maybe I start w/ something in
omapdrm but then refactor into common functions once a few drivers are
converted to atomic modeset and panel framework.
BR,
-R
>
> NACKed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
>
> Cheers, Daniel
>>
>> ---
>> drivers/gpu/drm/drm_crtc_helper.c | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
>> index 3252e70..000cda4 100644
>> --- a/drivers/gpu/drm/drm_crtc_helper.c
>> +++ b/drivers/gpu/drm/drm_crtc_helper.c
>> @@ -244,16 +244,16 @@ void drm_helper_disable_unused_functions(struct drm_device *dev)
>> struct drm_crtc *crtc;
>>
>> list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
>> - if (!connector->encoder)
>> - continue;
>> if (connector->status == connector_status_disconnected)
>> connector->encoder = NULL;
>> + if (!connector->encoder)
>> + connector->funcs->dpms(connector, DRM_MODE_DPMS_OFF);
>> }
>>
>> list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
>> if (!drm_helper_encoder_in_use(encoder)) {
>> drm_encoder_disable(encoder);
>> - /* disconnector encoder from any connector */
>> + /* disconnect encoder from any connector */
>> encoder->crtc = NULL;
>> }
>> }
>> --
>> 1.7.9.5
>>
>> _______________________________________________
>> dri-devel mailing list
>>
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list