From: Joerg Quinten <[email protected]>
The VC4 DPI output can support multiple BGR666 variants, but they were
never added to the driver. Let's add the the support for those formats.
Signed-off-by: Joerg Quinten <[email protected]>
Signed-off-by: Maxime Ripard <[email protected]>
---
drivers/gpu/drm/vc4/vc4_dpi.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c
index 7da3dd1db50e..ecbe4cd87036 100644
--- a/drivers/gpu/drm/vc4/vc4_dpi.c
+++ b/drivers/gpu/drm/vc4/vc4_dpi.c
@@ -170,10 +170,16 @@ static void vc4_dpi_encoder_enable(struct drm_encoder *encoder)
dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR,
DPI_ORDER);
break;
+ case MEDIA_BUS_FMT_BGR666_1X24_CPADHI:
+ dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
+ fallthrough;
case MEDIA_BUS_FMT_RGB666_1X24_CPADHI:
dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
DPI_FORMAT);
break;
+ case MEDIA_BUS_FMT_BGR666_1X18:
+ dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
+ fallthrough;
case MEDIA_BUS_FMT_RGB666_1X18:
dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
DPI_FORMAT);
--
b4 0.11.0-dev-7da52
Hi Maxime and Joerg,
Thank you for the patch.
On Thu, Oct 13, 2022 at 11:56:49AM +0200, Maxime Ripard wrote:
> From: Joerg Quinten <[email protected]>
>
> The VC4 DPI output can support multiple BGR666 variants, but they were
> never added to the driver. Let's add the the support for those formats.
>
> Signed-off-by: Joerg Quinten <[email protected]>
> Signed-off-by: Maxime Ripard <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
> ---
> drivers/gpu/drm/vc4/vc4_dpi.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c
> index 7da3dd1db50e..ecbe4cd87036 100644
> --- a/drivers/gpu/drm/vc4/vc4_dpi.c
> +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
> @@ -170,10 +170,16 @@ static void vc4_dpi_encoder_enable(struct drm_encoder *encoder)
> dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR,
> DPI_ORDER);
> break;
> + case MEDIA_BUS_FMT_BGR666_1X24_CPADHI:
> + dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
> + fallthrough;
> case MEDIA_BUS_FMT_RGB666_1X24_CPADHI:
> dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
> DPI_FORMAT);
> break;
> + case MEDIA_BUS_FMT_BGR666_1X18:
> + dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
> + fallthrough;
> case MEDIA_BUS_FMT_RGB666_1X18:
> dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
> DPI_FORMAT);
>
--
Regards,
Laurent Pinchart
On Sat, Oct 15, 2022 at 08:26:48PM +0300, Laurent Pinchart wrote:
> Hi Maxime and Joerg,
>
> Thank you for the patch.
>
> On Thu, Oct 13, 2022 at 11:56:49AM +0200, Maxime Ripard wrote:
> > From: Joerg Quinten <[email protected]>
> >
> > The VC4 DPI output can support multiple BGR666 variants, but they were
> > never added to the driver. Let's add the the support for those formats.
> >
> > Signed-off-by: Joerg Quinten <[email protected]>
> > Signed-off-by: Maxime Ripard <[email protected]>
>
> Reviewed-by: Laurent Pinchart <[email protected]>
>
> > ---
> > drivers/gpu/drm/vc4/vc4_dpi.c | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c
> > index 7da3dd1db50e..ecbe4cd87036 100644
> > --- a/drivers/gpu/drm/vc4/vc4_dpi.c
> > +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
> > @@ -170,10 +170,16 @@ static void vc4_dpi_encoder_enable(struct drm_encoder *encoder)
> > dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR,
> > DPI_ORDER);
> > break;
> > + case MEDIA_BUS_FMT_BGR666_1X24_CPADHI:
> > + dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
> > + fallthrough;
Upon closer inspection of the code, I think you also need
- dpi_c &= ~DPI_FORMAT_MASK;
+ dpi_c &= ~(DPI_ORDER_MASK | DPI_FORMAT_MASK);
a few lines above.
> > case MEDIA_BUS_FMT_RGB666_1X24_CPADHI:
> > dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
> > DPI_FORMAT);
> > break;
> > + case MEDIA_BUS_FMT_BGR666_1X18:
> > + dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
> > + fallthrough;
> > case MEDIA_BUS_FMT_RGB666_1X18:
> > dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
> > DPI_FORMAT);
> >
--
Regards,
Laurent Pinchart
Hi Laurent
Thanks for the review.
On Sat, 15 Oct 2022 at 18:31, Laurent Pinchart
<[email protected]> wrote:
>
> On Sat, Oct 15, 2022 at 08:26:48PM +0300, Laurent Pinchart wrote:
> > Hi Maxime and Joerg,
> >
> > Thank you for the patch.
> >
> > On Thu, Oct 13, 2022 at 11:56:49AM +0200, Maxime Ripard wrote:
> > > From: Joerg Quinten <[email protected]>
> > >
> > > The VC4 DPI output can support multiple BGR666 variants, but they were
> > > never added to the driver. Let's add the the support for those formats.
> > >
> > > Signed-off-by: Joerg Quinten <[email protected]>
> > > Signed-off-by: Maxime Ripard <[email protected]>
> >
> > Reviewed-by: Laurent Pinchart <[email protected]>
> >
> > > ---
> > > drivers/gpu/drm/vc4/vc4_dpi.c | 6 ++++++
> > > 1 file changed, 6 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c
> > > index 7da3dd1db50e..ecbe4cd87036 100644
> > > --- a/drivers/gpu/drm/vc4/vc4_dpi.c
> > > +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
> > > @@ -170,10 +170,16 @@ static void vc4_dpi_encoder_enable(struct drm_encoder *encoder)
> > > dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR,
> > > DPI_ORDER);
> > > break;
> > > + case MEDIA_BUS_FMT_BGR666_1X24_CPADHI:
> > > + dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
> > > + fallthrough;
>
> Upon closer inspection of the code, I think you also need
>
> - dpi_c &= ~DPI_FORMAT_MASK;
> + dpi_c &= ~(DPI_ORDER_MASK | DPI_FORMAT_MASK);
>
> a few lines above.
Hmm, curious as there appears to be a difference between our vendor
tree and mainline in the contents of a patch with almost the same
commit text.
https://github.com/torvalds/linux/commit/7a70b0b97889a89f397913c971cadfc6db9b310a
vs https://github.com/raspberrypi/linux/commit/9d9dc236a9ee9021363b8601b6188e7be86d1971
Our tree leaves dpi_c effectively clear, and selects the default at
the end. Mainline sets the default first.
Even so, dpi_c gets initialised with
dpi_c = DPI_ENABLE;
dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB, DPI_FORMAT);
dpi_c &= ~DPI_FORMAT_MASK;
so at this point in the switch, the DPI_ORDER bits haven't changed
from the default of 0.
Dave
> > > case MEDIA_BUS_FMT_RGB666_1X24_CPADHI:
> > > dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_2,
> > > DPI_FORMAT);
> > > break;
> > > + case MEDIA_BUS_FMT_BGR666_1X18:
> > > + dpi_c |= VC4_SET_FIELD(DPI_ORDER_BGR, DPI_ORDER);
> > > + fallthrough;
> > > case MEDIA_BUS_FMT_RGB666_1X18:
> > > dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1,
> > > DPI_FORMAT);
> > >
>
> --
> Regards,
>
> Laurent Pinchart