📄 realtek.c
字号:
#include <linux-adapter.h>#ifdef __U_BOOT_OSHAL_NET__#include <config.h>#else#include <linux/config.h>#include <linux/module.h>#include <linux/errno.h>#include <linux/netdevice.h>#include <linux/etherdevice.h>#include <linux/kernel.h>#include <linux/types.h>#include <linux/fcntl.h>#include <linux/interrupt.h>#include <linux/ioport.h>#include <linux/in.h>#include <linux/skbuff.h>#include <linux/slab.h>#include <linux/spinlock.h>#include <linux/string.h>#include <linux/init.h>#include <linux/bitops.h>#include <linux/vmalloc.h>#include <linux/dma-mapping.h>#include <linux/string.h>#include <linux/delay.h>#endif /* __U_BOOT_OSHAL_NET__ */#include "../phy/phy.h"static int realtek_phy_probe(int port){ SF_SetPHYExternAddress(port, hisilicon_phychip_extaddr(port));#if defined(CONFIG_HISILICON_SF_V001) SF_SetPHYChipInformationAddress(0x11,0xe,0xa,0x9);#elif defined(CONFIG_HISILICON_SF_V002) SF_SetPHYChipInformationAddress(port,0x5,0x1,0x5,0x8,0x2,0x8);#endif SF_PhyWrite(port, 0, 1<<11); return 0;}static int realtek_phy_init(int port){ SF_PhyWrite(port, 0, 0); udelay(50); SF_PhyWrite(port, 0, 1<<15); return 0;}static void realtek_phy_exit(int port){ SF_PhyWrite(port, 0, 0); SF_PhyWrite(port, 0, 1<<11);}static int realtek_set_static(int port, unsigned long stat){ SF_PhyWrite(port, 0, (PHY_SPEED_STAT(stat)<<13) | (PHY_DUPL_STAT(stat)<<8)); return 0;}static int realtek_set_auto(int port){ SF_PhyWrite(port, 0, 0x1200); return 0;}static unsigned long realtek_get_states(int port){ unsigned long reg; unsigned long stat = 0; SF_PhyRead(port, 1, ®); stat = MK_PHY_STAT((reg>>2)&0x01, 0, 0); return stat;}struct hisilicon_phy_device realtek_phydev = { .name = "realtek", .id = 0, .probe = realtek_phy_probe, .init = realtek_phy_init, .exit = realtek_phy_exit, .set_static_mod = realtek_set_static, .set_auto_mod = realtek_set_auto, .get_states = realtek_get_states,};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -