sh_eth: add IRQ flags to 'struct sh_eth_cpu_data'
authorNobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Thu, 6 Jun 2013 09:49:30 +0000 (09:49 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 6 Jun 2013 23:04:04 +0000 (16:04 -0700)
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>
drivers/net/ethernet/renesas/sh_eth.c
drivers/net/ethernet/renesas/sh_eth.h

index f8d60947fa729dc79929128ca1d18b3fc8c25276..d0151d02416f38625d567cc9595aefbc333ba69c 100644 (file)
@@ -462,6 +462,7 @@ static struct sh_eth_cpu_data sh_eth_my_cpu_data = {
                          EESR_RFRMER | EESR_TFE | EESR_TDE | EESR_ECI,
        .tx_error_check = EESR_TWB | EESR_TABT | EESR_TDE | EESR_TFE,
 
+       .irq_flags      = IRQF_SHARED,
        .apr            = 1,
        .mpr            = 1,
        .tpauser        = 1,
@@ -570,6 +571,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,
@@ -650,6 +652,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
 };
 
@@ -1908,14 +1912,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;
index 8daba1d70539110f0f0bcf9ec67d083dbd63d0e7..729e77e66f19c03850f8054712458801623dcdda 100644 (file)
@@ -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 */