From cf18c7ef4b91239ff51929d60173afa26627ba51 Mon Sep 17 00:00:00 2001
From: Lars-Peter Clausen <lars@metafoo.de>
Date: Sun, 4 Apr 2010 21:14:05 +0200
Subject: [PATCH 27/69] Add jbt device.

---
 arch/arm/mach-s3c2440/mach-gta02.c |   41 +++++++++++++++++++++++++++++++++--
 1 files changed, 38 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c
index b46f2ef..0e7df72 100644
--- a/arch/arm/mach-s3c2440/mach-gta02.c
+++ b/arch/arm/mach-s3c2440/mach-gta02.c
@@ -100,6 +100,7 @@
 #include <mach/gta02-pm-gps.h>
 #include <mach/gta02-pm-wlan.h>
 
+#include <linux/jbt6k74.h>
 #include <linux/glamofb.h>
 #include <linux/mfd/glamo.h>
 
@@ -290,6 +291,28 @@ static struct glamo_platform_data gta02_glamo_pdata = {
 	.glamo_external_reset = gta02_glamo_external_reset,
 };
 
+/* JBT6k74 display controller */
+static void gta02_jbt6k74_probe_completed(struct device *dev)
+{
+	pcf50633_bl_set_brightness_limit(gta02_pcf, 0x3f);
+}
+
+const static struct jbt6k74_platform_data jbt6k74_pdata = {
+	.gpio_reset = GTA02_GPIO_GLAMO(4),
+};
+
+static struct spi_board_info gta02_spi_board_info[] = {
+	{
+		.modalias	= "jbt6k74",
+		.platform_data	= &jbt6k74_pdata,
+		.controller_data = (void *)GTA02_GPIO_GLAMO(12),
+		/* irq */
+		.max_speed_hz	= 100 * 1000,
+		.bus_num	= 2,
+		.chip_select	= 0
+	},
+};
+
 static struct resource gta02_glamo_resources[] = {
 	[0] = {
 		.start	= S3C2410_CS1,
@@ -430,6 +453,11 @@ static struct regulator_consumer_supply ldo5_consumers[] = {
 	},
 };
 
+static struct regulator_consumer_supply ldo6_consumers[] = {
+	REGULATOR_SUPPLY("VDC", "spi2.0"),
+	REGULATOR_SUPPLY("VDDIO", "spi2.0"),
+};
+
 static struct regulator_consumer_supply hcldo_consumers[] = {
 	{
 		.dev = &gta02_glamo_dev.dev,
@@ -548,7 +576,10 @@ struct pcf50633_platform_data gta02_pcf_pdata = {
 				.min_uV = 3000000,
 				.max_uV = 3000000,
 				.valid_modes_mask = REGULATOR_MODE_NORMAL,
+				.valid_ops_mask = REGULATOR_CHANGE_STATUS,
 			},
+			.num_consumer_supplies = ARRAY_SIZE(ldo6_consumers),
+			.consumer_supplies = ldo6_consumers,
 		},
 		[PCF50633_REGULATOR_MEMLDO] = {
 			.constraints = {
@@ -896,7 +927,11 @@ static struct gta02_device_children gta02_device_children[] = {
 		.dev_name = "reg-fixed-voltage.1",
 		.num_children = 1,
 		.children = gta02_gsm_supply_children,
-	}
+	},
+	{
+		.dev_name = "spi2.0",
+		.probed_callback = gta02_jbt6k74_probe_completed,
+	},
 };
 
 static int gta02_add_child_devices(struct device *parent,
@@ -971,11 +1006,11 @@ static void __init gta02_machine_init(void)
 	s3c_ohci_set_platdata(&gta02_usb_info);
 	s3c_nand_set_platdata(&gta02_nand_info);
 	s3c_i2c0_set_platdata(NULL);
-
-	i2c_register_board_info(0, gta02_i2c_devs, ARRAY_SIZE(gta02_i2c_devs));
 	spi_register_board_info(gta02_spi_board_info,
 				ARRAY_SIZE(gta02_spi_board_info));
 
+	i2c_register_board_info(0, gta02_i2c_devs, ARRAY_SIZE(gta02_i2c_devs));
+
 	platform_add_devices(gta02_devices, ARRAY_SIZE(gta02_devices));
 
 	pm_power_off = gta02_poweroff;
-- 
1.7.2.5

