net: dwc_et_qos: update weak function board_interface_eth_init
authorPatrick Delaunay <patrick.delaunay@st.com>
Thu, 1 Aug 2019 09:29:03 +0000 (11:29 +0200)
committerJoe Hershberger <joe.hershberger@ni.com>
Wed, 4 Sep 2019 16:37:19 +0000 (11:37 -0500)
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.chotard@st.com>
Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
board/st/stm32mp1/stm32mp1.c
drivers/net/dwc_eth_qos.c
include/netdev.h

index fc14ad375c8f9d262b0b40467a44b194ce23c27f..18f9b848765576fcad82661b461e938df53af35a 100644 (file)
@@ -17,6 +17,7 @@
 #include <misc.h>
 #include <mtd.h>
 #include <mtd_node.h>
+#include <netdev.h>
 #include <phy.h>
 #include <remoteproc.h>
 #include <reset.h>
@@ -683,12 +684,21 @@ void board_quiesce_devices(void)
 #endif
 }
 
-/* board interface eth init */
-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);
 
index 6df99567247aeae630711c3eb9afc869ab1b31a4..455709338cea5d90a51e9db6db78dca7d5e9ee17 100644 (file)
@@ -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;
 
index a40c4adaadd7a19339abd28dbbc906c3fc1948a4..68a3fceab663415ca4c51318cd4a92a54ae490ce 100644 (file)
@@ -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 */