MDIO总线相关_4

//mdio

在drivers/net/ethernet/hieth-gmac/下面有一个文件higmac.c
 
里面实现了一个platform框架,并且创建了一个杂项设备.
 
      	ret = platform_device_register(&higmac_platform_device);
      	if (ret) {
      		pr_err("register netdevice device failed!");
      		goto _error_register_device;
      	}
      
      	ret = platform_driver_register(&higmac_dev_driver);
      	if (ret) {
      		pr_err("register netdevice driver failed!");
      		goto _error_register_driver;
      	}
      	ret = misc_register(&gmac_dev);
      	if (ret) {
      		pr_err("register misc device failed!");
      		goto _error_register_misc_dev;
      	} else
      		miscdev_registered = 1;

//platform device端
static struct platform_device higmac_platform_device = {
	.name		= HIGMAC_DRIVER_NAME,
	.id		= 0,
	.dev		= {
		.dma_mask = &higmac_dmamask,
		.coherent_dma_mask = DMA_BIT_MASK(32),
		.release = higmac_platform_dev_release,
	},
	.num_resources	= ARRAY_SIZE(higmac_resources),
	.resource	= higmac_resources,
};
//platform driver端
static struct platform_driver higmac_dev_driver = {
	.probe		= higmac_dev_probe,//init
	.remove		= higmac_dev_remove,//remove
	.suspend	= higmac_dev_suspend,//pause
	.resume		= higmac_dev_resume,//reset
	.driver		= {
		.owner	= THIS_MODULE,
		.name	= HIGMAC_DRIVER_NAME,
	},
};
//杂项设备
static struct miscdevice gmac_dev = {
	MISC_DYNAMIC_MINOR,
	"gmac",
	&gmac_fops
};

看driver 端的probe函数,驱动一经插入,就开始执行
/*1. init glb adapter*/
  /*2. 填充id netdev 和 higmac_board_info*/
  /*3.  init hw controller*/
  /*4. phy reset*/
  /*5. fwd_setup*/
  /*6. init hw desc queue*/
  /*7. register mdio bus*/
  /*8. connect phy*/
  /*9. request irq*/
  /*10. register netdevice*/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值