[U-Boot] [PATCH 1/5] atmel_lcdfb: Eliminate unneeded #include <asm/arch/hardware.h>

atmel_lcdfb doesn't actually need anything from asm/arch/hardware.h. It includes a file that does, asm/arch/gpio.h, but this file doesn't include <asm/arch/hardware.h> like it's supposed to.
Add the missing include to asm/arch/gpio.h and remove the workaround from the atmel_lcdfb driver. This makes the driver compile on avr32.
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com --- drivers/video/atmel_lcdfb.c | 1 - include/asm-arm/arch-at91/gpio.h | 1 + 2 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c index b332a82..7f0dceb 100644 --- a/drivers/video/atmel_lcdfb.c +++ b/drivers/video/atmel_lcdfb.c @@ -24,7 +24,6 @@
#include <common.h> #include <asm/io.h> -#include <asm/arch/hardware.h> #include <asm/arch/gpio.h> #include <asm/arch/clk.h> #include <lcd.h> diff --git a/include/asm-arm/arch-at91/gpio.h b/include/asm-arm/arch-at91/gpio.h index c4d7b97..e2d375b 100644 --- a/include/asm-arm/arch-at91/gpio.h +++ b/include/asm-arm/arch-at91/gpio.h @@ -16,6 +16,7 @@ #include <asm/io.h> #include <asm/errno.h> #include <asm/arch/at91_pio.h> +#include <asm/arch/hardware.h>
#define PIN_BASE 32

If the board _didn't_ request INVLINE_INVERTED, we set INVLINE_INVERTED, otherwise we don't. WTF?
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com --- drivers/video/atmel_lcdfb.c | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c index 7f0dceb..3a51cc7 100644 --- a/drivers/video/atmel_lcdfb.c +++ b/drivers/video/atmel_lcdfb.c @@ -107,10 +107,7 @@ void lcd_ctrl_init(void *lcdbase) if (panel_info.vl_tft) value |= ATMEL_LCDC_DISTYPE_TFT;
- if (!(panel_info.vl_sync & ATMEL_LCDC_INVLINE_INVERTED)) - value |= ATMEL_LCDC_INVLINE_INVERTED; - if (!(panel_info.vl_sync & ATMEL_LCDC_INVFRAME_INVERTED)) - value |= ATMEL_LCDC_INVFRAME_INVERTED; + value |= panel_info.vl_sync; value |= (panel_info.vl_bpix << 5); lcdc_writel(panel_info.mmio, ATMEL_LCDC_LCDCON2, value);

lcd_printf() has a prototype in include/lcd.h but no implementation. Fix this by borrowing the lcd_printf() implementation from the cogent board code (which appears to use its own LCD framework.)
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com --- common/lcd.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/common/lcd.c b/common/lcd.c index 25f8664..82e557e 100644 --- a/common/lcd.c +++ b/common/lcd.c @@ -225,6 +225,20 @@ void lcd_puts (const char *s) } }
+/*----------------------------------------------------------------------*/ + +void lcd_printf(const char *fmt, ...) +{ + va_list args; + char buf[CFG_PBSIZE]; + + va_start(args, fmt); + vsprintf(buf, fmt, args); + va_end(args); + + lcd_puts(buf); +} + /************************************************************************/ /* ** Low-Level Graphics Routines */ /************************************************************************/

This allows the logo/info rendering routines to use the regular lcd_putc/lcd_puts/lcd_printf calls.
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com --- common/lcd.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/common/lcd.c b/common/lcd.c index 82e557e..6ad2133 100644 --- a/common/lcd.c +++ b/common/lcd.c @@ -440,6 +440,7 @@ static int lcd_init (void *lcdbase) debug ("[LCD] Initializing LCD frambuffer at %p\n", lcdbase);
lcd_ctrl_init (lcdbase); + lcd_is_enabled = 1; lcd_clear (NULL, 1, 1, NULL); /* dummy args */ lcd_enable ();
@@ -450,7 +451,6 @@ static int lcd_init (void *lcdbase) #else console_row = 1; /* leave 1 blank line below logo */ #endif - lcd_is_enabled = 1;
return 0; }

