Skip to contentSkip to conversation

exynos_fb: Remove usage of static defines

PATCH Minkyu Kang 1 participant 1 message Jan 2, 2014 1 message not in the archive

lore
Share & tools
lore
#1 lore raw
In reply to a message not in the archive
Quoted 40 lines · Ajay Kumar

Previously, we used to statically assign values for vl_col, vl_row and vl_bpix using #defines like LCD_XRES, LCD_YRES and LCD_COLOR16.

Introducing the function exynos_lcd_early_init() would take care of this assignment on the fly by parsing FIMD DT properties, thereby allowing us to remove LCD_XRES and LCD_YRES from the main config file.

---
 arch/arm/include/asm/arch-exynos/system.h |  1 +
 board/samsung/common/board.c              | 15 +++++++++++++++
 drivers/video/exynos_fb.c                 | 20 ++++++--------------
 include/configs/exynos5250-dt.h           |  2 --
 4 files changed, 22 insertions(+), 16 deletions(-)
arch/arm/include/asm/arch-exynos/system.h +1 -0
index 7e2057c..4968d3d 100644
@@ -39,5 +39,6 @@ struct exynos5_sysreg {
 
 void set_usbhost_mode(unsigned int mode);
 void set_system_display_ctrl(void);
+int exynos_lcd_early_init(const void *blob);
 
 #endif	/* _EXYNOS4_SYSTEM_H */
board/samsung/common/board.c +1 -0
index cc83724..2536457 100644
@@ -20,6 +20,7 @@
 #include <asm/arch/mmc.h>
 #include <asm/arch/pinmux.h>
 #include <asm/arch/power.h>
+#include <asm/arch/system.h>
 #include <power/pmic.h>
 #include <asm/arch/sromc.h>
 #include <power/max77686_pmic.h>
@@ -135,6 +136,20 @@ int board_early_init_f(void)
 #ifdef CONFIG_SYS_I2C_INIT_BOARD

board/samsung/common/board.c int board_early_init_f(void) · line 146

Quoted 10 lines
board/samsung/common/board.c +8 -0
 	board_i2c_init(gd->fdt_blob);
 #endif
+
+#if defined(CONFIG_OF_CONTROL) && defined(CONFIG_EXYNOS_FB)
+/*
+ * board_init_f(arch/arm/lib/board.c) calls lcd_setmem() which needs
+ * panel_info.vl_col, panel_info.vl_row and panel_info.vl_bpix, to reserve
+ * FB memory at a very early stage. So, we need to fill panel_info.vl_col,
+ * panel_info.vl_row and panel_info.vl_bpix before lcd_setmem() is called.
+ */

please fix indentation.

Quoted 21 lines
board/samsung/common/board.c +6 -0
+	err = exynos_lcd_early_init(gd->fdt_blob);
+	if (err) {
+		debug("LCD early init failed\n");
+		return err;
+	}
+#endif
 	return err;
 }
 #endif
drivers/video/exynos_fb.c +0 -4
index 7d4c6e0..69899a1 100644
@@ -27,17 +27,12 @@ DECLARE_GLOBAL_DATA_PTR;
 
 static unsigned int panel_width, panel_height;
 
-/*
- * board_init_f(arch/arm/lib/board.c) calls lcd_setmem() which needs
- * panel_info.vl_col, panel_info.vl_row and panel_info.vl_bpix to reserve
- * FB memory at a very early stage, i.e even before exynos_fimd_parse_dt()

drivers/video/exynos_fb.c DECLARE_GLOBAL_DATA_PTR; · line 34

Quoted 10 lines
drivers/video/exynos_fb.c +3 -5
- * is called. So, we are forced to statically assign it.
- */
 #ifdef CONFIG_OF_CONTROL
 vidinfo_t panel_info  = {
-	.vl_col = LCD_XRES,
-	.vl_row = LCD_YRES,
-	.vl_bpix = LCD_COLOR16,
+	/* Insert a value here so that we don't end up in the BSS
+	 * Reference: drivers/video/tegra.c
+	 */

wrong comment style.

Quoted 31 lines
drivers/video/exynos_fb.c +3 -5
+	.vl_col = -1,
 };
 #endif
 
@@ -159,7 +154,7 @@ static void lcd_panel_on(vidinfo_t *vid)
 }
 
 #ifdef CONFIG_OF_CONTROL
-int exynos_fimd_parse_dt(const void *blob)
+int exynos_lcd_early_init(const void *blob)
 {
 	unsigned int node;
 	node = fdtdec_next_compatible(blob, 0, COMPAT_SAMSUNG_EXYNOS_FIMD);
@@ -303,10 +298,7 @@ void lcd_ctrl_init(void *lcdbase)
 	set_system_display_ctrl();
 	set_lcd_clk();
 
-#ifdef CONFIG_OF_CONTROL
-	if (exynos_fimd_parse_dt(gd->fdt_blob))
-		debug("Can't get proper panel info\n");
-#else
+#ifndef CONFIG_OF_CONTROL
 	/* initialize parameters which is specific to panel. */
 	init_panel_info(&panel_info);
 #endif
include/configs/exynos5250-dt.h +0 -0
index 689919d..508962c 100644

include/configs/exynos5250-dt.h line 55

Quoted 8 lines
include/configs/exynos5250-dt.h +0 -2
@@ -50,8 +50,6 @@
 #ifdef CONFIG_LCD
 #define CONFIG_EXYNOS_FB
 #define CONFIG_EXYNOS_DP
-#define LCD_XRES			2560
-#define LCD_YRES			1600
 #define LCD_BPP			LCD_COLOR16
 #endif
 #endif  /* __CONFIG_5250_H */

Thanks,
Minkyu Kang.