Skip to contentSkip to conversation

gianfar generic PHY assumptions.

PATCH David Updegraff 3 participants 3 messages Nov 17, 2005 Network drivers

lore
Share & tools
lore
#0 lore raw

Hi.

This patch lets gianfar work on 83xx (or 85xx??) boards that have Generic PHYs on them that do _NOT_ happen to have an IRQ line wired to external_15. Surely reasonable that if we can't ID the PHY that its probably not irq-wired the Freescale-ADS "way"...

It was critical for us; perhaps usefull for others.

-dbu.

drivers/net/gianfar_phy.c +14 -0
index 7c965f2..1c08bd0 100644
@@ -234,6 +234,19 @@ static int marvell_config_aneg(struct gf
 
 	return 0;
 }
+/* Init for GENERIC: just here to make sure the gainfar driver does not assume
+ * that it has an interrupt. Since don't even know what model it is, seems 
+ * unlikely that they have bothered to wire in an IRQ line exactly like the 
+ * the platform/ files have assumed.
+ */
+static int genmii_init(struct gfar_mii_info *mii_info)
+{
+	struct gfar_private *priv = netdev_priv(mii_info->dev);
+	if (priv)
+		priv->einfo->board_flags &= ~FSL_GIANFAR_BRD_HAS_PHY_INTR;
+	return 0;
+}
+
 static int genmii_config_aneg(struct gfar_mii_info *mii_info)
 {
 	if (mii_info->autoneg) {
@@ -585,6 +598,7 @@ static struct phy_info phy_info_genmii= 
 	.phy_id_mask	= 0x00000000,
 	.name		= "Generic MII",
 	.features	= MII_BASIC_FEATURES,
+	.init		= genmii_init,
 	.config_aneg	= genmii_config_aneg,
 	.read_status	= genmii_read_status,
 };
#1 lore raw
Quoted 8 lines · David Updegraff

Hi.

This patch lets gianfar work on 83xx (or 85xx??) boards that have Generic PHYs on them that do _NOT_ happen to have an IRQ line wired to external_15. Surely reasonable that if we can't ID the PHY that its probably not irq-wired the Freescale-ADS "way"...

It was critical for us; perhaps usefull for others.

The way PHYs are handle in 2.6.15 is completely different and the patch is not valid against the current tree.

- kumar

#2 lore raw
In reply to David Updegraff
Quoted 8 lines · David Updegraff

Hi.

This patch lets gianfar work on 83xx (or 85xx??) boards that have Generic PHYs on them that do _NOT_ happen to have an IRQ line wired to external_15. Surely reasonable that if we can't ID the PHY that its probably not irq-wired the Freescale-ADS "way"...

It was critical for us; perhaps usefull for others.

Aside from the fact that the patch doesn't apply against the current kernel due to the change of gianfar to use the phy layer...why wouldn't you just set the board_flags field appropriately in your board port? If you don't use a phy interrupt then don't set the flag claiming that you do. stx_gp3.c doesn't make use of the phy interrupt functionality, as an example.

I looked at an older kernel and I'm not sure where you see external 15 being used. It seems to be EXT5 on all the Fscale boards.

-Matt