RE: [PATCH v5 04/10] drm: rcar-du: Add rcar_du_lib_fb_create()

2022-08-24 Thread Biju Das
Hi Geert,

Thanks for the feedback.

> Subject: Re: [PATCH v5 04/10] drm: rcar-du: Add rcar_du_lib_fb_create()
> 
> Hi Biju,
> 
> On Wed, Jul 27, 2022 at 6:08 PM Biju Das 
> wrote:
> > Move the common code from rcar_du_fb_create->rcar_du_lib_fb_create,
> > so that rzg2l_du_fb_create() can reuse the common code.
> >
> > Signed-off-by: Biju Das 
> > ---
> > v5:
> >  * New patch
> 
> Thanks for your patch!
> 
> > --- a/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c
> > +++ b/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c
> > @@ -392,3 +392,72 @@ int rcar_du_dumb_create(struct drm_file *file,
> > struct drm_device *dev,
> >
> > return drm_gem_cma_dumb_create_internal(file, dev, args);  }
> > +
> > +struct drm_framebuffer *
> > +rcar_du_lib_fb_create(struct drm_device *dev, struct drm_file
> *file_priv,
> > + const struct drm_mode_fb_cmd2 *mode_cmd) {
> > +   struct rcar_du_device *rcdu = to_rcar_du_device(dev);
> > +   const struct rcar_du_format_info *format;
> > +   unsigned int chroma_pitch;
> > +   unsigned int max_pitch;
> > +   unsigned int align;
> > +   unsigned int i;
> > +
> > +   format = rcar_du_format_info(mode_cmd->pixel_format);
> > +   if (format == NULL) {
> > +   dev_dbg(dev->dev, "unsupported pixel format %08x\n",
> 
> I know you're just moving code, but nowadays we do have "%p4cc", which
> takes a pointer to the fourcc value.

OK, will fix this in next version, if this change is ok to everyone.

Cheers,
Biju

> 
> > +   mode_cmd->pixel_format);
> > +   return ERR_PTR(-EINVAL);
> > +   }
> 
> Gr{oetje,eeting}s,
> 
> Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-
> m68k.org
> 
> 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


Re: [PATCH v5 04/10] drm: rcar-du: Add rcar_du_lib_fb_create()

2022-08-18 Thread Geert Uytterhoeven
Hi Biju,

On Wed, Jul 27, 2022 at 6:08 PM Biju Das  wrote:
> Move the common code from rcar_du_fb_create->rcar_du_lib_fb_create,
> so that rzg2l_du_fb_create() can reuse the common code.
>
> Signed-off-by: Biju Das 
> ---
> v5:
>  * New patch

Thanks for your patch!

> --- a/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c
> @@ -392,3 +392,72 @@ int rcar_du_dumb_create(struct drm_file *file, struct 
> drm_device *dev,
>
> return drm_gem_cma_dumb_create_internal(file, dev, args);
>  }
> +
> +struct drm_framebuffer *
> +rcar_du_lib_fb_create(struct drm_device *dev, struct drm_file *file_priv,
> + const struct drm_mode_fb_cmd2 *mode_cmd)
> +{
> +   struct rcar_du_device *rcdu = to_rcar_du_device(dev);
> +   const struct rcar_du_format_info *format;
> +   unsigned int chroma_pitch;
> +   unsigned int max_pitch;
> +   unsigned int align;
> +   unsigned int i;
> +
> +   format = rcar_du_format_info(mode_cmd->pixel_format);
> +   if (format == NULL) {
> +   dev_dbg(dev->dev, "unsupported pixel format %08x\n",

I know you're just moving code, but nowadays we do have "%p4cc",
which takes a pointer to the fourcc value.

> +   mode_cmd->pixel_format);
> +   return ERR_PTR(-EINVAL);
> +   }

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org

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


[PATCH v5 04/10] drm: rcar-du: Add rcar_du_lib_fb_create()

2022-07-27 Thread Biju Das
Move the common code from rcar_du_fb_create->rcar_du_lib_fb_create,
so that rzg2l_du_fb_create() can reuse the common code.

Signed-off-by: Biju Das 
---
v5:
 * New patch
---
 drivers/gpu/drm/rcar-du/rcar_du_kms.c | 64 +
 drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c | 69 +++
 drivers/gpu/drm/rcar-du/rcar_du_kms_lib.h |  4 ++
 3 files changed, 74 insertions(+), 63 deletions(-)

diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c 
b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
index ea2b7d5f1c23..9d65a7d6d96e 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c
@@ -41,69 +41,7 @@ static struct drm_framebuffer *
 rcar_du_fb_create(struct drm_device *dev, struct drm_file *file_priv,
  const struct drm_mode_fb_cmd2 *mode_cmd)
 {
-   struct rcar_du_device *rcdu = to_rcar_du_device(dev);
-   const struct rcar_du_format_info *format;
-   unsigned int chroma_pitch;
-   unsigned int max_pitch;
-   unsigned int align;
-   unsigned int i;
-
-   format = rcar_du_format_info(mode_cmd->pixel_format);
-   if (format == NULL) {
-   dev_dbg(dev->dev, "unsupported pixel format %08x\n",
-   mode_cmd->pixel_format);
-   return ERR_PTR(-EINVAL);
-   }
-
-   if (rcdu->info->gen < 3) {
-   /*
-* On Gen2 the DU limits the pitch to 4095 pixels and requires
-* buffers to be aligned to a 16 pixels boundary (or 128 bytes
-* on some platforms).
-*/
-   unsigned int bpp = format->planes == 1 ? format->bpp / 8 : 1;
-
-   max_pitch = 4095 * bpp;
-
-   if (rcar_du_needs(rcdu, RCAR_DU_QUIRK_ALIGN_128B))
-   align = 128;
-   else
-   align = 16 * bpp;
-   } else {
-   /*
-* On Gen3 the memory interface is handled by the VSP that
-* limits the pitch to 65535 bytes and has no alignment
-* constraint.
-*/
-   max_pitch = 65535;
-   align = 1;
-   }
-
-   if (mode_cmd->pitches[0] & (align - 1) ||
-   mode_cmd->pitches[0] > max_pitch) {
-   dev_dbg(dev->dev, "invalid pitch value %u\n",
-   mode_cmd->pitches[0]);
-   return ERR_PTR(-EINVAL);
-   }
-
-   /*
-* Calculate the chroma plane(s) pitch using the horizontal subsampling
-* factor. For semi-planar formats, the U and V planes are combined, the
-* pitch must thus be doubled.
-*/
-   chroma_pitch = mode_cmd->pitches[0] / format->hsub;
-   if (format->planes == 2)
-   chroma_pitch *= 2;
-
-   for (i = 1; i < format->planes; ++i) {
-   if (mode_cmd->pitches[i] != chroma_pitch) {
-   dev_dbg(dev->dev,
-   "luma and chroma pitches are not compatible\n");
-   return ERR_PTR(-EINVAL);
-   }
-   }
-
-   return drm_gem_fb_create(dev, file_priv, mode_cmd);
+   return rcar_du_lib_fb_create(dev, file_priv, mode_cmd);
 }
 
 /* 
-
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c 
b/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c
index 6461b99e08dc..d8f778a7b6db 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_kms_lib.c
@@ -392,3 +392,72 @@ int rcar_du_dumb_create(struct drm_file *file, struct 
drm_device *dev,
 
return drm_gem_cma_dumb_create_internal(file, dev, args);
 }
+
+struct drm_framebuffer *
+rcar_du_lib_fb_create(struct drm_device *dev, struct drm_file *file_priv,
+ const struct drm_mode_fb_cmd2 *mode_cmd)
+{
+   struct rcar_du_device *rcdu = to_rcar_du_device(dev);
+   const struct rcar_du_format_info *format;
+   unsigned int chroma_pitch;
+   unsigned int max_pitch;
+   unsigned int align;
+   unsigned int i;
+
+   format = rcar_du_format_info(mode_cmd->pixel_format);
+   if (format == NULL) {
+   dev_dbg(dev->dev, "unsupported pixel format %08x\n",
+   mode_cmd->pixel_format);
+   return ERR_PTR(-EINVAL);
+   }
+
+   if (rcdu->info->gen < 3) {
+   /*
+* On Gen2 the DU limits the pitch to 4095 pixels and requires
+* buffers to be aligned to a 16 pixels boundary (or 128 bytes
+* on some platforms).
+*/
+   unsigned int bpp = format->planes == 1 ? format->bpp / 8 : 1;
+
+   max_pitch = 4095 * bpp;
+
+   if (rcar_du_needs(rcdu, RCAR_DU_QUIRK_ALIGN_128B))
+   align = 128;
+   else
+   align = 16 * bpp;
+   } else {
+   /*
+