hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
....@@ -1101,6 +1101,7 @@
11011101 }
11021102 }
11031103
1104
+#if 0
11041105 static void rtl8211F_led_control(struct phy_device *phydev)
11051106 {
11061107 printk("ben debug:rtl8211F_led_control...1 \n");
....@@ -1117,6 +1118,44 @@
11171118 // phy_write(phydev, 16, 0x6C0A);
11181119 printk("ben debug:rtl8211F_led_control...2 \n");
11191120 }
1121
+#endif
1122
+#define RTL_8211F_PHY_ID 0x001cc916
1123
+#define RTL_8211F_PHY_ID_MASK 0x001fffff
1124
+#define RTL_8211F_PAGE_SELECT 0x1f
1125
+#define RTL_8211F_LCR_ADDR 0x10
1126
+
1127
+#define GREEN_LED 0 // Â̵ÆÊÇLED0
1128
+#define YELLOW0_LED 1 // »ÆµÆÊÇLED1
1129
+#define YELLOW1_LED 2 // »ÆµÆÊÇLED2
1130
+
1131
+static int rtl8211F_led_control(struct phy_device *phydev)
1132
+{
1133
+ unsigned int temp;
1134
+
1135
+ printk("<<<<<<ben test led ctrl start... %s\n",__FUNCTION__);
1136
+ if(!phydev) return 0;
1137
+ if(phydev->phy_id!=0x001cc916) return 0; /* only for 8211E*/
1138
+
1139
+ // ÅäÖÃÍø¿ÚLEDµÆ
1140
+ phy_write(phydev, 31, 0xd04);
1141
+ temp = 0x02 << (5 * GREEN_LED); // Â̵ƱíʾÁ¬½Ó״̬
1142
+ temp |= 0x08 << (5 * YELLOW0_LED); // »ÆµÆ±íʾÁ¬½Ó״̬
1143
+
1144
+ temp |= 0x1b << (5 * YELLOW1_LED); // »ÆµÆ±íʾÊý¾Ý°üÊÕ·¢×´Ì¬
1145
+ phy_write(phydev, 0x10, temp);
1146
+
1147
+ temp = 1 << (YELLOW1_LED + 1); // Â̵Ʋ»Ö¸Ê¾EEE½ÚÄÜ״̬, ²åÁËÍøÏߺóµÆÒª³£ÁÁ
1148
+ // µ«»ÆµÆÒªÖ¸Ê¾EEE½ÚÄÜ״̬, ûÓÐÊý¾Ý°üʱµÆÒªÏ¨Ãð
1149
+ phy_write(phydev, 0x11, 0x00);
1150
+ phy_write(phydev, 31, 0);
1151
+
1152
+ // ²åÉÏÍøÏߺó, Â̵Ƴ£ÁÁ; °ÎµôÍøÏߺó, Â̵ÆÏ¨Ãð
1153
+ // Á´Â·Ö§³ÖEEE½ÚÄÜ: ÓÐÊý¾Ý´«Êä, »ÆµÆÉÁ˸, ·ñÔòϨÃð
1154
+ // Á´Â·²»Ö§³ÖEEE½ÚÄÜ: ÓÐÊý¾Ý´«Êä, »ÆµÆÉÁ˸, ·ñÔò³£ÁÁ
1155
+
1156
+ printk("<<<<<<<ben test led ctrl end %s\n",__FUNCTION__);
1157
+ return 0;
1158
+}
11201159
11211160 /**
11221161 * stmmac_init_phy - PHY initialization
....@@ -1132,29 +1171,43 @@
11321171 struct device_node *node;
11331172 int ret;
11341173
1174
+
1175
+ printk("ben stmmac_init_phy .. \n");
1176
+ mdelay(2000);
1177
+ printk("ben stmmac_init_phy delay .. \n");
11351178 if (priv->plat->integrated_phy_power)
11361179 ret = priv->plat->integrated_phy_power(priv->plat->bsp_priv, true);
11371180
11381181 node = priv->plat->phylink_node;
11391182
11401183 if (node)
1184
+ {
1185
+ //printk("ben ttt.. \n");
11411186 ret = phylink_of_phy_connect(priv->phylink, node, 0);
1187
+ //printk("ben ttt:%d \n", ret);
1188
+ }
11421189
11431190 /* Some DT bindings do not set-up the PHY handle. Let's try to
11441191 * manually parse it
11451192 */
1193
+ //printk("ben:stmmac_init_phy..1 \n");
11461194 if (!node || ret) {
1195
+ //if (1) {
11471196 int addr = priv->plat->phy_addr;
11481197 struct phy_device *phydev;
11491198
1199
+ //printk("ben:stmmac_init_phy..2 \n");
11501200 phydev = mdiobus_get_phy(priv->mii, addr);
11511201 if (!phydev) {
11521202 netdev_err(priv->dev, "no phy at addr %d\n", addr);
11531203 return -ENODEV;
11541204 }
11551205
1156
- rtl8211F_led_control(phydev);
1206
+ //rtl8211F_led_control(phydev);
1207
+
1208
+ //printk("ben:stmmac_init_phy..3 \n");
11571209 ret = phylink_connect_phy(priv->phylink, phydev);
1210
+ //rtl8211F_led_control(phydev);
11581211 }
11591212
11601213 if (!priv->plat->pmt) {
....@@ -2884,6 +2937,7 @@
28842937 u32 chan;
28852938 int ret;
28862939
2940
+ //printk("ben:stmmac_open.. \n");
28872941 ret = pm_runtime_get_sync(priv->device);
28882942 if (ret < 0) {
28892943 pm_runtime_put_noidle(priv->device);
....@@ -2957,6 +3011,12 @@
29573011 goto init_error;
29583012 }
29593013 }
3014
+
3015
+
3016
+ #if 1
3017
+ printk("ben -------bootup add 2s delay time.\n");
3018
+ mdelay(2500);
3019
+ #endif
29603020
29613021 ret = stmmac_hw_setup(dev, true);
29623022 if (ret < 0) {
....@@ -5246,6 +5306,9 @@
52465306 */
52475307 pm_runtime_put(device);
52485308
5309
+ //add
5310
+ phy_register_fixup_for_uid(RTL_8211F_PHY_ID, RTL_8211F_PHY_ID_MASK, rtl8211F_led_control);
5311
+
52495312 return ret;
52505313
52515314 error_netdev_register:
....@@ -5457,6 +5520,12 @@
54575520 stmmac_free_tx_skbufs(priv);
54585521 stmmac_clear_descriptors(priv);
54595522
5523
+#if 1
5524
+ printk("ben -------resume add 2s delay time.\n");
5525
+ mdelay(2000);
5526
+
5527
+#endif
5528
+
54605529 stmmac_hw_setup(ndev, false);
54615530 stmmac_init_coalesce(priv);
54625531 stmmac_set_rx_mode(ndev);