The information displayed when CONFIG_LCD_INFO is set is inherently board-specific, so it should be done by the board code. The current code dealing with this only handles two cases, and is already a horrible mess of #ifdeffery.
Yes, this duplicates some code, but it also allows boards to print more board-specific information; this used to be very difficult.
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com --- board/atmel/at91cap9adk/at91cap9adk.c | 29 ++++++++++ board/atmel/at91sam9261ek/at91sam9261ek.c | 29 ++++++++++ board/atmel/at91sam9263ek/at91sam9263ek.c | 29 ++++++++++ board/atmel/at91sam9rlek/at91sam9rlek.c | 29 ++++++++++ board/lwmon/lwmon.c | 29 ++++++++++ board/tqc/tqm8xx/tqm8xx.c | 26 +++++++++ common/lcd.c | 84 ++--------------------------- include/lcd.h | 2 + 8 files changed, 178 insertions(+), 79 deletions(-)
diff --git a/board/atmel/at91cap9adk/at91cap9adk.c b/board/atmel/at91cap9adk/at91cap9adk.c index c5082a0..31f468a 100644 --- a/board/atmel/at91cap9adk/at91cap9adk.c +++ b/board/atmel/at91cap9adk/at91cap9adk.c @@ -324,6 +324,35 @@ static void at91cap9_lcd_hw_init(void)
gd->fb_base = 0; } + +#ifdef CONFIG_LCD_INFO +#include <nand.h> +#include <version.h> + +void lcd_show_board_info(void) +{ + ulong dram_size, nand_size; + int i; + char temp[32]; + + lcd_printf ("%s\n", U_BOOT_VERSION); + lcd_printf ("(C) 2008 ATMEL Corp\n"); + lcd_printf ("at91support@atmel.com\n"); + lcd_printf ("%s CPU at %s MHz\n", + AT91_CPU_NAME, + strmhz(temp, AT91_MAIN_CLOCK)); + + dram_size = 0; + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) + dram_size += gd->bd->bi_dram[i].size; + nand_size = 0; + for (i = 0; i < CFG_MAX_NAND_DEVICE; i++) + nand_size += nand_info[i].size; + lcd_printf (" %ld MB SDRAM, %ld MB NAND\n", + dram_size >> 20, + nand_size >> 20 ); +} +#endif /* CONFIG_LCD_INFO */ #endif
int board_init(void) diff --git a/board/atmel/at91sam9261ek/at91sam9261ek.c b/board/atmel/at91sam9261ek/at91sam9261ek.c index 647aab5..5a48ee4 100644 --- a/board/atmel/at91sam9261ek/at91sam9261ek.c +++ b/board/atmel/at91sam9261ek/at91sam9261ek.c @@ -209,6 +209,35 @@ static void at91sam9261ek_lcd_hw_init(void)
gd->fb_base = AT91SAM9261_SRAM_BASE; } + +#ifdef CONFIG_LCD_INFO +#include <nand.h> +#include <version.h> + +void lcd_show_board_info(void) +{ + ulong dram_size, nand_size; + int i; + char temp[32]; + + lcd_printf ("%s\n", U_BOOT_VERSION); + lcd_printf ("(C) 2008 ATMEL Corp\n"); + lcd_printf ("at91support@atmel.com\n"); + lcd_printf ("%s CPU at %s MHz\n", + AT91_CPU_NAME, + strmhz(temp, AT91_MAIN_CLOCK)); + + dram_size = 0; + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) + dram_size += gd->bd->bi_dram[i].size; + nand_size = 0; + for (i = 0; i < CFG_MAX_NAND_DEVICE; i++) + nand_size += nand_info[i].size; + lcd_printf (" %ld MB SDRAM, %ld MB NAND\n", + dram_size >> 20, + nand_size >> 20 ); +} +#endif /* CONFIG_LCD_INFO */ #endif
int board_init(void) diff --git a/board/atmel/at91sam9263ek/at91sam9263ek.c b/board/atmel/at91sam9263ek/at91sam9263ek.c index 927fc91..84db2c5 100644 --- a/board/atmel/at91sam9263ek/at91sam9263ek.c +++ b/board/atmel/at91sam9263ek/at91sam9263ek.c @@ -258,6 +258,35 @@ static void at91sam9263ek_lcd_hw_init(void)
gd->fb_base = AT91SAM9263_SRAM0_BASE; } + +#ifdef CONFIG_LCD_INFO +#include <nand.h> +#include <version.h> + +void lcd_show_board_info(void) +{ + ulong dram_size, nand_size; + int i; + char temp[32]; + + lcd_printf ("%s\n", U_BOOT_VERSION); + lcd_printf ("(C) 2008 ATMEL Corp\n"); + lcd_printf ("at91support@atmel.com\n"); + lcd_printf ("%s CPU at %s MHz\n", + AT91_CPU_NAME, + strmhz(temp, AT91_MAIN_CLOCK)); + + dram_size = 0; + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) + dram_size += gd->bd->bi_dram[i].size; + nand_size = 0; + for (i = 0; i < CFG_MAX_NAND_DEVICE; i++) + nand_size += nand_info[i].size; + lcd_printf (" %ld MB SDRAM, %ld MB NAND\n", + dram_size >> 20, + nand_size >> 20 ); +} +#endif /* CONFIG_LCD_INFO */ #endif
int board_init(void) diff --git a/board/atmel/at91sam9rlek/at91sam9rlek.c b/board/atmel/at91sam9rlek/at91sam9rlek.c index 509e7c3..22115e5 100644 --- a/board/atmel/at91sam9rlek/at91sam9rlek.c +++ b/board/atmel/at91sam9rlek/at91sam9rlek.c @@ -181,6 +181,35 @@ static void at91sam9rlek_lcd_hw_init(void)
gd->fb_base = 0; } + +#ifdef CONFIG_LCD_INFO +#include <nand.h> +#include <version.h> + +void lcd_show_board_info(void) +{ + ulong dram_size, nand_size; + int i; + char temp[32]; + + lcd_printf ("%s\n", U_BOOT_VERSION); + lcd_printf ("(C) 2008 ATMEL Corp\n"); + lcd_printf ("at91support@atmel.com\n"); + lcd_printf ("%s CPU at %s MHz\n", + AT91_CPU_NAME, + strmhz(temp, AT91_MAIN_CLOCK)); + + dram_size = 0; + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) + dram_size += gd->bd->bi_dram[i].size; + nand_size = 0; + for (i = 0; i < CFG_MAX_NAND_DEVICE; i++) + nand_size += nand_info[i].size; + lcd_printf (" %ld MB SDRAM, %ld MB NAND\n", + dram_size >> 20, + nand_size >> 20 ); +} +#endif /* CONFIG_LCD_INFO */ #endif
diff --git a/board/lwmon/lwmon.c b/board/lwmon/lwmon.c index 4a2d8e4..695eddd 100644 --- a/board/lwmon/lwmon.c +++ b/board/lwmon/lwmon.c @@ -759,6 +759,35 @@ static uchar *key_match (uchar *kbd_data) } #endif /* CONFIG_PREBOOT */
+#ifdef CONFIG_LCD_INFO +#include <lcd.h> +#include <version.h> + +void lcd_show_board_info(void) +{ + char temp[32]; + + lcd_printf ("%s (%s - %s)\n", U_BOOT_VERSION, __DATE__, __TIME__); + lcd_printf ("(C) 2008 DENX Software Engineering GmbH\n"); + lcd_printf (" Wolfgang DENK, wd@denx.de\n"); +#ifdef CONFIG_LCD_INFO_BELOW_LOGO + lcd_printf ("MPC823 CPU at %s MHz\n", + strmhz(temp, gd->cpu_clk)); + lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 3, + info, strlen(info)); + lcd_printf (" %ld MB RAM, %ld MB Flash\n", + gd->ram_size >> 20, + gd->bd->bi_flashsize >> 20 ); +#else + /* leave one blank line */ + lcd_printf ("\nMPC823 CPU at %s MHz, %ld MB RAM, %ld MB Flash\n", + strmhz(temp, gd->cpu_clk), + gd->ram_size >> 20, + gd->bd->bi_flashsize >> 20 ); +#endif /* CONFIG_LCD_INFO_BELOW_LOGO */ +} +#endif /* CONFIG_LCD_INFO */ + /*---------------Board Special Commands: PIC read/write ---------------*/
#if defined(CONFIG_CMD_BSP) diff --git a/board/tqc/tqm8xx/tqm8xx.c b/board/tqc/tqm8xx/tqm8xx.c index 96b6103..ea89d5a 100644 --- a/board/tqc/tqm8xx/tqm8xx.c +++ b/board/tqc/tqm8xx/tqm8xx.c @@ -504,6 +504,32 @@ int misc_init_r (void) } #endif /* CONFIG_NSCU */
+#ifdef CONFIG_LCD_INFO +#include <lcd.h> + +void lcd_show_board_info(void) +{ + lcd_printf ("%s (%s - %s)\n", U_BOOT_VERSION, __DATE__, __TIME__); + lcd_printf ("(C) 2008 DENX Software Engineering GmbH\n"); + lcd_printf (" Wolfgang DENK, wd@denx.de\n"); +#ifdef CONFIG_LCD_INFO_BELOW_LOGO + lcd_printf ("MPC823 CPU at %s MHz\n", + strmhz(temp, gd->cpu_clk)); + lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 3, + info, strlen(info)); + lcd_printf (" %ld MB RAM, %ld MB Flash\n", + gd->ram_size >> 20, + gd->bd->bi_flashsize >> 20 ); +#else + /* leave one blank line */ + lcd_printf ("\nMPC823 CPU at %s MHz, %ld MB RAM, %ld MB Flash\n", + strmhz(temp, gd->cpu_clk), + gd->ram_size >> 20, + gd->bd->bi_flashsize >> 20 ); +#endif /* CONFIG_LCD_INFO_BELOW_LOGO */ +} +#endif /* CONFIG_LCD_INFO */ + /* ---------------------------------------------------------------------------- */ /* TK885D specific initializaion */ /* ---------------------------------------------------------------------------- */ diff --git a/common/lcd.c b/common/lcd.c index 6ad2133..c97e5a4 100644 --- a/common/lcd.c +++ b/common/lcd.c @@ -52,7 +52,6 @@
#if defined(CONFIG_ATMEL_LCD) #include <atmel_lcdc.h> -#include <nand.h> #endif
/************************************************************************/ @@ -762,15 +761,6 @@ extern bmp_image_t *gunzip_bmp(unsigned long addr, unsigned long *lenp);
static void *lcd_logo (void) { -#ifdef CONFIG_LCD_INFO - char info[80]; - char temp[32]; -#ifdef CONFIG_ATMEL_LCD - int i; - ulong dram_size, nand_size; -#endif -#endif /* CONFIG_LCD_INFO */ - #ifdef CONFIG_SPLASH_SCREEN char *s; ulong addr; @@ -800,75 +790,11 @@ static void *lcd_logo (void) bitmap_plot (0, 0); #endif /* CONFIG_LCD_LOGO */
-#ifdef CONFIG_MPC823 -# ifdef CONFIG_LCD_INFO - sprintf (info, "%s (%s - %s) ", U_BOOT_VERSION, __DATE__, __TIME__); - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y, (uchar *)info, strlen(info)); - - sprintf (info, "(C) 2008 DENX Software Engineering GmbH"); - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT, - (uchar *)info, strlen(info)); - - sprintf (info, " Wolfgang DENK, wd@denx.de"); - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 2, - (uchar *)info, strlen(info)); -# ifdef CONFIG_LCD_INFO_BELOW_LOGO - sprintf (info, "MPC823 CPU at %s MHz", - strmhz(temp, gd->cpu_clk)); - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 3, - info, strlen(info)); - sprintf (info, " %ld MB RAM, %ld MB Flash", - gd->ram_size >> 20, - gd->bd->bi_flashsize >> 20 ); - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 4, - info, strlen(info)); -# else - /* leave one blank line */ - - sprintf (info, "MPC823 CPU at %s MHz, %ld MB RAM, %ld MB Flash", - strmhz(temp, gd->cpu_clk), - gd->ram_size >> 20, - gd->bd->bi_flashsize >> 20 ); - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 4, - (uchar *)info, strlen(info)); - -# endif /* CONFIG_LCD_INFO_BELOW_LOGO */ -# endif /* CONFIG_LCD_INFO */ -#endif /* CONFIG_MPC823 */ - -#ifdef CONFIG_ATMEL_LCD -# ifdef CONFIG_LCD_INFO - sprintf (info, "%s", U_BOOT_VERSION); - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y, (uchar *)info, strlen(info)); - - sprintf (info, "(C) 2008 ATMEL Corp"); - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT, - (uchar *)info, strlen(info)); - - sprintf (info, "at91support@atmel.com"); - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 2, - (uchar *)info, strlen(info)); - - sprintf (info, "%s CPU at %s MHz", - AT91_CPU_NAME, - strmhz(temp, AT91_MAIN_CLOCK)); - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 3, - (uchar *)info, strlen(info)); - - dram_size = 0; - for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) - dram_size += gd->bd->bi_dram[i].size; - nand_size = 0; - for (i = 0; i < CFG_MAX_NAND_DEVICE; i++) - nand_size += nand_info[i].size; - sprintf (info, " %ld MB SDRAM, %ld MB NAND", - dram_size >> 20, - nand_size >> 20 ); - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 4, - (uchar *)info, strlen(info)); -# endif /* CONFIG_LCD_INFO */ -#endif /* CONFIG_ATMEL_LCD */ - +#ifdef CONFIG_LCD_INFO + console_col = LCD_INFO_X / VIDEO_FONT_WIDTH; + console_row = LCD_INFO_Y / VIDEO_FONT_HEIGHT; + lcd_show_board_info(); +#endif /* CONFIG_LCD_INFO */
#if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO) return ((void *)((ulong)lcd_base + BMP_LOGO_HEIGHT * lcd_line_length)); diff --git a/include/lcd.h b/include/lcd.h index 44ac8ef..ead9e1d 100644 --- a/include/lcd.h +++ b/include/lcd.h @@ -197,6 +197,8 @@ void lcd_putc (const char c); void lcd_puts (const char *s); void lcd_printf (const char *fmt, ...);
+/* Allow boards to customize the information displayed */ +void lcd_show_board_info(void);
/************************************************************************/ /* ** BITMAP DISPLAY SUPPORT */

Haavard Skinnemoen wrote:
The information displayed when CONFIG_LCD_INFO is set is inherently board-specific, so it should be done by the board code. The current code dealing with this only handles two cases, and is already a horrible mess of #ifdeffery.
Yes, this duplicates some code, but it also allows boards to print more board-specific information; this used to be very difficult.
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com
board/atmel/at91cap9adk/at91cap9adk.c | 29 ++++++++++ board/atmel/at91sam9261ek/at91sam9261ek.c | 29 ++++++++++ board/atmel/at91sam9263ek/at91sam9263ek.c | 29 ++++++++++ board/atmel/at91sam9rlek/at91sam9rlek.c | 29 ++++++++++ board/lwmon/lwmon.c | 29 ++++++++++ board/tqc/tqm8xx/tqm8xx.c | 26 +++++++++ common/lcd.c | 84 ++--------------------------- include/lcd.h | 2 + 8 files changed, 178 insertions(+), 79 deletions(-)
Jean-Christophe, you ACKed this patch in http://lists.denx.de/pipermail/u-boot/2008-October/042389.html.
Should it go through u-boot-video repository or do you intend to pick it up?
Note that it needs some fixes: s/CFG_MAX_NAND_DEVICE/CONFIG_SYS_MAX_NAND_DEVICE
Best regards, Anatolij

On 00:23 Sun 26 Oct , Anatolij Gustschin wrote:
Haavard Skinnemoen wrote:
The information displayed when CONFIG_LCD_INFO is set is inherently board-specific, so it should be done by the board code. The current code dealing with this only handles two cases, and is already a horrible mess of #ifdeffery.
Yes, this duplicates some code, but it also allows boards to print more board-specific information; this used to be very difficult.
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com
board/atmel/at91cap9adk/at91cap9adk.c | 29 ++++++++++ board/atmel/at91sam9261ek/at91sam9261ek.c | 29 ++++++++++ board/atmel/at91sam9263ek/at91sam9263ek.c | 29 ++++++++++ board/atmel/at91sam9rlek/at91sam9rlek.c | 29 ++++++++++ board/lwmon/lwmon.c | 29 ++++++++++ board/tqc/tqm8xx/tqm8xx.c | 26 +++++++++ common/lcd.c | 84 ++--------------------------- include/lcd.h | 2 + 8 files changed, 178 insertions(+), 79 deletions(-)
Jean-Christophe, you ACKed this patch in http://lists.denx.de/pipermail/u-boot/2008-October/042389.html.
Should it go through u-boot-video repository or do you intend to pick it up?
Note that it needs some fixes: s/CFG_MAX_NAND_DEVICE/CONFIG_SYS_MAX_NAND_DEVICE
Apply it I'll pull your tree when you've done
Best Regards, J.

Haavard Skinnemoen wrote:
The information displayed when CONFIG_LCD_INFO is set is inherently board-specific, so it should be done by the board code. The current code dealing with this only handles two cases, and is already a horrible mess of #ifdeffery.
Yes, this duplicates some code, but it also allows boards to print more board-specific information; this used to be very difficult.
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com
board/atmel/at91cap9adk/at91cap9adk.c | 29 ++++++++++ board/atmel/at91sam9261ek/at91sam9261ek.c | 29 ++++++++++ board/atmel/at91sam9263ek/at91sam9263ek.c | 29 ++++++++++ board/atmel/at91sam9rlek/at91sam9rlek.c | 29 ++++++++++ board/lwmon/lwmon.c | 29 ++++++++++ board/tqc/tqm8xx/tqm8xx.c | 26 +++++++++ common/lcd.c | 84 ++--------------------------- include/lcd.h | 2 + 8 files changed, 178 insertions(+), 79 deletions(-)
Applied to u-boot-video/master repo. Thanks!
Also fixed by s/CFG_MAX_NAND_DEVICE/CONFIG_SYS_MAX_NAND_DEVICE as it is needed since commit 6d0f6bcf337c5261c08fabe12982178c2c489d76.
Best regards, Anatolij

Haavard Skinnemoen wrote:
This allows the logo/info rendering routines to use the regular lcd_putc/lcd_puts/lcd_printf calls.
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com
Applied to u-boot-video/master repo. Thanks.
Best regards, Anatolij

Haavard Skinnemoen wrote:
lcd_printf() has a prototype in include/lcd.h but no implementation. Fix this by borrowing the lcd_printf() implementation from the cogent board code (which appears to use its own LCD framework.)
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com
Applied to u-boot-video/master repo. Thanks.
Also fixed it by s/CFG_PBSIZE/CONFIG_SYS_PBSIZE as it is needed since commit 6d0f6bcf337c5261c08fabe12982178c2c489d76.
Best regards, Anatolij

Dear Anatolij Gustschin,
In message 49039383.3080501@denx.de you wrote:
Haavard Skinnemoen wrote:
lcd_printf() has a prototype in include/lcd.h but no implementation. Fix this by borrowing the lcd_printf() implementation from the cogent board code (which appears to use its own LCD framework.)
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com
Applied to u-boot-video/master repo. Thanks.
Also fixed it by s/CFG_PBSIZE/CONFIG_SYS_PBSIZE as it is needed since commit 6d0f6bcf337c5261c08fabe12982178c2c489d76.
Can you please send a pull request for u-boot-video soon?
Thanks in advance.
Best regards,
Wolfgang Denk

Hi Haavard,
If the board _didn't_ request INVLINE_INVERTED, we set INVLINE_INVERTED, otherwise we don't. WTF?
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com
drivers/video/atmel_lcdfb.c | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c index 7f0dceb..3a51cc7 100644 --- a/drivers/video/atmel_lcdfb.c +++ b/drivers/video/atmel_lcdfb.c @@ -107,10 +107,7 @@ void lcd_ctrl_init(void *lcdbase) if (panel_info.vl_tft) value |= ATMEL_LCDC_DISTYPE_TFT;
- if (!(panel_info.vl_sync & ATMEL_LCDC_INVLINE_INVERTED))
value |= ATMEL_LCDC_INVLINE_INVERTED;
- if (!(panel_info.vl_sync & ATMEL_LCDC_INVFRAME_INVERTED))
value |= ATMEL_LCDC_INVFRAME_INVERTED;
- value |= panel_info.vl_sync;
What about
value |= panel_info.vl_sync & (ATMEL_LCDC_INVLINE_INVERTED | ATMEL_LCDC_INVFRAME_INVERTED);
[break lines where convenient] Apart from this being the formal equivalent to the original code, this would make it more clear what can go in, no?
Cheers Detlev

Detlev Zundel dzu@denx.de wrote:
What about
value |= panel_info.vl_sync & (ATMEL_LCDC_INVLINE_INVERTED | ATMEL_LCDC_INVFRAME_INVERTED);
[break lines where convenient] Apart from this being the formal equivalent to the original code, this would make it more clear what can go in, no?
Well, there's also INVVD, INVCLK and INVDVAL which the original code doesn't care about at all. I'm not sure if all of them are suitable for the vl_sync field, but perhaps the field should be renamed.
In Linux, there's just a default_lcdcon2 field which the board code can use to set any flags it wants. I'm not sure if the driver should really bother too much about those flags anyway -- almost all of them depend on the type of display, how it's hooked up, etc.
Haavard

Haavard Skinnemoen wrote:
If the board _didn't_ request INVLINE_INVERTED, we set INVLINE_INVERTED, otherwise we don't. WTF?
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com
Applied to u-boot-video/master repo. Thanks.
Best regards, Anatolij

Haavard Skinnemoen wrote:
atmel_lcdfb doesn't actually need anything from asm/arch/hardware.h. It includes a file that does, asm/arch/gpio.h, but this file doesn't include <asm/arch/hardware.h> like it's supposed to.
Add the missing include to asm/arch/gpio.h and remove the workaround from the atmel_lcdfb driver. This makes the driver compile on avr32.
Signed-off-by: Haavard Skinnemoen haavard.skinnemoen@atmel.com
Applied to u-boot-video repository. Thanks.
Jean-Christophe ACKed this in
http://lists.denx.de/pipermail/u-boot/2008-October/042389.html
so I'm going to push it through u-boot-video repo.
Best regards, Anatolij
participants (5)
-
Anatolij Gustschin
-
Detlev Zundel
-
Haavard Skinnemoen
-
Jean-Christophe PLAGNIOL-VILLARD
-
Wolfgang Denk