diff options
author | Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> | 2018-01-14 12:47:44 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-01-15 15:09:46 -0500 |
commit | 9662ec19229c89825acac1d62a9d78fb89f8dda5 (patch) | |
tree | e70392bc439e7e364300a69972613636900e4c68 | |
parent | 3e14c969a4ecdb4b4a05fb5c806d4f525fe56cff (diff) |
sh_eth: get Ether port # only when needed
The dual-port Ether configurations always have a shared TSU to e.g. pass
the packets between those ports. With the TSU init. code gathered under
the single *if*, we now can only get the port # from 'platform_device::id'
only when we actually need it (and not recalculate it each time)...
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/renesas/sh_eth.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c index 14d5373ddc6b..a0fe05968348 100644 --- a/drivers/net/ethernet/renesas/sh_eth.c +++ b/drivers/net/ethernet/renesas/sh_eth.c | |||
@@ -3125,7 +3125,7 @@ static int sh_eth_drv_probe(struct platform_device *pdev) | |||
3125 | const struct platform_device_id *id = platform_get_device_id(pdev); | 3125 | const struct platform_device_id *id = platform_get_device_id(pdev); |
3126 | struct sh_eth_private *mdp; | 3126 | struct sh_eth_private *mdp; |
3127 | struct net_device *ndev; | 3127 | struct net_device *ndev; |
3128 | int ret, devno; | 3128 | int ret; |
3129 | 3129 | ||
3130 | /* get base addr */ | 3130 | /* get base addr */ |
3131 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 3131 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
@@ -3137,10 +3137,6 @@ static int sh_eth_drv_probe(struct platform_device *pdev) | |||
3137 | pm_runtime_enable(&pdev->dev); | 3137 | pm_runtime_enable(&pdev->dev); |
3138 | pm_runtime_get_sync(&pdev->dev); | 3138 | pm_runtime_get_sync(&pdev->dev); |
3139 | 3139 | ||
3140 | devno = pdev->id; | ||
3141 | if (devno < 0) | ||
3142 | devno = 0; | ||
3143 | |||
3144 | ret = platform_get_irq(pdev, 0); | 3140 | ret = platform_get_irq(pdev, 0); |
3145 | if (ret < 0) | 3141 | if (ret < 0) |
3146 | goto out_release; | 3142 | goto out_release; |
@@ -3223,6 +3219,7 @@ static int sh_eth_drv_probe(struct platform_device *pdev) | |||
3223 | } | 3219 | } |
3224 | 3220 | ||
3225 | if (mdp->cd->tsu) { | 3221 | if (mdp->cd->tsu) { |
3222 | int port = pdev->id < 0 ? 0 : pdev->id % 2; | ||
3226 | struct resource *rtsu; | 3223 | struct resource *rtsu; |
3227 | 3224 | ||
3228 | rtsu = platform_get_resource(pdev, IORESOURCE_MEM, 1); | 3225 | rtsu = platform_get_resource(pdev, IORESOURCE_MEM, 1); |
@@ -3234,7 +3231,7 @@ static int sh_eth_drv_probe(struct platform_device *pdev) | |||
3234 | /* We can only request the TSU region for the first port | 3231 | /* We can only request the TSU region for the first port |
3235 | * of the two sharing this TSU for the probe to succeed... | 3232 | * of the two sharing this TSU for the probe to succeed... |
3236 | */ | 3233 | */ |
3237 | if (devno % 2 == 0 && | 3234 | if (port == 0 && |
3238 | !devm_request_mem_region(&pdev->dev, rtsu->start, | 3235 | !devm_request_mem_region(&pdev->dev, rtsu->start, |
3239 | resource_size(rtsu), | 3236 | resource_size(rtsu), |
3240 | dev_name(&pdev->dev))) { | 3237 | dev_name(&pdev->dev))) { |
@@ -3250,11 +3247,11 @@ static int sh_eth_drv_probe(struct platform_device *pdev) | |||
3250 | ret = -ENOMEM; | 3247 | ret = -ENOMEM; |
3251 | goto out_release; | 3248 | goto out_release; |
3252 | } | 3249 | } |
3253 | mdp->port = devno % 2; | 3250 | mdp->port = port; |
3254 | ndev->features = NETIF_F_HW_VLAN_CTAG_FILTER; | 3251 | ndev->features = NETIF_F_HW_VLAN_CTAG_FILTER; |
3255 | 3252 | ||
3256 | /* Need to init only the first port of the two sharing a TSU */ | 3253 | /* Need to init only the first port of the two sharing a TSU */ |
3257 | if (devno % 2 == 0) { | 3254 | if (port == 0) { |
3258 | if (mdp->cd->chip_reset) | 3255 | if (mdp->cd->chip_reset) |
3259 | mdp->cd->chip_reset(ndev); | 3256 | mdp->cd->chip_reset(ndev); |
3260 | 3257 | ||