diff --git a/firmware/target/arm/as3525/sd-as3525.c b/firmware/target/arm/as3525/sd-as3525.c
index 19914ab..ff604d9 100644
--- a/firmware/target/arm/as3525/sd-as3525.c
+++ b/firmware/target/arm/as3525/sd-as3525.c
@@ -866,6 +866,27 @@ long sd_last_disk_activity(void)

 void sd_enable(bool on)
 {
+    if(on == sd_enabled)
+        return;
+
+    if(on)
+    {
+        MCI_CLOCK(INTERNAL_AS3525) &= ~MCI_CLOCK_POWERSAVE;
+#ifdef HAVE_MULTIDRIVE
+        MCI_CLOCK(SD_SLOT_AS3525) &= ~MCI_CLOCK_POWERSAVE;
+#endif
+    }
+    else
+    {
+        MCI_CLOCK(INTERNAL_AS3525) |= MCI_CLOCK_POWERSAVE;
+#ifdef HAVE_MULTIDRIVE
+        MCI_CLOCK(SD_SLOT_AS3525) |= MCI_CLOCK_POWERSAVE;
+#endif
+    }
+
+    sd_enabled = on;
+    return;
+
 #if defined(HAVE_BUTTON_LIGHT) && defined(HAVE_MULTIDRIVE)
     extern int buttonlight_is_on;
 #endif