天天看点

2-lan8720a的kernel驱动

1.iomux部分

arch/arm/plat-mxc/include/mach/iomux-mx6q.h定义iomux值

arch/arm/mach-mx6/board-mx6q-sabresd.h 定义 iomux

static iomux_v3_cfg_t mx6q_sabresd_pads[] ={}

arch/arm/mach-mx6/board-mx6q-sabresd.c的mx6_sabresd_board_init()执行iomux

{

mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_pads,

ARRAY_SIZE(mx6q_sabresd_pads));

}

2.平台设备部分

arch/arm/mach-mx6/board-mx6q-sabresd.c

定义了平台设备的平台数据

static struct fec_platform_data fec_data __initdata = {

.init = mx6q_sabresd_fec_phy_init,

.phy = PHY_INTERFACE_MODE_RGMII,

.gpio_irq = MX6_ENET_IRQ,

};

并在mx6_sabresd_board_init()中执行imx6_init_fec(fec_data);此函数最终会创建平台设备并注册到系统中。

3.平台驱动部分

drivers/net/fec.c的fec_enet_module_init()函数注册平台驱动

平台驱动的fec_probe函数中注册网络接口alloc_etherdev

数据发送fec_enet_start_xmit