| .. | .. |
|---|
| 2711 | 2711 | } |
|---|
| 2712 | 2712 | EXPORT_SYMBOL(dwmac_rk_get_phy_interface); |
|---|
| 2713 | 2713 | |
|---|
| 2714 | +static unsigned char macaddr[6]; |
|---|
| 2715 | +extern ssize_t at24_mac_read(unsigned char* addr); |
|---|
| 2714 | 2716 | static void rk_get_eth_addr(void *priv, unsigned char *addr) |
|---|
| 2715 | 2717 | { |
|---|
| 2716 | 2718 | struct rk_priv_data *bsp_priv = priv; |
|---|
| 2717 | 2719 | struct device *dev = &bsp_priv->pdev->dev; |
|---|
| 2718 | | - unsigned char ethaddr[ETH_ALEN * MAX_ETH] = {0}; |
|---|
| 2719 | | - int ret, id = bsp_priv->bus_id; |
|---|
| 2720 | + int i; |
|---|
| 2720 | 2721 | |
|---|
| 2722 | +#if 0 |
|---|
| 2721 | 2723 | if (is_valid_ether_addr(addr)) |
|---|
| 2722 | 2724 | goto out; |
|---|
| 2723 | 2725 | |
|---|
| .. | .. |
|---|
| 2747 | 2749 | } else { |
|---|
| 2748 | 2750 | memcpy(addr, ðaddr[id * ETH_ALEN], ETH_ALEN); |
|---|
| 2749 | 2751 | } |
|---|
| 2752 | +#endif |
|---|
| 2753 | + |
|---|
| 2754 | + #if 1 |
|---|
| 2755 | + if (at24_mac_read(macaddr) > 0) { |
|---|
| 2756 | + printk("ben %s: at24_mac_read Success!! \n", __func__); |
|---|
| 2757 | + memcpy(addr, macaddr, 6); |
|---|
| 2758 | + printk("Read the Ethernet MAC address from :"); |
|---|
| 2759 | + for (i = 0; i < 5; i++) |
|---|
| 2760 | + printk("%2.2x:", addr[i]); |
|---|
| 2761 | + |
|---|
| 2762 | + printk("%2.2x\n", addr[i]); |
|---|
| 2763 | + } else { |
|---|
| 2764 | + printk("ben %s: at24_mac_read Failed!! \n", __func__); |
|---|
| 2765 | + goto out; |
|---|
| 2766 | + } |
|---|
| 2767 | + #endif |
|---|
| 2750 | 2768 | |
|---|
| 2751 | 2769 | out: |
|---|
| 2752 | 2770 | dev_err(dev, "%s: mac address: %pM\n", __func__, addr); |
|---|
| .. | .. |
|---|
| 2920 | 2938 | .of_match_table = rk_gmac_dwmac_match, |
|---|
| 2921 | 2939 | }, |
|---|
| 2922 | 2940 | }; |
|---|
| 2923 | | -module_platform_driver(rk_gmac_dwmac_driver); |
|---|
| 2941 | +module_platform_driver1(rk_gmac_dwmac_driver); |
|---|
| 2924 | 2942 | |
|---|
| 2925 | 2943 | MODULE_AUTHOR("Chen-Zhi (Roger Chen) <roger.chen@rock-chips.com>"); |
|---|
| 2926 | 2944 | MODULE_DESCRIPTION("Rockchip RK3288 DWMAC specific glue layer"); |
|---|
| .. | .. |
|---|
| 2353 | 2353 | */ |
|---|
| 2354 | 2354 | static void stmmac_check_ether_addr(struct stmmac_priv *priv) |
|---|
| 2355 | 2355 | { |
|---|
| 2356 | | - if (!is_valid_ether_addr(priv->dev->dev_addr)) { |
|---|
| 2356 | +// if (!is_valid_ether_addr(priv->dev->dev_addr)) { |
|---|
| 2357 | + if(1) { |
|---|
| 2357 | 2358 | stmmac_get_umac_addr(priv, priv->hw, priv->dev->dev_addr, 0); |
|---|
| 2358 | 2359 | if (likely(priv->plat->get_eth_addr)) |
|---|
| 2359 | 2360 | priv->plat->get_eth_addr(priv->plat->bsp_priv, |
|---|
| .. | .. |
|---|
| 5089 | 5090 | /*switch to extension page31*/ |
|---|
| 5090 | 5091 | phy_write(phydev, 31, 0xd04); |
|---|
| 5091 | 5092 | |
|---|
| 5092 | | - //phy_write(phydev, 0x10, 0x6d60); /*led1-green led2-yellow */ |
|---|
| 5093 | | - phy_write(phydev, 0x10, 0xc160); /*led1-green led2-yellow */ |
|---|
| 5094 | | - phy_write(phydev, 0x11, 0x8); |
|---|
| 5093 | + phy_write(phydev, 0x10, 0x6d20); /*led1-green led2-yellow */ |
|---|
| 5094 | + //phy_write(phydev, 0x10, 0xc160); /*led1-green led2-yellow */ |
|---|
| 5095 | + //phy_write(phydev, 0x11, 0x8); |
|---|
| 5096 | + val = phy_read(phydev, 0x10); |
|---|
| 5097 | + printk("%s in 0x10 val=0x%04x\n", __func__, val); |
|---|
| 5095 | 5098 | |
|---|
| 5096 | 5099 | /*switch back to page0*/ |
|---|
| 5097 | 5100 | phy_write(phydev,31,0x0); |
|---|
| .. | .. |
|---|
| 272 | 272 | } \ |
|---|
| 273 | 273 | module_exit(__driver##_exit); |
|---|
| 274 | 274 | |
|---|
| 275 | | - |
|---|
| 275 | +#define module_driver1(__driver, __register, __unregister, ...) \ |
|---|
| 276 | +static int __init __driver##_init(void) \ |
|---|
| 277 | +{ \ |
|---|
| 278 | + return __register(&(__driver) , ##__VA_ARGS__); \ |
|---|
| 279 | +} \ |
|---|
| 280 | +arch_initcall(__driver##_init); \ |
|---|
| 281 | +static void __exit __driver##_exit(void) \ |
|---|
| 282 | +{ \ |
|---|
| 283 | + __unregister(&(__driver) , ##__VA_ARGS__); \ |
|---|
| 284 | +} \ |
|---|
| 285 | +module_exit(__driver##_exit) |
|---|
| 276 | 286 | |
|---|
| 277 | 287 | #define module_driver2(__driver, __register, __unregister, ...) \ |
|---|
| 278 | 288 | static int __init __driver##_init(void) \ |
|---|
| .. | .. |
|---|
| 256 | 256 | module_driver(__platform_driver, platform_driver_register, \ |
|---|
| 257 | 257 | platform_driver_unregister) |
|---|
| 258 | 258 | |
|---|
| 259 | + |
|---|
| 260 | +#define module_platform_driver1(__platform_driver) \ |
|---|
| 261 | + module_driver1(__platform_driver, platform_driver_register, \ |
|---|
| 262 | + platform_driver_unregister) |
|---|
| 263 | + |
|---|
| 259 | 264 | /* builtin_platform_driver() - Helper macro for builtin drivers that |
|---|
| 260 | 265 | * don't do anything special in driver init. This eliminates some |
|---|
| 261 | 266 | * boilerplate. Each driver may only use this macro once, and |
|---|