[experimental patch] sungem: force serdes dection on buildin V880 fiber gigabit ethernet

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

 



On a SunFire 880 the internal fibre gigabit interface (gem chip,
an Agilent HDMP-1636A serdes on board) needs to be detected as
a serdes and not as a seriallink.

The appended experimental patch changes this during detection and
make the interface working (on top of the patches developed with davem for
the Sun PCI gigabit fibre interface card).

Please comment and tell if there is a PCI sungem with seriallink and an
ID of PCI_DEVICE_ID_SUN_GEM(2bad) out there.

BTW, the patch is against debian lenny kernel sources (2.6.26-2-sparc64-smp),
as since 2.6.27rcX the kernel did not run anymore on this hardware
(will try 2.6.31.6 when compile finished).

Thanks,
  Hermann

-- 
Netzwerkadministration/Zentrale Dienste, Interdiziplinaeres 
Zentrum fuer wissenschaftliches Rechnen der Universitaet Heidelberg
IWR; INF 368; 69120 Heidelberg; Tel: (06221)54-8236 Fax: -5224
Email: Hermann.Lauer@xxxxxxxxxxxxxxxxxxxxx
diff -up build_sparc_none_sparc64-smp/drivers/net/sungem.c.detect build_sparc_none_sparc64-smp/drivers/net/sungem.c
--- build_sparc_none_sparc64-smp/drivers/net/sungem.c.detect	2009-11-13 11:56:58.000000000 +0100
+++ build_sparc_none_sparc64-smp/drivers/net/sungem.c	2009-11-13 11:54:24.000000000 +0100
@@ -2062,7 +2062,11 @@ static int gem_check_invariants(struct g
 		mif_cfg &= ~MIF_CFG_PSELECT;
 		writel(mif_cfg, gp->regs + MIF_CFG);
 	} else {
-		gp->phy_type = phy_serialink;
+	        if (pdev->device == PCI_DEVICE_ID_SUN_GEM) {
+		  printk(KERN_INFO PFX "SUNGEM phy_serdes forced.\n");
+		  gp->phy_type = phy_serdes;
+		} else
+		  gp->phy_type = phy_serialink;
 	}
 	if (gp->phy_type == phy_mii_mdio1 ||
 	    gp->phy_type == phy_mii_mdio0) {

[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux