bool "Eukrea MBIMXSD development board"
        select IMX_HAVE_PLATFORM_GPIO_KEYS
        select IMX_HAVE_PLATFORM_IMX_SSI
+       select LEDS_GPIO_REGISTER
        help
          This adds board specific devices that can be found on Eukrea's
          MBIMXSD evaluation board.
        select IMX_HAVE_PLATFORM_IMX_UART
        select IMX_HAVE_PLATFORM_MXC_MMC
        select IMX_HAVE_PLATFORM_SPI_IMX
+       select LEDS_GPIO_REGISTER
        help
          This adds board specific devices that can be found on Eukrea's
          MBIMX27 evaluation board.
        select IMX_HAVE_PLATFORM_MXC_NAND
        select IMX_HAVE_PLATFORM_MXC_RTC
        select IMX_HAVE_PLATFORM_SPI_IMX
+       select LEDS_GPIO_REGISTER
        help
          Include support for MX31 LITEKIT platform. This includes specific
          configurations for the board and its peripherals.
        select IMX_HAVE_PLATFORM_MXC_EHCI
        select IMX_HAVE_PLATFORM_MXC_MMC
        select IMX_HAVE_PLATFORM_SPI_IMX
+       select LEDS_GPIO_REGISTER
        select MXC_ULPI if USB_ULPI
        help
          Include support for mx31moboard platform. This includes specific
        select IMX_HAVE_PLATFORM_GPIO_KEYS
        select IMX_HAVE_PLATFORM_IMX_SSI
        select IMX_HAVE_PLATFORM_IPU_CORE
+       select LEDS_GPIO_REGISTER
        help
          This adds board specific devices that can be found on Eukrea's
          MBIMXSD evaluation board.
 
        .keymap_size    = ARRAY_SIZE(eukrea_mbimx27_keymap),
 };
 
-static struct gpio_led gpio_leds[] = {
+static const struct gpio_led eukrea_mbimx27_gpio_leds[] __initconst = {
        {
                .name                   = "led1",
                .default_trigger        = "heartbeat",
        },
 };
 
-static struct gpio_led_platform_data gpio_led_info = {
-       .leds           = gpio_leds,
-       .num_leds       = ARRAY_SIZE(gpio_leds),
-};
-
-static struct platform_device leds_gpio = {
-       .name   = "leds-gpio",
-       .id     = -1,
-       .dev    = {
-               .platform_data  = &gpio_led_info,
-       },
+static const struct gpio_led_platform_data
+               eukrea_mbimx27_gpio_led_info __initconst = {
+       .leds           = eukrea_mbimx27_gpio_leds,
+       .num_leds       = ARRAY_SIZE(eukrea_mbimx27_gpio_leds),
 };
 
 static struct imx_fb_videomode eukrea_mbimx27_modes[] = {
        },
 };
 
-static struct platform_device *platform_devices[] __initdata = {
-       &leds_gpio,
-};
-
 static const struct imxmmc_platform_data sdhc_pdata __initconst = {
        .dat3_card_detect = 1,
 };
 
        imx27_add_imx_keypad(&eukrea_mbimx27_keymap_data);
 
-       platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
+       gpio_led_register_device(-1, &eukrea_mbimx27_gpio_led_info);
 }
 
        .dev.platform_data      = &eukrea_mbimxsd_lcd_power_data,
 };
 
-static struct gpio_led eukrea_mbimxsd_leds[] = {
+static const struct gpio_led eukrea_mbimxsd_leds[] __initconst = {
        {
                .name                   = "led1",
                .default_trigger        = "heartbeat",
        },
 };
 
-static struct gpio_led_platform_data eukrea_mbimxsd_led_info = {
+static const struct gpio_led_platform_data
+               eukrea_mbimxsd_led_info __initconst = {
        .leds           = eukrea_mbimxsd_leds,
        .num_leds       = ARRAY_SIZE(eukrea_mbimxsd_leds),
 };
 
-static struct platform_device eukrea_mbimxsd_leds_gpio = {
-       .name   = "leds-gpio",
-       .id     = -1,
-       .dev    = {
-               .platform_data  = &eukrea_mbimxsd_led_info,
-       },
-};
-
 static struct gpio_keys_button eukrea_mbimxsd_gpio_buttons[] = {
        {
                .gpio           = GPIO_SWITCH1,
 };
 
 static struct platform_device *platform_devices[] __initdata = {
-       &eukrea_mbimxsd_leds_gpio,
        &eukrea_mbimxsd_lcd_powerdev,
 };
 
                                ARRAY_SIZE(eukrea_mbimxsd_i2c_devices));
 
        platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
+       gpio_led_register_device(-1, &eukrea_mbimxsd_led_info);
        imx_add_gpio_keys(&eukrea_mbimxsd_button_data);
 }
 
        },
 };
 
