[U-Boot-Users] PATCH: bootsplash for pxa
Wolfgang Denk
wd at denx.de
Thu Aug 5 19:09:10 CEST 2004
Dear Himba,
in message <41125EF9.40607 at siol.net> you wrote:
>
> CHANGELOG:
> Patch by Hinko Kocevar, 05 Aug 2004:
> Add support for bmp command and bootsplash feature under pxa
> Add support for ATAG_VIDEOLFB usage when LCD is used
I'm sorry, but I have to reject this patch.
--- u-boot/lib_arm/armlinux.c~xcep-lcd 2004-08-04 22:40:27.000000000 +0200
+++ u-boot/lib_arm/armlinux.c 2004-08-04 23:10:20.000000000 +0200
...
@@ -365,8 +365,16 @@
params->hdr.size = tag_size (tag_videolfb);
params->u.videolfb.lfb_base = (u32) gd->fb_base;
- /* 7168 = 256*4*56/8 - actually 2 pages (8192 bytes) are allocated */
- params->u.videolfb.lfb_size = 7168;
+ /* 80896 = (320*240) + PAGE_SIZE; for 8bpp and not page aligned
+ * UPDATE: lcd_setmem is not needed to get fb working, because
+ * we are not relocating the code properly. 80896b includes
+ * palette also - see pxafb_init_mem() for (al)location!
+ * layout of the mem block:
+ * FB
+ * DMA descriptors
+ * palette
+ */
+ params->u.videolfb.lfb_size = 80896;
I cannot accept this. So far, on the TRAB board only 7 kB of memory
were allocated for the VFD buffer, and now you hard-wire 79 kB
instead - more than 10 times more than before!
I agree that it's bad to have a hardwired value, but it's even worse
to simply overwrite it. Your modification breaks U-Boot on the TRAB
board. Please fix this.
[I recommend to make the actual value configurable in the board's
config file.]
--- u-boot/common/cmd_bmp.c~xcep-lcd 2004-08-04 22:40:55.000000000 +0200
+++ u-boot/common/cmd_bmp.c 2004-08-04 23:35:37.000000000 +0200
@@ -28,6 +28,7 @@
#include <common.h>
#include <bmp_layout.h>
#include <command.h>
+#include <linux/byteorder/little_endian.h>
You should NEVER include linux/byteorder/little_endian.h!!! Always
include <asm/byteorder.h> only. Anything else is broken.
--- u-boot/cpu/pxa/pxafb.c~xcep-lcd 2004-08-04 22:40:27.000000000 +0200
+++ u-boot/cpu/pxa/pxafb.c 2004-08-04 23:34:49.000000000 +0200
@@ -34,6 +34,7 @@
#include <linux/types.h>
#include <devices.h>
#include <asm/arch/pxa-regs.h>
+#include <linux/byteorder/little_endian.h>
Same here.
@@ -604,7 +643,7 @@
lcd_line_length = (panel_info.vl_col * NBITS (panel_info.vl_bpix)) / 8;
lcd_init (lcd_base); /* LCD initialization */
-
+
PLEASE DO NOT ADD TRAILING WHITE SPACE!!!
+int lcd_display_bitmap(ulong bmp_image, int x, int y)
+{
+ ushort *cmap;
+ ushort i, j;
+ uchar *fb;
+ bmp_image_t *bmp=(bmp_image_t *)bmp_image;
+ uchar *bmap;
+ ushort padded_line;
+ unsigned long width, height;
+ unsigned colors,bpix;
+ unsigned long compression;
+ struct pxafb_info *fbi = &panel_info.pxa;
+
+
+ if (!((bmp->header.signature[0]=='B') &&
+ (bmp->header.signature[1]=='M'))) {
+ printf ("Error: no valid bmp image at %lx\n", bmp_image);
+ return 1;
+ }
+
+ width = le32_to_cpu (bmp->header.width);
+ height = le32_to_cpu (bmp->header.height);
+ colors = 1<<le16_to_cpu (bmp->header.bit_count);
+ compression = le32_to_cpu (bmp->header.compression);
...
This code looks like a 1:1 copy of the same function in
"cpu/mpc8xx/lcd.c". Instead of duplicating the code, we should factor
it out into a common source file.
Please fix these issues and resubmit.
Best regards,
Wolfgang Denk
--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de
Is a computer language with goto's totally Wirth-less?
More information about the U-Boot
mailing list