.. | .. |
---|
1101 | 1101 | } |
---|
1102 | 1102 | } |
---|
1103 | 1103 | |
---|
| 1104 | +#if 0 |
---|
| 1105 | +static void rtl8211F_led_control(struct phy_device *phydev) |
---|
| 1106 | +{ |
---|
| 1107 | + printk("ben debug:rtl8211F_led_control...1 \n"); |
---|
| 1108 | + |
---|
| 1109 | + if(!phydev) return; |
---|
| 1110 | + if(phydev->phy_id!=0x001cc916) return; /* only for 8211E*/ |
---|
| 1111 | + |
---|
| 1112 | + /*switch to extension page44*/ |
---|
| 1113 | + phy_write(phydev, 31, 0x0d04); |
---|
| 1114 | +//add hc 1000M --> orange |
---|
| 1115 | +// 100M --> green |
---|
| 1116 | + phy_write(phydev, 16, 0x6D02); |
---|
| 1117 | +//add hc 1000M&100M --> green |
---|
| 1118 | +// phy_write(phydev, 16, 0x6C0A); |
---|
| 1119 | + printk("ben debug:rtl8211F_led_control...2 \n"); |
---|
| 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 |
---|
| 1128 | +#define YELLOW0_LED 1 |
---|
| 1129 | +#define YELLOW1_LED 2 |
---|
| 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 | + phy_write(phydev, 31, 0xd04); |
---|
| 1140 | + temp = 0x02 << (5 * GREEN_LED); |
---|
| 1141 | + temp |= 0x08 << (5 * YELLOW0_LED); |
---|
| 1142 | + |
---|
| 1143 | + temp |= 0x1b << (5 * YELLOW1_LED); |
---|
| 1144 | + phy_write(phydev, 0x10, temp); |
---|
| 1145 | + |
---|
| 1146 | + temp = 1 << (YELLOW1_LED + 1); |
---|
| 1147 | + phy_write(phydev, 0x11, 0x00); |
---|
| 1148 | + phy_write(phydev, 31, 0); |
---|
| 1149 | + |
---|
| 1150 | + return 0; |
---|
| 1151 | +} |
---|
| 1152 | + |
---|
1104 | 1153 | /** |
---|
1105 | 1154 | * stmmac_init_phy - PHY initialization |
---|
1106 | 1155 | * @dev: net device structure |
---|
.. | .. |
---|
1115 | 1164 | struct device_node *node; |
---|
1116 | 1165 | int ret; |
---|
1117 | 1166 | |
---|
| 1167 | + |
---|
| 1168 | + printk("ben stmmac_init_phy .. \n"); |
---|
| 1169 | + mdelay(2000); |
---|
| 1170 | + printk("ben stmmac_init_phy delay .. \n"); |
---|
1118 | 1171 | if (priv->plat->integrated_phy_power) |
---|
1119 | 1172 | ret = priv->plat->integrated_phy_power(priv->plat->bsp_priv, true); |
---|
1120 | 1173 | |
---|
1121 | 1174 | node = priv->plat->phylink_node; |
---|
1122 | 1175 | |
---|
1123 | 1176 | if (node) |
---|
| 1177 | + { |
---|
| 1178 | + //printk("ben ttt.. \n"); |
---|
1124 | 1179 | ret = phylink_of_phy_connect(priv->phylink, node, 0); |
---|
| 1180 | + //printk("ben ttt:%d \n", ret); |
---|
| 1181 | + } |
---|
1125 | 1182 | |
---|
1126 | 1183 | /* Some DT bindings do not set-up the PHY handle. Let's try to |
---|
1127 | 1184 | * manually parse it |
---|
1128 | 1185 | */ |
---|
| 1186 | + //printk("ben:stmmac_init_phy..1 \n"); |
---|
1129 | 1187 | if (!node || ret) { |
---|
| 1188 | + //if (1) { |
---|
1130 | 1189 | int addr = priv->plat->phy_addr; |
---|
1131 | 1190 | struct phy_device *phydev; |
---|
1132 | 1191 | |
---|
| 1192 | + //printk("ben:stmmac_init_phy..2 \n"); |
---|
1133 | 1193 | phydev = mdiobus_get_phy(priv->mii, addr); |
---|
1134 | 1194 | if (!phydev) { |
---|
1135 | 1195 | netdev_err(priv->dev, "no phy at addr %d\n", addr); |
---|
1136 | 1196 | return -ENODEV; |
---|
1137 | 1197 | } |
---|
1138 | 1198 | |
---|
| 1199 | + //rtl8211F_led_control(phydev); |
---|
| 1200 | + |
---|
| 1201 | + //printk("ben:stmmac_init_phy..3 \n"); |
---|
1139 | 1202 | ret = phylink_connect_phy(priv->phylink, phydev); |
---|
| 1203 | + //rtl8211F_led_control(phydev); |
---|
1140 | 1204 | } |
---|
1141 | 1205 | |
---|
1142 | 1206 | if (!priv->plat->pmt) { |
---|
.. | .. |
---|
1145 | 1209 | phylink_ethtool_get_wol(priv->phylink, &wol); |
---|
1146 | 1210 | device_set_wakeup_capable(priv->device, !!wol.supported); |
---|
1147 | 1211 | } |
---|
1148 | | - |
---|
1149 | 1212 | return ret; |
---|
1150 | 1213 | } |
---|
1151 | 1214 | |
---|
.. | .. |
---|
2345 | 2408 | */ |
---|
2346 | 2409 | static void stmmac_check_ether_addr(struct stmmac_priv *priv) |
---|
2347 | 2410 | { |
---|
2348 | | - if (!is_valid_ether_addr(priv->dev->dev_addr)) { |
---|
| 2411 | +// if (!is_valid_ether_addr(priv->dev->dev_addr)) { |
---|
| 2412 | + if (1) { |
---|
2349 | 2413 | stmmac_get_umac_addr(priv, priv->hw, priv->dev->dev_addr, 0); |
---|
2350 | 2414 | if (likely(priv->plat->get_eth_addr)) |
---|
2351 | 2415 | priv->plat->get_eth_addr(priv->plat->bsp_priv, |
---|
.. | .. |
---|
2866 | 2930 | u32 chan; |
---|
2867 | 2931 | int ret; |
---|
2868 | 2932 | |
---|
| 2933 | + //printk("ben:stmmac_open.. \n"); |
---|
2869 | 2934 | ret = pm_runtime_get_sync(priv->device); |
---|
2870 | 2935 | if (ret < 0) { |
---|
2871 | 2936 | pm_runtime_put_noidle(priv->device); |
---|
.. | .. |
---|
2939 | 3004 | goto init_error; |
---|
2940 | 3005 | } |
---|
2941 | 3006 | } |
---|
| 3007 | + |
---|
| 3008 | + |
---|
| 3009 | + #if 1 |
---|
| 3010 | + printk("ben -------bootup add 2s delay time.\n"); |
---|
| 3011 | + mdelay(2500); |
---|
| 3012 | + #endif |
---|
2942 | 3013 | |
---|
2943 | 3014 | ret = stmmac_hw_setup(dev, true); |
---|
2944 | 3015 | if (ret < 0) { |
---|
.. | .. |
---|
5228 | 5299 | */ |
---|
5229 | 5300 | pm_runtime_put(device); |
---|
5230 | 5301 | |
---|
| 5302 | + //add |
---|
| 5303 | + phy_register_fixup_for_uid(RTL_8211F_PHY_ID, RTL_8211F_PHY_ID_MASK, rtl8211F_led_control); |
---|
| 5304 | + |
---|
5231 | 5305 | return ret; |
---|
5232 | 5306 | |
---|
5233 | 5307 | error_netdev_register: |
---|
.. | .. |
---|
5439 | 5513 | stmmac_free_tx_skbufs(priv); |
---|
5440 | 5514 | stmmac_clear_descriptors(priv); |
---|
5441 | 5515 | |
---|
| 5516 | +#if 1 |
---|
| 5517 | + printk("ben -------resume add 2s delay time.\n"); |
---|
| 5518 | + mdelay(2000); |
---|
| 5519 | + |
---|
| 5520 | +#endif |
---|
| 5521 | + |
---|
5442 | 5522 | stmmac_hw_setup(ndev, false); |
---|
5443 | 5523 | stmmac_init_coalesce(priv); |
---|
5444 | 5524 | stmmac_set_rx_mode(ndev); |
---|