]> git.hungrycats.org Git - linux/commitdiff
[ARM] SA11x0 PCMCIA 2
authorRussell King <rmk@flint.arm.linux.org.uk>
Sun, 2 Mar 2003 19:42:53 +0000 (19:42 +0000)
committerRussell King <rmk@flint.arm.linux.org.uk>
Sun, 2 Mar 2003 19:42:53 +0000 (19:42 +0000)
Make low-level configure_socket() method take the socket number as
a parameter rather than embedded in a structure.

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 a7f533ca5c05d7a6e52ec18a1c53a48339aa4ab6..709ca0a06da1e1cd22a42e4a499257c193f193f1 100644 (file)
@@ -34,12 +34,12 @@ static int adsbitsy_pcmcia_init(struct pcmcia_init *init)
 }
 
 static int
-adsbitsy_pcmcia_configure_socket(const struct pcmcia_configure *conf)
+adsbitsy_pcmcia_configure_socket(int sock, const struct pcmcia_configure *conf)
 {
   unsigned int pa_dwr_mask, pa_dwr_set;
   int ret;
 
-  switch (conf->sock) {
+  switch (sock) {
   case 0:
     pa_dwr_mask = GPIO_GPIO0 | GPIO_GPIO1;
 
@@ -71,7 +71,7 @@ adsbitsy_pcmcia_configure_socket(const struct pcmcia_configure *conf)
     return -1;
   }
 
-  ret = sa1111_pcmcia_configure_socket(conf);
+  ret = sa1111_pcmcia_configure_socket(sock, conf);
   if (ret == 0) {
     unsigned long flags;
 
index 359331431a05c2ad337321945d7a34aa6552cde1..e1b4e2bb7a99cea910572425c5bb46942f54c743 100644 (file)
@@ -102,14 +102,14 @@ static int assabet_pcmcia_get_irq_info(struct pcmcia_irq_info *info)
 }
 
 static int
-assabet_pcmcia_configure_socket(const struct pcmcia_configure *configure)
+assabet_pcmcia_configure_socket(int sock, const struct pcmcia_configure *configure)
 {
        unsigned int mask;
 
-       if (configure->sock > 1)
+       if (sock > 1)
                return -1;
 
-       if (configure->sock == 0)
+       if (sock == 0)
                return 0;
 
        switch (configure->vcc) {
index f676c69176db3cadc066d0295335800c08f69b31..09020970598cc3c62ff8759ec9f329c368c4931d 100644 (file)
@@ -96,11 +96,11 @@ static void complain_about_jumpering(const char *whom,
 }
 
 static int
-badge4_pcmcia_configure_socket(const struct pcmcia_configure *conf)
+badge4_pcmcia_configure_socket(int sock, const struct pcmcia_configure *conf)
 {
        int ret;
 
-       switch (conf->sock) {
+       switch (sock) {
        case 0:
                if ((conf->vcc != 0) &&
                    (conf->vcc != badge4_pcmvcc)) {
@@ -130,7 +130,7 @@ badge4_pcmcia_configure_socket(const struct pcmcia_configure *conf)
                return -1;
        }
 
-       ret = sa1111_pcmcia_configure_socket(conf);
+       ret = sa1111_pcmcia_configure_socket(sock, conf);
        if (ret == 0) {
                unsigned long flags;
                int need5V;
index 28c808f95d1e55d4485fd00308e5296fccd4459c..c3e4c99c72047d9338ca20b8b9bb9381d6eab038 100644 (file)
@@ -96,13 +96,13 @@ static int cerf_pcmcia_get_irq_info(struct pcmcia_irq_info *info){
   return 0;
 }
 
-static int cerf_pcmcia_configure_socket(const struct pcmcia_configure
+static int cerf_pcmcia_configure_socket(int sock, const struct pcmcia_configure
                                           *configure)
 {
-  if(configure->sock>1)
+  if (sock>1)
     return -1;
 
-  if (configure->sock != CERF_SOCKET)
+  if (sock != CERF_SOCKET)
     return 0;
 
   switch(configure->vcc){
index 3d4e35efa8b549cc8effebad10477d1eed6aacfd..57bf3aca774db3da352f549b6692c492081fbd85 100644 (file)
@@ -142,13 +142,12 @@ static int flexanet_pcmcia_get_irq_info(struct pcmcia_irq_info *info){
 /*
  *
  */
-static int flexanet_pcmcia_configure_socket(const struct pcmcia_configure
+static int flexanet_pcmcia_configure_socket(int sock, const struct pcmcia_configure
                                           *configure)
 {
   unsigned long value, flags, mask;
 
-
-  if (configure->sock > 1)
+  if (sock > 1)
     return -1;
 
   /* Ignore the VCC level since it is 3.3V and always on */
@@ -174,7 +173,7 @@ static int flexanet_pcmcia_configure_socket(const struct pcmcia_configure
   /* Reset the slot(s) using the controls in the BCR */
   mask = 0;
 
-  switch (configure->sock)
+  switch (sock)
   {
     case 0 : mask = FHH_BCR_CF1_RST; break;
     case 1 : mask = FHH_BCR_CF2_RST; break;
index dc8fc02839db50e8d4e5d3732a43e19db9d03eaa..05cb5498ac46a6e9528ae3a18eb5a64a8a73198d 100644 (file)
@@ -115,14 +115,14 @@ static int freebird_pcmcia_get_irq_info(struct pcmcia_irq_info *info){
   return 0;
 }
 
-static int freebird_pcmcia_configure_socket(const struct pcmcia_configure
+static int freebird_pcmcia_configure_socket(int sock, const struct pcmcia_configure
                                           *configure)
 {
   unsigned long value, flags;
 
-  if(configure->sock>1) return -1;
+  if(sock>1) return -1;
 
-  if(configure->sock==1) return 0;
+  if(sock==1) return 0;
 
   local_irq_save(flags);
 
index 9fe899279d9608a89a5d59228543b69f39a3bcf1..1f8c6abbe63320331dfd54f09110960b72949aec 100644 (file)
@@ -150,7 +150,6 @@ sa1100_pcmcia_config_skt(struct sa1100_pcmcia_socket *skt, socket_state_t *state
        struct pcmcia_configure conf;
        int ret;
 
-       conf.sock    = skt->nr;
        conf.vcc     = state->Vcc;
        conf.vpp     = state->Vpp;
        conf.output  = state->flags & SS_OUTPUT_ENA ? 1 : 0;
@@ -158,7 +157,7 @@ sa1100_pcmcia_config_skt(struct sa1100_pcmcia_socket *skt, socket_state_t *state
        conf.reset   = state->flags & SS_RESET ? 1 : 0;
        conf.irq     = state->io_irq != 0;
 
-       ret = skt->ops->configure_socket(&conf);
+       ret = skt->ops->configure_socket(skt->nr, &conf);
        if (ret == 0) {
                /*
                 * This really needs a better solution.  The IRQ
index daa043b1b52328796d4e209cefc0d06666c3bc37..d4b771b9c593af199dd8e930ca6d6d813efab7e5 100644 (file)
@@ -37,8 +37,7 @@ struct pcmcia_state_array {
 };
 
 struct pcmcia_configure {
-  unsigned sock: 8,
-            vcc: 8,
+  unsigned  vcc: 8,
             vpp: 8,
          output: 1,
         speaker: 1,
@@ -56,7 +55,7 @@ struct pcmcia_low_level {
   int (*shutdown)(void);
   int (*socket_state)(struct pcmcia_state_array *);
   int (*get_irq_info)(struct pcmcia_irq_info *);
-  int (*configure_socket)(const struct pcmcia_configure *);
+  int (*configure_socket)(int sock, const struct pcmcia_configure *);
 
   /*
    * Enable card status IRQs on (re-)initialisation.  This can
index e25fed19f7fb1847a1df89499e23b890f0be0c21..918152a85767e83893cec0a4b409ea15ee9d3f4a 100644 (file)
@@ -117,9 +117,9 @@ static int h3600_pcmcia_get_irq_info(struct pcmcia_irq_info *info)
 }
 
 static int
-h3600_pcmcia_configure_socket(const struct pcmcia_configure *conf)
+h3600_pcmcia_configure_socket(int sock, const struct pcmcia_configure *conf)
 {
-       if (conf->sock > 1)
+       if (sock > 1)
                return -1;
 
        if (conf->vcc != 0 && conf->vcc != 33 && conf->vcc != 50) {
index a7bafc5687e71d40d026e745f767dae81a78ad81..ef3170a5c92b956a91a01576cce21d121b49682a 100644 (file)
@@ -49,15 +49,15 @@ static int jornada720_pcmcia_init(struct pcmcia_init *init)
 }
 
 static int
-jornada720_pcmcia_configure_socket(const struct pcmcia_configure *conf)
+jornada720_pcmcia_configure_socket(int sock, const struct pcmcia_configure *conf)
 {
   unsigned int pa_dwr_mask, pa_dwr_set;
   int ret;
 
 printk("%s(): config socket %d vcc %d vpp %d\n", __FUNCTION__,
-              conf->sock, conf->vcc, conf->vpp);
+              sock, conf->vcc, conf->vpp);
 
-  switch (conf->sock) {
+  switch (sock) {
   case 0:
     pa_dwr_mask = SOCKET0_POWER | SOCKET0_3V;
 
index c9a37dd4bcce5cc49e324c82de0fdc07e072945e..296bd3ddff19c81ee8d67a663df8b2712f58e749 100644 (file)
@@ -58,13 +58,13 @@ static int neponset_pcmcia_init(struct pcmcia_init *init)
 }
 
 static int
-neponset_pcmcia_configure_socket(const struct pcmcia_configure *conf)
+neponset_pcmcia_configure_socket(int sock, const struct pcmcia_configure *conf)
 {
        unsigned int ncr_mask, pa_dwr_mask;
        unsigned int ncr_set, pa_dwr_set;
        int ret;
 
-       switch (conf->sock) {
+       switch (sock) {
        case 0:
                pa_dwr_mask = GPIO_GPIO0 | GPIO_GPIO1;
                ncr_mask = NCR_A0VPP | NCR_A1VPP;
@@ -113,7 +113,7 @@ neponset_pcmcia_configure_socket(const struct pcmcia_configure *conf)
                return -1;
        }
 
-       ret = sa1111_pcmcia_configure_socket(conf);
+       ret = sa1111_pcmcia_configure_socket(sock, conf);
        if (ret == 0) {
                unsigned long flags;
 
index 6221fa149cae97512c95dbbe0d945634eac765af..2127c81e62cc70ea773f5403c7e2e5a737a2c0f0 100644 (file)
 #include <asm/irq.h>
 #include "sa1100_generic.h"
 
+#ifndef CONFIG_SA1100_PANGOLIN_PCMCIA_IDE
+#define PANGOLIN_SOCK  1
+#else
+#define PANGOLIN_SOCK  0
+#endif
+
 static int pangolin_pcmcia_init(struct pcmcia_init *init){
   int res;
 
@@ -94,14 +100,14 @@ static int pangolin_pcmcia_get_irq_info(struct pcmcia_irq_info *info){
   return 0;
 }
 
-static int pangolin_pcmcia_configure_socket(const struct pcmcia_configure
+static int pangolin_pcmcia_configure_socket(int sock, const struct pcmcia_configure
                                           *configure)
 {
   unsigned long value, flags;
 
-  if(configure->sock>1) return -1;
+  if(sock>1) return -1;
 #ifndef CONFIG_SA1100_PANGOLIN_PCMCIA_IDE
-  if(configure->sock==0) return 0;
+  if(sock==0) return 0;
 #endif
   local_irq_save(flags);
 
@@ -132,7 +138,7 @@ static int pangolin_pcmcia_configure_socket(const struct pcmcia_configure
   }
 #ifdef CONFIG_SA1100_PANGOLIN_PCMCIA_IDE
   /* reset & unreset request */
-  if(configure->sock==0) {
+  if(sock==0) {
        if(configure->reset) {
                GPSR |= GPIO_PCMCIA_RESET;
        } else {
index 770132ee9fc2c81f9a778817c4a8b93b64c2b06a..60e9725445eb7ec243bda66039dc84ab70f6c315 100644 (file)
@@ -29,7 +29,7 @@ static int pfs168_pcmcia_init(struct pcmcia_init *init)
 }
 
 static int
-pfs168_pcmcia_configure_socket(const struct pcmcia_configure *conf)
+pfs168_pcmcia_configure_socket(int sock, const struct pcmcia_configure *conf)
 {
   unsigned int pa_dwr_mask = 0, pa_dwr_set = 0;
   int ret;
@@ -46,7 +46,7 @@ pfs168_pcmcia_configure_socket(const struct pcmcia_configure *conf)
    *
    */
 
-  switch (conf->sock) {
+  switch (sock) {
   case 0:
     pa_dwr_mask = GPIO_GPIO0 | GPIO_GPIO1 | GPIO_GPIO2 | GPIO_GPIO3;
 
@@ -106,7 +106,7 @@ pfs168_pcmcia_configure_socket(const struct pcmcia_configure *conf)
     break;
   }
 
-  ret = sa1111_pcmcia_configure_socket(conf);
+  ret = sa1111_pcmcia_configure_socket(sock, conf);
   if (ret == 0) {
     unsigned long flags;
 
index 41e25ddaa461900083c9eac05d8bf591f241cdad..226ba1d0fb5e1087a2ec7942d937058a469d5e81 100644 (file)
@@ -107,9 +107,8 @@ static int shannon_pcmcia_get_irq_info(struct pcmcia_irq_info *info)
        return 0;
 }
 
-static int shannon_pcmcia_configure_socket(const struct pcmcia_configure *configure)
+static int shannon_pcmcia_configure_socket(int sock, const struct pcmcia_configure *configure)
 {
-
        switch (configure->vcc) {
        case 0: /* power off */
                printk(KERN_WARNING __FUNCTION__"(): CS asked for 0V, still applying 3.3V..\n");
index 7d699fc475f50b92597d956aec31e12f17f05451..060cbad125cbf236dd3b738a81e6d7bae8f073b3 100644 (file)
@@ -103,14 +103,14 @@ static int simpad_pcmcia_get_irq_info(struct pcmcia_irq_info *info){
   return 0;
 }
 
-static int simpad_pcmcia_configure_socket(const struct pcmcia_configure
+static int simpad_pcmcia_configure_socket(int sock, const struct pcmcia_configure
                                           *configure)
 {
   unsigned long value, flags;
 
-  if(configure->sock>1) return -1;
+  if(sock>1) return -1;
 
-  if(configure->sock==0) return 0;
+  if(sock==0) return 0;
 
   local_irq_save(flags);
 
index 597d164ea0f7df568f631f5390ea0d32616d4f66..e3fa3c328a12cb5bd522814b54047538435c03b2 100644 (file)
@@ -135,21 +135,20 @@ static int stork_pcmcia_get_irq_info(struct pcmcia_irq_info *info)
         return 0;
 }
 
-static int stork_pcmcia_configure_socket(const struct pcmcia_configure *configure)
+static int stork_pcmcia_configure_socket(int sock, const struct pcmcia_configure *configure)
 {
-        int card = configure->sock;
        unsigned long flags;
 
         int DETECT, RDY, POWER, RESET;
 
-        if (card > 1) return -1;
+        if (sock > 1) return -1;
 
        printk(__FUNCTION__ ": socket=%d vcc=%d vpp=%d reset=%d\n", 
-                       card, configure->vcc, configure->vpp, configure->reset);
+                       sock, configure->vcc, configure->vpp, configure->reset);
 
        local_irq_save(flags);
 
-        if (card == 0) {
+        if (sock == 0) {
            DETECT = GPIO_STORK_PCMCIA_A_CARD_DETECT;
            RDY = GPIO_STORK_PCMCIA_A_RDY;
            POWER = STORK_PCMCIA_A_POWER_ON;
index c6076fee5bcb2fece202af91803602fa5927117b..d2a4dd7099b64c419a1e92d008a25b66cf0ba7ee 100644 (file)
@@ -57,16 +57,13 @@ int system3_pcmcia_shutdown(void)
        return 0;
 }
 
-int system3_pcmcia_configure_socket(const struct pcmcia_configure *conf)
+int system3_pcmcia_configure_socket(int sock, const struct pcmcia_configure *conf)
 {
-       if (!conf)
-               return -1;
-
        /* only CF ATM */
-       if (conf->sock == 0)
+       if (sock == 0)
                return -1;
 
-       return sa1111_pcmcia_configure_socket( conf );
+       return sa1111_pcmcia_configure_socket(sock, conf);
 }
 
 static int system3_pcmcia_socket_state(struct pcmcia_state_array
index 8c308cccdaea893c9adb07ab8bac266c694e92eb..7bc836ba579451921cceedc4af9aea5afb67d1f8 100644 (file)
@@ -123,11 +123,11 @@ static int trizeps_pcmcia_get_irq_info(struct pcmcia_irq_info *info){
  *
  *
  ******************************************************/
-static int trizeps_pcmcia_configure_socket(const struct pcmcia_configure *configure)
+static int trizeps_pcmcia_configure_socket(int sock, const struct pcmcia_configure *configure)
 {
        unsigned long flags;
 
-       if(configure->sock>1) return -1;
+       if(sock>1) return -1;
 
        local_irq_save(flags);
 
index c1eb6ae182498cc0eaee6c3eae305f08b038deca..7e1179049591a2fec2debb2a27ae772c7bd67e07 100644 (file)
@@ -40,7 +40,7 @@ static int xp860_pcmcia_init(struct pcmcia_init *init)
 }
 
 static int
-xp860_pcmcia_configure_socket(const struct pcmcia_configure *conf)
+xp860_pcmcia_configure_socket(int sock, const struct pcmcia_configure *conf)
 {
   unsigned int gpio_mask, pa_dwr_mask;
   unsigned int gpio_set, pa_dwr_set;
@@ -70,7 +70,7 @@ xp860_pcmcia_configure_socket(const struct pcmcia_configure *conf)
    * the corresponding truth table.
    */
 
-  switch (conf->sock) {
+  switch (sock) {
   case 0:
     pa_dwr_mask = GPIO_GPIO0 | GPIO_GPIO1;
     gpio_mask = NCR_A0VPP | NCR_A1VPP;
@@ -117,7 +117,7 @@ xp860_pcmcia_configure_socket(const struct pcmcia_configure *conf)
     break;
   }
 
-  ret = sa1111_pcmcia_configure_socket(conf);
+  ret = sa1111_pcmcia_configure_socket(sock, conf);
   if (ret == 0) {
     unsigned long flags;
 
index 138f2b07f0671601a107542f459932bd2aaed6d7..4cca5952188ebfcbeedcb0ac1571b7a01728fa1f 100644 (file)
@@ -113,9 +113,9 @@ static int yopy_pcmcia_get_irq_info(struct pcmcia_irq_info *info)
        return 0;
 }
 
-static int yopy_pcmcia_configure_socket(const struct pcmcia_configure *configure)
+static int yopy_pcmcia_configure_socket(int sock, const struct pcmcia_configure *configure)
 {
-       if (configure->sock != 0)
+       if (sock != 0)
                return -1;
 
        switch (configure->vcc) {
index a9bdb592de71e5d5e8a92a1634f4e4053aba8103..ab95d450441b70f58d498d4526229ac378d400d6 100644 (file)
@@ -104,12 +104,12 @@ int sa1111_pcmcia_get_irq_info(struct pcmcia_irq_info *info)
        return ret;
 }
 
-int sa1111_pcmcia_configure_socket(const struct pcmcia_configure *conf)
+int sa1111_pcmcia_configure_socket(int sock, const struct pcmcia_configure *conf)
 {
        unsigned int rst, flt, wait, pse, irq, pccr_mask, val;
        unsigned long flags;
 
-       switch (conf->sock) {
+       switch (sock) {
        case 0:
                rst = PCCR_S0_RST;
                flt = PCCR_S0_FLT;
index 90e4e28dbd20f4a214a901810d7a6d8b7a036fbb..359978214675b782b8302fb42bfa29352125495e 100644 (file)
@@ -2,6 +2,6 @@ extern int sa1111_pcmcia_init(struct pcmcia_init *);
 extern int sa1111_pcmcia_shutdown(void);
 extern int sa1111_pcmcia_socket_state(struct pcmcia_state_array *);
 extern int sa1111_pcmcia_get_irq_info(struct pcmcia_irq_info *);
-extern int sa1111_pcmcia_configure_socket(const struct pcmcia_configure *);
+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);