天天看點

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