]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c
stmmac: pci: RX queue routing configuration
[karo-tx-linux.git] / drivers / net / ethernet / stmicro / stmmac / stmmac_pci.c
index 5c9e462276b9cbc25a8b5c2748988286fe17884f..2456e0a945ef63b7d5f3ce8ad0b43f5f53156014 100644 (file)
@@ -32,6 +32,7 @@
  */
 struct stmmac_pci_dmi_data {
        const char *name;
+       const char *asset_tag;
        unsigned int func;
        int phy_addr;
 };
@@ -46,6 +47,7 @@ struct stmmac_pci_info {
 static int stmmac_pci_find_phy_addr(struct stmmac_pci_info *info)
 {
        const char *name = dmi_get_system_info(DMI_BOARD_NAME);
+       const char *asset_tag = dmi_get_system_info(DMI_BOARD_ASSET_TAG);
        unsigned int func = PCI_FUNC(info->pdev->devfn);
        struct stmmac_pci_dmi_data *dmi;
 
@@ -57,8 +59,12 @@ static int stmmac_pci_find_phy_addr(struct stmmac_pci_info *info)
                return 1;
 
        for (dmi = info->dmi; dmi->name && *dmi->name; dmi++) {
-               if (!strcmp(dmi->name, name) && dmi->func == func)
+               if (!strcmp(dmi->name, name) && dmi->func == func) {
+                       /* If asset tag is provided, match on it as well. */
+                       if (dmi->asset_tag && strcmp(dmi->asset_tag, asset_tag))
+                               continue;
                        return dmi->phy_addr;
+               }
        }
 
        return -ENODEV;
@@ -88,6 +94,17 @@ static void stmmac_default_data(struct plat_stmmacenet_data *plat)
 
        /* Set the maxmtu to a default of JUMBO_LEN */
        plat->maxmtu = JUMBO_LEN;
+
+       /* Set default number of RX and TX queues to use */
+       plat->tx_queues_to_use = 1;
+       plat->rx_queues_to_use = 1;
+
+       /* Disable Priority config by default */
+       plat->tx_queues_cfg[0].use_prio = false;
+       plat->rx_queues_cfg[0].use_prio = false;
+
+       /* Disable RX queues routing by default */
+       plat->rx_queues_cfg[0].pkt_route = 0x0;
 }
 
 static int quark_default_data(struct plat_stmmacenet_data *plat,
@@ -128,6 +145,17 @@ static int quark_default_data(struct plat_stmmacenet_data *plat,
        /* Set the maxmtu to a default of JUMBO_LEN */
        plat->maxmtu = JUMBO_LEN;
 
+       /* Set default number of RX and TX queues to use */
+       plat->tx_queues_to_use = 1;
+       plat->rx_queues_to_use = 1;
+
+       /* Disable Priority config by default */
+       plat->tx_queues_cfg[0].use_prio = false;
+       plat->rx_queues_cfg[0].use_prio = false;
+
+       /* Disable RX queues routing by default */
+       plat->rx_queues_cfg[0].pkt_route = 0x0;
+
        return 0;
 }
 
@@ -142,6 +170,24 @@ static struct stmmac_pci_dmi_data quark_pci_dmi_data[] = {
                .func = 6,
                .phy_addr = 1,
        },
+       {
+               .name = "SIMATIC IOT2000",
+               .asset_tag = "6ES7647-0AA00-0YA2",
+               .func = 6,
+               .phy_addr = 1,
+       },
+       {
+               .name = "SIMATIC IOT2000",
+               .asset_tag = "6ES7647-0AA00-1YA2",
+               .func = 6,
+               .phy_addr = 1,
+       },
+       {
+               .name = "SIMATIC IOT2000",
+               .asset_tag = "6ES7647-0AA00-1YA2",
+               .func = 7,
+               .phy_addr = 1,
+       },
        {}
 };