[U-Boot] [PATCH 0/2] Update i386 code (sc520_cdp)
Graeme Russ
graeme.russ at gmail.com
Sat Sep 6 15:16:53 CEST 2008
This is the first time I have submitted to an open source project, so
please bear with me...
I have been trying to compile U-Boot for a custom AMD SC520 board for
the last few weeks. I started on the 1.3.4 release but figured it
would be for the betterment of U-Boot to get the i386 code base back
in line with the master branch. As far as I can tell, the i386 / sc520
ports have not been actively developed for some time (maybe as far
back as 2003/2004). If anyone else on this list has build for i386 /
sc520 using a recent commit, can you please let me know.
My build environment is:
- Ubuntu 8.04 (i86_32)
- gcc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)
- GNU Make 3.81
- Eclipse Version: 3.4.0
In my efforts, I think I may have uncovered a few issues which go
beyond the i386 port. These mainly relate to PCI and ATA as described
below. As a result, I have had to temporarily disable support for
SATA, PCI and VIDEO for the sc520_cdp board. I have added a #define
GRUSS_TESTING in /inlude/configs/sc520_cdp.h which is used to
conditionally undefine:
CONFIG_CMD_SATA
CFG_SATA_MAXBUS
CFG_SATA_DEVS_PER_BUS
CFG_SATA_MAX_DEVICE
CONFIG_ATA_PIIX
CONFIG_VIDEO
CONFIG_PCI
CONFIG_PCI_PNP
CONFIG_PCI_SCAN_SHOW
Some #ifdef CONFIG_PCI and #ifdef CONFIG_VIDEO have been added to
/lib_i386/video_bios.c and /lib_i386/bios_setup.c to resolve several
compiler and linker warnings and errors as a result of removing PCI
and Video support
The detailed list of errors "sidestepped" by these 'hacks' is listed
below (apologies for the formatting - I probably should have included
compiler output)
file: /drivers/block/ata_piix.c
line 313
code:
printf ("ata%u is slow to respond,plz be patient\n", port);
error:
format '%u' expects type 'unsigned int', but argument 2 has type
'struct sata_port *'
line 321
code:
printf ("ata%u failed to respond : ", port);
error:
format '%u' expects type 'unsigned int', but argument 2 has type
'struct sata_port *'
line 366
code:
input_data (&port[num].ioaddr, (ulong *) iobuf, ATA_SECTORWORDS);
error:
dereferencing type-punned pointer will break strict-aliasing rules
lines 392 to 397
code:
sata_cpy (sata_dev_desc[devno].revision, iop->fw_rev,
sizeof (sata_dev_desc[devno].revision));
sata_cpy (sata_dev_desc[devno].vendor, iop->model,
sizeof (sata_dev_desc[devno].vendor));
sata_cpy (sata_dev_desc[devno].product, iop->serial_no,
sizeof (sata_dev_desc[devno].product));
error:
pointer targets in passing argument 1 of 'sata_cpy' differ in signedness
file: /drivers/block/ata_piix.h
lines 45 to 49
code:
#define ata_id_u64(id,n) \
(((u64) (id)[(n) + 3] << 48) | \
((u64) (id)[(n) + 2] << 32) | \
((u64) (id)[(n) + 1] << 16) | \
((u64) (id)[(n) + 0]) )
error:
"ata_id_u64" redefined
lines 53 to 67
code:
static inline void
ata_dump_id (u16 * id)
{
PRINTF ("49 = 0x%04x "
"53 = 0x%04x "
"63 = 0x%04x "
"64 = 0x%04x "
"75 = 0x%04x \n", id[49], id[53], id[63], id[64], id[75]);
PRINTF ("80 = 0x%04x "
"81 = 0x%04x "
"82 = 0x%04x "
"83 = 0x%04x "
"84 = 0x%04x \n", id[80], id[81], id[82], id[83], id[84]);
PRINTF ("88 = 0x%04x " "93 = 0x%04x\n", id[88], id[93]);
}
error:
static declaration of 'ata_dump_id' follows non-static declaration
file: /include/libata.h
lines 451 - 455
code:
#define ata_id_u64(id,n) \
( ((u64) (id)[(n) + 3] << 48) | \
((u64) (id)[(n) + 2] << 32) | \
((u64) (id)[(n) + 1] << 16) | \
((u64) (id)[(n) + 0]) )
error:
this is the location of the previous definition
line 666
code:
void ata_dump_id(u16 *id);
error:
previous declaration of 'ata_dump_id' was here
file: /lib_i386/video_bios.c
lines 88 to 90
code:
if ((devbusfn = pci_find_class(PCI_CLASS_VIDEO,
PCI_CLASS_VIDEO_STD,
PCI_CLASS_VIDEO_PROG_IF_VGA, 0)) != -1) {
error:
undefined reference to `pci_find_class'
More information about the U-Boot
mailing list