Skip to content

Commit

Permalink
ARM: S3C64XX: Move SmartQ LCD control platform definition to shared file
Browse files Browse the repository at this point in the history
This shares the common LCD control platform definition used in the SmartQ 5 and
7. This also corrects it as a GPIO bitbanged SPI device instead of an I²C one,
which was wrong.

Signed-off-by: Maurus Cuelenaere <mcuelenaere@gmail.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
  • Loading branch information
Maurus Cuelenaere authored and Ben Dooks committed Aug 14, 2010
1 parent ce611d7 commit 49f91b9
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 58 deletions.
32 changes: 30 additions & 2 deletions arch/arm/mach-s3c64xx/mach-smartq.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include <linux/platform_device.h>
#include <linux/pwm_backlight.h>
#include <linux/serial_core.h>
#include <linux/spi/spi_gpio.h>
#include <linux/usb/gpio_vbus.h>

#include <asm/mach-types.h>
Expand Down Expand Up @@ -184,6 +185,33 @@ static struct s3c_hwmon_pdata smartq_hwmon_pdata __initdata = {
},
};

static int __init smartq_lcd_setup_gpio(void)
{
int ret;

ret = gpio_request(S3C64XX_GPM(3), "LCD power");
if (ret < 0)
return ret;

/* turn power off */
gpio_direction_output(S3C64XX_GPM(3), 0);

return 0;
}

/* GPM0 -> CS */
static struct spi_gpio_platform_data smartq_lcd_control = {
.sck = S3C64XX_GPM(1),
.mosi = S3C64XX_GPM(2),
.miso = S3C64XX_GPM(2),
};

static struct platform_device smartq_lcd_control_device = {
.name = "spi-gpio",
.id = 1,
.dev.platform_data = &smartq_lcd_control,
};

static void smartq_lcd_power_set(struct plat_lcd_data *pd, unsigned int power)
{
gpio_direction_output(S3C64XX_GPM(3), power);
Expand All @@ -199,7 +227,6 @@ static struct platform_device smartq_lcd_power_device = {
.dev.platform_data = &smartq_lcd_power_data,
};


static struct platform_device *smartq_devices[] __initdata = {
&s3c_device_hsmmc1, /* Init iNAND first, ... */
&s3c_device_hsmmc0, /* ... then the external SD card */
Expand All @@ -214,6 +241,7 @@ static struct platform_device *smartq_devices[] __initdata = {
&s3c_device_ts,
&s3c_device_usb_hsotg,
&smartq_backlight_device,
&smartq_lcd_control_device,
&smartq_lcd_power_device,
&smartq_usb_otg_vbus_dev,
};
Expand Down Expand Up @@ -252,7 +280,6 @@ static int __init smartq_power_off_init(void)
/* leave power on */
gpio_direction_output(S3C64XX_GPK(15), 0);


pm_power_off = smartq_power_off;

return ret;
Expand Down Expand Up @@ -354,6 +381,7 @@ void __init smartq_machine_init(void)
s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
s3c24xx_ts_set_platdata(&smartq_touchscreen_pdata);

WARN_ON(smartq_lcd_setup_gpio());
WARN_ON(smartq_power_off_init());
WARN_ON(smartq_usb_host_init());
WARN_ON(smartq_usb_otg_init());
Expand Down
28 changes: 0 additions & 28 deletions arch/arm/mach-s3c64xx/mach-smartq5.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
#include <linux/fb.h>
#include <linux/gpio.h>
#include <linux/gpio_keys.h>
#include <linux/i2c-gpio.h>
#include <linux/init.h>
#include <linux/input.h>
#include <linux/leds.h>
Expand All @@ -33,31 +32,6 @@

#include "mach-smartq.h"

static void __init smartq5_lcd_setup_gpio(void)
{
gpio_request(S3C64XX_GPM(0), "LCD SCEN pin");
gpio_request(S3C64XX_GPM(1), "LCD SCL pin");
gpio_request(S3C64XX_GPM(2), "LCD SDA pin");
gpio_request(S3C64XX_GPM(3), "LCD power");

/* turn power off */
gpio_direction_output(S3C64XX_GPM(0), 1);
gpio_direction_input(S3C64XX_GPM(1));
gpio_direction_input(S3C64XX_GPM(2));
gpio_direction_output(S3C64XX_GPM(3), 0);
}

static struct i2c_gpio_platform_data smartq5_lcd_control = {
.sda_pin = S3C64XX_GPM(2),
.scl_pin = S3C64XX_GPM(1),
};

static struct platform_device smartq5_lcd_control_device = {
.name = "i2c-gpio",
.id = 1,
.dev.platform_data = &smartq5_lcd_control,
};

static struct gpio_led smartq5_leds[] __initdata = {
{
.name = "smartq5:green",
Expand Down Expand Up @@ -160,15 +134,13 @@ static struct s3c_fb_platdata smartq5_lcd_pdata __initdata = {
static struct platform_device *smartq5_devices[] __initdata = {
&smartq5_leds_device,
&smartq5_buttons_device,
&smartq5_lcd_control_device,
};

static void __init smartq5_machine_init(void)
{
s3c_fb_set_platdata(&smartq5_lcd_pdata);

smartq_machine_init();
smartq5_lcd_setup_gpio();

platform_add_devices(smartq5_devices, ARRAY_SIZE(smartq5_devices));
}
Expand Down
28 changes: 0 additions & 28 deletions arch/arm/mach-s3c64xx/mach-smartq7.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
#include <linux/fb.h>
#include <linux/gpio.h>
#include <linux/gpio_keys.h>
#include <linux/i2c-gpio.h>
#include <linux/init.h>
#include <linux/input.h>
#include <linux/leds.h>
Expand All @@ -33,31 +32,6 @@

#include "mach-smartq.h"

static void __init smartq7_lcd_setup_gpio(void)
{
gpio_request(S3C64XX_GPM(0), "LCD CSB pin");
gpio_request(S3C64XX_GPM(3), "LCD power");
gpio_request(S3C64XX_GPM(4), "LCD power status");

/* turn power off */
gpio_direction_output(S3C64XX_GPM(0), 1);
gpio_direction_output(S3C64XX_GPM(3), 0);
gpio_direction_input(S3C64XX_GPM(4));
}

static struct i2c_gpio_platform_data smartq7_lcd_control = {
.sda_pin = S3C64XX_GPM(2),
.scl_pin = S3C64XX_GPM(1),
.sda_is_open_drain = 1,
.scl_is_open_drain = 1,
};

static struct platform_device smartq7_lcd_control_device = {
.name = "i2c-gpio",
.id = 1,
.dev.platform_data = &smartq7_lcd_control,
};

static struct gpio_led smartq7_leds[] __initdata = {
{
.name = "smartq7:red",
Expand Down Expand Up @@ -176,15 +150,13 @@ static struct s3c_fb_platdata smartq7_lcd_pdata __initdata = {
static struct platform_device *smartq7_devices[] __initdata = {
&smartq7_leds_device,
&smartq7_buttons_device,
&smartq7_lcd_control_device,
};

static void __init smartq7_machine_init(void)
{
s3c_fb_set_platdata(&smartq7_lcd_pdata);

smartq_machine_init();
smartq7_lcd_setup_gpio();

platform_add_devices(smartq7_devices, ARRAY_SIZE(smartq7_devices));
}
Expand Down

0 comments on commit 49f91b9

Please sign in to comment.