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+rene...@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+rene...@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]);
> >>   

-- 
Regards,

Laurent Pinchart

Reply via email to