Re: [PATCH 2/6] [media] s5p-mfc: improve v4l2_capability driver and card fields

From: Hans Verkuil
Date: Fri Jun 17 2016 - 03:12:22 EST


On 06/16/2016 11:40 PM, Javier Martinez Canillas wrote:
> According to the V4L2 documentation the driver and card fields should be
> used to identify the driver and the device but the s5p-mfc driver fills
> those field using the platform device name, which in turn is the name of
> the device DT node.
>
> So not only the filled information isn't correct but also the same values
> are used in all the fields for both the encoder and decoder video devices.
>
> Before this patch:
>
> Driver Info (not using libv4l2):
> Driver name : 11000000.codec
> Card type : 11000000.codec
> Bus info : platform:11000000.codec
> Driver version: 4.7.0
>
> Driver Info (not using libv4l2):
> Driver name : 11000000.codec
> Card type : 11000000.codec
> Bus info : platform:11000000.codec
> Driver version: 4.7.0
>
> After this patch:
>
> Driver Info (not using libv4l2):
> Driver name : s5p-mfc
> Card type : s5p-mfc-dec
> Bus info : platform:11000000.codec
> Driver version: 4.7.0
>
> Driver Info (not using libv4l2):
> Driver name : s5p-mfc
> Card type : s5p-mfc-enc
> Bus info : platform:11000000.codec
> Driver version: 4.7.0
>
> Signed-off-by: Javier Martinez Canillas <javier@xxxxxxxxxxxxxxx>

Acked-by: Hans Verkuil <hans.verkuil@xxxxxxxxx>

Thanks!

Hans

> ---
>
> drivers/media/platform/s5p-mfc/s5p_mfc.c | 1 -
> drivers/media/platform/s5p-mfc/s5p_mfc_common.h | 2 ++
> drivers/media/platform/s5p-mfc/s5p_mfc_dec.c | 4 ++--
> drivers/media/platform/s5p-mfc/s5p_mfc_enc.c | 4 ++--
> 4 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c
> index 6ee620ee8cd5..a936f89fa54a 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c
> @@ -35,7 +35,6 @@
> #include "s5p_mfc_cmd.h"
> #include "s5p_mfc_pm.h"
>
> -#define S5P_MFC_NAME "s5p-mfc"
> #define S5P_MFC_DEC_NAME "s5p-mfc-dec"
> #define S5P_MFC_ENC_NAME "s5p-mfc-enc"
>
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_common.h b/drivers/media/platform/s5p-mfc/s5p_mfc_common.h
> index 9eb2481ec292..a10dcd244ff0 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_common.h
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_common.h
> @@ -25,6 +25,8 @@
> #include "regs-mfc.h"
> #include "regs-mfc-v8.h"
>
> +#define S5P_MFC_NAME "s5p-mfc"
> +
> /* Definitions related to MFC memory */
>
> /* Offset base used to differentiate between CAPTURE and OUTPUT
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> index 4a40df22fd63..5793b0d8ee0c 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> @@ -265,8 +265,8 @@ static int vidioc_querycap(struct file *file, void *priv,
> {
> struct s5p_mfc_dev *dev = video_drvdata(file);
>
> - strncpy(cap->driver, dev->plat_dev->name, sizeof(cap->driver) - 1);
> - strncpy(cap->card, dev->plat_dev->name, sizeof(cap->card) - 1);
> + strncpy(cap->driver, S5P_MFC_NAME, sizeof(cap->driver) - 1);
> + strncpy(cap->card, dev->vfd_dec->name, sizeof(cap->card) - 1);
> snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
> dev_name(&dev->plat_dev->dev));
> /*
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> index dd466ea6429e..1220559d4874 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> @@ -943,8 +943,8 @@ static int vidioc_querycap(struct file *file, void *priv,
> {
> struct s5p_mfc_dev *dev = video_drvdata(file);
>
> - strncpy(cap->driver, dev->plat_dev->name, sizeof(cap->driver) - 1);
> - strncpy(cap->card, dev->plat_dev->name, sizeof(cap->card) - 1);
> + strncpy(cap->driver, S5P_MFC_NAME, sizeof(cap->driver) - 1);
> + strncpy(cap->card, dev->vfd_enc->name, sizeof(cap->card) - 1);
> snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
> dev_name(&dev->plat_dev->dev));
> /*
>