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