📄 phy.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>#endif /* __U_BOOT_OSHAL_NET__ */#include "phy.h"static int genphy_probe(int port){ return 0;}static int genphy_init(int port){ return 0;}static void genphy_exit(int port){}static int genphy_set_static_mod(int port, unsigned long stat){ return 0;}static int genphy_set_auto_mod(int port){ return 0;}static unsigned long genphy_get_states(int port){ return 0;}static struct hisilicon_phy_device hisilicon_gen_phydev = { .name = "hisilicon_gen_phydev", .id = 0, .probe = genphy_probe, .init = genphy_init, .exit = genphy_exit, .set_static_mod = genphy_set_static_mod, .set_auto_mod = genphy_set_auto_mod, .get_states = genphy_get_states};/* begin: define your phychip device here */extern struct hisilicon_phy_device realtek_phydev;extern struct hisilicon_phy_device intel_phydev;extern struct hisilicon_phy_device micrel_phydev;/* end */static struct hisilicon_phy_device *phy_devs[] = {#ifdef CONFIG_HISILICON_SF_PHYCHIP_REALTEK &realtek_phydev, #endif#ifdef CONFIG_HISILICON_SF_PHYCHIP_INTEL &intel_phydev,#endif#ifdef CONFIG_HISILICON_SF_PHYCHIP_MICREL &micrel_phydev,#endif /* default */ &hisilicon_gen_phydev};#define CHK_PHY_OPS(p,name) do{ if((p)->name == NULL)(p)->name = genphy_##name ; }while(0)struct hisilicon_phy_device *hisilicon_phy_connect(const char *name, unsigned long id){ struct hisilicon_phy_device *dev = phy_devs[0]; for(; dev!=(&hisilicon_gen_phydev); dev++) { if(dev->id != id) continue; if(strcmp(dev->name, name)==0) break; } CHK_PHY_OPS(dev,probe); CHK_PHY_OPS(dev,init); CHK_PHY_OPS(dev,exit); CHK_PHY_OPS(dev,set_static_mod); CHK_PHY_OPS(dev,set_auto_mod); CHK_PHY_OPS(dev,get_states); return dev;}int hisilicon_phy_disconnect(struct hisilicon_phy_device * phydev){ return 0;}unsigned long hisilicon_phychip_extaddr(int port){ unsigned long phy_addr=0; const char *s = CONFIG_HISILICON_PHYCHIP_EXTADDR_S; while(port>0 && *s!='\0') { if(*s++ != ',') continue; port--; } s += sscanf(s,"%lX",&phy_addr); return phy_addr;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -