本文主要描述如何在AM335X的Linux系统上修改网络phy芯片,以及双网络的配置及使用。包括uboot和内核里phy的初始化,以及内核里的双网络配置及phy的初始化。本文以LAN8720为例,说明修改步骤。LAN8720是RMII接口的10/100M以太网phy芯片。
这次使用的开发板是深圳盈鹏飞嵌入式的基于AM335x打造的EVB-335x-II,核心板CoM-335x。其与CoM-335X的硬件连接和设计请参考《CoM-335X底板设计手册》。想了解CoM-335x可在公众号产品详情里面查看!
EVB-335x-II
以下内容为具体步骤说明。
一、u-boot里如何修改phy1、引脚初始化
打开 board/eac/com335x/mux.c文件,增加以下内容:
static struct module_pin_muxrmii1_pin_mux[] = {
{OFFSET(mii1_crs), MODE(1) | RXACTIVE}, /* RMII1_CRS */
{OFFSET(mii1_rxerr), MODE(1) | RXACTIVE}, /* RMII1_RXERR */
{OFFSET(mii1_txen), MODE(1)}, /* RMII1_TXEN */
{OFFSET(mii1_txd1), MODE(1)}, /* RMII1_TXD1 */
{OFFSET(mii1_txd0), MODE(1)}, /* RMII1_TXD0 */
{OFFSET(mii1_rxd1), MODE(1) | RXACTIVE}, /* RMII1_RXD1 */
{OFFSET(mii1_rxd0), MODE(1) | RXACTIVE}, /* RMII1_RXD0 */
{OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */
{OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
{OFFSET(rmii1_refclk), MODE(0) | RXACTIVE}, /* RMII1_REFCLK */
{-1},
};
在enable_board_pin_mux(void)函数中,做以下修改:
void enable_board_pin_mux(void)
{
......
// configure_module_pin_mux(rgmii1_pin_mux);
configure_module_pin_mux(rmii1_pin_mux);
......
}
2、驱动初始化
打开board/eac/com335x/board.c,在cpsw_slaves[]结构体中,修改phy_addr(由LAN8720的硬件连接决定,本文以0为例):
static struct cpsw_slave_datacpsw_slaves[] = {
{
.slave_reg_ofs = 0x208,
.sliver_reg_ofs = 0xd80,
.phy_addr = 0x00,