diff --git a/firmware/target/arm/as3525/sd-as3525.c b/firmware/target/arm/as3525/sd-as3525.c
index 19914ab..a0d6020 100644
--- a/firmware/target/arm/as3525/sd-as3525.c
+++ b/firmware/target/arm/as3525/sd-as3525.c
@@ -879,11 +879,14 @@ void sd_enable(bool on)
     if(on)
     {
         /*  Enable both NAF_CLOCK & IDE clk for internal SD */
-        CGU_PERI |= CGU_NAF_CLOCK_ENABLE;
         CGU_IDE  |= (1<<6);     /* enable non AHB interface*/
+        CGU_PERI |= CGU_NAF_CLOCK_ENABLE;
+        MCI_CLOCK(INTERNAL_AS3525) |= MCI_CLOCK_ENABLE;
 #ifdef HAVE_MULTIDRIVE
         /* Enable MCI clk for uSD */
         CGU_PERI |= CGU_MCI_CLOCK_ENABLE;
+        if(card_detect_target())
+            MCI_CLOCK(SD_SLOT_AS3525) |= MCI_CLOCK_ENABLE;
 #ifdef HAVE_BUTTON_LIGHT
         /* buttonlight AMSes need a bit of special handling for the buttonlight
          * here due to the dual mapping of GPIOD and XPD */
@@ -923,10 +926,12 @@ void sd_enable(bool on)
             _buttonlight_on();
 #endif /* HAVE_BUTTON_LIGHT */
         /* Disable MCI clk for uSD */
+        MCI_CLOCK(SD_SLOT_AS3525) &= ~MCI_CLOCK_ENABLE;
         CGU_PERI &= ~CGU_MCI_CLOCK_ENABLE;
 #endif /* HAVE_MULTIDRIVE */

         /*  Disable both NAF_CLOCK & IDE clk for internal SD */
+        MCI_CLOCK(INTERNAL_AS3525) &= ~MCI_CLOCK_ENABLE;
         CGU_PERI &= ~CGU_NAF_CLOCK_ENABLE;
         CGU_IDE &= ~(1<<6);       /* disable non AHB interface*/
     }