]> git.hungrycats.org Git - linux/commitdiff
[ARM] SA11x0 PCMCIA 5
authorRussell King <rmk@flint.arm.linux.org.uk>
Sun, 2 Mar 2003 20:16:48 +0000 (20:16 +0000)
committerRussell King <rmk@flint.arm.linux.org.uk>
Sun, 2 Mar 2003 20:16:48 +0000 (20:16 +0000)
Remove get_irq_info method, passing the information via the init
method instead.  The IRQ allocated to a socket never changes on
these platforms, so the extra code was just bloat.

22 files changed:
drivers/pcmcia/sa1100_adsbitsy.c
drivers/pcmcia/sa1100_assabet.c
drivers/pcmcia/sa1100_badge4.c
drivers/pcmcia/sa1100_cerf.c
drivers/pcmcia/sa1100_flexanet.c
drivers/pcmcia/sa1100_freebird.c
drivers/pcmcia/sa1100_generic.c
drivers/pcmcia/sa1100_generic.h
drivers/pcmcia/sa1100_h3600.c
drivers/pcmcia/sa1100_jornada720.c
drivers/pcmcia/sa1100_neponset.c
drivers/pcmcia/sa1100_pangolin.c
drivers/pcmcia/sa1100_pfs168.c
drivers/pcmcia/sa1100_shannon.c
drivers/pcmcia/sa1100_simpad.c
drivers/pcmcia/sa1100_stork.c
drivers/pcmcia/sa1100_system3.c
drivers/pcmcia/sa1100_trizeps.c
drivers/pcmcia/sa1100_xp860.c
drivers/pcmcia/sa1100_yopy.c
drivers/pcmcia/sa1111_generic.c
drivers/pcmcia/sa1111_generic.h

index f01075f0669a626d9b87c744d8d4e175b6c71086..d3da971f7c49262b05f198021c087964fb25411a 100644 (file)
@@ -90,7 +90,6 @@ static struct pcmcia_low_level adsbitsy_pcmcia_ops = {
   .init                        = adsbitsy_pcmcia_init,
   .shutdown            = sa1111_pcmcia_shutdown,
   .socket_state                = sa1111_pcmcia_socket_state,
-  .get_irq_info                = sa1111_pcmcia_get_irq_info,
   .configure_socket    = adsbitsy_pcmcia_configure_socket,
 
   .socket_init         = sa1111_pcmcia_socket_init,
index 70b2cab006d0382b88528be15bdc2e451b4b1084..b10994165e35839ac9dab27bbbbd1f4e4f7506c2 100644 (file)
@@ -45,6 +45,9 @@ static int assabet_pcmcia_init(struct pcmcia_init *init)
                        goto irq_err;
        }
 
+       init->socket_irq[0] = NO_IRQ;
+       init->socket_irq[1] = ASSABET_IRQ_GPIO_CF_IRQ;
+
        /* There's only one slot, but it's "Slot 1": */
        return 2;
 
@@ -87,17 +90,6 @@ assabet_pcmcia_socket_state(int sock, struct pcmcia_state *state)
        }
 }
 
