aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNelson Chang <nelson.chang@mediatek.com>2016-10-06 07:44:02 -0400
committerDavid S. Miller <davem@davemloft.net>2016-10-06 21:08:08 -0400
commit983e1a6c95abf8058d26149a928578b720c77bce (patch)
tree80d013395e37d04a2b1f745e0bad1c2ed3b29521
parentb95b6d99ce3673ca8d9f7c824d82ca7912d96b34 (diff)
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>
-rw-r--r--drivers/net/ethernet/mediatek/mtk_eth_soc.c14
-rw-r--r--drivers/net/ethernet/mediatek/mtk_eth_soc.h1
2 files changed, 13 insertions, 2 deletions
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 0c67ab1fb4d8..4a62ffd7729d 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/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)
2348 return 0; 2348 return 0;
2349} 2349}
2350 2350
2351static bool mtk_is_hwlro_supported(struct mtk_eth *eth)
2352{
2353 switch (eth->chip_id) {
2354 case MT7623_ETH:
2355 return true;
2356 }
2357
2358 return false;
2359}
2360
2351static int mtk_probe(struct platform_device *pdev) 2361static int mtk_probe(struct platform_device *pdev)
2352{ 2362{
2353 struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 2363 struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -2387,8 +2397,6 @@ static int mtk_probe(struct platform_device *pdev)
2387 return PTR_ERR(eth->pctl); 2397 return PTR_ERR(eth->pctl);
2388 } 2398 }
2389 2399
2390 eth->hwlro = of_property_read_bool(pdev->dev.of_node, "mediatek,hwlro");
2391
2392 for (i = 0; i < 3; i++) { 2400 for (i = 0; i < 3; i++) {
2393 eth->irq[i] = platform_get_irq(pdev, i); 2401 eth->irq[i] = platform_get_irq(pdev, i);
2394 if (eth->irq[i] < 0) { 2402 if (eth->irq[i] < 0) {
@@ -2417,6 +2425,8 @@ static int mtk_probe(struct platform_device *pdev)
2417 if (err) 2425 if (err)
2418 return err; 2426 return err;
2419 2427
2428 eth->hwlro = mtk_is_hwlro_supported(eth);
2429
2420 for_each_child_of_node(pdev->dev.of_node, mac_np) { 2430 for_each_child_of_node(pdev->dev.of_node, mac_np) {
2421 if (!of_device_is_compatible(mac_np, 2431 if (!of_device_is_compatible(mac_np,
2422 "mediatek,eth-mac")) 2432 "mediatek,eth-mac"))
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
index a5b422b37f80..99b1c8e9f16f 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
@@ -345,6 +345,7 @@
345/* ethernet subsystem chip id register */ 345/* ethernet subsystem chip id register */
346#define ETHSYS_CHIPID0_3 0x0 346#define ETHSYS_CHIPID0_3 0x0
347#define ETHSYS_CHIPID4_7 0x4 347#define ETHSYS_CHIPID4_7 0x4
348#define MT7623_ETH 7623
348 349
349/* ethernet subsystem config register */ 350/* ethernet subsystem config register */
350#define ETHSYS_SYSCFG0 0x14 351#define ETHSYS_SYSCFG0 0x14