Re: [U-Boot] [PATCH V3 1/9] exynos_fb: Remove usage of static defines

2014-07-26 Thread Minkyu Kang
Dear Ajay Kumar,


On 4 July 2014 22:19, Ajay Kumar ajaykumar...@samsung.com wrote:

 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.

 Signed-off-by: Ajay Kumar ajaykumar...@samsung.com
 Acked-by: Simon Glass s...@chromium.org
 Tested-by: Simon Glass s...@chromium.org
 ---
  arch/arm/include/asm/arch-exynos/system.h |1 +
  board/samsung/common/board.c  |   15 +++
  drivers/video/exynos_fb.c |   17 +
  include/configs/exynos5250-dt.h   |2 --
  include/configs/s5pc210_universal.h   |3 ---
  include/configs/trats.h   |3 ---
  include/configs/trats2.h  |3 ---
  7 files changed, 21 insertions(+), 23 deletions(-)

 diff --git a/arch/arm/include/asm/arch-exynos/system.h
 b/arch/arm/include/asm/arch-exynos/system.h
 index 7e2057c..4968d3d 100644
 --- a/arch/arm/include/asm/arch-exynos/system.h
 +++ b/arch/arm/include/asm/arch-exynos/system.h
 @@ -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 */
 diff --git a/board/samsung/common/board.c b/board/samsung/common/board.c
 index 9dc7c83..1f6f0a0 100644
 --- a/board/samsung/common/board.c
 +++ b/board/samsung/common/board.c
 @@ -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 lcd.h
 @@ -148,6 +149,20 @@ int board_early_init_f(void)
 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.
 + */
 +   err = exynos_lcd_early_init(gd-fdt_blob);
 +   if (err) {
 +   debug(LCD early init failed\n);
 +   return err;
 +   }
 +#endif
 +
 return exynos_early_init_f();
  }
  #endif
 diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c
 index e1e0d80..bc478a9 100644
 --- a/drivers/video/exynos_fb.c
 +++ b/drivers/video/exynos_fb.c
 @@ -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()
 - * 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.
Please fix it.


 +   .vl_col = -1,
  };
  #endif

 @@ -141,7 +136,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);
 @@ -286,8 +281,6 @@ void lcd_ctrl_init(void *lcdbase)
 set_lcd_clk();

  #ifdef CONFIG_OF_CONTROL
 -   if (exynos_fimd_parse_dt(gd-fdt_blob))
 -   debug(Can't get proper panel info\n);
  #ifdef CONFIG_EXYNOS_MIPI_DSIM
 exynos_init_dsim_platform_data(panel_info);
  #endif
 diff --git a/include/configs/exynos5250-dt.h
 b/include/configs/exynos5250-dt.h
 index 74e72a5..c24984b 100644
 --- a/include/configs/exynos5250-dt.h
 +++ b/include/configs/exynos5250-dt.h
 @@ -61,8 +61,6 @@
  #ifdef CONFIG_LCD
  #define CONFIG_EXYNOS_FB
  #define CONFIG_EXYNOS_DP
 -#define LCD_XRES   2560
 -#define LCD_YRES   1600
  #define LCD_BPPLCD_COLOR16
  #endif


Thanks,
Minkyu Kang.

-- 
from. prom.
www.promsoft.net
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH V3 1/9] exynos_fb: Remove usage of static defines

2014-07-04 Thread 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.

Signed-off-by: Ajay Kumar ajaykumar...@samsung.com
Acked-by: Simon Glass s...@chromium.org
Tested-by: Simon Glass s...@chromium.org
---
 arch/arm/include/asm/arch-exynos/system.h |1 +
 board/samsung/common/board.c  |   15 +++
 drivers/video/exynos_fb.c |   17 +
 include/configs/exynos5250-dt.h   |2 --
 include/configs/s5pc210_universal.h   |3 ---
 include/configs/trats.h   |3 ---
 include/configs/trats2.h  |3 ---
 7 files changed, 21 insertions(+), 23 deletions(-)

diff --git a/arch/arm/include/asm/arch-exynos/system.h 
b/arch/arm/include/asm/arch-exynos/system.h
index 7e2057c..4968d3d 100644
--- a/arch/arm/include/asm/arch-exynos/system.h
+++ b/arch/arm/include/asm/arch-exynos/system.h
@@ -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 */
diff --git a/board/samsung/common/board.c b/board/samsung/common/board.c
index 9dc7c83..1f6f0a0 100644
--- a/board/samsung/common/board.c
+++ b/board/samsung/common/board.c
@@ -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 lcd.h
@@ -148,6 +149,20 @@ int board_early_init_f(void)
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.
+ */
+   err = exynos_lcd_early_init(gd-fdt_blob);
+   if (err) {
+   debug(LCD early init failed\n);
+   return err;
+   }
+#endif
+
return exynos_early_init_f();
 }
 #endif
diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c
index e1e0d80..bc478a9 100644
--- a/drivers/video/exynos_fb.c
+++ b/drivers/video/exynos_fb.c
@@ -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()
- * 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
+*/
+   .vl_col = -1,
 };
 #endif
 
@@ -141,7 +136,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);
@@ -286,8 +281,6 @@ void lcd_ctrl_init(void *lcdbase)
set_lcd_clk();
 
 #ifdef CONFIG_OF_CONTROL
-   if (exynos_fimd_parse_dt(gd-fdt_blob))
-   debug(Can't get proper panel info\n);
 #ifdef CONFIG_EXYNOS_MIPI_DSIM
exynos_init_dsim_platform_data(panel_info);
 #endif
diff --git a/include/configs/exynos5250-dt.h b/include/configs/exynos5250-dt.h
index 74e72a5..c24984b 100644
--- a/include/configs/exynos5250-dt.h
+++ b/include/configs/exynos5250-dt.h
@@ -61,8 +61,6 @@
 #ifdef CONFIG_LCD
 #define CONFIG_EXYNOS_FB
 #define CONFIG_EXYNOS_DP
-#define LCD_XRES   2560
-#define LCD_YRES   1600
 #define LCD_BPPLCD_COLOR16
 #endif
 
diff --git a/include/configs/s5pc210_universal.h 
b/include/configs/s5pc210_universal.h
index eb046cd..20985da 100644
--- a/include/configs/s5pc210_universal.h
+++ b/include/configs/s5pc210_universal.h
@@ -247,7 +247,4 @@ int universal_spi_read(void);
 #define CONFIG_VIDEO_BMP_GZIP
 #define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE ((500 * 160 * 4) + 54)
 
-#define LCD_XRES   480
-#define LCD_YRES   800
-
 #endif /* __CONFIG_H */
diff --git a/include/configs/trats.h b/include/configs/trats.h
index 90f1962..35c1feb 100644
--- a/include/configs/trats.h
+++ b/include/configs/trats.h
@@ -261,7 +261,4 @@
 #define CONFIG_VIDEO_BMP_GZIP
 #define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE  ((500 * 160 * 4) + 54)
 
-#define LCD_XRES   720
-#define