-static int assabet_pcmcia_get_irq_info(struct pcmcia_irq_info *info)
-{
-       if (info->sock > 1)
-               return -1;
-
-       if (info->sock == 1)
-               info->irq = ASSABET_IRQ_GPIO_CF_IRQ;
-
-       return 0;
-}
-
 static int
 assabet_pcmcia_configure_socket(int sock, const struct pcmcia_configure *configure)
 {
@@ -195,7 +187,6 @@ static struct pcmcia_low_level assabet_pcmcia_ops = {
        .init                   = assabet_pcmcia_init,
        .shutdown               = assabet_pcmcia_shutdown,
        .socket_state           = assabet_pcmcia_socket_state,
-       .get_irq_info           = assabet_pcmcia_get_irq_info,
        .configure_socket       = assabet_pcmcia_configure_socket,
 
        .socket_init            = assabet_pcmcia_socket_init,
index 0b11544a1c97a1824c1a124d4d1a92cffef674f0..bbc5bdffea0f0c23e66a33e59389e6163679ce3d 100644 (file)
@@ -153,7 +153,6 @@ static struct pcmcia_low_level badge4_pcmcia_ops = {
        .init                   = badge4_pcmcia_init,
        .shutdown               = badge4_pcmcia_shutdown,
        .socket_state           = sa1111_pcmcia_socket_state,
-       .get_irq_info           = sa1111_pcmcia_get_irq_info,
        .configure_socket       = badge4_pcmcia_configure_socket,
 
        .socket_init            = sa1111_pcmcia_socket_init,
index 235689b94828cfd49fab1673e9a876e86e16f77d..f4b2a6a4bb1bcdf956e19933740f0c4c862ede29 100644 (file)
@@ -46,6 +46,8 @@ static int cerf_pcmcia_init(struct pcmcia_init *init)
       goto irq_err;
   }
 
+  init->socket_irq[CERF_SOCKET] = IRQ_GPIO_CF_IRQ;
+
   return 2;
 
  irq_err:
@@ -83,16 +85,6 @@ static void cerf_pcmcia_socket_state(int sock, struct pcmcia_state *state)
   }
 }
 
