Browse Source

net: ethernet: mediatek: get hw lro capability by the chip id instead of by the dtsi

Because hw lro started to be supported from MT7623, the proper way to check if
the feature is capable is to judge by the chip id instead of by the dtsi.

Signed-off-by: Nelson Chang <nelson.chang@mediatek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Nelson Chang 9 years ago
parent
commit
983e1a6c95

+ 12 - 2
drivers/net/ethernet/mediatek/mtk_eth_soc.c

@@ -2348,6 +2348,16 @@ static int mtk_get_chip_id(struct mtk_eth *eth, u32 *chip_id)
 	return 0;
 	return 0;
 }
 }
 
 
+static bool mtk_is_hwlro_supported(struct mtk_eth *eth)
+{
+	switch (eth->chip_id) {
+	case MT7623_ETH:
+		return true;
+	}
+
+	return false;
+}
+
 static int mtk_probe(struct platform_device *pdev)
 static int mtk_probe(struct platform_device *pdev)
 {
 {
 	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -2387,8 +2397,6 @@ static int mtk_probe(struct platform_device *pdev)
 		return PTR_ERR(eth->pctl);
 		return PTR_ERR(eth->pctl);
 	}
 	}
 
 
-	eth->hwlro = of_property_read_bool(pdev->dev.of_node, "mediatek,hwlro");
-
 	for (i = 0; i < 3; i++) {
 	for (i = 0; i < 3; i++) {
 		eth->irq[i] = platform_get_irq(pdev, i);
 		eth->irq[i] = platform_get_irq(pdev, i);
 		if (eth->irq[i] < 0) {
 		if (eth->irq[i] < 0) {
@@ -2417,6 +2425,8 @@ static int mtk_probe(struct platform_device *pdev)
 	if (err)
 	if (err)
 		return err;
 		return err;
 
 
+	eth->hwlro = mtk_is_hwlro_supported(eth);
+
 	for_each_child_of_node(pdev->dev.of_node, mac_np) {
 	for_each_child_of_node(pdev->dev.of_node, mac_np) {
 		if (!of_device_is_compatible(mac_np,
 		if (!of_device_is_compatible(mac_np,
 					     "mediatek,eth-mac"))
 					     "mediatek,eth-mac"))

+ 1 - 0
drivers/net/ethernet/mediatek/mtk_eth_soc.h

@@ -345,6 +345,7 @@
 /* ethernet subsystem chip id register */
 /* ethernet subsystem chip id register */
 #define ETHSYS_CHIPID0_3	0x0
 #define ETHSYS_CHIPID0_3	0x0
 #define ETHSYS_CHIPID4_7	0x4
 #define ETHSYS_CHIPID4_7	0x4
+#define MT7623_ETH		7623
 
 
 /* ethernet subsystem config register */
 /* ethernet subsystem config register */
 #define ETHSYS_SYSCFG0		0x14
 #define ETHSYS_SYSCFG0		0x14