RE: [PATCH 2/2] usb: gadget: udc: renesas_usb3: Add support for RZ/V2M

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

 



Hi Geert,

Thanks for your review!

On 21 July 2022 13:10 Geert Uytterhoeven wrote:
> On Mon, Jul 18, 2022 at 3:45 PM Phil Edworthy wrote:
> > RZ/V2M (r9a09g011) has a few differences:
> >  - The USB3_DRD_CON register has moved, its called USB_PERI_DRD_CON in
> >    the RZ/V2M hardware manual.
> >    It has additional bits for host and peripheral reset that need to
> >    cleared to use usb host and peripheral respectively.
> >  - The USB3_OTG_STA, USB3_OTG_INT_STA and USB3_OTG_INT_ENA registers
> >    have been moved and renamed to USB_PERI_DRD_STA, USB_PERI_DRD_INT_STA
> >    and USB_PERI_DRD_INT_E.
> >  - The IDMON bit used in the above regs for role detection have moved
> >    from bit 4 to bit 0.
> >  - RZ/V2M has an separate interrupt for DRD, i.e. for changes to IDMON.
> >  - There are reset lines for DRD and USBP
> >  - There is another clock, managed by runtime PM.
> >
> > Signed-off-by: Phil Edworthy <phil.edworthy@xxxxxxxxxxx>
> > Reviewed-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> 
> Thanks for your patch!
> 
> > --- a/drivers/usb/gadget/udc/renesas_usb3.c
> > +++ b/drivers/usb/gadget/udc/renesas_usb3.c
> 
> > @@ -363,6 +368,7 @@ struct renesas_usb3 {
> >         bool forced_b_device;
> >         bool start_to_connect;
> >         bool role_sw_by_connector;
> > +       bool r9a09g011;
> 
> Any better name for this feature flag?
Nothing springs to mind. We could use separate flags for has_resets,
has_drd_irq, max_nr_pipes but I am struggling to come up with names
for the offset registers and moved bits. Any suggestions?


> >  };
> 
> > @@ -2707,6 +2733,12 @@ static const struct renesas_usb3_priv
> renesas_usb3_priv_r8a77990 = {
> >         .workaround_for_vbus = true,
> >  };
> >
> > +static const struct renesas_usb3_priv renesas_usb3_priv_r9a09g011 = {
> 
> renesas_usb3_priv_rzv2m?
Ok

> > +       .ramsize_per_ramif = SZ_32K,
> > +       .num_ramif = 1,
> > +       .ramsize_per_pipe = SZ_4K,
> > +};
> > +
> >  static const struct of_device_id usb3_of_match[] = {
> >         {
> >                 .compatible = "renesas,r8a774c0-usb3-peri",
> > @@ -2717,6 +2749,9 @@ static const struct of_device_id usb3_of_match[] =
> {
> >         }, {
> >                 .compatible = "renesas,r8a77990-usb3-peri",
> >                 .data = &renesas_usb3_priv_r8a77990,
> > +       }, {
> > +               .compatible = "renesas,r9a09g011-usb3-peri",
> 
> As the bindings include a family-specific compatible value, you should
> use that ("renesas,rzv2m-usb3-peri") here.
Ok

> > +               .data = &renesas_usb3_priv_r9a09g011,
> >         }, {
> >                 .compatible = "renesas,rcar-gen3-usb3-peri",
> >                 .data = &renesas_usb3_priv_gen3,
> 
> > @@ -2758,13 +2793,22 @@ static int renesas_usb3_probe(struct
> platform_device *pdev)
> >         else
> >                 priv = of_device_get_match_data(&pdev->dev);
> >
> > +       usb3 = devm_kzalloc(&pdev->dev, sizeof(*usb3), GFP_KERNEL);
> > +       if (!usb3)
> > +               return -ENOMEM;
> > +
> > +       if (priv == &renesas_usb3_priv_r9a09g011)
> 
> Please store the feature flag in renesas_usb3_priv instead of doing an
> explicit comparison.
Ok, will do!

> > +               usb3->r9a09g011 = true;
> > +

Thanks
Phil




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux