aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSachin Kamat <sachin.kamat@linaro.org>2012-12-18 11:55:12 -0500
committerKukjin Kim <kgene.kim@samsung.com>2012-12-19 12:25:14 -0500
commit479dda22188220acb000310759ed0470b58573e4 (patch)
tree2b2c08bae05d5bb5772044af8eb7ee766be4add2 /arch
parentd5c1b541baa43d09206a1f6bcad6b32f50deb8be (diff)
ARM: EXYNOS: Fix NULL pointer dereference bug in Origen
When DRM support for Samsung SoC and Samsung S3C framebuffer support are selected, the kernel crashes as it does not get the required platform data. Change the compile macro to CONFIG_DRM_EXYNOS_FIMD to fix this. Without this patch the following crash occurs during bootup: Unable to handle kernel NULL pointer dereference at virtual address 00000000 PC is at 0x0 LR is at s3c_fb_probe+0x198/0x788 [<c01520e8>] (s3c_fb_probe+0x198/0x788) from [<c01a3dd4>] (platform_drv_probe+0x18/0x1c) [<c01a3dd4>] (platform_drv_probe+0x18/0x1c) from [<c01a2b8c>] (driver_probe_device+0x70/0x1f0) [<c01a2b8c>] (driver_probe_device+0x70/0x1f0) from [<c01a2d98>] (__driver_attach+0x8c/0x90) [<c01a2d98>] (__driver_attach+0x8c/0x90) from [<c01a14e4>] (bus_for_each_dev+0x50/0x7c) [<c01a14e4>] (bus_for_each_dev+0x50/0x7c) from [<c01a23f4>] (bus_add_driver+0x170/0x23c) [<c01a23f4>] (bus_add_driver+0x170/0x23c) from [<c01a324c>] (driver_register+0x78/0x144) [<c01a324c>] (driver_register+0x78/0x144) from [<c000862c>] (do_one_initcall+0x34/0x174) [<c000862c>] (do_one_initcall+0x34/0x174) from [<c01de210>] (kernel_init+0x100/0x2a0) [<c01de210>] (kernel_init+0x100/0x2a0) from [<c000e118>] (ret_from_fork+0x14/0x3c) Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-exynos/mach-origen.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c
index e6f4191cd14c..5e34b9c16196 100644
--- a/arch/arm/mach-exynos/mach-origen.c
+++ b/arch/arm/mach-exynos/mach-origen.c
@@ -621,7 +621,7 @@ static struct pwm_lookup origen_pwm_lookup[] = {
621 PWM_LOOKUP("s3c24xx-pwm.0", 0, "pwm-backlight.0", NULL), 621 PWM_LOOKUP("s3c24xx-pwm.0", 0, "pwm-backlight.0", NULL),
622}; 622};
623 623
624#ifdef CONFIG_DRM_EXYNOS 624#ifdef CONFIG_DRM_EXYNOS_FIMD
625static struct exynos_drm_fimd_pdata drm_fimd_pdata = { 625static struct exynos_drm_fimd_pdata drm_fimd_pdata = {
626 .panel = { 626 .panel = {
627 .timing = { 627 .timing = {
@@ -793,7 +793,7 @@ static void __init origen_machine_init(void)
793 s5p_i2c_hdmiphy_set_platdata(NULL); 793 s5p_i2c_hdmiphy_set_platdata(NULL);
794 s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0); 794 s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);
795 795
796#ifdef CONFIG_DRM_EXYNOS 796#ifdef CONFIG_DRM_EXYNOS_FIMD
797 s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata; 797 s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
798 exynos4_fimd0_gpio_setup_24bpp(); 798 exynos4_fimd0_gpio_setup_24bpp();
799#else 799#else