#include <linux/gpio.h>
 #include <linux/delay.h>
 #include <linux/dma-mapping.h>
+#include <linux/leds.h>
 #include <linux/memblock.h>
 #include <media/soc_camera.h>
 #include <sound/tlv320aic32x4.h>
        .nbuttons       = ARRAY_SIZE(visstrim_gpio_keys),
 };
 
+/* led */
+static const struct gpio_led visstrim_m10_leds[] __initconst = {
+       {
+               .name = "visstrim:ld0",
+               .default_trigger = "nand-disk",
+               .gpio = (GPIO_PORTC + 29),
+       },
+       {
+               .name = "visstrim:ld1",
+               .default_trigger = "nand-disk",
+               .gpio = (GPIO_PORTC + 24),
+       },
+       {
+               .name = "visstrim:ld2",
+               .default_trigger = "nand-disk",
+               .gpio = (GPIO_PORTC + 28),
+       },
+       {
+               .name = "visstrim:ld3",
+               .default_trigger = "nand-disk",
+               .gpio = (GPIO_PORTC + 25),
+       },
+};
+
+static const struct gpio_led_platform_data visstrim_m10_led_data __initconst = {
+       .leds = visstrim_m10_leds,
+       .num_leds = ARRAY_SIZE(visstrim_m10_leds),
+};
+
 /* Visstrim_SM10 has a microSD slot connected to sdhc1 */
 static int visstrim_m10_sdhc1_init(struct device *dev,
                irq_handler_t detect_irq, void *data)
        platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
        platform_device_register_resndata(NULL, "soc-camera-pdrv", 0, NULL, 0,
                                      &iclink_tvp5150, sizeof(iclink_tvp5150));
+       gpio_led_register_device(0, &visstrim_m10_led_data);
        visstrim_camera_init();
 }