Index: 8xx/drivers/net/fec_8xx/fec_mii.c
===================================================================
--- 8xx.orig/drivers/net/fec_8xx/fec_mii.c	2005-07-21 21:48:10.000000000 -0300
+++ 8xx/drivers/net/fec_8xx/fec_mii.c	2005-07-22 17:12:49.000000000 -0300
@@ -236,6 +236,38 @@
 }
 #endif
 
+#ifdef CONFIG_FEC_8XX_QS6612_PHY
+
+#define MII_QS6612_MCR       17	/* Mode Control Register      */
+#define MII_QS6612_FTR       27	/* Factory Test Register      */
+#define MII_QS6612_MCO       28	/* Misc. Control Register     */
+#define MII_QS6612_ISR       29	/* Interrupt Source Register  */
+#define MII_QS6612_IMR       30	/* Interrupt Mask Register    */
+#define MII_QS6612_PCR       31	/* 100BaseTx PHY Control Reg. */
+
+static void qs6612_startup(struct net_device *dev)
+{
+	struct fec_enet_private *fep = netdev_priv(dev);
+
+	fec_mii_write(dev, fep->mii_if.phy_id, MII_QS6612_PCR, 0x0dc0);
+	fec_mii_write(dev, fep->mii_if.phy_id, MII_QS6612_IMR, 0x003a);
+}
+
+static void qs6612_ack_int(struct net_device *dev)
+{
+	struct fec_enet_private *fep = netdev_priv(dev);
+	unsigned int status;
+
+	fec_mii_write(dev, fep->mii_if.phy_id, MII_QS6612_ISR, 0);
+	status = fec_mii_read(dev, fep->mii_if.phy_id, MII_QS6612_PCR);
+
+}
+
+static void qs6612_shutdown(struct net_device *dev)
+{
+}
+#endif
+
 /**********************************************************************************/
 
 static const struct phy_info phy_info[] = {
@@ -257,6 +289,15 @@
 	 .shutdown = lxt971_shutdown,
 	},
 #endif
+#ifdef CONFIG_FEC_8XX_QS6612_PHY
+	{
+	 .id = 0x00181440,
+	 .name = "QS6612",
+	 .startup = qs6612_startup,
+	 .ack_int = qs6612_ack_int,
+	 .shutdown = qs6612_shutdown
+	},
+#endif
 #ifdef CONFIG_FEC_8XX_GENERIC_PHY
 	{
 	 .id = 0,