-static int cerf_pcmcia_get_irq_info(struct pcmcia_irq_info *info){
-
-  if(info->sock>1) return -1;
-
-  if (info->sock == CERF_SOCKET)
-    info->irq=IRQ_GPIO_CF_IRQ;
-
-  return 0;
-}
-
 static int cerf_pcmcia_configure_socket(int sock, const struct pcmcia_configure
                                           *configure)
 {
@@ -162,7 +154,6 @@ static struct pcmcia_low_level cerf_pcmcia_ops = {
   .init                        = cerf_pcmcia_init,
   .shutdown            = cerf_pcmcia_shutdown,
   .socket_state                = cerf_pcmcia_socket_state,
-  .get_irq_info                = cerf_pcmcia_get_irq_info,
   .configure_socket    = cerf_pcmcia_configure_socket,
 
   .socket_init         = cerf_pcmcia_socket_init,
index b77e6a69b4207928b24be01cac860e4813440a42..4f2fd029e84a1995584cf5206bf810606e1344a3 100644 (file)
@@ -54,6 +54,9 @@ static int flexanet_pcmcia_init(struct pcmcia_init *init)
       break;
   }
 
+  init->socket_irq[0] = IRQ_GPIO_CF1_IRQ;
+  init->socket_irq[1] = IRQ_GPIO_CF2_IRQ;
+
   /* If we failed, then free all interrupts requested thus far. */
   if (res < 0) {
     printk(KERN_ERR "%s: request for IRQ%d failed: %d\n",
@@ -117,25 +120,6 @@ static void flexanet_pcmcia_socket_state(int sock, struct pcmcia_state *state)
 }
 
 
-/*
- * Return the IRQ information for a given socket number (the IRQ number)
- *
- */
-static int flexanet_pcmcia_get_irq_info(struct pcmcia_irq_info *info){
-
-  /* check the socket index */
-  if (info->sock > 1)
-    return -1;
-
-  if (info->sock == 0)
-    info->irq = IRQ_GPIO_CF1_IRQ;
-  else if (info->sock == 1)
-    info->irq = IRQ_GPIO_CF2_IRQ;
-
-  return 0;
-}
-
-
 /*
  *
  */
@@ -222,7 +206,6 @@ static struct pcmcia_low_level flexanet_pcmcia_ops = {
   .init                        = flexanet_pcmcia_init,
   .shutdown            = flexanet_pcmcia_shutdown,
   .socket_state                = flexanet_pcmcia_socket_state,
-  .get_irq_info                = flexanet_pcmcia_get_irq_info,
   .configure_socket    = flexanet_pcmcia_configure_socket,
 
   .socket_init         = flexanet_pcmcia_socket_init,
index 1f425d6d4b2e6f8527a5fc0d5986c794ccc2bc9e..e510c0955fee28e83228d89283352aa6ef23568d 100644 (file)
@@ -49,6 +49,8 @@ static int freebird_pcmcia_init(struct pcmcia_init *init){
       goto irq_err;
   }
 
+  init->socket_irq[0] = IRQ_GPIO_FREEBIRD_CF_IRQ;
+
   /* There's only one slot, but it's "Slot 1": */
   return 2;
 
@@ -93,16 +95,6 @@ static void freebird_pcmcia_socket_state(int sock, struct pcmcia_state *state)
   }
 }
 
-static int freebird_pcmcia_get_irq_info(struct pcmcia_irq_info *info){
-
-  if(info->sock>1) return -1;
-
-  if(info->sock==0)
-    info->irq=IRQ_GPIO_FREEBIRD_CF_IRQ;
-
-  return 0;
-}
-
 static int freebird_pcmcia_configure_socket(int sock, const struct pcmcia_configure
                                           *configure)
 {
@@ -171,7 +163,6 @@ static struct pcmcia_low_level freebird_pcmcia_ops = {
   .init                        = freebird_pcmcia_init,
   .shutdown            = freebird_pcmcia_shutdown,
   .socket_state                = freebird_pcmcia_socket_state,
-  .get_irq_info                = freebird_pcmcia_get_irq_info,
   .configure_socket    = freebird_pcmcia_configure_socket,
 
   .socket_init         = freebird_pcmcia_socket_init,
index 87708d4ca50c8619872738c41eaa7bc79ed3beb4..39e786563827a777b91efdd6a8ecff18cc73684d 100644 (file)
@@ -945,6 +945,8 @@ int sa1100_register_pcmcia(struct pcmcia_low_level *ops, struct device *dev)
                ops->socket_get_timing = sa1100_pcmcia_default_mecr_timing;
 
        pcmcia_init.handler = sa1100_pcmcia_interrupt;
+       pcmcia_init.socket_irq[0] = NO_IRQ;
+       pcmcia_init.socket_irq[1] = NO_IRQ;
        ret = ops->init(&pcmcia_init);
        if (ret < 0) {
                printk(KERN_ERR "Unable to initialize kernel PCMCIA service (%d).\n", ret);
@@ -961,22 +963,16 @@ int sa1100_register_pcmcia(struct pcmcia_low_level *ops, struct device *dev)
         */
        for (i = 0; i < sa1100_pcmcia_socket_count; i++) {
                struct sa1100_pcmcia_socket *skt = PCMCIA_SOCKET(i);
-               struct pcmcia_irq_info irq_info;
 
                if (!request_mem_region(_PCMCIA(i), PCMCIASp, "PCMCIA")) {
                        ret = -EBUSY;
                        goto out_err;
                }
 
-               irq_info.sock = i;
-               irq_info.irq  = -1;
-               ret = ops->get_irq_info(&irq_info);
-               if (ret < 0)
-                       printk(KERN_ERR "Unable to get IRQ for socket %u (%d)\n", i, ret);
 
                skt->nr         = i;
                skt->ops        = ops;
-               skt->irq        = irq_info.irq;
+               skt->irq        = pcmcia_init.socket_irq[i];
                skt->speed_io   = SA1100_PCMCIA_IO_ACCESS;
                skt->speed_attr = SA1100_PCMCIA_5V_MEM_ACCESS;
                skt->speed_mem  = SA1100_PCMCIA_5V_MEM_ACCESS;
index 6e118de19185eb20b760f3d9181d0bff605a3889..e572d12c262dde222ea11b44a1005ffc25ace8e4 100644 (file)
@@ -18,7 +18,8 @@
 #define SA1100_PCMCIA_MAX_SOCK   (2)
 
 struct pcmcia_init {
-  void (*handler)(int irq, void *dev, struct pt_regs *regs);
+       void (*handler)(int irq, void *dev, struct pt_regs *regs);
+       int     socket_irq[SA1100_PCMCIA_MAX_SOCK];
 };
 
 struct pcmcia_state {
@@ -40,18 +41,12 @@ struct pcmcia_configure {
             irq: 1;
 };
 
-struct pcmcia_irq_info {
-  unsigned int sock;
-  unsigned int irq;
-};
-
 struct pcmcia_low_level {
   struct module *owner;
 
   int (*init)(struct pcmcia_init *);
   int (*shutdown)(void);
   void (*socket_state)(int sock, struct pcmcia_state *);
-  int (*get_irq_info)(struct pcmcia_irq_info *);
   int (*configure_socket)(int sock, const struct pcmcia_configure *);
 
   /*
index 9ee176994db21cfaeae380dbdb3e79ac9f8b6e43..c07d0912d95cb4a7e3f3e1987470336f6ecf7754 100644 (file)
@@ -53,6 +53,9 @@ static int h3600_pcmcia_init(struct pcmcia_init *init)
                        free_irq(irqs[i].irq, NULL);
        }
 
+       init->socket_irq[0] = IRQ_GPIO_H3600_PCMCIA_IRQ0;
+       init->socket_irq[1] = IRQ_GPIO_H3600_PCMCIA_IRQ1;
+
        return res ? res : 2;
 }
 
@@ -101,21 +104,6 @@ static void h3600_pcmcia_socket_state(int sock, struct pcmcia_state *state)
        }
 }
 
-static int h3600_pcmcia_get_irq_info(struct pcmcia_irq_info *info)
-{
-       switch (info->sock) {
-       case 0:
-               info->irq = IRQ_GPIO_H3600_PCMCIA_IRQ0;
-               break;
-       case 1:
-               info->irq = IRQ_GPIO_H3600_PCMCIA_IRQ1;
-               break;
-       default:
-               return -1;
-       }
-       return 0;
-}
-
 static int
 h3600_pcmcia_configure_socket(int sock, const struct pcmcia_configure *conf)
 {
@@ -192,7 +180,6 @@ struct pcmcia_low_level h3600_pcmcia_ops = {
        .init                   = h3600_pcmcia_init,
        .shutdown               = h3600_pcmcia_shutdown,
        .socket_state           = h3600_pcmcia_socket_state,
-       .get_irq_info           = h3600_pcmcia_get_irq_info,
        .configure_socket       = h3600_pcmcia_configure_socket,
 
        .socket_init            = h3600_pcmcia_socket_init,
index aca5fb50e8c07f4b7986daaf92f3729834724441..3ab8b879f53e6e9f2f374a34e7d255b4cdcaaf82 100644 (file)
@@ -108,7 +108,6 @@ static struct pcmcia_low_level jornada720_pcmcia_ops = {
   .init                        = jornada720_pcmcia_init,
   .shutdown            = sa1111_pcmcia_shutdown,
   .socket_state                = sa1111_pcmcia_socket_state,
-  .get_irq_info                = sa1111_pcmcia_get_irq_info,
   .configure_socket    = jornada720_pcmcia_configure_socket,
 
   .socket_init         = sa1111_pcmcia_socket_init,
index fc260d296e62069f172f37118aab5b21a1cc04bf..b12cd186c5f001a43116523a8a18e084243919a0 100644 (file)
@@ -132,7 +132,6 @@ static struct pcmcia_low_level neponset_pcmcia_ops = {
        .init                   = neponset_pcmcia_init,
        .shutdown               = sa1111_pcmcia_shutdown,
        .socket_state           = sa1111_pcmcia_socket_state,
-       .get_irq_info           = sa1111_pcmcia_get_irq_info,
        .configure_socket       = neponset_pcmcia_configure_socket,
 
        .socket_init            = sa1111_pcmcia_socket_init,
index 4b6a8323eda0e91761cd84d3c447a44b5c6ae4c8..05ca1fcb43491272ac33007858f5651a3ebda434 100644 (file)
@@ -30,6 +30,8 @@ static int pangolin_pcmcia_init(struct pcmcia_init *init){
   GPCR = GPIO_PCMCIA_BUS_ON;
 #endif
 
+  init->socket_irq[PANGOLIN_SOCK] = IRQ_PCMCIA_IRQ;
+
   /* Set transition detect */
   set_irq_type(IRQ_PCMCIA_CD, IRQT_NOEDGE);
   set_irq_type(IRQ_PCMCIA_IRQ, IRQT_FALLING);
@@ -74,19 +76,6 @@ static void pangolin_pcmcia_socket_state(int sock, struct pcmcia_state *state)
   }
 }
 
-static int pangolin_pcmcia_get_irq_info(struct pcmcia_irq_info *info){
-
-  if(info->sock>1) return -1;
-#ifndef CONFIG_SA1100_PANGOLIN_PCMCIA_IDE
-  if(info->sock==1)
-       info->irq=IRQ_PCMCIA_IRQ;
-#else
-  if(info->sock==0)
-        info->irq=IRQ_PCMCIA_IRQ;
-#endif
-  return 0;
-}
-
 static int pangolin_pcmcia_configure_socket(int sock, const struct pcmcia_configure
                                           *configure)
 {
@@ -157,11 +146,10 @@ static struct pcmcia_low_level pangolin_pcmcia_ops = {
   .init                        = pangolin_pcmcia_init,
   .shutdown            = pangolin_pcmcia_shutdown,
   .socket_state                = pangolin_pcmcia_socket_state,
-  .get_irq_info                = pangolin_pcmcia_get_irq_info,
   .configure_socket    = pangolin_pcmcia_configure_socket,
 
   .socket_init         = pangolin_pcmcia_socket_init,
-  socket_suspend,      pangolin_pcmcia_socket_suspend,
+  .socket_suspend      = pangolin_pcmcia_socket_suspend,
 };
 
 int __init pcmcia_pangolin_init(struct device *dev)
index 0812178be92af2e08dd036c44f83d2f247211798..9099515541017ddf47a0e96d4bf185053fb6ea14 100644 (file)
@@ -125,7 +125,6 @@ static struct pcmcia_low_level pfs168_pcmcia_ops = {
   .init                        = pfs168_pcmcia_init,
   .shutdown            = sa1111_pcmcia_shutdown,
   .socket_state                = sa1111_pcmcia_socket_state,
-  .get_irq_info                = sa1111_pcmcia_get_irq_info,
   .configure_socket    = pfs168_pcmcia_configure_socket,
 
   .socket_init         = sa1111_pcmcia_socket_init,
index 7524e4de0b65b845f1222af0c3f755541ae62e6f..5b16217b5362208d84b3f5dba970cdd2db522135 100644 (file)
@@ -37,14 +37,16 @@ static int shannon_pcmcia_init(struct pcmcia_init *init)
        /* Set transition detect */
        set_irq_type(SHANNON_IRQ_GPIO_RDY_0, IRQT_FALLING);
        set_irq_type(SHANNON_IRQ_GPIO_RDY_1, IRQT_FALLING);
+       init->socket_irq[0] = SHANNON_IRQ_GPIO_RDY_0;
+       init->socket_irq[1] = SHANNON_IRQ_GPIO_RDY_1;
 
        /* Register interrupts */
        for (i = 0; i < ARRAY_SIZE(irqs); i++) {
-               set_irq_type(irqs[i].irq, IRQT_NOEDGE);
                res = request_irq(irqs[i].irq, init->handler, SA_INTERRUPT,
                                  irqs[i].str, NULL);
                if (res)
                        goto irq_err;
+               set_irq_type(irqs[i].irq, IRQT_NOEDGE);
        }
 
        return 2;
@@ -97,17 +99,6 @@ static void shannon_pcmcia_socket_state(int sock, struct pcmcia_state *state)
        }
 }
 
-static int shannon_pcmcia_get_irq_info(struct pcmcia_irq_info *info)
-{
-       if (info->sock == 0)
-               info->irq = SHANNON_IRQ_GPIO_RDY_0;
-       else if (info->sock == 1)
-               info->irq = SHANNON_IRQ_GPIO_RDY_1;
-       else return -1;
-       
-       return 0;
-}
-
 static int shannon_pcmcia_configure_socket(int sock, const struct pcmcia_configure *configure)
 {
        switch (configure->vcc) {
@@ -156,7 +147,6 @@ static struct pcmcia_low_level shannon_pcmcia_ops = {
        .init                   = shannon_pcmcia_init,
        .shutdown               = shannon_pcmcia_shutdown,
        .socket_state           = shannon_pcmcia_socket_state,
-       .get_irq_info           = shannon_pcmcia_get_irq_info,
        .configure_socket       = shannon_pcmcia_configure_socket,
 
        .socket_init            = shannon_pcmcia_socket_init,
index 7d07e94cd3f52882c6a650aff3da2166421e3eba..6d0cf82acea5f7239db568f482e78343d9dd96ae 100644 (file)
@@ -32,12 +32,15 @@ static int simpad_pcmcia_init(struct pcmcia_init *init){
   /* Set transition detect */
   set_irq_type( IRQ_GPIO_CF_CD, IRQT_NOEDGE );
   set_irq_type( IRQ_GPIO_CF_IRQ, IRQT_FALLING );
+  init->socket_irq[1] = IRQ_GPIO_CF_IRQ;
 
   /* Register interrupts */
   irq = IRQ_GPIO_CF_CD;
   res = request_irq( irq, init->handler, SA_INTERRUPT, "CF_CD", NULL );
   if( res < 0 ) goto irq_err;
 
+  set_irq_type( IRQ_GPIO_CF_CD, IRQT_NOEDGE );
+
   /* There's only one slot, but it's "Slot 1": */
   return 2;
 
@@ -82,16 +85,6 @@ static void simpad_pcmcia_socket_state(int sock, struct pcmcia_state *state)
   }
 }
 
-static int simpad_pcmcia_get_irq_info(struct pcmcia_irq_info *info){
-
-  if(info->sock>1) return -1;
-
-  if(info->sock==1)
-    info->irq=IRQ_GPIO_CF_IRQ;
-
-  return 0;
-}
-
 static int simpad_pcmcia_configure_socket(int sock, const struct pcmcia_configure
                                           *configure)
 {
@@ -152,7 +145,6 @@ static struct pcmcia_low_level simpad_pcmcia_ops = {
   .init                        = simpad_pcmcia_init,
   .shutdown            = simpad_pcmcia_shutdown,
   .socket_state                = simpad_pcmcia_socket_state,
-  .get_irq_info                = simpad_pcmcia_get_irq_info,
   .configure_socket    = simpad_pcmcia_configure_socket,
 
   .socket_init         = simpad_pcmcia_socket_init,
index 78af79ec430a84165ad813c5568c9b9fb8967c4b..ab021efbd1c3ffe681546129ef08b433b6dc1489 100644 (file)
@@ -49,14 +49,16 @@ static int stork_pcmcia_init(struct pcmcia_init *init)
        /* Set transition detect */
        set_irq_type(IRQ_GPIO_STORK_PCMCIA_A_RDY, IRQT_FALLING);
        set_irq_type(IRQ_GPIO_STORK_PCMCIA_B_RDY, IRQT_FALLING);
+       init->socket_irq[0] = IRQ_GPIO_STORK_PCMCIA_A_RDY;
+       init->socket_irq[1] = IRQ_GPIO_STORK_PCMCIA_B_RDY;
 
        /* Register interrupts */
        for (i = 0; i < ARRAY_SIZE(irqs); i++) {
-               set_irq_type(irqs[i].irq, IRQT_NOEDGE);
                res = request_irq(irqs[i].irq, init->handler, SA_INTERRUPT,
                                  irqs[i].str, NULL);
                if (res)
                        goto irq_err;
+               set_irq_type(irqs[i].irq, IRQT_NOEDGE);
        }
 
         return 2;
@@ -119,22 +121,6 @@ static void stork_pcmcia_socket_state(int sock, struct pcmcia_state *state)
        }
 }
 
-static int stork_pcmcia_get_irq_info(struct pcmcia_irq_info *info)
-{
-
-        switch (info->sock) {
-        case 0:
-                info->irq=IRQ_GPIO_STORK_PCMCIA_A_RDY;
-                break;
-        case 1:
-                info->irq=IRQ_GPIO_STORK_PCMCIA_B_RDY;
-                break;
-        default:
-                return -1;
-        }
-        return 0;
-}
-
 static int stork_pcmcia_configure_socket(int sock, const struct pcmcia_configure *configure)
 {
        unsigned long flags;
@@ -231,7 +217,6 @@ static struct pcmcia_low_level stork_pcmcia_ops = {
        .init                   = stork_pcmcia_init,
        .shutdown               = stork_pcmcia_shutdown,
        .socket_state           = stork_pcmcia_socket_state,
-       .get_irq_info           = stork_pcmcia_get_irq_info,
        .configure_socket       = stork_pcmcia_configure_socket,
 
        .socket_init            = stork_pcmcia_socket_init,
index ca61e33e8e443411c8c327586bac68bcd32f9882..c0ed16a94b1fa82cd47c631c882920418d43b490 100644 (file)
@@ -50,6 +50,9 @@
 
 int system3_pcmcia_init(struct pcmcia_init *init)
 {
+       init->socket_irq[0] = IRQ_S0_READY_NINT;
+       init->socket_irq[1] = IRQ_S1_READY_NINT;
+
        /* Don't need no CD and BVD* interrupts */
        return 2;
 }
@@ -105,7 +108,6 @@ struct pcmcia_low_level system3_pcmcia_ops = {
        .init                   = system3_pcmcia_init,
        .shutdown               = system3_pcmcia_shutdown,
        .socket_state           = system3_pcmcia_socket_state,
-       .get_irq_info           = sa1111_pcmcia_get_irq_info,
        .configure_socket       = system3_pcmcia_configure_socket,
 
        .socket_init            = sa1111_pcmcia_socket_init,
index e8c6a55dbc371863210d844c49ed01720856e56b..a6a285bc0838c220924cbff8b17f1335b0dbbe13 100644 (file)
@@ -31,6 +31,8 @@ static int trizeps_pcmcia_init(struct pcmcia_init *init)
 {
        int res;
 
+       init->socket_irq[0] = TRIZEPS_IRQ_PCMCIA_IRQ0;
+
        /* Enable CF bus: */
        TRIZEPS_BCR_clear(TRIZEPS_BCR1, TRIZEPS_nPCM_ENA_REG);
 
@@ -96,24 +98,6 @@ static void trizeps_pcmcia_socket_state(int sock, struct pcmcia_state *state_arr
        }
 }
 
-/**
- *
- *
- ******************************************************/
-static int trizeps_pcmcia_get_irq_info(struct pcmcia_irq_info *info){
-
-       switch (info->sock) {
-       case 0:
-               info->irq=TRIZEPS_IRQ_PCMCIA_IRQ0;
-               break;
-       case 1:
-               // MFTB2 use only one Slot
-       default:
-               return -1;
-       }
-       return 0;
-}
-
 /**
  *
  *
@@ -192,7 +176,6 @@ struct pcmcia_low_level trizeps_pcmcia_ops = {
        .init                   = trizeps_pcmcia_init,
        .shutdown               = trizeps_pcmcia_shutdown,
        .socket_state           = trizeps_pcmcia_socket_state,
-       .get_irq_info           = trizeps_pcmcia_get_irq_info,
        .configure_socket       = trizeps_pcmcia_configure_socket,
        .socket_init            = trizeps_pcmcia_socket_init,
        .socket_suspend         = trizeps_pcmcia_socket_suspend,
index 6795de670b0b530804d8ad2b7f5ea00d8062072e..3bb1cc41396c056effbfddfda2d03ae24d24fa02 100644 (file)
@@ -138,7 +138,6 @@ static struct pcmcia_low_level xp860_pcmcia_ops = {
   .init                        = xp860_pcmcia_init,
   .shutdown            = sa1111_pcmcia_shutdown,
   .socket_state                = sa1111_pcmcia_socket_state,
-  .get_irq_info                = sa1111_pcmcia_get_irq_info,
   .configure_socket    = xp860_pcmcia_configure_socket,
 
   .socket_init         = sa1111_pcmcia_socket_init,
index ea1aabd29b3f59830bced14a1c22529b1fba78c8..d88cdd37d674a9df6988292171f332fbf1b6183e 100644 (file)
@@ -40,6 +40,8 @@ static int yopy_pcmcia_init(struct pcmcia_init *init)
 {
        int i, res;
 
+       init->socket_irq[0] = IRQ_CF_IREQ;
+
        pcmcia_power(0);
        pcmcia_reset(1);
 
@@ -97,16 +99,6 @@ static void yopy_pcmcia_socket_state(int sock, struct pcmcia_state_array *state)
        }
 }
 
-static int yopy_pcmcia_get_irq_info(struct pcmcia_irq_info *info)
-{
-       if (info->sock != 0)
-               return -1;
-
-       info->irq = IRQ_CF_IREQ;
-
-       return 0;
-}
-
 static int yopy_pcmcia_configure_socket(int sock, const struct pcmcia_configure *configure)
 {
        if (sock != 0)
@@ -159,7 +151,6 @@ static struct pcmcia_low_level yopy_pcmcia_ops = {
        .init                   = yopy_pcmcia_init,
        .shutdown               = yopy_pcmcia_shutdown,
        .socket_state           = yopy_pcmcia_socket_state,
-       .get_irq_info           = yopy_pcmcia_get_irq_info,
        .configure_socket       = yopy_pcmcia_configure_socket,
 
        .socket_init            = yopy_pcmcia_socket_init,
index 280629806c9cf28854cf1d65cac6ced2964e0128..98a3adc9e5802dab2d23ffa6e1312fa7b03066ef 100644 (file)
@@ -38,6 +38,11 @@ int sa1111_pcmcia_init(struct pcmcia_init *init)
 {
        int i, ret;
 
+       if (init->socket_irq[0] == NO_IRQ)
+               init->socket_irq[0] = IRQ_S0_READY_NINT;
+       if (init->socket_irq[1] == NO_IRQ)
+               init->socket_irq[1] = IRQ_S1_READY_NINT;
+
        for (i = ret = 0; i < ARRAY_SIZE(irqs); i++) {
                ret = request_irq(irqs[i].irq, init->handler, SA_INTERRUPT,
                                  irqs[i].str, NULL);
@@ -93,19 +98,6 @@ void sa1111_pcmcia_socket_state(int sock, struct pcmcia_state *state)
        }
 }
 
-int sa1111_pcmcia_get_irq_info(struct pcmcia_irq_info *info)
-{
-       int ret = 0;
-
-       switch (info->sock) {
-       case 0: info->irq = IRQ_S0_READY_NINT;  break;
-       case 1: info->irq = IRQ_S1_READY_NINT;  break;
-       default: ret = 1;
-       }
-
-       return ret;
-}
-
 int sa1111_pcmcia_configure_socket(int sock, const struct pcmcia_configure *conf)
 {
        unsigned int rst, flt, wait, pse, irq, pccr_mask, val;
index 76e33b8a8476b5855021ec91e554f1db229a582f..459d7b1145cd4e1ba4ef631af0345eaaf4aee667 100644 (file)
@@ -1,7 +1,6 @@
 extern int sa1111_pcmcia_init(struct pcmcia_init *);
 extern int sa1111_pcmcia_shutdown(void);
 extern void sa1111_pcmcia_socket_state(int sock, struct pcmcia_state *);
-extern int sa1111_pcmcia_get_irq_info(struct pcmcia_irq_info *);
 extern int sa1111_pcmcia_configure_socket(int sock, const struct pcmcia_configure *);
 extern int sa1111_pcmcia_socket_init(int);
 extern int sa1111_pcmcia_socket_suspend(int);