RE: [PATCH 3/3] media: vsp1: Add support for RZ/G2L VSPD

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Geert,

Thanks for the feedback.

> Subject: Re: [PATCH 3/3] media: vsp1: Add support for RZ/G2L VSPD
> 
> Hi Biju,
> 
> On Wed, Mar 9, 2022 at 8:45 PM Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> wrote:
> > The RZ/G2L VSPD provides a single VSPD instance. It has the following
> > sub modules MAU, CTU, RPF, DPR, LUT, BRS, WPF and LIF.
> >
> > The VSPD block on RZ/G2L does not have a version register, so added a
> > new compatible string "renesas,vsp2-rzg2l" with a data pointer
> > containing the info structure. Also the reset line is shared with the
> > DU module so devm_reset_control_get_shared() call is used in case of
> RZ/G2L.
> >
> > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> > Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
> > ---
> > RFC->v1:
> >  * Used data pointer containing info structure to retrieve version
> > information
> > RFC:
> >  *
> 
> Thanks for the update!
> 
> > --- a/drivers/media/platform/vsp1/vsp1_drv.c
> > +++ b/drivers/media/platform/vsp1/vsp1_drv.c
> 
> > @@ -841,7 +849,14 @@ static int vsp1_probe(struct platform_device *pdev)
> >         if (irq < 0)
> >                 return irq;
> >
> > -       vsp1->rstc = devm_reset_control_get_exclusive(&pdev->dev, NULL);
> > +       vsp1->info = of_device_get_match_data(&pdev->dev);
> > +       if (vsp1->info) {
> > +               vsp1->version = vsp1->info->version;
> > +               vsp1->rstc = devm_reset_control_get_shared(&pdev->dev,
> NULL);
> > +       } else {
> > +               vsp1->rstc =
> > + devm_reset_control_get_exclusive(&pdev->dev, NULL);
> 
> Making the reset control shared or exclusive dependent on the presence of
> match data looks fragile to me.  I think you want to check the IP version
> instead (ideally, the SoC, as this is an integration feature).
> Or just make it shared unconditionally (in the previous patch)?

Agreed.

> 
> > +       }
> > +
> >         if (IS_ERR(vsp1->rstc))
> >                 return dev_err_probe(&pdev->dev, PTR_ERR(vsp1->rstc),
> >                                      "failed to get reset ctrl\n"); @@
> > -874,13 +889,15 @@ static int vsp1_probe(struct platform_device *pdev)
> >         if (ret < 0)
> >                 goto done;
> >
> > -       vsp1->version = vsp1_read(vsp1, VI6_IP_VERSION);
> > +       if (!vsp1->info) {
> > +               vsp1->version = vsp1_read(vsp1, VI6_IP_VERSION);
> >
> > -       for (i = 0; i < ARRAY_SIZE(vsp1_device_infos); ++i) {
> > -               if ((vsp1->version & VI6_IP_VERSION_MODEL_MASK) ==
> > -                   vsp1_device_infos[i].version) {
> > -                       vsp1->info = &vsp1_device_infos[i];
> > -                       break;
> > +               for (i = 0; i < ARRAY_SIZE(vsp1_device_infos); ++i) {
> > +                       if ((vsp1->version & VI6_IP_VERSION_MODEL_MASK)
> ==
> > +                           vsp1_device_infos[i].version) {
> > +                               vsp1->info = &vsp1_device_infos[i];
> > +                               break;
> > +                       }
> >                 }
> >         }
> >
> > @@ -943,6 +960,7 @@ static int vsp1_remove(struct platform_device
> > *pdev)  static const struct of_device_id vsp1_of_match[] = {
> >         { .compatible = "renesas,vsp1" },
> >         { .compatible = "renesas,vsp2" },
> > +       { .compatible = "renesas,vsp2-rzg2l", .data =
> > + &vsp1_device_infos[14] },
> >         { },
> 
> Is VI6_IP_VERSION_MODEL_VSPD_RZG2L = 0x1b an official number?
> If yes, it might make sense to change the compatible value to
> "renesas,vsp2-0x1b".

No, it is not official one. I just use 0x1b as no one claimed it.

Cheers,
Biju




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux