]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - drivers/net/fm/init.c
Merge branch 'rmobile' of git://git.denx.de/u-boot-sh
[karo-tx-uboot.git] / drivers / net / fm / init.c
index 74c72d3ff796847d607974d5939d7389f7500712..5d82f2914d7001bf7db39abd6dd615bf2263c3b1 100644 (file)
@@ -6,6 +6,7 @@
 #include <common.h>
 #include <asm/io.h>
 #include <asm/fsl_serdes.h>
+#include <fsl_mdio.h>
 
 #include "fm.h"
 
@@ -147,6 +148,9 @@ void fm_disable_port(enum fm_port port)
 {
        int i = fm_port_to_index(port);
 
+       if (i == -1)
+               return;
+
        fm_info[i].enabled = 0;
        fman_disable_port(port);
 }
@@ -155,6 +159,9 @@ void fm_enable_port(enum fm_port port)
 {
        int i = fm_port_to_index(port);
 
+       if (i == -1)
+               return;
+
        fm_info[i].enabled = 1;
        fman_enable_port(port);
 }
@@ -247,8 +254,10 @@ static void ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop)
         */
        if (((info->port == FM1_DTSEC9) && (PORT_IS_ENABLED(FM1_10GEC1)))  ||
            ((info->port == FM1_DTSEC10) && (PORT_IS_ENABLED(FM1_10GEC2))) ||
+           ((info->port == FM1_DTSEC1) && (PORT_IS_ENABLED(FM1_10GEC1)))  ||
            ((info->port == FM1_DTSEC1) && (PORT_IS_ENABLED(FM1_10GEC3)))  ||
            ((info->port == FM1_DTSEC2) && (PORT_IS_ENABLED(FM1_10GEC4)))  ||
+           ((info->port == FM1_10GEC1) && (PORT_IS_ENABLED(FM1_DTSEC1)))  ||
            ((info->port == FM1_10GEC1) && (PORT_IS_ENABLED(FM1_DTSEC9)))  ||
            ((info->port == FM1_10GEC2) && (PORT_IS_ENABLED(FM1_DTSEC10))) ||
            ((info->port == FM1_10GEC3) && (PORT_IS_ENABLED(FM1_DTSEC1)))  ||
@@ -276,64 +285,13 @@ static void ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop)
                "status", "disabled", strlen("disabled") + 1, 1);
 }
 
-#ifdef CONFIG_SYS_FMAN_V3
-static int ft_fixup_xgec(void *blob, struct fm_eth_info *info)
-{
-       int off, i, ci;
-#define FM1_10GEC3_RX_PORT_ADDR        (CONFIG_SYS_CCSRBAR_PHYS + 0x488000)
-#define FM1_10GEC3_TX_PORT_ADDR        (CONFIG_SYS_CCSRBAR_PHYS + 0x4a8000)
-#define FM1_10GEC3_MAC_ADDR    (CONFIG_SYS_CCSRBAR_PHYS + 0x4e0000)
-
-       if ((info->port == FM1_10GEC3) || (info->port == FM1_10GEC4)) {
-               ci = (info->port == FM1_10GEC3) ? 2 : 3;
-               i = (info->port == FM1_10GEC3) ? 0 : 1;
-
-               off = fdt_node_offset_by_compat_reg(blob, "fsl,fman-port-1g-rx",
-                                                   FM1_10GEC3_RX_PORT_ADDR +
-                                                   i * 0x1000);
-               if (off > 0) {
-                       fdt_setprop(blob, off, "cell-index", &ci, sizeof(int));
-                       fdt_setprop(blob, off, "compatible",
-                                   "fsl,fman-port-10g-rx", 20);
-               } else {
-                       goto err;
-               }
-
-               off = fdt_node_offset_by_compat_reg(blob, "fsl,fman-port-1g-tx",
-                                                   FM1_10GEC3_TX_PORT_ADDR +
-                                                   i * 0x1000);
-               if (off > 0) {
-                       fdt_setprop(blob, off, "cell-index", &ci, sizeof(int));
-                       fdt_setprop(blob, off, "compatible",
-                                   "fsl,fman-port-10g-tx", 20);
-               } else {
-                       goto err;
-               }
-
-               off = fdt_node_offset_by_compat_reg(blob, "fsl,fman-memac",
-                                                   FM1_10GEC3_MAC_ADDR +
-                                                   i * 0x2000);
-               if (off > 0)
-                       fdt_setprop(blob, off, "cell-index", &ci, sizeof(int));
-               else
-                       goto err;
-       }
-       return 0;
-err:
-       printf("WARNING: Fail to find the node\n");
-       return -1;
-}
-#endif
-
 void fdt_fixup_fman_ethernet(void *blob)
 {
        int i;
 
 #ifdef CONFIG_SYS_FMAN_V3
-       for (i = 0; i < ARRAY_SIZE(fm_info); i++) {
+       for (i = 0; i < ARRAY_SIZE(fm_info); i++)
                ft_fixup_port(blob, &fm_info[i], "fsl,fman-memac");
-               ft_fixup_xgec(blob, &fm_info[i]);
-       }
 #else
        for (i = 0; i < ARRAY_SIZE(fm_info); i++) {
                if (fm_info[i].type == FM_ETH_1G_E)