Hi Fabrizio, Thank you for the patch. On Fri, Aug 02, 2019 at 08:34:02AM +0100, Fabrizio Castro wrote: > When in vertical stripe mode of operation, there is the option > of swapping even data and odd data on the two LVDS interfaces > used to drive the video output. > Add data swap support by exposing a new DT property named > "renesas,swap-data". > > Signed-off-by: Fabrizio Castro <fabrizio.castro@xxxxxxxxxxxxxx> > --- > drivers/gpu/drm/rcar-du/rcar_lvds.c | 23 ++++++++++++++++------- > 1 file changed, 16 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/rcar-du/rcar_lvds.c b/drivers/gpu/drm/rcar-du/rcar_lvds.c > index 3aeaf9e..c306fab 100644 > --- a/drivers/gpu/drm/rcar-du/rcar_lvds.c > +++ b/drivers/gpu/drm/rcar-du/rcar_lvds.c > @@ -69,6 +69,7 @@ struct rcar_lvds { > > struct drm_bridge *companion; > bool dual_link; > + bool stripe_swap_data; > }; > > #define bridge_to_rcar_lvds(bridge) \ > @@ -439,12 +440,16 @@ static void rcar_lvds_enable(struct drm_bridge *bridge) > rcar_lvds_write(lvds, LVDCHCR, lvdhcr); > > if (lvds->info->quirks & RCAR_LVDS_QUIRK_DUAL_LINK) { > - /* > - * Configure vertical stripe based on the mode of operation of > - * the connected device. > - */ > - rcar_lvds_write(lvds, LVDSTRIPE, > - lvds->dual_link ? LVDSTRIPE_ST_ON : 0); > + u32 lvdstripe = 0; > + > + if (lvds->dual_link) > + /* > + * Configure vertical stripe based on the mode of > + * operation of the connected device. > + */ > + lvdstripe = LVDSTRIPE_ST_ON | (lvds->stripe_swap_data ? > + LVDSTRIPE_ST_SWAP : 0); Would the following be simpler ? lvdstripe = (lvds->dual_link ? LVDSTRIPE_ST_ON : 0) | (lvds->stripe_swap_data ? LVDSTRIPE_ST_SWAP : 0); > + rcar_lvds_write(lvds, LVDSTRIPE, lvdstripe); > } > > /* > @@ -770,8 +775,12 @@ static int rcar_lvds_parse_dt(struct rcar_lvds *lvds) > } > } > > - if (lvds->dual_link) > + if (lvds->dual_link) { > + lvds->stripe_swap_data = of_property_read_bool( > + lvds->dev->of_node, > + "renesas,swap-data"); > ret = rcar_lvds_parse_dt_companion(lvds); > + } As explained in the review of the corresponding DT bindings, I think this should be queried from the remote device rather than specified in DT. > > done: > of_node_put(local_output); -- Regards, Laurent Pinchart _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel