Hi Laurent, On Sat, Jan 13, 2018 at 12:14 AM, Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> wrote: > The LVDS encoders used to be described in DT as part of the DU. They now > have their own DT node, linked to the DU using the OF graph bindings. > This allows moving internal LVDS encoder support to a separate driver > modelled as a DRM bridge. Backward compatibility is retained as legacy > DT is patched live to move to the new bindings. > > Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> > --- /dev/null > +++ b/drivers/gpu/drm/rcar-du/rcar_lvds.c > +static void rcar_lvds_enable(struct drm_bridge *bridge) > +{ > + struct rcar_lvds *lvds = bridge_to_rcar_lvds(bridge); > + u32 lvdhcr; > + int ret; > + > + WARN_ON(lvds->enabled); > + > + ret = clk_prepare_enable(lvds->clock); What about starting to use Runtime PM to manage the clock, and thus calling pm_runtime_get_sync() here instead? That will make the driver future-proof w.r.t. LVDS blocks in power domains. You do need a "power-domains" property, though, which may complicate DT runtime patching. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds