On Thu, Aug 1, 2019 at 12:32 PM Patrick Delaunay <patrick.delau...@st.com> wrote: > > Align the board and driver prototype for board_interface_eth_init > to avoid execution issue (the interface_type parameter is defined > as int or phy_interface_t). > > To have a generic weak function (it should be reused by other driver) > I change the prototype to use directly udevice. > > This prototype is added in netdev.h to allow compilation check > and avoid warning when compiling with W=1 on file > board/st/stm32mp1/stm32mp1.c > > warning: no previous prototype for 'board_interface_eth_init'\ > [-Wmissing-prototypes] > int board_interface_eth_init(int interface_type, .... > ^~~~~~~~~~~~~~~~~~~~~~~~ > > Signed-off-by: Patrice Chotard <patrice.chot...@st.com> > Signed-off-by: Patrick Delaunay <patrick.delau...@st.com> > --- > > board/st/stm32mp1/stm32mp1.c | 17 +++++++++++++---- > drivers/net/dwc_eth_qos.c | 16 +++------------- > include/netdev.h | 3 +++ > 3 files changed, 19 insertions(+), 17 deletions(-) > > diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c > index b99c6c0..2365dd1 100644 > --- a/board/st/stm32mp1/stm32mp1.c > +++ b/board/st/stm32mp1/stm32mp1.c > @@ -16,6 +16,7 @@ > #include <misc.h> > #include <mtd.h> > #include <mtd_node.h> > +#include <netdev.h> > #include <phy.h> > #include <reset.h> > #include <syscon.h> > @@ -560,13 +561,21 @@ void board_quiesce_devices(void) > setup_led(LEDST_OFF); > } > > -/* board interface eth init */ > -/* this is a weak define that we are overriding */ > -int board_interface_eth_init(phy_interface_t interface_type, > - bool eth_clk_sel_reg, bool eth_ref_clk_sel_reg) > +/* eth init function : weak called in eqos driver */ > +int board_interface_eth_init(struct udevice *dev, > + phy_interface_t interface_type) > { > u8 *syscfg; > u32 value; > + bool eth_clk_sel_reg = false; > + bool eth_ref_clk_sel_reg = false; > + > + /* Gigabit Ethernet 125MHz clock selection. */ > + eth_clk_sel_reg = dev_read_bool(dev, "st,eth_clk_sel"); > + > + /* Ethernet 50Mhz RMII clock selection */ > + eth_ref_clk_sel_reg = > + dev_read_bool(dev, "st,eth_ref_clk_sel"); > > syscfg = (u8 *)syscon_get_first_range(STM32MP_SYSCON_SYSCFG); > > diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c > index 6df9956..4557093 100644 > --- a/drivers/net/dwc_eth_qos.c > +++ b/drivers/net/dwc_eth_qos.c > @@ -1591,8 +1591,8 @@ err_free_reset_eqos: > } > > /* board-specific Ethernet Interface initializations. */ > -__weak int board_interface_eth_init(int interface_type, bool eth_clk_sel_reg, > - bool eth_ref_clk_sel_reg) > +__weak int board_interface_eth_init(struct udevice *dev, > + phy_interface_t interface_type) > { > return 0; > } > @@ -1602,8 +1602,6 @@ static int eqos_probe_resources_stm32(struct udevice > *dev) > struct eqos_priv *eqos = dev_get_priv(dev); > int ret; > phy_interface_t interface; > - bool eth_clk_sel_reg = false; > - bool eth_ref_clk_sel_reg = false; > > debug("%s(dev=%p):\n", __func__, dev); > > @@ -1614,15 +1612,7 @@ static int eqos_probe_resources_stm32(struct udevice > *dev) > return -EINVAL; > } > > - /* Gigabit Ethernet 125MHz clock selection. */ > - eth_clk_sel_reg = dev_read_bool(dev, "st,eth_clk_sel"); > - > - /* Ethernet 50Mhz RMII clock selection */ > - eth_ref_clk_sel_reg = > - dev_read_bool(dev, "st,eth_ref_clk_sel"); > - > - ret = board_interface_eth_init(interface, eth_clk_sel_reg, > - eth_ref_clk_sel_reg); > + ret = board_interface_eth_init(dev, interface); > if (ret) > return -EINVAL; > > diff --git a/include/netdev.h b/include/netdev.h > index a40c4ad..68a3fce 100644 > --- a/include/netdev.h > +++ b/include/netdev.h > @@ -10,6 +10,7 @@ > > #ifndef _NETDEV_H_ > #define _NETDEV_H_ > +#include <phy_interface.h> > > /* > * Board and CPU-specific initialization functions > @@ -21,6 +22,8 @@ > */ > > int board_eth_init(bd_t *bis); > +int board_interface_eth_init(struct udevice *dev, > + phy_interface_t interface_type); > int cpu_eth_init(bd_t *bis); > > /* Driver initialization prototypes */ > -- > 2.7.4 >
why can you just write a phy driver specific to this board and hook it to the eth driver in the dts ? _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot