/* card detect IRQ on GPIO 83 */
        pxa_gpio_mode(IRQ_TO_GPIO(CMX270_MMC_IRQ));
-       set_irq_type(CMX270_MMC_IRQ, IRQT_FALLING);
 
        err = request_irq(CMX270_MMC_IRQ, cmx270_detect_int,
                          IRQF_DISABLED | IRQF_TRIGGER_FALLING,
                          "MMC card detect", data);
-       if (err) {
+       if (err)
                printk(KERN_ERR "cmx270_mci_init: MMC/SD: can't"
                       " request MMC card detect IRQ\n");
-               return -1;
-       }
 
-       return 0;
+       return err;
 }
 
 static void cmx270_mci_setpower(struct device *dev, unsigned int vdd)
 
        err = request_irq(CORGI_IRQ_GPIO_nSD_DETECT, corgi_detect_int,
                          IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                          "MMC card detect", data);
-       if (err) {
+       if (err)
                printk(KERN_ERR "corgi_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
-               return -1;
-       }
 
-       return 0;
+       return err;
 }
 
 static void corgi_mci_setpower(struct device *dev, unsigned int vdd)
 
 
        err = request_irq(MAINSTONE_MMC_IRQ, mstone_detect_int, IRQF_DISABLED,
                             "MMC card detect", data);
-       if (err) {
+       if (err)
                printk(KERN_ERR "mainstone_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
-               return -1;
-       }
 
-       return 0;
+       return err;
 }
 
 static void mainstone_mci_setpower(struct device *dev, unsigned int vdd)
 
        err = request_irq(POODLE_IRQ_GPIO_nSD_DETECT, poodle_detect_int,
                          IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                          "MMC card detect", data);
-       if (err) {
+       if (err)
                printk(KERN_ERR "poodle_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
-               return -1;
-       }
 
-       return 0;
+       return err;
 }
 
 static void poodle_mci_setpower(struct device *dev, unsigned int vdd)
 
        err = request_irq(SPITZ_IRQ_GPIO_nSD_DETECT, spitz_detect_int,
                          IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                          "MMC card detect", data);
-       if (err) {
+       if (err)
                printk(KERN_ERR "spitz_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
-               return -1;
-       }
 
-       return 0;
+       return err;
 }
 
 static void spitz_mci_setpower(struct device *dev, unsigned int vdd)
 
 
        tosa_mci_platform_data.detect_delay = msecs_to_jiffies(250);
 
-       err = request_irq(TOSA_IRQ_GPIO_nSD_DETECT, tosa_detect_int, IRQF_DISABLED,
+       err = request_irq(TOSA_IRQ_GPIO_nSD_DETECT, tosa_detect_int,
+                         IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                                "MMC/SD card detect", data);
-       if (err) {
+       if (err)
                printk(KERN_ERR "tosa_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
-               return -1;
-       }
-
-       set_irq_type(TOSA_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE);
 
-       return 0;
+       return err;
 }
 
 static void tosa_mci_setpower(struct device *dev, unsigned int vdd)
 
        err = request_irq(TRIZEPS4_MMC_IRQ, mci_detect_int,
                          IRQF_DISABLED | IRQF_TRIGGER_RISING,
                          "MMC card detect", data);
-       if (err) {
+       if (err)
                printk(KERN_ERR "trizeps4_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
-               return -1;
-       }
-       return 0;
+
+       return err;
 }
 
 static void trizeps4_mci_exit(struct device *dev, void *data)