[v2,3/7] media: renesas: vsp1: Change V3U to be gen4
Commit Message
V3U is actually gen4, not gen3. The same IP is also used in the
(not-yet-supported) V4H.
Change VI6_IP_VERSION_MODEL_VSPD_V3U to VI6_IP_VERSION_MODEL_VSPD_GEN4,
to represent the model correctly. V3U and V4H can still be
differentiated, if needed, with the VI6_IP_VERSION_SOC_xxx.
Also mark VI6_IP_VERSION_MODEL_VSPD_GEN4 as gen 4 in vsp1_device_info,
and update the code to correcly match for gen 4.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com>
---
drivers/media/platform/renesas/vsp1/vsp1_drv.c | 4 ++--
drivers/media/platform/renesas/vsp1/vsp1_hgo.c | 4 ++--
drivers/media/platform/renesas/vsp1/vsp1_lif.c | 1 +
drivers/media/platform/renesas/vsp1/vsp1_regs.h | 2 +-
drivers/media/platform/renesas/vsp1/vsp1_rpf.c | 12 ++++++------
drivers/media/platform/renesas/vsp1/vsp1_video.c | 4 ++--
drivers/media/platform/renesas/vsp1/vsp1_wpf.c | 4 ++--
7 files changed, 16 insertions(+), 15 deletions(-)
Comments
Hi Tomi,
Thank you for the patch.
On Mon, Dec 19, 2022 at 04:01:35PM +0200, Tomi Valkeinen wrote:
> V3U is actually gen4, not gen3. The same IP is also used in the
> (not-yet-supported) V4H.
>
> Change VI6_IP_VERSION_MODEL_VSPD_V3U to VI6_IP_VERSION_MODEL_VSPD_GEN4,
> to represent the model correctly. V3U and V4H can still be
> differentiated, if needed, with the VI6_IP_VERSION_SOC_xxx.
>
> Also mark VI6_IP_VERSION_MODEL_VSPD_GEN4 as gen 4 in vsp1_device_info,
> and update the code to correcly match for gen 4.
>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com>
> ---
> drivers/media/platform/renesas/vsp1/vsp1_drv.c | 4 ++--
> drivers/media/platform/renesas/vsp1/vsp1_hgo.c | 4 ++--
> drivers/media/platform/renesas/vsp1/vsp1_lif.c | 1 +
> drivers/media/platform/renesas/vsp1/vsp1_regs.h | 2 +-
> drivers/media/platform/renesas/vsp1/vsp1_rpf.c | 12 ++++++------
> drivers/media/platform/renesas/vsp1/vsp1_video.c | 4 ++--
> drivers/media/platform/renesas/vsp1/vsp1_wpf.c | 4 ++--
> 7 files changed, 16 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_drv.c b/drivers/media/platform/renesas/vsp1/vsp1_drv.c
> index c260d318d298..5710152d6511 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_drv.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_drv.c
> @@ -818,9 +818,9 @@ static const struct vsp1_device_info vsp1_device_infos[] = {
> .wpf_count = 2,
> .num_bru_inputs = 5,
> }, {
> - .version = VI6_IP_VERSION_MODEL_VSPD_V3U,
> + .version = VI6_IP_VERSION_MODEL_VSPD_GEN4,
> .model = "VSP2-D",
> - .gen = 3,
> + .gen = 4,
> .features = VSP1_HAS_BRU | VSP1_HAS_EXT_DL,
> .lif_count = 1,
> .rpf_count = 5,
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_hgo.c b/drivers/media/platform/renesas/vsp1/vsp1_hgo.c
> index bf3f981f93a1..e6492deb0a64 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_hgo.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_hgo.c
> @@ -196,10 +196,10 @@ struct vsp1_hgo *vsp1_hgo_create(struct vsp1_device *vsp1)
>
> /* Initialize the control handler. */
> v4l2_ctrl_handler_init(&hgo->ctrls.handler,
> - vsp1->info->gen == 3 ? 2 : 1);
> + vsp1->info->gen >= 3 ? 2 : 1);
> hgo->ctrls.max_rgb = v4l2_ctrl_new_custom(&hgo->ctrls.handler,
> &hgo_max_rgb_control, NULL);
> - if (vsp1->info->gen == 3)
> + if (vsp1->info->gen >= 3)
> hgo->ctrls.num_bins =
> v4l2_ctrl_new_custom(&hgo->ctrls.handler,
> &hgo_num_bins_control, NULL);
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_lif.c b/drivers/media/platform/renesas/vsp1/vsp1_lif.c
> index 186a5730e1e3..0ab2e0c70474 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_lif.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_lif.c
> @@ -114,6 +114,7 @@ static void lif_configure_stream(struct vsp1_entity *entity,
> break;
>
> case VI6_IP_VERSION_MODEL_VSPD_GEN3:
> + case VI6_IP_VERSION_MODEL_VSPD_GEN4:
While this doesn't cause any functional change, it doesn't fall into the
renaming explained in the commit message. I'd make a mention of it
there.
Conditional-Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> default:
> hbth = 0;
> obth = 3000;
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_regs.h b/drivers/media/platform/renesas/vsp1/vsp1_regs.h
> index 8928f4c6bb55..8c9333f76858 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_regs.h
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_regs.h
> @@ -766,7 +766,7 @@
> #define VI6_IP_VERSION_MODEL_VSPD_V3 (0x18 << 8)
> #define VI6_IP_VERSION_MODEL_VSPDL_GEN3 (0x19 << 8)
> #define VI6_IP_VERSION_MODEL_VSPBS_GEN3 (0x1a << 8)
> -#define VI6_IP_VERSION_MODEL_VSPD_V3U (0x1c << 8)
> +#define VI6_IP_VERSION_MODEL_VSPD_GEN4 (0x1c << 8)
> /* RZ/G2L SoCs have no version register, So use 0x80 as the model version */
> #define VI6_IP_VERSION_MODEL_VSPD_RZG2L (0x80 << 8)
>
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_rpf.c b/drivers/media/platform/renesas/vsp1/vsp1_rpf.c
> index 75083cb234fe..045aa54f7998 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_rpf.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_rpf.c
> @@ -133,18 +133,18 @@ static void rpf_configure_stream(struct vsp1_entity *entity,
> * a fixed alpha value set through the V4L2_CID_ALPHA_COMPONENT control
> * otherwise.
> *
> - * The Gen3 RPF has extended alpha capability and can both multiply the
> + * The Gen3+ RPF has extended alpha capability and can both multiply the
> * alpha channel by a fixed global alpha value, and multiply the pixel
> * components to convert the input to premultiplied alpha.
> *
> * As alpha premultiplication is available in the BRx for both Gen2 and
> - * Gen3 we handle it there and use the Gen3 alpha multiplier for global
> + * Gen3+ we handle it there and use the Gen3 alpha multiplier for global
> * alpha multiplication only. This however prevents conversion to
> * premultiplied alpha if no BRx is present in the pipeline. If that use
> * case turns out to be useful we will revisit the implementation (for
> * Gen3 only).
> *
> - * We enable alpha multiplication on Gen3 using the fixed alpha value
> + * We enable alpha multiplication on Gen3+ using the fixed alpha value
> * set through the V4L2_CID_ALPHA_COMPONENT control when the input
> * contains an alpha channel. On Gen2 the global alpha is ignored in
> * that case.
> @@ -155,7 +155,7 @@ static void rpf_configure_stream(struct vsp1_entity *entity,
> (fmtinfo->alpha ? VI6_RPF_ALPH_SEL_ASEL_PACKED
> : VI6_RPF_ALPH_SEL_ASEL_FIXED));
>
> - if (entity->vsp1->info->gen == 3) {
> + if (entity->vsp1->info->gen >= 3) {
> u32 mult;
>
> if (fmtinfo->alpha) {
> @@ -301,10 +301,10 @@ static void rpf_configure_partition(struct vsp1_entity *entity,
> }
>
> /*
> - * On Gen3 hardware the SPUVS bit has no effect on 3-planar
> + * On Gen3+ hardware the SPUVS bit has no effect on 3-planar
> * formats. Swap the U and V planes manually in that case.
> */
> - if (vsp1->info->gen == 3 && format->num_planes == 3 &&
> + if (vsp1->info->gen >= 3 && format->num_planes == 3 &&
> fmtinfo->swap_uv)
> swap(mem.addr[1], mem.addr[2]);
>
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_video.c b/drivers/media/platform/renesas/vsp1/vsp1_video.c
> index 9d24647c8f32..544012fd1fe9 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_video.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_video.c
> @@ -267,10 +267,10 @@ static int vsp1_video_pipeline_setup_partitions(struct vsp1_pipeline *pipe)
> div_size = format->width;
>
> /*
> - * Only Gen3 hardware requires image partitioning, Gen2 will operate
> + * Only Gen3+ hardware requires image partitioning, Gen2 will operate
> * with a single partition that covers the whole output.
> */
> - if (vsp1->info->gen == 3) {
> + if (vsp1->info->gen >= 3) {
> list_for_each_entry(entity, &pipe->entities, list_pipe) {
> unsigned int entity_max;
>
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_wpf.c b/drivers/media/platform/renesas/vsp1/vsp1_wpf.c
> index 94e91d7bb56c..d0074ca00920 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_wpf.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_wpf.c
> @@ -512,10 +512,10 @@ static void wpf_configure_partition(struct vsp1_entity *entity,
> }
>
> /*
> - * On Gen3 hardware the SPUVS bit has no effect on 3-planar
> + * On Gen3+ hardware the SPUVS bit has no effect on 3-planar
> * formats. Swap the U and V planes manually in that case.
> */
> - if (vsp1->info->gen == 3 && format->num_planes == 3 &&
> + if (vsp1->info->gen >= 3 && format->num_planes == 3 &&
> fmtinfo->swap_uv)
> swap(mem.addr[1], mem.addr[2]);
>
On 19/12/2022 23:01, Laurent Pinchart wrote:
> Hi Tomi,
>
> Thank you for the patch.
>
> On Mon, Dec 19, 2022 at 04:01:35PM +0200, Tomi Valkeinen wrote:
>> V3U is actually gen4, not gen3. The same IP is also used in the
>> (not-yet-supported) V4H.
>>
>> Change VI6_IP_VERSION_MODEL_VSPD_V3U to VI6_IP_VERSION_MODEL_VSPD_GEN4,
>> to represent the model correctly. V3U and V4H can still be
>> differentiated, if needed, with the VI6_IP_VERSION_SOC_xxx.
>>
>> Also mark VI6_IP_VERSION_MODEL_VSPD_GEN4 as gen 4 in vsp1_device_info,
>> and update the code to correcly match for gen 4.
>>
>> Signed-off-by: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com>
>> ---
>> drivers/media/platform/renesas/vsp1/vsp1_drv.c | 4 ++--
>> drivers/media/platform/renesas/vsp1/vsp1_hgo.c | 4 ++--
>> drivers/media/platform/renesas/vsp1/vsp1_lif.c | 1 +
>> drivers/media/platform/renesas/vsp1/vsp1_regs.h | 2 +-
>> drivers/media/platform/renesas/vsp1/vsp1_rpf.c | 12 ++++++------
>> drivers/media/platform/renesas/vsp1/vsp1_video.c | 4 ++--
>> drivers/media/platform/renesas/vsp1/vsp1_wpf.c | 4 ++--
>> 7 files changed, 16 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_drv.c b/drivers/media/platform/renesas/vsp1/vsp1_drv.c
>> index c260d318d298..5710152d6511 100644
>> --- a/drivers/media/platform/renesas/vsp1/vsp1_drv.c
>> +++ b/drivers/media/platform/renesas/vsp1/vsp1_drv.c
>> @@ -818,9 +818,9 @@ static const struct vsp1_device_info vsp1_device_infos[] = {
>> .wpf_count = 2,
>> .num_bru_inputs = 5,
>> }, {
>> - .version = VI6_IP_VERSION_MODEL_VSPD_V3U,
>> + .version = VI6_IP_VERSION_MODEL_VSPD_GEN4,
>> .model = "VSP2-D",
>> - .gen = 3,
>> + .gen = 4,
>> .features = VSP1_HAS_BRU | VSP1_HAS_EXT_DL,
>> .lif_count = 1,
>> .rpf_count = 5,
>> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_hgo.c b/drivers/media/platform/renesas/vsp1/vsp1_hgo.c
>> index bf3f981f93a1..e6492deb0a64 100644
>> --- a/drivers/media/platform/renesas/vsp1/vsp1_hgo.c
>> +++ b/drivers/media/platform/renesas/vsp1/vsp1_hgo.c
>> @@ -196,10 +196,10 @@ struct vsp1_hgo *vsp1_hgo_create(struct vsp1_device *vsp1)
>>
>> /* Initialize the control handler. */
>> v4l2_ctrl_handler_init(&hgo->ctrls.handler,
>> - vsp1->info->gen == 3 ? 2 : 1);
>> + vsp1->info->gen >= 3 ? 2 : 1);
>> hgo->ctrls.max_rgb = v4l2_ctrl_new_custom(&hgo->ctrls.handler,
>> &hgo_max_rgb_control, NULL);
>> - if (vsp1->info->gen == 3)
>> + if (vsp1->info->gen >= 3)
>> hgo->ctrls.num_bins =
>> v4l2_ctrl_new_custom(&hgo->ctrls.handler,
>> &hgo_num_bins_control, NULL);
>> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_lif.c b/drivers/media/platform/renesas/vsp1/vsp1_lif.c
>> index 186a5730e1e3..0ab2e0c70474 100644
>> --- a/drivers/media/platform/renesas/vsp1/vsp1_lif.c
>> +++ b/drivers/media/platform/renesas/vsp1/vsp1_lif.c
>> @@ -114,6 +114,7 @@ static void lif_configure_stream(struct vsp1_entity *entity,
>> break;
>>
>> case VI6_IP_VERSION_MODEL_VSPD_GEN3:
>> + case VI6_IP_VERSION_MODEL_VSPD_GEN4:
>
> While this doesn't cause any functional change, it doesn't fall into the
> renaming explained in the commit message. I'd make a mention of it
> there.
The message says "update the code to correcly match for gen 4". (I see a
typo there =)). Doesn't that cover this change? It's similar to the if()
changes, where we now check for >= 3.
Tomi
> Conditional-Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
>
>> default:
>> hbth = 0;
>> obth = 3000;
>> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_regs.h b/drivers/media/platform/renesas/vsp1/vsp1_regs.h
>> index 8928f4c6bb55..8c9333f76858 100644
>> --- a/drivers/media/platform/renesas/vsp1/vsp1_regs.h
>> +++ b/drivers/media/platform/renesas/vsp1/vsp1_regs.h
>> @@ -766,7 +766,7 @@
>> #define VI6_IP_VERSION_MODEL_VSPD_V3 (0x18 << 8)
>> #define VI6_IP_VERSION_MODEL_VSPDL_GEN3 (0x19 << 8)
>> #define VI6_IP_VERSION_MODEL_VSPBS_GEN3 (0x1a << 8)
>> -#define VI6_IP_VERSION_MODEL_VSPD_V3U (0x1c << 8)
>> +#define VI6_IP_VERSION_MODEL_VSPD_GEN4 (0x1c << 8)
>> /* RZ/G2L SoCs have no version register, So use 0x80 as the model version */
>> #define VI6_IP_VERSION_MODEL_VSPD_RZG2L (0x80 << 8)
>>
>> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_rpf.c b/drivers/media/platform/renesas/vsp1/vsp1_rpf.c
>> index 75083cb234fe..045aa54f7998 100644
>> --- a/drivers/media/platform/renesas/vsp1/vsp1_rpf.c
>> +++ b/drivers/media/platform/renesas/vsp1/vsp1_rpf.c
>> @@ -133,18 +133,18 @@ static void rpf_configure_stream(struct vsp1_entity *entity,
>> * a fixed alpha value set through the V4L2_CID_ALPHA_COMPONENT control
>> * otherwise.
>> *
>> - * The Gen3 RPF has extended alpha capability and can both multiply the
>> + * The Gen3+ RPF has extended alpha capability and can both multiply the
>> * alpha channel by a fixed global alpha value, and multiply the pixel
>> * components to convert the input to premultiplied alpha.
>> *
>> * As alpha premultiplication is available in the BRx for both Gen2 and
>> - * Gen3 we handle it there and use the Gen3 alpha multiplier for global
>> + * Gen3+ we handle it there and use the Gen3 alpha multiplier for global
>> * alpha multiplication only. This however prevents conversion to
>> * premultiplied alpha if no BRx is present in the pipeline. If that use
>> * case turns out to be useful we will revisit the implementation (for
>> * Gen3 only).
>> *
>> - * We enable alpha multiplication on Gen3 using the fixed alpha value
>> + * We enable alpha multiplication on Gen3+ using the fixed alpha value
>> * set through the V4L2_CID_ALPHA_COMPONENT control when the input
>> * contains an alpha channel. On Gen2 the global alpha is ignored in
>> * that case.
>> @@ -155,7 +155,7 @@ static void rpf_configure_stream(struct vsp1_entity *entity,
>> (fmtinfo->alpha ? VI6_RPF_ALPH_SEL_ASEL_PACKED
>> : VI6_RPF_ALPH_SEL_ASEL_FIXED));
>>
>> - if (entity->vsp1->info->gen == 3) {
>> + if (entity->vsp1->info->gen >= 3) {
>> u32 mult;
>>
>> if (fmtinfo->alpha) {
>> @@ -301,10 +301,10 @@ static void rpf_configure_partition(struct vsp1_entity *entity,
>> }
>>
>> /*
>> - * On Gen3 hardware the SPUVS bit has no effect on 3-planar
>> + * On Gen3+ hardware the SPUVS bit has no effect on 3-planar
>> * formats. Swap the U and V planes manually in that case.
>> */
>> - if (vsp1->info->gen == 3 && format->num_planes == 3 &&
>> + if (vsp1->info->gen >= 3 && format->num_planes == 3 &&
>> fmtinfo->swap_uv)
>> swap(mem.addr[1], mem.addr[2]);
>>
>> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_video.c b/drivers/media/platform/renesas/vsp1/vsp1_video.c
>> index 9d24647c8f32..544012fd1fe9 100644
>> --- a/drivers/media/platform/renesas/vsp1/vsp1_video.c
>> +++ b/drivers/media/platform/renesas/vsp1/vsp1_video.c
>> @@ -267,10 +267,10 @@ static int vsp1_video_pipeline_setup_partitions(struct vsp1_pipeline *pipe)
>> div_size = format->width;
>>
>> /*
>> - * Only Gen3 hardware requires image partitioning, Gen2 will operate
>> + * Only Gen3+ hardware requires image partitioning, Gen2 will operate
>> * with a single partition that covers the whole output.
>> */
>> - if (vsp1->info->gen == 3) {
>> + if (vsp1->info->gen >= 3) {
>> list_for_each_entry(entity, &pipe->entities, list_pipe) {
>> unsigned int entity_max;
>>
>> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_wpf.c b/drivers/media/platform/renesas/vsp1/vsp1_wpf.c
>> index 94e91d7bb56c..d0074ca00920 100644
>> --- a/drivers/media/platform/renesas/vsp1/vsp1_wpf.c
>> +++ b/drivers/media/platform/renesas/vsp1/vsp1_wpf.c
>> @@ -512,10 +512,10 @@ static void wpf_configure_partition(struct vsp1_entity *entity,
>> }
>>
>> /*
>> - * On Gen3 hardware the SPUVS bit has no effect on 3-planar
>> + * On Gen3+ hardware the SPUVS bit has no effect on 3-planar
>> * formats. Swap the U and V planes manually in that case.
>> */
>> - if (vsp1->info->gen == 3 && format->num_planes == 3 &&
>> + if (vsp1->info->gen >= 3 && format->num_planes == 3 &&
>> fmtinfo->swap_uv)
>> swap(mem.addr[1], mem.addr[2]);
>>
>
Hi Tomi,
On Wed, Dec 21, 2022 at 09:48:10AM +0200, Tomi Valkeinen wrote:
> On 19/12/2022 23:01, Laurent Pinchart wrote:
> > On Mon, Dec 19, 2022 at 04:01:35PM +0200, Tomi Valkeinen wrote:
> >> V3U is actually gen4, not gen3. The same IP is also used in the
> >> (not-yet-supported) V4H.
> >>
> >> Change VI6_IP_VERSION_MODEL_VSPD_V3U to VI6_IP_VERSION_MODEL_VSPD_GEN4,
> >> to represent the model correctly. V3U and V4H can still be
> >> differentiated, if needed, with the VI6_IP_VERSION_SOC_xxx.
> >>
> >> Also mark VI6_IP_VERSION_MODEL_VSPD_GEN4 as gen 4 in vsp1_device_info,
> >> and update the code to correcly match for gen 4.
> >>
> >> Signed-off-by: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com>
> >> ---
> >> drivers/media/platform/renesas/vsp1/vsp1_drv.c | 4 ++--
> >> drivers/media/platform/renesas/vsp1/vsp1_hgo.c | 4 ++--
> >> drivers/media/platform/renesas/vsp1/vsp1_lif.c | 1 +
> >> drivers/media/platform/renesas/vsp1/vsp1_regs.h | 2 +-
> >> drivers/media/platform/renesas/vsp1/vsp1_rpf.c | 12 ++++++------
> >> drivers/media/platform/renesas/vsp1/vsp1_video.c | 4 ++--
> >> drivers/media/platform/renesas/vsp1/vsp1_wpf.c | 4 ++--
> >> 7 files changed, 16 insertions(+), 15 deletions(-)
> >>
> >> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_drv.c b/drivers/media/platform/renesas/vsp1/vsp1_drv.c
> >> index c260d318d298..5710152d6511 100644
> >> --- a/drivers/media/platform/renesas/vsp1/vsp1_drv.c
> >> +++ b/drivers/media/platform/renesas/vsp1/vsp1_drv.c
> >> @@ -818,9 +818,9 @@ static const struct vsp1_device_info vsp1_device_infos[] = {
> >> .wpf_count = 2,
> >> .num_bru_inputs = 5,
> >> }, {
> >> - .version = VI6_IP_VERSION_MODEL_VSPD_V3U,
> >> + .version = VI6_IP_VERSION_MODEL_VSPD_GEN4,
> >> .model = "VSP2-D",
> >> - .gen = 3,
> >> + .gen = 4,
> >> .features = VSP1_HAS_BRU | VSP1_HAS_EXT_DL,
> >> .lif_count = 1,
> >> .rpf_count = 5,
> >> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_hgo.c b/drivers/media/platform/renesas/vsp1/vsp1_hgo.c
> >> index bf3f981f93a1..e6492deb0a64 100644
> >> --- a/drivers/media/platform/renesas/vsp1/vsp1_hgo.c
> >> +++ b/drivers/media/platform/renesas/vsp1/vsp1_hgo.c
> >> @@ -196,10 +196,10 @@ struct vsp1_hgo *vsp1_hgo_create(struct vsp1_device *vsp1)
> >>
> >> /* Initialize the control handler. */
> >> v4l2_ctrl_handler_init(&hgo->ctrls.handler,
> >> - vsp1->info->gen == 3 ? 2 : 1);
> >> + vsp1->info->gen >= 3 ? 2 : 1);
> >> hgo->ctrls.max_rgb = v4l2_ctrl_new_custom(&hgo->ctrls.handler,
> >> &hgo_max_rgb_control, NULL);
> >> - if (vsp1->info->gen == 3)
> >> + if (vsp1->info->gen >= 3)
> >> hgo->ctrls.num_bins =
> >> v4l2_ctrl_new_custom(&hgo->ctrls.handler,
> >> &hgo_num_bins_control, NULL);
> >> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_lif.c b/drivers/media/platform/renesas/vsp1/vsp1_lif.c
> >> index 186a5730e1e3..0ab2e0c70474 100644
> >> --- a/drivers/media/platform/renesas/vsp1/vsp1_lif.c
> >> +++ b/drivers/media/platform/renesas/vsp1/vsp1_lif.c
> >> @@ -114,6 +114,7 @@ static void lif_configure_stream(struct vsp1_entity *entity,
> >> break;
> >>
> >> case VI6_IP_VERSION_MODEL_VSPD_GEN3:
> >> + case VI6_IP_VERSION_MODEL_VSPD_GEN4:
> >
> > While this doesn't cause any functional change, it doesn't fall into the
> > renaming explained in the commit message. I'd make a mention of it
> > there.
>
> The message says "update the code to correcly match for gen 4". (I see a
> typo there =)). Doesn't that cover this change? It's similar to the if()
> changes, where we now check for >= 3.
Possibly :-) This code change isn't needed as the default cases handles
gen4. It's still desirable though.
No need to send a new version for this.
> > Conditional-Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> >
> >> default:
> >> hbth = 0;
> >> obth = 3000;
> >> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_regs.h b/drivers/media/platform/renesas/vsp1/vsp1_regs.h
> >> index 8928f4c6bb55..8c9333f76858 100644
> >> --- a/drivers/media/platform/renesas/vsp1/vsp1_regs.h
> >> +++ b/drivers/media/platform/renesas/vsp1/vsp1_regs.h
> >> @@ -766,7 +766,7 @@
> >> #define VI6_IP_VERSION_MODEL_VSPD_V3 (0x18 << 8)
> >> #define VI6_IP_VERSION_MODEL_VSPDL_GEN3 (0x19 << 8)
> >> #define VI6_IP_VERSION_MODEL_VSPBS_GEN3 (0x1a << 8)
> >> -#define VI6_IP_VERSION_MODEL_VSPD_V3U (0x1c << 8)
> >> +#define VI6_IP_VERSION_MODEL_VSPD_GEN4 (0x1c << 8)
> >> /* RZ/G2L SoCs have no version register, So use 0x80 as the model version */
> >> #define VI6_IP_VERSION_MODEL_VSPD_RZG2L (0x80 << 8)
> >>
> >> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_rpf.c b/drivers/media/platform/renesas/vsp1/vsp1_rpf.c
> >> index 75083cb234fe..045aa54f7998 100644
> >> --- a/drivers/media/platform/renesas/vsp1/vsp1_rpf.c
> >> +++ b/drivers/media/platform/renesas/vsp1/vsp1_rpf.c
> >> @@ -133,18 +133,18 @@ static void rpf_configure_stream(struct vsp1_entity *entity,
> >> * a fixed alpha value set through the V4L2_CID_ALPHA_COMPONENT control
> >> * otherwise.
> >> *
> >> - * The Gen3 RPF has extended alpha capability and can both multiply the
> >> + * The Gen3+ RPF has extended alpha capability and can both multiply the
> >> * alpha channel by a fixed global alpha value, and multiply the pixel
> >> * components to convert the input to premultiplied alpha.
> >> *
> >> * As alpha premultiplication is available in the BRx for both Gen2 and
> >> - * Gen3 we handle it there and use the Gen3 alpha multiplier for global
> >> + * Gen3+ we handle it there and use the Gen3 alpha multiplier for global
> >> * alpha multiplication only. This however prevents conversion to
> >> * premultiplied alpha if no BRx is present in the pipeline. If that use
> >> * case turns out to be useful we will revisit the implementation (for
> >> * Gen3 only).
> >> *
> >> - * We enable alpha multiplication on Gen3 using the fixed alpha value
> >> + * We enable alpha multiplication on Gen3+ using the fixed alpha value
> >> * set through the V4L2_CID_ALPHA_COMPONENT control when the input
> >> * contains an alpha channel. On Gen2 the global alpha is ignored in
> >> * that case.
> >> @@ -155,7 +155,7 @@ static void rpf_configure_stream(struct vsp1_entity *entity,
> >> (fmtinfo->alpha ? VI6_RPF_ALPH_SEL_ASEL_PACKED
> >> : VI6_RPF_ALPH_SEL_ASEL_FIXED));
> >>
> >> - if (entity->vsp1->info->gen == 3) {
> >> + if (entity->vsp1->info->gen >= 3) {
> >> u32 mult;
> >>
> >> if (fmtinfo->alpha) {
> >> @@ -301,10 +301,10 @@ static void rpf_configure_partition(struct vsp1_entity *entity,
> >> }
> >>
> >> /*
> >> - * On Gen3 hardware the SPUVS bit has no effect on 3-planar
> >> + * On Gen3+ hardware the SPUVS bit has no effect on 3-planar
> >> * formats. Swap the U and V planes manually in that case.
> >> */
> >> - if (vsp1->info->gen == 3 && format->num_planes == 3 &&
> >> + if (vsp1->info->gen >= 3 && format->num_planes == 3 &&
> >> fmtinfo->swap_uv)
> >> swap(mem.addr[1], mem.addr[2]);
> >>
> >> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_video.c b/drivers/media/platform/renesas/vsp1/vsp1_video.c
> >> index 9d24647c8f32..544012fd1fe9 100644
> >> --- a/drivers/media/platform/renesas/vsp1/vsp1_video.c
> >> +++ b/drivers/media/platform/renesas/vsp1/vsp1_video.c
> >> @@ -267,10 +267,10 @@ static int vsp1_video_pipeline_setup_partitions(struct vsp1_pipeline *pipe)
> >> div_size = format->width;
> >>
> >> /*
> >> - * Only Gen3 hardware requires image partitioning, Gen2 will operate
> >> + * Only Gen3+ hardware requires image partitioning, Gen2 will operate
> >> * with a single partition that covers the whole output.
> >> */
> >> - if (vsp1->info->gen == 3) {
> >> + if (vsp1->info->gen >= 3) {
> >> list_for_each_entry(entity, &pipe->entities, list_pipe) {
> >> unsigned int entity_max;
> >>
> >> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_wpf.c b/drivers/media/platform/renesas/vsp1/vsp1_wpf.c
> >> index 94e91d7bb56c..d0074ca00920 100644
> >> --- a/drivers/media/platform/renesas/vsp1/vsp1_wpf.c
> >> +++ b/drivers/media/platform/renesas/vsp1/vsp1_wpf.c
> >> @@ -512,10 +512,10 @@ static void wpf_configure_partition(struct vsp1_entity *entity,
> >> }
> >>
> >> /*
> >> - * On Gen3 hardware the SPUVS bit has no effect on 3-planar
> >> + * On Gen3+ hardware the SPUVS bit has no effect on 3-planar
> >> * formats. Swap the U and V planes manually in that case.
> >> */
> >> - if (vsp1->info->gen == 3 && format->num_planes == 3 &&
> >> + if (vsp1->info->gen >= 3 && format->num_planes == 3 &&
> >> fmtinfo->swap_uv)
> >> swap(mem.addr[1], mem.addr[2]);
> >>
@@ -818,9 +818,9 @@ static const struct vsp1_device_info vsp1_device_infos[] = {
.wpf_count = 2,
.num_bru_inputs = 5,
}, {
- .version = VI6_IP_VERSION_MODEL_VSPD_V3U,
+ .version = VI6_IP_VERSION_MODEL_VSPD_GEN4,
.model = "VSP2-D",
- .gen = 3,
+ .gen = 4,
.features = VSP1_HAS_BRU | VSP1_HAS_EXT_DL,
.lif_count = 1,
.rpf_count = 5,
@@ -196,10 +196,10 @@ struct vsp1_hgo *vsp1_hgo_create(struct vsp1_device *vsp1)
/* Initialize the control handler. */
v4l2_ctrl_handler_init(&hgo->ctrls.handler,
- vsp1->info->gen == 3 ? 2 : 1);
+ vsp1->info->gen >= 3 ? 2 : 1);
hgo->ctrls.max_rgb = v4l2_ctrl_new_custom(&hgo->ctrls.handler,
&hgo_max_rgb_control, NULL);
- if (vsp1->info->gen == 3)
+ if (vsp1->info->gen >= 3)
hgo->ctrls.num_bins =
v4l2_ctrl_new_custom(&hgo->ctrls.handler,
&hgo_num_bins_control, NULL);
@@ -114,6 +114,7 @@ static void lif_configure_stream(struct vsp1_entity *entity,
break;
case VI6_IP_VERSION_MODEL_VSPD_GEN3:
+ case VI6_IP_VERSION_MODEL_VSPD_GEN4:
default:
hbth = 0;
obth = 3000;
@@ -766,7 +766,7 @@
#define VI6_IP_VERSION_MODEL_VSPD_V3 (0x18 << 8)
#define VI6_IP_VERSION_MODEL_VSPDL_GEN3 (0x19 << 8)
#define VI6_IP_VERSION_MODEL_VSPBS_GEN3 (0x1a << 8)
-#define VI6_IP_VERSION_MODEL_VSPD_V3U (0x1c << 8)
+#define VI6_IP_VERSION_MODEL_VSPD_GEN4 (0x1c << 8)
/* RZ/G2L SoCs have no version register, So use 0x80 as the model version */
#define VI6_IP_VERSION_MODEL_VSPD_RZG2L (0x80 << 8)
@@ -133,18 +133,18 @@ static void rpf_configure_stream(struct vsp1_entity *entity,
* a fixed alpha value set through the V4L2_CID_ALPHA_COMPONENT control
* otherwise.
*
- * The Gen3 RPF has extended alpha capability and can both multiply the
+ * The Gen3+ RPF has extended alpha capability and can both multiply the
* alpha channel by a fixed global alpha value, and multiply the pixel
* components to convert the input to premultiplied alpha.
*
* As alpha premultiplication is available in the BRx for both Gen2 and
- * Gen3 we handle it there and use the Gen3 alpha multiplier for global
+ * Gen3+ we handle it there and use the Gen3 alpha multiplier for global
* alpha multiplication only. This however prevents conversion to
* premultiplied alpha if no BRx is present in the pipeline. If that use
* case turns out to be useful we will revisit the implementation (for
* Gen3 only).
*
- * We enable alpha multiplication on Gen3 using the fixed alpha value
+ * We enable alpha multiplication on Gen3+ using the fixed alpha value
* set through the V4L2_CID_ALPHA_COMPONENT control when the input
* contains an alpha channel. On Gen2 the global alpha is ignored in
* that case.
@@ -155,7 +155,7 @@ static void rpf_configure_stream(struct vsp1_entity *entity,
(fmtinfo->alpha ? VI6_RPF_ALPH_SEL_ASEL_PACKED
: VI6_RPF_ALPH_SEL_ASEL_FIXED));
- if (entity->vsp1->info->gen == 3) {
+ if (entity->vsp1->info->gen >= 3) {
u32 mult;
if (fmtinfo->alpha) {
@@ -301,10 +301,10 @@ static void rpf_configure_partition(struct vsp1_entity *entity,
}
/*
- * On Gen3 hardware the SPUVS bit has no effect on 3-planar
+ * On Gen3+ hardware the SPUVS bit has no effect on 3-planar
* formats. Swap the U and V planes manually in that case.
*/
- if (vsp1->info->gen == 3 && format->num_planes == 3 &&
+ if (vsp1->info->gen >= 3 && format->num_planes == 3 &&
fmtinfo->swap_uv)
swap(mem.addr[1], mem.addr[2]);
@@ -267,10 +267,10 @@ static int vsp1_video_pipeline_setup_partitions(struct vsp1_pipeline *pipe)
div_size = format->width;
/*
- * Only Gen3 hardware requires image partitioning, Gen2 will operate
+ * Only Gen3+ hardware requires image partitioning, Gen2 will operate
* with a single partition that covers the whole output.
*/
- if (vsp1->info->gen == 3) {
+ if (vsp1->info->gen >= 3) {
list_for_each_entry(entity, &pipe->entities, list_pipe) {
unsigned int entity_max;
@@ -512,10 +512,10 @@ static void wpf_configure_partition(struct vsp1_entity *entity,
}
/*
- * On Gen3 hardware the SPUVS bit has no effect on 3-planar
+ * On Gen3+ hardware the SPUVS bit has no effect on 3-planar
* formats. Swap the U and V planes manually in that case.
*/
- if (vsp1->info->gen == 3 && format->num_planes == 3 &&
+ if (vsp1->info->gen >= 3 && format->num_planes == 3 &&
fmtinfo->swap_uv)
swap(mem.addr[1], mem.addr[2]);