Index: linux-2.6.24/arch/arm/mach-s3c2440/mach-g500.c
===================================================================
--- linux-2.6.24.orig/arch/arm/mach-s3c2440/mach-g500.c	2008-02-21 09:10:09.000000000 +0100
+++ linux-2.6.24/arch/arm/mach-s3c2440/mach-g500.c	2008-02-21 09:10:17.000000000 +0100
@@ -50,6 +50,8 @@
 #include <linux/gpio_keys.h>
 #include <linux/input.h>
 
+#include <linux/leds.h>
+
 static struct map_desc g500_iodesc[] __initdata = {
 	/* nothing */
 };
@@ -252,6 +254,34 @@
 	}
 };
 
+// currently only vibrator, blue and red leds control is unknown
+static struct gpio_led g500_leds[] = {
+	{
+		.name = "blue-around",
+		.gpio = S3C2410_GPA2,
+		.active_low = 0,
+		.default_trigger = "heartbeat",
+	},
+	{
+		.name = "vibrator",
+		.gpio = S3C2410_GPA6,
+		.active_low = 0,
+		.default_trigger = NULL,
+	},
+};
+
+static struct gpio_led_platform_data g500_led_data = {
+	.num_leds =     ARRAY_SIZE(g500_leds),
+	.leds =         g500_leds,
+};
+
+static struct platform_device g500_gpio_leds = {
+	.name =         "leds-gpio",
+	.id =           -1,
+	.dev = {
+		.platform_data = &g500_led_data,
+	}
+};
 
 static struct platform_device *g500_devices[] __initdata = {
 	&s3c_device_rtc,
@@ -282,6 +312,7 @@
 	set_s3c2410ts_info(&g500_ts_cfg);
 	s3c_device_sdi.dev.platform_data = &g500_mmc_cfg;
   platform_device_register(&g500_button_device);
+	platform_device_register(&g500_gpio_leds);
 
 	s3c2410_pm_init();
 

