diff options
Diffstat (limited to 'arch/arm/mach-s5pv210')
-rw-r--r-- | arch/arm/mach-s5pv210/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/mach-s5pv210/mach-smdkv210.c | 81 |
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" | |||
118 | config MACH_SMDKV210 | 118 | config 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 | ||
148 | static 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 | |||
179 | static struct plat_lcd_data smdkv210_lcd_lte480wv_data = { | ||
180 | .set_power = smdkv210_lte480wv_set_power, | ||
181 | }; | ||
182 | |||
183 | static 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 | |||
189 | static 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 | |||
204 | static 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 | |||
142 | static struct platform_device *smdkv210_devices[] __initdata = { | 211 | static 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 | ||
162 | static void __init smdkv210_dm9000_init(void) | 233 | static 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 | ||