summaryrefslogtreecommitdiffstats
path: root/target/linux/amcc/patches/100-taishan_emac.patch
blob: fde73b77b6b71e578786a0865f68b89870d1a558 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
diff -Nur linux-2.6.21/drivers/net/ibm_emac/ibm_emac_phy.c linux-2.6.21-owrt/drivers/net/ibm_emac/ibm_emac_phy.c
--- linux-2.6.21/drivers/net/ibm_emac/ibm_emac_phy.c	2007-04-27 23:49:26.000000000 +0200
+++ linux-2.6.21-owrt/drivers/net/ibm_emac/ibm_emac_phy.c	2007-05-28 16:27:15.000000000 +0200
@@ -299,11 +299,50 @@
 	.ops		= &cis8201_phy_ops
 };
 
+#if defined(CONFIG_TAISHAN)
+static int et1011c_init(struct mii_phy *phy)
+{
+	u16 reg_short;
+
+	reg_short = (u16)(phy_read(phy,0x16));
+	reg_short &= ~(0x7);
+	reg_short |= 0x6;	/* RGMII Trace Delay*/	
+	phy_write(phy, 0x16, reg_short);
+			
+	reg_short = (u16)(phy_read(phy, 0x17));
+	reg_short &= ~(0x40);
+	phy_write(phy, 0x17, reg_short);
+	
+	phy_write(phy,0x1c,0x74f0);
+	return 0;
+}
+	
+static struct mii_phy_ops et1011c_phy_ops = {
+	.init		= et1011c_init,
+	.setup_aneg	= genmii_setup_aneg,
+	.setup_forced	= genmii_setup_forced,
+	.poll_link	= genmii_poll_link,
+	.read_link	= genmii_read_link
+};
+
+static struct mii_phy_def et1011c_phy_def = {
+	.phy_id		= 0x0282f000,
+	.phy_id_mask	= 0x0fffff00,
+	.name		= "ET1011C Gigabit Ethernet",
+	.ops		= &et1011c_phy_ops
+};
+
+static struct mii_phy_def *mii_phy_table[] = {
+	&et1011c_phy_def,
+	NULL
+};
+#else
 static struct mii_phy_def *mii_phy_table[] = {
 	&cis8201_phy_def,
 	&genmii_phy_def,
 	NULL
 };
+#endif
 
 int mii_phy_probe(struct mii_phy *phy, int address)
 {
diff -Nur linux-2.6.21/drivers/net/ibm_emac/ibm_emac_zmii.c linux-2.6.21-owrt/drivers/net/ibm_emac/ibm_emac_zmii.c
--- linux-2.6.21/drivers/net/ibm_emac/ibm_emac_zmii.c	2007-04-27 23:49:26.000000000 +0200
+++ linux-2.6.21-owrt/drivers/net/ibm_emac/ibm_emac_zmii.c	2007-05-28 16:26:48.000000000 +0200
@@ -170,6 +170,13 @@
 	struct ocp_func_emac_data *emacdata = dev->def->additions;
 
 	if (emacdata->zmii_idx >= 0) {
+#if defined(CONFIG_TAISHAN)
+		/* don't attach emac0 and emac1 */
+		if( dev->def->index < 2 ) 
+		{
+			return -ENODEV;
+		}
+#endif		
 		dev->zmii_input = emacdata->zmii_mux;
 		dev->zmii_dev =
 		    ocp_find_device(OCP_VENDOR_IBM, OCP_FUNC_ZMII,