From c0078a4fe907f8c579924f89ee5ac48e40d84736 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Fri, 1 May 2015 18:09:30 -0300 Subject: [PATCH 1/2] fec: Allow passing a phy mask in fecmxc_initialize_multi() Instead of only accepting a fixed PHY address, allow passing a range of PHY addresses through a mask address. Signed-off-by: Rabeeh Khoury Signed-off-by: Fabio Estevam --- board/denx/m28evk/m28evk.c | 4 ++-- board/freescale/mx28evk/mx28evk.c | 4 ++-- board/schulercontrol/sc_sps_1/sc_sps_1.c | 4 ++-- drivers/net/fec_mxc.c | 10 +++++----- include/netdev.h | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/board/denx/m28evk/m28evk.c b/board/denx/m28evk/m28evk.c index 33d38cf..7b4f67d 100644 --- a/board/denx/m28evk/m28evk.c +++ b/board/denx/m28evk/m28evk.c @@ -131,13 +131,13 @@ int board_eth_init(bd_t *bis) udelay(10000); #endif - ret = fecmxc_initialize_multi(bis, 0, 0, MXS_ENET0_BASE); + ret = fecmxc_initialize_multi(bis, 0, 1 << 0, MXS_ENET0_BASE); if (ret) { printf("FEC MXS: Unable to init FEC0\n"); return ret; } - ret = fecmxc_initialize_multi(bis, 1, 3, MXS_ENET1_BASE); + ret = fecmxc_initialize_multi(bis, 1, 1 << 3, MXS_ENET1_BASE); if (ret) { printf("FEC MXS: Unable to init FEC1\n"); return ret; diff --git a/board/freescale/mx28evk/mx28evk.c b/board/freescale/mx28evk/mx28evk.c index 5005fe2..4cf9332 100644 --- a/board/freescale/mx28evk/mx28evk.c +++ b/board/freescale/mx28evk/mx28evk.c @@ -118,13 +118,13 @@ int board_eth_init(bd_t *bis) udelay(200); gpio_set_value(MX28_PAD_ENET0_RX_CLK__GPIO_4_13, 1); - ret = fecmxc_initialize_multi(bis, 0, 0, MXS_ENET0_BASE); + ret = fecmxc_initialize_multi(bis, 0, 1 << 0, MXS_ENET0_BASE); if (ret) { puts("FEC MXS: Unable to init FEC0\n"); return ret; } - ret = fecmxc_initialize_multi(bis, 1, 3, MXS_ENET1_BASE); + ret = fecmxc_initialize_multi(bis, 1, 1 << 3, MXS_ENET1_BASE); if (ret) { puts("FEC MXS: Unable to init FEC1\n"); return ret; diff --git a/board/schulercontrol/sc_sps_1/sc_sps_1.c b/board/schulercontrol/sc_sps_1/sc_sps_1.c index 7f0b591..fdaa383 100644 --- a/board/schulercontrol/sc_sps_1/sc_sps_1.c +++ b/board/schulercontrol/sc_sps_1/sc_sps_1.c @@ -79,13 +79,13 @@ int board_eth_init(bd_t *bis) CLKCTRL_ENET_TIME_SEL_MASK, CLKCTRL_ENET_TIME_SEL_RMII_CLK | CLKCTRL_ENET_CLK_OUT_EN); - ret = fecmxc_initialize_multi(bis, 0, 0, MXS_ENET0_BASE); + ret = fecmxc_initialize_multi(bis, 0, 1 << 0, MXS_ENET0_BASE); if (ret) { printf("FEC MXS: Unable to init FEC0\n"); return ret; } - ret = fecmxc_initialize_multi(bis, 1, 1, MXS_ENET1_BASE); + ret = fecmxc_initialize_multi(bis, 1, 1 << 1, MXS_ENET1_BASE); if (ret) { printf("FEC MXS: Unable to init FEC1\n"); return ret; diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index b572470..9817df2 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -1077,7 +1077,7 @@ struct mii_dev *fec_get_miibus(uint32_t base_addr, int dev_id) return bus; } -int fecmxc_initialize_multi(bd_t *bd, int dev_id, int phy_id, uint32_t addr) +int fecmxc_initialize_multi(bd_t *bd, int dev_id, uint32_t phy_mask, uint32_t addr) { uint32_t base_mii; struct mii_dev *bus = NULL; @@ -1095,19 +1095,19 @@ int fecmxc_initialize_multi(bd_t *bd, int dev_id, int phy_id, uint32_t addr) #else base_mii = addr; #endif - debug("eth_init: fec_probe(bd, %i, %i) @ %08x\n", dev_id, phy_id, addr); + debug("eth_init: fec_probe(bd, %i, %i) @ %08x\n", dev_id, phy_mask, addr); bus = fec_get_miibus(base_mii, dev_id); if (!bus) return -ENOMEM; #ifdef CONFIG_PHYLIB - phydev = phy_find_by_mask(bus, 1 << phy_id, PHY_INTERFACE_MODE_RGMII); + phydev = phy_find_by_mask(bus, phy_mask, PHY_INTERFACE_MODE_RGMII); if (!phydev) { free(bus); return -ENOMEM; } ret = fec_probe(bd, dev_id, addr, bus, phydev); #else - ret = fec_probe(bd, dev_id, addr, bus, phy_id); + ret = fec_probe(bd, dev_id, addr, bus, phy_mask); #endif if (ret) { #ifdef CONFIG_PHYLIB @@ -1121,7 +1121,7 @@ int fecmxc_initialize_multi(bd_t *bd, int dev_id, int phy_id, uint32_t addr) #ifdef CONFIG_FEC_MXC_PHYADDR int fecmxc_initialize(bd_t *bd) { - return fecmxc_initialize_multi(bd, -1, CONFIG_FEC_MXC_PHYADDR, + return fecmxc_initialize_multi(bd, -1, 1 << CONFIG_FEC_MXC_PHYADDR, IMX_FEC_BASE); } #endif diff --git a/include/netdev.h b/include/netdev.h index d96e1da..15c513d 100644 --- a/include/netdev.h +++ b/include/netdev.h @@ -49,7 +49,7 @@ int eth_3com_initialize (bd_t * bis); int ethoc_initialize(u8 dev_num, int base_addr); int fec_initialize (bd_t *bis); int fecmxc_initialize(bd_t *bis); -int fecmxc_initialize_multi(bd_t *bis, int dev_id, int phy_id, uint32_t addr); +int fecmxc_initialize_multi(bd_t *bis, int dev_id, uint32_t phy_mask, uint32_t addr); int ftgmac100_initialize(bd_t *bits); int ftmac100_initialize(bd_t *bits); int ftmac110_initialize(bd_t *bits); -- 1.9.1