Commit cbe8e6be authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'net-stmmac-pcs-clean-up-pcs-interrupt-handling'

Russell King says:

====================
net: stmmac: pcs: clean up pcs interrupt handling

Clean up the stmmac PCS interrupt handling:

- Avoid promotion to unsigned long from unsigned int by defining PCS
  register bits/fields using u32 macros.
- Pass struct stmmac_priv into the host_irq_status MAC core method.
- Move the existing PCS interrupt handler (dwmac_pcs_isr) into
  stmmac_pcs.c, change it's arguments, use dev_info() rather than
  pr_info()
- arrange to call phylink_pcs_change() on link state changes.
====================

Link: https://patch.msgid.link/aWOiOfDQkMXDwtPp@shell.armlinux.org.uk


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 0391ab57 ce24299b
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -265,10 +265,10 @@ static void dwmac1000_pmt(struct mac_device_info *hw, unsigned long mode)
	writel(pmt, ioaddr + GMAC_PMT);
}

static int dwmac1000_irq_status(struct mac_device_info *hw,
static int dwmac1000_irq_status(struct stmmac_priv *priv,
				struct stmmac_extra_stats *x)
{
	void __iomem *ioaddr = hw->pcsr;
	void __iomem *ioaddr = priv->hw->pcsr;
	u32 intr_status = readl(ioaddr + GMAC_INT_STATUS);
	u32 intr_mask = readl(ioaddr + GMAC_INT_MASK);
	int ret = 0;
@@ -304,7 +304,8 @@ static int dwmac1000_irq_status(struct mac_device_info *hw,
			x->irq_rx_path_exit_lpi_mode_n++;
	}

	dwmac_pcs_isr(ioaddr, GMAC_PCS_BASE, intr_status, x);
	if (intr_status & (PCS_ANE_IRQ | PCS_LINK_IRQ))
		stmmac_integrated_pcs_irq(priv, intr_status, x);

	return ret;
}
+1 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ static int dwmac100_rx_ipc_enable(struct mac_device_info *hw)
	return 0;
}

static int dwmac100_irq_status(struct mac_device_info *hw,
static int dwmac100_irq_status(struct stmmac_priv *priv,
			       struct stmmac_extra_stats *x)
{
	return 0;
+4 −3
Original line number Diff line number Diff line
@@ -615,10 +615,10 @@ static int dwmac4_irq_mtl_status(struct stmmac_priv *priv,
	return ret;
}

static int dwmac4_irq_status(struct mac_device_info *hw,
static int dwmac4_irq_status(struct stmmac_priv *priv,
			     struct stmmac_extra_stats *x)
{
	void __iomem *ioaddr = hw->pcsr;
	void __iomem *ioaddr = priv->hw->pcsr;
	u32 intr_status = readl(ioaddr + GMAC_INT_STATUS);
	u32 intr_enable = readl(ioaddr + GMAC_INT_EN);
	int ret = 0;
@@ -658,7 +658,8 @@ static int dwmac4_irq_status(struct mac_device_info *hw,
			x->irq_rx_path_exit_lpi_mode_n++;
	}

	dwmac_pcs_isr(ioaddr, GMAC_PCS_BASE, intr_status, x);
	if (intr_status & (PCS_ANE_IRQ | PCS_LINK_IRQ))
		stmmac_integrated_pcs_irq(priv, intr_status, x);

	return ret;
}
+2 −2
Original line number Diff line number Diff line
@@ -298,10 +298,10 @@ static void dwxgmac2_dump_regs(struct mac_device_info *hw, u32 *reg_space)
		reg_space[i] = readl(ioaddr + i * 4);
}

static int dwxgmac2_host_irq_status(struct mac_device_info *hw,
static int dwxgmac2_host_irq_status(struct stmmac_priv *priv,
				    struct stmmac_extra_stats *x)
{
	void __iomem *ioaddr = hw->pcsr;
	void __iomem *ioaddr = priv->hw->pcsr;
	u32 stat, en;
	int ret = 0;

+2 −2
Original line number Diff line number Diff line
@@ -354,7 +354,7 @@ struct stmmac_ops {
	/* Dump MAC registers */
	void (*dump_regs)(struct mac_device_info *hw, u32 *reg_space);
	/* Handle extra events on specific interrupts hw dependent */
	int (*host_irq_status)(struct mac_device_info *hw,
	int (*host_irq_status)(struct stmmac_priv *priv,
			       struct stmmac_extra_stats *x);
	/* Handle MTL interrupts */
	int (*host_mtl_irq_status)(struct stmmac_priv *priv,
@@ -453,7 +453,7 @@ struct stmmac_ops {
#define stmmac_dump_mac_regs(__priv, __args...) \
	stmmac_do_void_callback(__priv, mac, dump_regs, __args)
#define stmmac_host_irq_status(__priv, __args...) \
	stmmac_do_callback(__priv, mac, host_irq_status, __args)
	stmmac_do_callback(__priv, mac, host_irq_status, __priv, __args)
#define stmmac_host_mtl_irq_status(__priv, __args...) \
	stmmac_do_callback(__priv, mac, host_mtl_irq_status, __priv, __args)
#define stmmac_set_filter(__priv, __args...) \
Loading