aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-exynos
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-05-22 16:32:53 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-05-22 16:32:53 -0400
commitf6a26ae7699416d86bea8cb68ce413571e9cab3c (patch)
treee91b7a7c7513151fe583721f7435cc9f5cdc4f42 /arch/arm/mach-exynos
parentcdd3a354a05b0c33fe33ab11a0fb0838396cad19 (diff)
parent48a5765e5104f1afd22c75c5030af3a6cf24b4c3 (diff)
Merge tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull arm-soc board specific changes from Olof Johansson: "While we generally attempt to get rid of board specific files and replace them with device tree based descriptions, a lot of platforms have not come that far: In shmobile, we add two new board files because their recently started effort to add DT support has not proceeded enough to use it for all of the important hardware. In Kirkwood, we are adding support for new boards with a combination of DT and board file contents in multiple cases. pxa/mmp and imx are extending support for existing board files but not adding new ones." Fix up trivial conflicts in arch/arm/mach-{mmp/ttc_dkb.c,shmobile/{Kconfig,Makefile}} * tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (94 commits) ARM: shmobile: fix smp build ARM: kirkwood: Add support for RaidSonic IB-NAS6210/6220 using devicetree kirkwood: Add iconnect support orion/kirkwood: create a generic function for gpio led blinking kirkwood/orion: fix orion_gpio_set_blink ARM: kirkwood: Define DNS-320/DNS-325 NAND in fdt kirkwood: Allow nand to be configured via. devicetree mtd: Add orion_nand devicetree bindings ARM: kirkwood: Basic support for DNS-320 and DNS-325 ARM: mach-shmobile: Use DT_MACHINE for armadillo 800 eva ARM: mach-shmobile: Use DT_MACHINE for KZM9G ARM: pxa: hx4700: Add Synaptics NavPoint touchpad ARM: pxa: Use REGULATOR_SUPPLY macro ARM: mach-shmobile: kzm9g: enable SMP boot ARM: mach-shmobile: kzm9g: defconfig update ARM: mach-shmobile: kzm9g: add PCF8757 gpio-key ARM: mach-shmobile: kzm9g: add SDHI support ARM: mach-shmobile: kzm9g: add MMCIF support ARM: mach-shmobile: kzm9g: correct screen direction ARM: mach-shmobile: sh73a0.h: add GPIO_NR ...
Diffstat (limited to 'arch/arm/mach-exynos')
-rw-r--r--arch/arm/mach-exynos/Kconfig9
-rw-r--r--arch/arm/mach-exynos/mach-nuri.c33
-rw-r--r--arch/arm/mach-exynos/mach-origen.c35
-rw-r--r--arch/arm/mach-exynos/mach-smdk4x12.c16
-rw-r--r--arch/arm/mach-exynos/mach-smdkv310.c30
-rw-r--r--arch/arm/mach-exynos/mach-universal_c210.c33
6 files changed, 155 insertions, 1 deletions
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index b8df521fb68e..2808e471cdcc 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -200,6 +200,7 @@ config MACH_SMDKV310
200 select S3C_DEV_HSMMC2 200 select S3C_DEV_HSMMC2
201 select S3C_DEV_HSMMC3 201 select S3C_DEV_HSMMC3
202 select SAMSUNG_DEV_BACKLIGHT 202 select SAMSUNG_DEV_BACKLIGHT
203 select EXYNOS_DEV_DRM
203 select EXYNOS4_DEV_AHCI 204 select EXYNOS4_DEV_AHCI
204 select SAMSUNG_DEV_KEYPAD 205 select SAMSUNG_DEV_KEYPAD
205 select EXYNOS4_DEV_DMA 206 select EXYNOS4_DEV_DMA
@@ -255,6 +256,7 @@ config MACH_UNIVERSAL_C210
255 select S5P_DEV_ONENAND 256 select S5P_DEV_ONENAND
256 select S5P_DEV_TV 257 select S5P_DEV_TV
257 select EXYNOS4_DEV_DMA 258 select EXYNOS4_DEV_DMA
259 select EXYNOS_DEV_DRM
258 select EXYNOS4_SETUP_FIMD0 260 select EXYNOS4_SETUP_FIMD0
259 select EXYNOS4_SETUP_I2C1 261 select EXYNOS4_SETUP_I2C1
260 select EXYNOS4_SETUP_I2C3 262 select EXYNOS4_SETUP_I2C3
@@ -291,6 +293,7 @@ config MACH_NURI
291 select S5P_DEV_USB_EHCI 293 select S5P_DEV_USB_EHCI
292 select S5P_SETUP_MIPIPHY 294 select S5P_SETUP_MIPIPHY
293 select EXYNOS4_DEV_DMA 295 select EXYNOS4_DEV_DMA
296 select EXYNOS_DEV_DRM
294 select EXYNOS4_SETUP_FIMC 297 select EXYNOS4_SETUP_FIMC
295 select EXYNOS4_SETUP_FIMD0 298 select EXYNOS4_SETUP_FIMD0
296 select EXYNOS4_SETUP_I2C1 299 select EXYNOS4_SETUP_I2C1
@@ -325,6 +328,7 @@ config MACH_ORIGEN
325 select S5P_DEV_USB_EHCI 328 select S5P_DEV_USB_EHCI
326 select SAMSUNG_DEV_BACKLIGHT 329 select SAMSUNG_DEV_BACKLIGHT
327 select SAMSUNG_DEV_PWM 330 select SAMSUNG_DEV_PWM
331 select EXYNOS_DEV_DRM
328 select EXYNOS4_DEV_DMA 332 select EXYNOS4_DEV_DMA
329 select EXYNOS4_DEV_USB_OHCI 333 select EXYNOS4_DEV_USB_OHCI
330 select EXYNOS4_SETUP_FIMD0 334 select EXYNOS4_SETUP_FIMD0
@@ -345,6 +349,11 @@ config MACH_SMDK4212
345 select S3C_DEV_I2C7 349 select S3C_DEV_I2C7
346 select S3C_DEV_RTC 350 select S3C_DEV_RTC
347 select S3C_DEV_WDT 351 select S3C_DEV_WDT
352 select S5P_DEV_FIMC0
353 select S5P_DEV_FIMC1
354 select S5P_DEV_FIMC2
355 select S5P_DEV_FIMC3
356 select S5P_DEV_MFC
348 select SAMSUNG_DEV_BACKLIGHT 357 select SAMSUNG_DEV_BACKLIGHT
349 select SAMSUNG_DEV_KEYPAD 358 select SAMSUNG_DEV_KEYPAD
350 select SAMSUNG_DEV_PWM 359 select SAMSUNG_DEV_PWM
diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c
index 021dc68e89b5..5784b0abfe9d 100644
--- a/arch/arm/mach-exynos/mach-nuri.c
+++ b/arch/arm/mach-exynos/mach-nuri.c
@@ -25,6 +25,7 @@
25#include <linux/mmc/host.h> 25#include <linux/mmc/host.h>
26#include <linux/fb.h> 26#include <linux/fb.h>
27#include <linux/pwm_backlight.h> 27#include <linux/pwm_backlight.h>
28#include <drm/exynos_drm.h>
28 29
29#include <video/platform_lcd.h> 30#include <video/platform_lcd.h>
30#include <media/m5mols.h> 31#include <media/m5mols.h>
@@ -210,6 +211,29 @@ static struct platform_device nuri_gpio_keys = {
210 }, 211 },
211}; 212};
212 213
214#ifdef CONFIG_DRM_EXYNOS
215static struct exynos_drm_fimd_pdata drm_fimd_pdata = {
216 .panel = {
217 .timing = {
218 .xres = 1024,
219 .yres = 600,
220 .hsync_len = 40,
221 .left_margin = 79,
222 .right_margin = 200,
223 .vsync_len = 10,
224 .upper_margin = 10,
225 .lower_margin = 11,
226 .refresh = 60,
227 },
228 },
229 .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB |
230 VIDCON0_CLKSEL_LCD,
231 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
232 .default_win = 3,
233 .bpp = 32,
234};
235
236#else
213/* Frame Buffer */ 237/* Frame Buffer */
214static struct s3c_fb_pd_win nuri_fb_win0 = { 238static struct s3c_fb_pd_win nuri_fb_win0 = {
215 .win_mode = { 239 .win_mode = {
@@ -236,6 +260,7 @@ static struct s3c_fb_platdata nuri_fb_pdata __initdata = {
236 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC, 260 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
237 .setup_gpio = exynos4_fimd0_gpio_setup_24bpp, 261 .setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
238}; 262};
263#endif
239 264
240static void nuri_lcd_power_on(struct plat_lcd_data *pd, unsigned int power) 265static void nuri_lcd_power_on(struct plat_lcd_data *pd, unsigned int power)
241{ 266{
@@ -1299,6 +1324,9 @@ static struct platform_device *nuri_devices[] __initdata = {
1299 &cam_vdda_fixed_rdev, 1324 &cam_vdda_fixed_rdev,
1300 &cam_8m_12v_fixed_rdev, 1325 &cam_8m_12v_fixed_rdev,
1301 &exynos4_bus_devfreq, 1326 &exynos4_bus_devfreq,
1327#ifdef CONFIG_DRM_EXYNOS
1328 &exynos_device_drm,
1329#endif
1302}; 1330};
1303 1331
1304static void __init nuri_map_io(void) 1332static void __init nuri_map_io(void)
@@ -1331,7 +1359,12 @@ static void __init nuri_machine_init(void)
1331 i2c_register_board_info(9, i2c9_devs, ARRAY_SIZE(i2c9_devs)); 1359 i2c_register_board_info(9, i2c9_devs, ARRAY_SIZE(i2c9_devs));
1332 s3c_i2c6_set_platdata(&nuri_i2c6_platdata); 1360 s3c_i2c6_set_platdata(&nuri_i2c6_platdata);
1333 1361
1362#ifdef CONFIG_DRM_EXYNOS
1363 s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
1364 exynos4_fimd0_gpio_setup_24bpp();
1365#else
1334 s5p_fimd0_set_platdata(&nuri_fb_pdata); 1366 s5p_fimd0_set_platdata(&nuri_fb_pdata);
1367#endif
1335 1368
1336 nuri_camera_init(); 1369 nuri_camera_init();
1337 1370
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c
index 827cb990c316..26124a38bcbd 100644
--- a/arch/arm/mach-exynos/mach-origen.c
+++ b/arch/arm/mach-exynos/mach-origen.c
@@ -45,6 +45,7 @@
45#include <mach/ohci.h> 45#include <mach/ohci.h>
46#include <mach/map.h> 46#include <mach/map.h>
47 47
48#include <drm/exynos_drm.h>
48#include "common.h" 49#include "common.h"
49 50
50/* Following are default values for UCON, ULCON and UFCON UART registers */ 51/* Following are default values for UCON, ULCON and UFCON UART registers */
@@ -581,6 +582,27 @@ static struct platform_device origen_lcd_hv070wsa = {
581 .dev.platform_data = &origen_lcd_hv070wsa_data, 582 .dev.platform_data = &origen_lcd_hv070wsa_data,
582}; 583};
583 584
585#ifdef CONFIG_DRM_EXYNOS
586static struct exynos_drm_fimd_pdata drm_fimd_pdata = {
587 .panel = {
588 .timing = {
589 .left_margin = 64,
590 .right_margin = 16,
591 .upper_margin = 64,
592 .lower_margin = 16,
593 .hsync_len = 48,
594 .vsync_len = 3,
595 .xres = 1024,
596 .yres = 600,
597 },
598 },
599 .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
600 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC |
601 VIDCON1_INV_VCLK,
602 .default_win = 0,
603 .bpp = 32,
604};
605#else
584static struct s3c_fb_pd_win origen_fb_win0 = { 606static struct s3c_fb_pd_win origen_fb_win0 = {
585 .win_mode = { 607 .win_mode = {
586 .left_margin = 64, 608 .left_margin = 64,
@@ -594,6 +616,8 @@ static struct s3c_fb_pd_win origen_fb_win0 = {
594 }, 616 },
595 .max_bpp = 32, 617 .max_bpp = 32,
596 .default_bpp = 24, 618 .default_bpp = 24,
619 .virtual_x = 1024,
620 .virtual_y = 2 * 600,
597}; 621};
598 622
599static struct s3c_fb_platdata origen_lcd_pdata __initdata = { 623static struct s3c_fb_platdata origen_lcd_pdata __initdata = {
@@ -603,9 +627,10 @@ static struct s3c_fb_platdata origen_lcd_pdata __initdata = {
603 VIDCON1_INV_VCLK, 627 VIDCON1_INV_VCLK,
604 .setup_gpio = exynos4_fimd0_gpio_setup_24bpp, 628 .setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
605}; 629};
630#endif
606 631
607/* Bluetooth rfkill gpio platform data */ 632/* Bluetooth rfkill gpio platform data */
608struct rfkill_gpio_platform_data origen_bt_pdata = { 633static struct rfkill_gpio_platform_data origen_bt_pdata = {
609 .reset_gpio = EXYNOS4_GPX2(2), 634 .reset_gpio = EXYNOS4_GPX2(2),
610 .shutdown_gpio = -1, 635 .shutdown_gpio = -1,
611 .type = RFKILL_TYPE_BLUETOOTH, 636 .type = RFKILL_TYPE_BLUETOOTH,
@@ -642,6 +667,9 @@ static struct platform_device *origen_devices[] __initdata = {
642 &s5p_device_mfc_l, 667 &s5p_device_mfc_l,
643 &s5p_device_mfc_r, 668 &s5p_device_mfc_r,
644 &s5p_device_mixer, 669 &s5p_device_mixer,
670#ifdef CONFIG_DRM_EXYNOS
671 &exynos_device_drm,
672#endif
645 &exynos4_device_ohci, 673 &exynos4_device_ohci,
646 &origen_device_gpiokeys, 674 &origen_device_gpiokeys,
647 &origen_lcd_hv070wsa, 675 &origen_lcd_hv070wsa,
@@ -717,7 +745,12 @@ static void __init origen_machine_init(void)
717 s5p_tv_setup(); 745 s5p_tv_setup();
718 s5p_i2c_hdmiphy_set_platdata(NULL); 746 s5p_i2c_hdmiphy_set_platdata(NULL);
719 747
748#ifdef CONFIG_DRM_EXYNOS
749 s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
750 exynos4_fimd0_gpio_setup_24bpp();
751#else
720 s5p_fimd0_set_platdata(&origen_lcd_pdata); 752 s5p_fimd0_set_platdata(&origen_lcd_pdata);
753#endif
721 754
722 platform_add_devices(origen_devices, ARRAY_SIZE(origen_devices)); 755 platform_add_devices(origen_devices, ARRAY_SIZE(origen_devices));
723 756
diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c
index 4be083acf994..fe772d893cc9 100644
--- a/arch/arm/mach-exynos/mach-smdk4x12.c
+++ b/arch/arm/mach-exynos/mach-smdk4x12.c
@@ -31,6 +31,7 @@
31#include <plat/gpio-cfg.h> 31#include <plat/gpio-cfg.h>
32#include <plat/iic.h> 32#include <plat/iic.h>
33#include <plat/keypad.h> 33#include <plat/keypad.h>
34#include <plat/mfc.h>
34#include <plat/regs-serial.h> 35#include <plat/regs-serial.h>
35#include <plat/sdhci.h> 36#include <plat/sdhci.h>
36 37
@@ -242,6 +243,14 @@ static struct platform_device *smdk4x12_devices[] __initdata = {
242 &s3c_device_i2c7, 243 &s3c_device_i2c7,
243 &s3c_device_rtc, 244 &s3c_device_rtc,
244 &s3c_device_wdt, 245 &s3c_device_wdt,
246 &s5p_device_fimc0,
247 &s5p_device_fimc1,
248 &s5p_device_fimc2,
249 &s5p_device_fimc3,
250 &s5p_device_fimc_md,
251 &s5p_device_mfc,
252 &s5p_device_mfc_l,
253 &s5p_device_mfc_r,
245 &samsung_device_keypad, 254 &samsung_device_keypad,
246}; 255};
247 256
@@ -254,6 +263,11 @@ static void __init smdk4x12_map_io(void)
254 s3c24xx_init_uarts(smdk4x12_uartcfgs, ARRAY_SIZE(smdk4x12_uartcfgs)); 263 s3c24xx_init_uarts(smdk4x12_uartcfgs, ARRAY_SIZE(smdk4x12_uartcfgs));
255} 264}
256 265
266static void __init smdk4x12_reserve(void)
267{
268 s5p_mfc_reserve_mem(0x43000000, 8 << 20, 0x51000000, 8 << 20);
269}
270
257static void __init smdk4x12_machine_init(void) 271static void __init smdk4x12_machine_init(void)
258{ 272{
259 s3c_i2c0_set_platdata(NULL); 273 s3c_i2c0_set_platdata(NULL);
@@ -291,6 +305,7 @@ MACHINE_START(SMDK4212, "SMDK4212")
291 .init_machine = smdk4x12_machine_init, 305 .init_machine = smdk4x12_machine_init,
292 .timer = &exynos4_timer, 306 .timer = &exynos4_timer,
293 .restart = exynos4_restart, 307 .restart = exynos4_restart,
308 .reserve = &smdk4x12_reserve,
294MACHINE_END 309MACHINE_END
295 310
296MACHINE_START(SMDK4412, "SMDK4412") 311MACHINE_START(SMDK4412, "SMDK4412")
@@ -303,4 +318,5 @@ MACHINE_START(SMDK4412, "SMDK4412")
303 .init_machine = smdk4x12_machine_init, 318 .init_machine = smdk4x12_machine_init,
304 .timer = &exynos4_timer, 319 .timer = &exynos4_timer,
305 .restart = exynos4_restart, 320 .restart = exynos4_restart,
321 .reserve = &smdk4x12_reserve,
306MACHINE_END 322MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c
index ea39f614f2db..5af96064ca51 100644
--- a/arch/arm/mach-exynos/mach-smdkv310.c
+++ b/arch/arm/mach-exynos/mach-smdkv310.c
@@ -44,6 +44,7 @@
44#include <mach/map.h> 44#include <mach/map.h>
45#include <mach/ohci.h> 45#include <mach/ohci.h>
46 46
47#include <drm/exynos_drm.h>
47#include "common.h" 48#include "common.h"
48 49
49/* Following are default values for UCON, ULCON and UFCON UART registers */ 50/* Following are default values for UCON, ULCON and UFCON UART registers */
@@ -156,6 +157,26 @@ static struct platform_device smdkv310_lcd_lte480wv = {
156 .dev.platform_data = &smdkv310_lcd_lte480wv_data, 157 .dev.platform_data = &smdkv310_lcd_lte480wv_data,
157}; 158};
158 159
160#ifdef CONFIG_DRM_EXYNOS
161static struct exynos_drm_fimd_pdata drm_fimd_pdata = {
162 .panel = {
163 .timing = {
164 .left_margin = 13,
165 .right_margin = 8,
166 .upper_margin = 7,
167 .lower_margin = 5,
168 .hsync_len = 3,
169 .vsync_len = 1,
170 .xres = 800,
171 .yres = 480,
172 },
173 },
174 .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
175 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
176 .default_win = 0,
177 .bpp = 32,
178};
179#else
159static struct s3c_fb_pd_win smdkv310_fb_win0 = { 180static struct s3c_fb_pd_win smdkv310_fb_win0 = {
160 .win_mode = { 181 .win_mode = {
161 .left_margin = 13, 182 .left_margin = 13,
@@ -177,6 +198,7 @@ static struct s3c_fb_platdata smdkv310_lcd0_pdata __initdata = {
177 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC, 198 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
178 .setup_gpio = exynos4_fimd0_gpio_setup_24bpp, 199 .setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
179}; 200};
201#endif
180 202
181static struct resource smdkv310_smsc911x_resources[] = { 203static struct resource smdkv310_smsc911x_resources[] = {
182 [0] = DEFINE_RES_MEM(EXYNOS4_PA_SROM_BANK(1), SZ_64K), 204 [0] = DEFINE_RES_MEM(EXYNOS4_PA_SROM_BANK(1), SZ_64K),
@@ -262,6 +284,9 @@ static struct platform_device *smdkv310_devices[] __initdata = {
262 &s5p_device_fimc_md, 284 &s5p_device_fimc_md,
263 &s5p_device_g2d, 285 &s5p_device_g2d,
264 &s5p_device_jpeg, 286 &s5p_device_jpeg,
287#ifdef CONFIG_DRM_EXYNOS
288 &exynos_device_drm,
289#endif
265 &exynos4_device_ac97, 290 &exynos4_device_ac97,
266 &exynos4_device_i2s0, 291 &exynos4_device_i2s0,
267 &exynos4_device_ohci, 292 &exynos4_device_ohci,
@@ -353,7 +378,12 @@ static void __init smdkv310_machine_init(void)
353 samsung_keypad_set_platdata(&smdkv310_keypad_data); 378 samsung_keypad_set_platdata(&smdkv310_keypad_data);
354 379
355 samsung_bl_set(&smdkv310_bl_gpio_info, &smdkv310_bl_data); 380 samsung_bl_set(&smdkv310_bl_gpio_info, &smdkv310_bl_data);
381#ifdef CONFIG_DRM_EXYNOS
382 s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
383 exynos4_fimd0_gpio_setup_24bpp();
384#else
356 s5p_fimd0_set_platdata(&smdkv310_lcd0_pdata); 385 s5p_fimd0_set_platdata(&smdkv310_lcd0_pdata);
386#endif
357 387
358 smdkv310_ehci_init(); 388 smdkv310_ehci_init();
359 smdkv310_ohci_init(); 389 smdkv310_ohci_init();
diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c
index 57d524e03d63..27fab5389d7e 100644
--- a/arch/arm/mach-exynos/mach-universal_c210.c
+++ b/arch/arm/mach-exynos/mach-universal_c210.c
@@ -23,6 +23,7 @@
23#include <linux/i2c-gpio.h> 23#include <linux/i2c-gpio.h>
24#include <linux/i2c/mcs.h> 24#include <linux/i2c/mcs.h>
25#include <linux/i2c/atmel_mxt_ts.h> 25#include <linux/i2c/atmel_mxt_ts.h>
26#include <drm/exynos_drm.h>
26 27
27#include <asm/mach/arch.h> 28#include <asm/mach/arch.h>
28#include <asm/hardware/gic.h> 29#include <asm/hardware/gic.h>
@@ -811,6 +812,29 @@ static struct i2c_board_info i2c1_devs[] __initdata = {
811 /* Gyro, To be updated */ 812 /* Gyro, To be updated */
812}; 813};
813 814
815#ifdef CONFIG_DRM_EXYNOS
816static struct exynos_drm_fimd_pdata drm_fimd_pdata = {
817 .panel = {
818 .timing = {
819 .left_margin = 16,
820 .right_margin = 16,
821 .upper_margin = 2,
822 .lower_margin = 28,
823 .hsync_len = 2,
824 .vsync_len = 1,
825 .xres = 480,
826 .yres = 800,
827 .refresh = 55,
828 },
829 },
830 .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB |
831 VIDCON0_CLKSEL_LCD,
832 .vidcon1 = VIDCON1_INV_VCLK | VIDCON1_INV_VDEN
833 | VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
834 .default_win = 3,
835 .bpp = 32,
836};
837#else
814/* Frame Buffer */ 838/* Frame Buffer */
815static struct s3c_fb_pd_win universal_fb_win0 = { 839static struct s3c_fb_pd_win universal_fb_win0 = {
816 .win_mode = { 840 .win_mode = {
@@ -838,6 +862,7 @@ static struct s3c_fb_platdata universal_lcd_pdata __initdata = {
838 | VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC, 862 | VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
839 .setup_gpio = exynos4_fimd0_gpio_setup_24bpp, 863 .setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
840}; 864};
865#endif
841 866
842static struct regulator_consumer_supply cam_vt_dio_supply = 867static struct regulator_consumer_supply cam_vt_dio_supply =
843 REGULATOR_SUPPLY("vdd_core", "0-003c"); 868 REGULATOR_SUPPLY("vdd_core", "0-003c");
@@ -1047,6 +1072,9 @@ static struct platform_device *universal_devices[] __initdata = {
1047 &s5p_device_onenand, 1072 &s5p_device_onenand,
1048 &s5p_device_fimd0, 1073 &s5p_device_fimd0,
1049 &s5p_device_jpeg, 1074 &s5p_device_jpeg,
1075#ifdef CONFIG_DRM_EXYNOS
1076 &exynos_device_drm,
1077#endif
1050 &s5p_device_mfc, 1078 &s5p_device_mfc,
1051 &s5p_device_mfc_l, 1079 &s5p_device_mfc_l,
1052 &s5p_device_mfc_r, 1080 &s5p_device_mfc_r,
@@ -1094,7 +1122,12 @@ static void __init universal_machine_init(void)
1094 s5p_i2c_hdmiphy_set_platdata(NULL); 1122 s5p_i2c_hdmiphy_set_platdata(NULL);
1095 i2c_register_board_info(5, i2c5_devs, ARRAY_SIZE(i2c5_devs)); 1123 i2c_register_board_info(5, i2c5_devs, ARRAY_SIZE(i2c5_devs));
1096 1124
1125#ifdef CONFIG_DRM_EXYNOS
1126 s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
1127 exynos4_fimd0_gpio_setup_24bpp();
1128#else
1097 s5p_fimd0_set_platdata(&universal_lcd_pdata); 1129 s5p_fimd0_set_platdata(&universal_lcd_pdata);
1130#endif
1098 1131
1099 universal_touchkey_init(); 1132 universal_touchkey_init();
1100 i2c_register_board_info(I2C_GPIO_BUS_12, i2c_gpio12_devs, 1133 i2c_register_board_info(I2C_GPIO_BUS_12, i2c_gpio12_devs,