Sorry for the previous reply, Here goes the full explaination: > Rob, > > On Tue, Apr 22, 2014 at 5:04 PM, Rob Clark <robdclark@xxxxxxxxx> wrote: >> So what about, rather than adding drm_panel support to each bridge >> individually, we introduce a drm_panel_bridge (with a form of >> chaining).. ie: >> >> struct drm_panel_bridge { >> struct drm_bridge base; >> struct drm_panel *panel; >> struct drm_bridge *bridge; /* optional */ >> }; >> >> static void drm_panel_bridge_enable(struct drm_bridge *bridge) >> { >> struct drm_panel_bridge *pb = to_panel_bridge(bridge); >> if (pb->bridge) >> pb->bridge->funcs->enable(pb->bridge); >> pb->panel->funcs->enable(pb->panel); >> } >> We cannot call them like this from crtc helpers in the order you mentioned, since each individual bridge chip expects the panel controls at different places. I mean, -- sometimes panel controls needs to be done before bridge controls(ptn3460: before RST_N and PD_N) -- sometimes in between the bridge controls (ps8622: one panel control before SLP_N and one after SLP_N) -- sometimes panel controls needs to be done after bridge controls. So, putting these drm_panel controls inside individual bridge drivers will work, but keeping them in crtc_helpers might break stuff. Thanks and regards, Ajay Kumar _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel