.. | .. |
---|
1101 | 1101 | } |
---|
1102 | 1102 | } |
---|
1103 | 1103 | |
---|
| 1104 | +#if 0 |
---|
1104 | 1105 | static void rtl8211F_led_control(struct phy_device *phydev) |
---|
1105 | 1106 | { |
---|
1106 | 1107 | printk("ben debug:rtl8211F_led_control...1 \n"); |
---|
.. | .. |
---|
1117 | 1118 | // phy_write(phydev, 16, 0x6C0A); |
---|
1118 | 1119 | printk("ben debug:rtl8211F_led_control...2 \n"); |
---|
1119 | 1120 | } |
---|
| 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 | +} |
---|
1120 | 1159 | |
---|
1121 | 1160 | /** |
---|
1122 | 1161 | * stmmac_init_phy - PHY initialization |
---|
.. | .. |
---|
1132 | 1171 | struct device_node *node; |
---|
1133 | 1172 | int ret; |
---|
1134 | 1173 | |
---|
| 1174 | + |
---|
| 1175 | + printk("ben stmmac_init_phy .. \n"); |
---|
| 1176 | + mdelay(2000); |
---|
| 1177 | + printk("ben stmmac_init_phy delay .. \n"); |
---|
1135 | 1178 | if (priv->plat->integrated_phy_power) |
---|
1136 | 1179 | ret = priv->plat->integrated_phy_power(priv->plat->bsp_priv, true); |
---|
1137 | 1180 | |
---|
1138 | 1181 | node = priv->plat->phylink_node; |
---|
1139 | 1182 | |
---|
1140 | 1183 | if (node) |
---|
| 1184 | + { |
---|
| 1185 | + //printk("ben ttt.. \n"); |
---|
1141 | 1186 | ret = phylink_of_phy_connect(priv->phylink, node, 0); |
---|
| 1187 | + //printk("ben ttt:%d \n", ret); |
---|
| 1188 | + } |
---|
1142 | 1189 | |
---|
1143 | 1190 | /* Some DT bindings do not set-up the PHY handle. Let's try to |
---|
1144 | 1191 | * manually parse it |
---|
1145 | 1192 | */ |
---|
| 1193 | + //printk("ben:stmmac_init_phy..1 \n"); |
---|
1146 | 1194 | if (!node || ret) { |
---|
| 1195 | + //if (1) { |
---|
1147 | 1196 | int addr = priv->plat->phy_addr; |
---|
1148 | 1197 | struct phy_device *phydev; |
---|
1149 | 1198 | |
---|
| 1199 | + //printk("ben:stmmac_init_phy..2 \n"); |
---|
1150 | 1200 | phydev = mdiobus_get_phy(priv->mii, addr); |
---|
1151 | 1201 | if (!phydev) { |
---|
1152 | 1202 | netdev_err(priv->dev, "no phy at addr %d\n", addr); |
---|
1153 | 1203 | return -ENODEV; |
---|
1154 | 1204 | } |
---|
1155 | 1205 | |
---|
1156 | | - rtl8211F_led_control(phydev); |
---|
| 1206 | + //rtl8211F_led_control(phydev); |
---|
| 1207 | + |
---|
| 1208 | + //printk("ben:stmmac_init_phy..3 \n"); |
---|
1157 | 1209 | ret = phylink_connect_phy(priv->phylink, phydev); |
---|
| 1210 | + //rtl8211F_led_control(phydev); |
---|
1158 | 1211 | } |
---|
1159 | 1212 | |
---|
1160 | 1213 | if (!priv->plat->pmt) { |
---|
.. | .. |
---|
2884 | 2937 | u32 chan; |
---|
2885 | 2938 | int ret; |
---|
2886 | 2939 | |
---|
| 2940 | + //printk("ben:stmmac_open.. \n"); |
---|
2887 | 2941 | ret = pm_runtime_get_sync(priv->device); |
---|
2888 | 2942 | if (ret < 0) { |
---|
2889 | 2943 | pm_runtime_put_noidle(priv->device); |
---|
.. | .. |
---|
2957 | 3011 | goto init_error; |
---|
2958 | 3012 | } |
---|
2959 | 3013 | } |
---|
| 3014 | + |
---|
| 3015 | + |
---|
| 3016 | + #if 1 |
---|
| 3017 | + printk("ben -------bootup add 2s delay time.\n"); |
---|
| 3018 | + mdelay(2500); |
---|
| 3019 | + #endif |
---|
2960 | 3020 | |
---|
2961 | 3021 | ret = stmmac_hw_setup(dev, true); |
---|
2962 | 3022 | if (ret < 0) { |
---|
.. | .. |
---|
5246 | 5306 | */ |
---|
5247 | 5307 | pm_runtime_put(device); |
---|
5248 | 5308 | |
---|
| 5309 | + //add |
---|
| 5310 | + phy_register_fixup_for_uid(RTL_8211F_PHY_ID, RTL_8211F_PHY_ID_MASK, rtl8211F_led_control); |
---|
| 5311 | + |
---|
5249 | 5312 | return ret; |
---|
5250 | 5313 | |
---|
5251 | 5314 | error_netdev_register: |
---|
.. | .. |
---|
5457 | 5520 | stmmac_free_tx_skbufs(priv); |
---|
5458 | 5521 | stmmac_clear_descriptors(priv); |
---|
5459 | 5522 | |
---|
| 5523 | +#if 1 |
---|
| 5524 | + printk("ben -------resume add 2s delay time.\n"); |
---|
| 5525 | + mdelay(2000); |
---|
| 5526 | + |
---|
| 5527 | +#endif |
---|
| 5528 | + |
---|
5460 | 5529 | stmmac_hw_setup(ndev, false); |
---|
5461 | 5530 | stmmac_init_coalesce(priv); |
---|
5462 | 5531 | stmmac_set_rx_mode(ndev); |
---|