Re: Registering IRQ for MT7530 internal PHYs

From: Andrew Lunn
Date: Wed Dec 30 2020 - 10:26:15 EST


On Wed, Dec 30, 2020 at 09:42:09AM +0000, Marc Zyngier wrote:
> > +static irqreturn_t
> > +mt7530_irq(int irq, void *data)
> > +{
> > + struct mt7530_priv *priv = data;
> > + bool handled = false;
> > + int phy;
> > + u32 val;
> > +
> > + val = mt7530_read(priv, MT7530_SYS_INT_STS);
> > + mt7530_write(priv, MT7530_SYS_INT_STS, val);
>
> If that is an ack operation, it should be dealt with as such in
> an irqchip callback instead of being open-coded here.

Hi Qingfang

Does the PHY itself have interrupt control and status registers?

My experience with the Marvell Switch and its embedded PHYs is that
the PHYs are just the same as the discrete PHYs. There are bits to
enable different interrupts, and there are status bits indicating what
event caused the interrupt. Clearing the interrupt in the PHY clears
the interrupt in the switch interrupt controller. So in the mv88e6xxx
interrupt code, you see i do a read of the switch interrupt controller
status register, but i don't write to it as you have done.

Andrew