| From eab7fbe5159409031d16a41f59e674c46f55a8bf Mon Sep 17 00:00:00 2001 |
| From: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> |
| Date: Thu, 6 Jun 2013 09:49:30 +0000 |
| Subject: sh_eth: add IRQ flags to 'struct sh_eth_cpu_data' |
| |
| The driver supports some SH and SH-Mobile SOCs. There are SOCs with two or more |
| Ethernet devices, for these we need to pass IRQF_SHARED to request_irq(). Add |
| the 'irq_flags' field to the 'struct sh_eth_cpu_data' instead of #ifdef'fery. |
| |
| Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> |
| [Sergei: properly aligned request_irq() call continuation line, reworded the |
| changelog, reworded the subject, changing the prefix.] |
| Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| |
| (cherry picked from commit 5b3dfd13ae8bdebea67c02612fe282baff850bb0) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/net/ethernet/renesas/sh_eth.c | 13 +++++-------- |
| drivers/net/ethernet/renesas/sh_eth.h | 1 + |
| 2 files changed, 6 insertions(+), 8 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c |
| index c821339a..7ca34a52 100644 |
| --- a/drivers/net/ethernet/renesas/sh_eth.c |
| +++ b/drivers/net/ethernet/renesas/sh_eth.c |
| @@ -465,6 +465,7 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { |
| EESR_ECI, |
| .tx_error_check = EESR_TWB | EESR_TABT | EESR_TDE | EESR_TFE, |
| |
| + .irq_flags = IRQF_SHARED, |
| .apr = 1, |
| .mpr = 1, |
| .tpauser = 1, |
| @@ -573,6 +574,7 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data_giga = { |
| .fdr_value = 0x0000072f, |
| .rmcr_value = 0x00000001, |
| |
| + .irq_flags = IRQF_SHARED, |
| .apr = 1, |
| .mpr = 1, |
| .tpauser = 1, |
| @@ -653,6 +655,8 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = { |
| #if defined(CONFIG_CPU_SUBTYPE_SH7734) |
| .hw_crc = 1, |
| .select_mii = 1, |
| +#else |
| + .irq_flags = IRQF_SHARED, |
| #endif |
| }; |
| |
| @@ -1919,14 +1923,7 @@ static int sh_eth_open(struct net_device *ndev) |
| pm_runtime_get_sync(&mdp->pdev->dev); |
| |
| ret = request_irq(ndev->irq, sh_eth_interrupt, |
| -#if defined(CONFIG_CPU_SUBTYPE_SH7763) || \ |
| - defined(CONFIG_CPU_SUBTYPE_SH7764) || \ |
| - defined(CONFIG_CPU_SUBTYPE_SH7757) |
| - IRQF_SHARED, |
| -#else |
| - 0, |
| -#endif |
| - ndev->name, ndev); |
| + mdp->cd->irq_flags, ndev->name, ndev); |
| if (ret) { |
| dev_err(&ndev->dev, "Can not assign IRQ number\n"); |
| return ret; |
| diff --git a/drivers/net/ethernet/renesas/sh_eth.h b/drivers/net/ethernet/renesas/sh_eth.h |
| index 034bee94..040d010b 100644 |
| --- a/drivers/net/ethernet/renesas/sh_eth.h |
| +++ b/drivers/net/ethernet/renesas/sh_eth.h |
| @@ -463,6 +463,7 @@ struct sh_eth_cpu_data { |
| unsigned long tx_error_check; |
| |
| /* hardware features */ |
| + unsigned long irq_flags; /* IRQ configuration flags */ |
| unsigned no_psr:1; /* EtherC DO NOT have PSR */ |
| unsigned apr:1; /* EtherC have APR */ |
| unsigned mpr:1; /* EtherC have MPR */ |
| -- |
| 1.8.4.3.gca3854a |
| |