-static struct gpio_led_platform_data eukrea_mbimxsd_led_info = {
+static const struct gpio_led_platform_data
+               eukrea_mbimxsd_led_info __initconst = {
        .leds           = eukrea_mbimxsd_leds,
        .num_leds       = ARRAY_SIZE(eukrea_mbimxsd_leds),
 };
 
-static struct platform_device eukrea_mbimxsd_leds_gpio = {
-       .name   = "leds-gpio",
-       .id     = -1,
-       .dev    = {
-               .platform_data  = &eukrea_mbimxsd_led_info,
-       },
-};
-
 static struct gpio_keys_button eukrea_mbimxsd_gpio_buttons[] = {
        {
                .gpio           = GPIO_SWITCH1,
 };
 
 static struct platform_device *platform_devices[] __initdata = {
-       &eukrea_mbimxsd_leds_gpio,
        &eukrea_mbimxsd_lcd_powerdev,
 };
 
                                ARRAY_SIZE(eukrea_mbimxsd_i2c_devices));
 
        platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
+       gpio_led_register_device(-1, &eukrea_mbimxsd_led_info);
        imx_add_gpio_keys(&eukrea_mbimxsd_button_data);
 }
 
        return 0;
 }
 
-static struct gpio_led mx31moboard_leds[] = {
+static const struct gpio_led mx31moboard_leds[] __initconst = {
        {
                .name   = "coreboard-led-0:red:running",
                .default_trigger = "heartbeat",
        },
 };
 
-static struct gpio_led_platform_data mx31moboard_led_pdata = {
+static const struct gpio_led_platform_data mx31moboard_led_pdata __initconst = {
        .num_leds       = ARRAY_SIZE(mx31moboard_leds),
        .leds           = mx31moboard_leds,
 };
 
-static struct platform_device mx31moboard_leds_device = {
-       .name   = "leds-gpio",
-       .id     = -1,
-       .dev    = {
-               .platform_data = &mx31moboard_led_pdata,
-       },
-};
-
 static const struct ipu_platform_data mx3_ipu_data __initconst = {
        .irq_base = MXC_IPU_IRQ_START,
 };
 
 static struct platform_device *devices[] __initdata = {
        &mx31moboard_flash,
-       &mx31moboard_leds_device,
 };
 
 static struct mx3_camera_pdata camera_pdata __initdata = {
                "moboard");
 
        platform_add_devices(devices, ARRAY_SIZE(devices));
+       gpio_led_register_device(-1, &mx31moboard_led_pdata);
 
        imx31_add_imx_uart0(&uart0_pdata);
        imx31_add_imx_uart4(&uart4_pdata);
 
 
 /* GPIO LEDs */
 
-static struct gpio_led litekit_leds[] = {
+static const struct gpio_led litekit_leds[] __initconst = {
        {
                .name           = "GPIO0",
                .gpio           = IOMUX_TO_GPIO(MX31_PIN_COMPARE),
        }
 };
 
-static struct gpio_led_platform_data litekit_led_platform_data = {
+static const struct gpio_led_platform_data
+               litekit_led_platform_data __initconst = {
        .leds           = litekit_leds,
        .num_leds       = ARRAY_SIZE(litekit_leds),
 };
 
-static struct platform_device litekit_led_device = {
-       .name   = "leds-gpio",
-       .id     = -1,
-       .dev    = {
-               .platform_data = &litekit_led_platform_data,
-       },
-};
-
 void __init mx31lite_db_init(void)
 {
        mxc_iomux_setup_multiple_pins(litekit_db_board_pins,
        imx31_add_imx_uart0(&uart_pdata);
        imx31_add_mxc_mmc(0, &mmc_pdata);
        imx31_add_spi_imx0(&spi0_pdata);
-       platform_device_register(&litekit_led_device);
+       gpio_led_register_device(-1, &litekit_led_platform_data);
        imx31_add_imx2_wdt(NULL);
        imx31_add_mxc_rtc(NULL);
 }