stmmac: get the descriptor structure from platform
authorGiuseppe CAVALLARO <peppe.cavallaro@st.com>
Tue, 13 Apr 2010 20:21:15 +0000 (20:21 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 14 Apr 2010 11:49:52 +0000 (04:49 -0700)
Output for chip that uses the Enhanced descriptors:
[snip]
STMMAC driver:
platform registration... done!
DWMAC1000 - user ID: 0x10, Synopsys ID: 0x33
Enhanced descriptor structure
no valid MAC address;please, use ifconfig or nwhwconfig!
eth0 - (dev. name: stmmaceth - id: 0, IRQ #134
IO base addr: 0xfd110000)
STMMAC MII Bus: probed
[snip]

Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/stmmac/stmmac.h
drivers/net/stmmac/stmmac_main.c

index 55b9acae82a188807b6b62cf78263977a768aac5..0d776bc23143536a5b2c2082e3cefe68cdc2404a 100644 (file)
@@ -93,6 +93,7 @@ struct stmmac_priv {
 #ifdef STMMAC_VLAN_TAG_USED
        struct vlan_group *vlgrp;
 #endif
+       int enh_desc;
 };
 
 #ifdef CONFIG_STM_DRIVERS
index dfeea96f681a836577a3eaebfda5145f1b399504..7ac6ddea989e183da6bb77bff7f345cf8f65570a 100644 (file)
@@ -1581,13 +1581,16 @@ static int stmmac_mac_device_setup(struct net_device *dev)
 
        struct mac_device_info *device;
 
-       if (priv->is_gmac) {
+       if (priv->is_gmac)
                device = dwmac1000_setup(ioaddr);
-               device->desc = &enh_desc_ops;
-       } else {
+       else
                device = dwmac100_setup(ioaddr);
+
+       if (priv->enh_desc) {
+               device->desc = &enh_desc_ops;
+               pr_info("\tEnhanced descriptor structure\n");
+       } else
                device->desc = &ndesc_ops;
-       }
 
        if (!device)
                return -ENOMEM;
@@ -1729,6 +1732,7 @@ static int stmmac_dvr_probe(struct platform_device *pdev)
        priv->bus_id = plat_dat->bus_id;
        priv->pbl = plat_dat->pbl;      /* TLI */
        priv->is_gmac = plat_dat->has_gmac;     /* GMAC is on board */
+       priv->enh_desc = plat_dat->enh_desc;
 
        platform_set_drvdata(pdev, ndev);