Index: linux-2.6-3.0.0/arch/arm/mach-mx5/board-mx51_efikasb.c
===================================================================
--- linux-2.6-3.0.0.orig/arch/arm/mach-mx5/board-mx51_efikasb.c	2011-08-20 00:42:14.000000000 +0000
+++ linux-2.6-3.0.0/arch/arm/mach-mx5/board-mx51_efikasb.c	2011-08-20 00:42:23.000000000 +0000
@@ -185,7 +185,7 @@
 static struct gpio_led mx51_efikasb_leds[] = {
 	{
 		.name = "efikasb:green",
-		.default_trigger = "default-on",
+		.default_trigger = "ide-disk",
 		.gpio = EFIKASB_GREEN_LED,
 		.active_low = 1,
 	},
Index: linux-2.6-3.0.0/drivers/ata/libata-sff.c
===================================================================
--- linux-2.6-3.0.0.orig/drivers/ata/libata-sff.c	2011-07-22 02:17:23.000000000 +0000
+++ linux-2.6-3.0.0/drivers/ata/libata-sff.c	2011-08-20 00:42:23.000000000 +0000
@@ -37,6 +37,7 @@
 #include <linux/pci.h>
 #include <linux/libata.h>
 #include <linux/highmem.h>
+#include <linux/leds.h>
 
 #include "libata.h"
 
@@ -1485,6 +1486,26 @@
 EXPORT_SYMBOL_GPL(ata_sff_qc_issue);
 
 /**
+ * 	ata_sff_qc_issue_ledtrigger - trigger LED core
+ * 	@qc: command to issue to device
+ *
+ * 	This triggers the LED core and then calls the
+ * 	regular ata_sff_qc_issue function.
+ *
+ * 	LOCKING:
+ * 	spin_lock_irqsave(host lock)
+ *
+ * 	RETURNS:
+ * 	Zero on success, AC_ERR_* mask on failure
+ */
+unsigned int ata_sff_qc_issue_ledtrigger(struct ata_queued_cmd *qc)
+{
+	ledtrig_ide_activity();
+	return ata_sff_qc_issue(qc);
+}
+EXPORT_SYMBOL_GPL(ata_sff_qc_issue_ledtrigger);
+
+/**
  *	ata_sff_qc_fill_rtf - fill result TF using ->sff_tf_read
  *	@qc: qc to fill result TF for
  *
Index: linux-2.6-3.0.0/include/linux/libata.h
===================================================================
--- linux-2.6-3.0.0.orig/include/linux/libata.h	2011-07-22 02:17:23.000000000 +0000
+++ linux-2.6-3.0.0/include/linux/libata.h	2011-08-20 00:42:23.000000000 +0000
@@ -1615,6 +1615,7 @@
 		unsigned long delay);
 extern void ata_sff_queue_pio_task(struct ata_link *link, unsigned long delay);
 extern unsigned int ata_sff_qc_issue(struct ata_queued_cmd *qc);
+extern unsigned int ata_sff_qc_issue_ledtrigger(struct ata_queued_cmd *qc);
 extern bool ata_sff_qc_fill_rtf(struct ata_queued_cmd *qc);
 extern unsigned int ata_sff_port_intr(struct ata_port *ap,
 				      struct ata_queued_cmd *qc);
Index: linux-2.6-3.0.0/drivers/ata/pata_imx.c
===================================================================
--- linux-2.6-3.0.0.orig/drivers/ata/pata_imx.c	2011-08-20 00:38:52.000000000 +0000
+++ linux-2.6-3.0.0/drivers/ata/pata_imx.c	2011-08-20 00:42:23.000000000 +0000
@@ -71,6 +71,9 @@
 
 static struct ata_port_operations pata_imx_port_ops = {
 	.inherits		= &ata_sff_port_ops,
+#ifdef CONFIG_LEDS_TRIGGER_IDE_DISK
+	.qc_issue		= ata_sff_qc_issue_ledtrigger,
+#endif
 	.sff_data_xfer		= ata_sff_data_xfer_noirq,
 	.cable_detect		= ata_cable_unknown,
 	.set_mode		= pata_imx_set_mode,
Index: linux-2.6-3.0.0/drivers/leds/Kconfig
===================================================================
--- linux-2.6-3.0.0.orig/drivers/leds/Kconfig	2011-08-20 00:41:50.000000000 +0000
+++ linux-2.6-3.0.0/drivers/leds/Kconfig	2011-08-20 00:42:23.000000000 +0000
@@ -422,7 +422,7 @@
 
 config LEDS_TRIGGER_IDE_DISK
 	bool "LED IDE Disk Trigger"
-	depends on IDE_GD_ATA
+	depends on (IDE_GD_ATA || ATA_SFF)
 	depends on LEDS_TRIGGERS
 	help
 	  This allows LEDs to be controlled by IDE disk activity.
