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