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*/
}