Message ID | 20221013-rpi-dpi-improvements-v1-6-8a7a96949cb0@cerno.tech (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/vc4: dpi: Various improvements | expand |
Hi Maxime (and Dave), Thank you for the patch. On Thu, Oct 13, 2022 at 11:56:50AM +0200, Maxime Ripard wrote: > From: Dave Stevenson <dave.stevenson@raspberrypi.com> > > DPI hasn't really been used up until now, so the default has > been meaningless. > In theory we should be able to pass the desired format for the > adjacent bridge chip through, but framework seems to be missing > for that. Doesn't the bridge infrastructure allow that ? Or maybe this commit message was written a while ago, before it was possible ? In any case, it would be nice to use the bus format exposed by the next bridge in the chain, but that can be done in a subsequent step. The new default seems reasonable. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > As the main device to use DPI is the VGA666 or Adafruit Kippah, > both of which use RGB666, change the default to being RGB666 instead > of RGB888. > > Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> > Signed-off-by: Maxime Ripard <maxime@cerno.tech> > --- > drivers/gpu/drm/vc4/vc4_dpi.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c > index ecbe4cd87036..fdae02760b6d 100644 > --- a/drivers/gpu/drm/vc4/vc4_dpi.c > +++ b/drivers/gpu/drm/vc4/vc4_dpi.c > @@ -150,8 +150,8 @@ static void vc4_dpi_encoder_enable(struct drm_encoder *encoder) > } > drm_connector_list_iter_end(&conn_iter); > > - /* Default to 24bit if no connector or format found. */ > - dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB, DPI_FORMAT); > + /* Default to 18bit if no connector or format found. */ > + dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1, DPI_FORMAT); > > if (connector) { > if (connector->display_info.num_bus_formats) { >
Hi Laurent On Sat, 15 Oct 2022 at 18:14, Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > > Hi Maxime (and Dave), > > Thank you for the patch. > > On Thu, Oct 13, 2022 at 11:56:50AM +0200, Maxime Ripard wrote: > > From: Dave Stevenson <dave.stevenson@raspberrypi.com> > > > > DPI hasn't really been used up until now, so the default has > > been meaningless. > > In theory we should be able to pass the desired format for the > > adjacent bridge chip through, but framework seems to be missing > > for that. > > Doesn't the bridge infrastructure allow that ? Or maybe this commit > message was written a while ago, before it was possible ? Infrastructure may do, but it isn't always implemented. Rightly or wrongly, the driver is currently finding the associated connector, as commented as [1]. The main chain I'm looking is: vc4_dpi -> dumb-vga-dac -> vga-connector Unless I'm missing something, nothing in that chain defines the format for the output. vga-connector (display-connector driver) tries to ask the previous bridge for formats via atomic_get_output_bus_fmts and atomic_get_input_fmts, but dumb-vga-dac (simple-bridge) doesn't implement them. So even if we tried following the chain it dies due to , and currently the connector has no bus_formats defined in display_info, hence we end up needing a default. (Why do I get deja vu with panel-dpi and bus-format discussions?!) Panels are fine as they do generally have a bus_format defined in display_info. [1] https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/vc4/vc4_dpi.c#L139 > In any case, it would be nice to use the bus format exposed by the next > bridge in the chain, but that can be done in a subsequent step. The new > default seems reasonable. I'll add having a look at atomic_get_output_bus_fmts and atomic_get_input_fmts to my list of tasks again. Dave > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > > As the main device to use DPI is the VGA666 or Adafruit Kippah, > > both of which use RGB666, change the default to being RGB666 instead > > of RGB888. > > > > Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> > > Signed-off-by: Maxime Ripard <maxime@cerno.tech> > > --- > > drivers/gpu/drm/vc4/vc4_dpi.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c > > index ecbe4cd87036..fdae02760b6d 100644 > > --- a/drivers/gpu/drm/vc4/vc4_dpi.c > > +++ b/drivers/gpu/drm/vc4/vc4_dpi.c > > @@ -150,8 +150,8 @@ static void vc4_dpi_encoder_enable(struct drm_encoder *encoder) > > } > > drm_connector_list_iter_end(&conn_iter); > > > > - /* Default to 24bit if no connector or format found. */ > > - dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB, DPI_FORMAT); > > + /* Default to 18bit if no connector or format found. */ > > + dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1, DPI_FORMAT); > > > > if (connector) { > > if (connector->display_info.num_bus_formats) { > > > > -- > Regards, > > Laurent Pinchart
diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c index ecbe4cd87036..fdae02760b6d 100644 --- a/drivers/gpu/drm/vc4/vc4_dpi.c +++ b/drivers/gpu/drm/vc4/vc4_dpi.c @@ -150,8 +150,8 @@ static void vc4_dpi_encoder_enable(struct drm_encoder *encoder) } drm_connector_list_iter_end(&conn_iter); - /* Default to 24bit if no connector or format found. */ - dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB, DPI_FORMAT); + /* Default to 18bit if no connector or format found. */ + dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1, DPI_FORMAT); if (connector) { if (connector->display_info.num_bus_formats) {