aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-s5pv210
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-s5pv210')
-rw-r--r--arch/arm/mach-s5pv210/Kconfig2
-rw-r--r--arch/arm/mach-s5pv210/mach-smdkv210.c81
2 files changed, 79 insertions, 4 deletions
diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig
index 862f239a0fdb..53aabef1e9ce 100644
--- a/arch/arm/mach-s5pv210/Kconfig
+++ b/arch/arm/mach-s5pv210/Kconfig
@@ -118,6 +118,7 @@ menu "S5PV210 Machines"
118config MACH_SMDKV210 118config MACH_SMDKV210
119 bool "SMDKV210" 119 bool "SMDKV210"
120 select CPU_S5PV210 120 select CPU_S5PV210
121 select S3C_DEV_FB
121 select S3C_DEV_HSMMC 122 select S3C_DEV_HSMMC
122 select S3C_DEV_HSMMC1 123 select S3C_DEV_HSMMC1
123 select S3C_DEV_HSMMC2 124 select S3C_DEV_HSMMC2
@@ -130,6 +131,7 @@ config MACH_SMDKV210
130 select SAMSUNG_DEV_IDE 131 select SAMSUNG_DEV_IDE
131 select SAMSUNG_DEV_KEYPAD 132 select SAMSUNG_DEV_KEYPAD
132 select SAMSUNG_DEV_TS 133 select SAMSUNG_DEV_TS
134 select S5PV210_SETUP_FB_24BPP
133 select S5PV210_SETUP_I2C1 135 select S5PV210_SETUP_I2C1
134 select S5PV210_SETUP_I2C2 136 select S5PV210_SETUP_I2C2
135 select S5PV210_SETUP_IDE 137 select S5PV210_SETUP_IDE
diff --git a/arch/arm/mach-s5pv210/mach-smdkv210.c b/arch/arm/mach-s5pv210/mach-smdkv210.c
index 3a59068e983a..88e45223c8af 100644
--- a/arch/arm/mach-s5pv210/mach-smdkv210.c
+++ b/arch/arm/mach-s5pv210/mach-smdkv210.c
@@ -15,15 +15,20 @@
15#include <linux/serial_core.h> 15#include <linux/serial_core.h>
16#include <linux/sysdev.h> 16#include <linux/sysdev.h>
17#include <linux/dm9000.h> 17#include <linux/dm9000.h>
18#include <linux/fb.h>
18#include <linux/gpio.h> 19#include <linux/gpio.h>
20#include <linux/delay.h>
19 21
20#include <asm/mach/arch.h> 22#include <asm/mach/arch.h>
21#include <asm/mach/map.h> 23#include <asm/mach/map.h>
22#include <asm/setup.h> 24#include <asm/setup.h>
23#include <asm/mach-types.h> 25#include <asm/mach-types.h>
24 26
27#include <video/platform_lcd.h>
28
25#include <mach/map.h> 29#include <mach/map.h>
26#include <mach/regs-clock.h> 30#include <mach/regs-clock.h>
31#include <mach/regs-fb.h>
27 32
28#include <plat/regs-serial.h> 33#include <plat/regs-serial.h>
29#include <plat/regs-srom.h> 34#include <plat/regs-srom.h>
@@ -37,6 +42,7 @@
37#include <plat/iic.h> 42#include <plat/iic.h>
38#include <plat/keypad.h> 43#include <plat/keypad.h>
39#include <plat/pm.h> 44#include <plat/pm.h>
45#include <plat/fb.h>
40 46
41/* Following are default values for UCON, ULCON and UFCON UART registers */ 47/* Following are default values for UCON, ULCON and UFCON UART registers */
42#define SMDKV210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \ 48#define SMDKV210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
@@ -139,12 +145,73 @@ struct platform_device smdkv210_dm9000 = {
139 }, 145 },
140}; 146};
141 147
148static void smdkv210_lte480wv_set_power(struct plat_lcd_data *pd,
149 unsigned int power)
150{
151 if (power) {
152#if !defined(CONFIG_BACKLIGHT_PWM)
153 gpio_request(S5PV210_GPD0(3), "GPD0");
154 gpio_direction_output(S5PV210_GPD0(3), 1);
155 gpio_free(S5PV210_GPD0(3));
156#endif
157
158 /* fire nRESET on power up */
159 gpio_request(S5PV210_GPH0(6), "GPH0");
160
161 gpio_direction_output(S5PV210_GPH0(6), 1);
162
163 gpio_set_value(S5PV210_GPH0(6), 0);
164 mdelay(10);
165
166 gpio_set_value(S5PV210_GPH0(6), 1);
167 mdelay(10);
168
169 gpio_free(S5PV210_GPH0(6));
170 } else {
171#if !defined(CONFIG_BACKLIGHT_PWM)
172 gpio_request(S5PV210_GPD0(3), "GPD0");
173 gpio_direction_output(S5PV210_GPD0(3), 0);
174 gpio_free(S5PV210_GPD0(3));
175#endif
176 }
177}
178
179static struct plat_lcd_data smdkv210_lcd_lte480wv_data = {
180 .set_power = smdkv210_lte480wv_set_power,
181};
182
183static struct platform_device smdkv210_lcd_lte480wv = {
184 .name = "platform-lcd",
185 .dev.parent = &s3c_device_fb.dev,
186 .dev.platform_data = &smdkv210_lcd_lte480wv_data,
187};
188
189static struct s3c_fb_pd_win smdkv210_fb_win0 = {
190 .win_mode = {
191 .left_margin = 13,
192 .right_margin = 8,
193 .upper_margin = 7,
194 .lower_margin = 5,
195 .hsync_len = 3,
196 .vsync_len = 1,
197 .xres = 800,
198 .yres = 480,
199 },
200 .max_bpp = 32,
201 .default_bpp = 24,
202};
203
204static struct s3c_fb_platdata smdkv210_lcd0_pdata __initdata = {
205 .win[0] = &smdkv210_fb_win0,
206 .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
207 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
208 .setup_gpio = s5pv210_fb_gpio_setup_24bpp,
209};
210
142static struct platform_device *smdkv210_devices[] __initdata = { 211static struct platform_device *smdkv210_devices[] __initdata = {
143 &s5pv210_device_iis0,
144 &s5pv210_device_ac97,
145 &s5pv210_device_spdif,
146 &s3c_device_adc, 212 &s3c_device_adc,
147 &s3c_device_cfcon, 213 &s3c_device_cfcon,
214 &s3c_device_fb,
148 &s3c_device_hsmmc0, 215 &s3c_device_hsmmc0,
149 &s3c_device_hsmmc1, 216 &s3c_device_hsmmc1,
150 &s3c_device_hsmmc2, 217 &s3c_device_hsmmc2,
@@ -152,11 +219,15 @@ static struct platform_device *smdkv210_devices[] __initdata = {
152 &s3c_device_i2c0, 219 &s3c_device_i2c0,
153 &s3c_device_i2c1, 220 &s3c_device_i2c1,
154 &s3c_device_i2c2, 221 &s3c_device_i2c2,
155 &samsung_device_keypad,
156 &s3c_device_rtc, 222 &s3c_device_rtc,
157 &s3c_device_ts, 223 &s3c_device_ts,
158 &s3c_device_wdt, 224 &s3c_device_wdt,
225 &s5pv210_device_ac97,
226 &s5pv210_device_iis0,
227 &s5pv210_device_spdif,
228 &samsung_device_keypad,
159 &smdkv210_dm9000, 229 &smdkv210_dm9000,
230 &smdkv210_lcd_lte480wv,
160}; 231};
161 232
162static void __init smdkv210_dm9000_init(void) 233static void __init smdkv210_dm9000_init(void)
@@ -223,6 +294,8 @@ static void __init smdkv210_machine_init(void)
223 294
224 s3c_ide_set_platdata(&smdkv210_ide_pdata); 295 s3c_ide_set_platdata(&smdkv210_ide_pdata);
225 296
297 s3c_fb_set_platdata(&smdkv210_lcd0_pdata);
298
226 platform_add_devices(smdkv210_devices, ARRAY_SIZE(smdkv210_devices)); 299 platform_add_devices(smdkv210_devices, ARRAY_SIZE(smdkv210_devices));
227} 300}
228 301