[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <TYYPR01MB708621F60F440B8A62E72AC3F5C69@TYYPR01MB7086.jpnprd01.prod.outlook.com>
Date: Mon, 9 May 2022 08:00:03 +0000
From: Phil Edworthy <phil.edworthy@...esas.com>
To: Sergey Shtylyov <s.shtylyov@....ru>,
"David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
Geert Uytterhoeven <geert+renesas@...der.be>
CC: Biju Das <biju.das.jz@...renesas.com>,
Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@...renesas.com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"linux-renesas-soc@...r.kernel.org"
<linux-renesas-soc@...r.kernel.org>
Subject: RE: [PATCH 5/9] ravb: Support separate Line0 (Desc), Line1 (Err) and
Line2 (Mgmt) irqs
Hi Sergey,
On 05 May 2022 20:41 Sergey Shtylyov wrote:
> On 5/4/22 5:54 PM, Phil Edworthy wrote:
>
> > R-Car has a combined interrupt line, ch22 = Line0_DiA | Line1_A |
> Line2_A.
>
> R-Car gen3, you mean? Because R-Car gen2 has single IRQ...
>
> > RZ/V2M has separate interrupt lines for each of these, so add a
> > feature that allows the driver to get these interrupts and call the
> common handler.
> >
> > We keep the "ch22" name for Line0_DiA and "ch24" for Line3 interrupts
> > to keep the code simple.
>
> Not sure I agree with such simplification -- at least about "ch22"...
Ok, I can change it.
> > Signed-off-by: Phil Edworthy <phil.edworthy@...esas.com>
> > Reviewed-by: Biju Das <biju.das.jz@...renesas.com>
>
> [...]
> > diff --git a/drivers/net/ethernet/renesas/ravb_main.c
> > b/drivers/net/ethernet/renesas/ravb_main.c
> > index d0b9688074ca..f12a23b9c391 100644
> > --- a/drivers/net/ethernet/renesas/ravb_main.c
> > +++ b/drivers/net/ethernet/renesas/ravb_main.c
> [...]
> > @@ -2167,6 +2184,10 @@ static int ravb_close(struct net_device *ndev)
> > free_irq(priv->rx_irqs[RAVB_BE], ndev);
> > free_irq(priv->emac_irq, ndev);
> > }
> > + if (info->err_mgmt_irqs) {
> > + free_irq(priv->erra_irq, ndev);
> > + free_irq(priv->mgmta_irq, ndev);
> > + }
>
> Shouldn't this be under:
>
> if (info->multi_irqs) {
>
> above?
Can do, though I guess we could also have devices in the future that
have separate err and mgmt interrupts, but not use the multiple channel
interrupts.
I'm easy either way.
> > free_irq(ndev->irq, ndev);
> >
> > if (info->nc_queues)
> > @@ -2665,6 +2686,22 @@ static int ravb_probe(struct platform_device
> *pdev)
> > }
> > }
> >
> > + if (info->err_mgmt_irqs) {
> > + irq = platform_get_irq_byname(pdev, "err_a");
> > + if (irq < 0) {
> > + error = irq;
> > + goto out_release;
> > + }
> > + priv->erra_irq = irq;
> > +
> > + irq = platform_get_irq_byname(pdev, "mgmt_a");
> > + if (irq < 0) {
> > + error = irq;
> > + goto out_release;
> > + }
> > + priv->mgmta_irq = irq;
> > + }
> > +
>
> Same here...
>
> > priv->clk = devm_clk_get(&pdev->dev, NULL);
> > if (IS_ERR(priv->clk)) {
> > error = PTR_ERR(priv->clk);
Thanks
Phil
Powered by blists - more mailing lists