aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-s5p64x0
diff options
context:
space:
mode:
authorBanajit Goswami <banajit.g@samsung.com>2011-07-20 10:45:22 -0400
committerKukjin Kim <kgene.kim@samsung.com>2011-07-20 13:10:46 -0400
commit543601f526bbe02d209d2f8c30b9ce59d8e70a41 (patch)
treee5a1ffb85884cf625fb7c20b3bfbd0dc0a6420de /arch/arm/mach-s5p64x0
parent499d2969574d138b9f5c8bbb911027005f4f9ed9 (diff)
ARM: S5P64X0: Add PWM backlight support on SMDK6450
This patch adds support for LCD backlight using PWM timer for Samsung SMDK6450 board. Signed-off-by: Banajit Goswami <banajit.g@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch/arm/mach-s5p64x0')
-rw-r--r--arch/arm/mach-s5p64x0/Kconfig1
-rw-r--r--arch/arm/mach-s5p64x0/mach-smdk6450.c54
2 files changed, 14 insertions, 41 deletions
diff --git a/arch/arm/mach-s5p64x0/Kconfig b/arch/arm/mach-s5p64x0/Kconfig
index 34e287719f0f..65c7518dad7f 100644
--- a/arch/arm/mach-s5p64x0/Kconfig
+++ b/arch/arm/mach-s5p64x0/Kconfig
@@ -51,6 +51,7 @@ config MACH_SMDK6450
51 select S3C_DEV_WDT 51 select S3C_DEV_WDT
52 select S3C64XX_DEV_SPI 52 select S3C64XX_DEV_SPI
53 select SAMSUNG_DEV_ADC 53 select SAMSUNG_DEV_ADC
54 select SAMSUNG_DEV_BACKLIGHT
54 select SAMSUNG_DEV_PWM 55 select SAMSUNG_DEV_PWM
55 select SAMSUNG_DEV_TS 56 select SAMSUNG_DEV_TS
56 select S5P64X0_SETUP_I2C1 57 select S5P64X0_SETUP_I2C1
diff --git a/arch/arm/mach-s5p64x0/mach-smdk6450.c b/arch/arm/mach-s5p64x0/mach-smdk6450.c
index d19c4690ee97..33f2adf8f3fe 100644
--- a/arch/arm/mach-s5p64x0/mach-smdk6450.c
+++ b/arch/arm/mach-s5p64x0/mach-smdk6450.c
@@ -46,6 +46,7 @@
46#include <plat/adc.h> 46#include <plat/adc.h>
47#include <plat/ts.h> 47#include <plat/ts.h>
48#include <plat/s5p-time.h> 48#include <plat/s5p-time.h>
49#include <plat/backlight.h>
49 50
50#define SMDK6450_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \ 51#define SMDK6450_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
51 S3C2410_UCON_RXILEVEL | \ 52 S3C2410_UCON_RXILEVEL | \
@@ -109,45 +110,6 @@ static struct s3c2410_uartcfg smdk6450_uartcfgs[] __initdata = {
109#endif 110#endif
110}; 111};
111 112
112static int smdk6450_backlight_init(struct device *dev)
113{
114 int ret;
115
116 ret = gpio_request(S5P6450_GPF(15), "Backlight");
117 if (ret) {
118 printk(KERN_ERR "failed to request GPF for PWM-OUT1\n");
119 return ret;
120 }
121
122 /* Configure GPIO pin with S5P6450_GPF15_PWM_TOUT1 */
123 s3c_gpio_cfgpin(S5P6450_GPF(15), S3C_GPIO_SFN(2));
124
125 return 0;
126}
127
128static void smdk6450_backlight_exit(struct device *dev)
129{
130 s3c_gpio_cfgpin(S5P6450_GPF(15), S3C_GPIO_OUTPUT);
131 gpio_free(S5P6450_GPF(15));
132}
133
134static struct platform_pwm_backlight_data smdk6450_backlight_data = {
135 .pwm_id = 1,
136 .max_brightness = 255,
137 .dft_brightness = 255,
138 .pwm_period_ns = 78770,
139 .init = smdk6450_backlight_init,
140 .exit = smdk6450_backlight_exit,
141};
142
143static struct platform_device smdk6450_backlight_device = {
144 .name = "pwm-backlight",
145 .dev = {
146 .parent = &s3c_device_timer[1].dev,
147 .platform_data = &smdk6450_backlight_data,
148 },
149};
150
151static struct platform_device *smdk6450_devices[] __initdata = { 113static struct platform_device *smdk6450_devices[] __initdata = {
152 &s3c_device_adc, 114 &s3c_device_adc,
153 &s3c_device_rtc, 115 &s3c_device_rtc,
@@ -157,8 +119,6 @@ static struct platform_device *smdk6450_devices[] __initdata = {
157 &s3c_device_wdt, 119 &s3c_device_wdt,
158 &samsung_asoc_dma, 120 &samsung_asoc_dma,
159 &s5p6450_device_iis0, 121 &s5p6450_device_iis0,
160 &s3c_device_timer[1],
161 &smdk6450_backlight_device,
162 /* s5p6450_device_spi0 will be added */ 122 /* s5p6450_device_spi0 will be added */
163}; 123};
164 124
@@ -194,6 +154,16 @@ static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
194 .oversampling_shift = 2, 154 .oversampling_shift = 2,
195}; 155};
196 156
157/* LCD Backlight data */
158static struct samsung_bl_gpio_info smdk6450_bl_gpio_info = {
159 .no = S5P6450_GPF(15),
160 .func = S3C_GPIO_SFN(2),
161};
162
163static struct platform_pwm_backlight_data smdk6450_bl_data = {
164 .pwm_id = 1,
165};
166
197static void __init smdk6450_map_io(void) 167static void __init smdk6450_map_io(void)
198{ 168{
199 s5p_init_io(NULL, 0, S5P64X0_SYS_ID); 169 s5p_init_io(NULL, 0, S5P64X0_SYS_ID);
@@ -213,6 +183,8 @@ static void __init smdk6450_machine_init(void)
213 i2c_register_board_info(1, smdk6450_i2c_devs1, 183 i2c_register_board_info(1, smdk6450_i2c_devs1,
214 ARRAY_SIZE(smdk6450_i2c_devs1)); 184 ARRAY_SIZE(smdk6450_i2c_devs1));
215 185
186 samsung_bl_set(&smdk6450_bl_gpio_info, &smdk6450_bl_data);
187
216 platform_add_devices(smdk6450_devices, ARRAY_SIZE(smdk6450_devices)); 188 platform_add_devices(smdk6450_devices, ARRAY_SIZE(smdk6450_devices));
217} 189}
218 190