[U-Boot] [PATCH 1/2] Update i386 code (sc520_cdp) - Last gasp attempt

Graeme Russ graeme.russ at gmail.com
Sun Sep 7 02:23:01 CEST 2008


OK, Thunderbird is not wrapping my email to gmail and gmail is not
stripping white spaces when I forward

This should not be that hard :(

Its really sad when fixing the code is easier than submitting the patch :)

Attempt to bring i386 / sc520 inline with master

Signed-off-by: Graeme Russ <graeme.russ at gmail.com>


diff --git a/board/sc520_cdp/sc520_cdp.c b/board/sc520_cdp/sc520_cdp.c
index f21c730..bfb473e 100644
--- a/board/sc520_cdp/sc520_cdp.c
+++ b/board/sc520_cdp/sc520_cdp.c
@@ -114,7 +114,7 @@ static void irq_init(void)

}

-
+#ifdef CONFIG_PCI
/* PCI stuff */
static void pci_sc520_cdp_fixup_irq(struct pci_controller *hose, pci_dev_t dev)
{
@@ -129,7 +129,7 @@ static void pci_sc520_cdp_fixup_irq(struct
pci_controller *hose, pci_dev_t dev)
   };
   static int next_irq_index=0;

-    char tmp_pin;
+    uchar tmp_pin;
   int pin;

   pci_hose_read_config_byte(hose, dev, PCI_INTERRUPT_PIN, &tmp_pin);
@@ -193,7 +193,7 @@ void pci_init_board(void)
{
   pci_sc520_init(&sc520_cdp_hose);
}
-
+#endif

static void silence_uart(int port)
{
@@ -563,12 +563,12 @@ void spi_eeprom_probe(int x)
{
}

-int spi_eeprom_read(int x, int offset, char *buffer, int len)
+int spi_eeprom_read(int x, int offset, uchar *buffer, int len)
{
      return 0;
}

-int spi_eeprom_write(int x, int offset, char *buffer, int len)
+int spi_eeprom_write(int x, int offset, uchar *buffer, int len)
{
      return 0;
}
diff --git a/drivers/mtd/mw_eeprom.c b/drivers/mtd/mw_eeprom.c
index f32ced4..f7791b5 100644
--- a/drivers/mtd/mw_eeprom.c
+++ b/drivers/mtd/mw_eeprom.c
@@ -1,7 +1,7 @@
/* Three-wire (MicroWire) serial eeprom driver (for 93C46 and compatibles) */

#include <common.h>
-#include <ssi.h>
+#include <asm/ic/ssi.h>

/*
 * Serial EEPROM opcodes, including start bit
diff --git a/examples/82559_eeprom.c b/examples/82559_eeprom.c
index 1a121d4..d99af26 100644
--- a/examples/82559_eeprom.c
+++ b/examples/82559_eeprom.c
@@ -51,13 +51,17 @@ static inline unsigned short swap16(unsigned short x)
}


-static inline void *memcpy(void *dst, const void *src, unsigned int len)
+void * memcpy(void * dest,const void *src,size_t count)
{
-    void * ret = dst;
-    while (len-- > 0) *((char *)dst)++ = *((char *)src)++;
-    return ret;
+    char *tmp = (char *) dest, *s = (char *) src;
+
+    while (count--)
+        *tmp++ = *s++;
+
+    return dest;
}

+
/* The EEPROM commands include the alway-set leading bit. */
#define EE_WRITE_CMD    (5)
#define EE_READ_CMD        (6)
@@ -156,7 +160,7 @@ static int reset_eeprom(unsigned long ioaddr,
unsigned char *hwaddr)
   int size_test;
   int i;

-    printf("Resetting i82559 EEPROM @ 0x%08x ... ", ioaddr);
+    printf("Resetting i82559 EEPROM @ 0x%08lx ... ", ioaddr);

   size_test = do_eeprom_cmd(ioaddr, (EE_READ_CMD << 8) << 16, 27);
   eeprom_addr_size = (size_test & 0xffe0000) == 0xffe0000 ? 8 : 6;
@@ -305,7 +309,7 @@ write_config_word(int bus, int dev, int func, int
reg, u16 data)
int main (int argc, char *argv[])
{
   unsigned char *eth_addr;
-    char buf[6];
+    uchar buf[6];
   int instance;

   app_startup(argv);
diff --git a/include/asm-i386/byteorder.h b/include/asm-i386/byteorder.h
index a9c69d5..7dfeb8b 100644
--- a/include/asm-i386/byteorder.h
+++ b/include/asm-i386/byteorder.h
@@ -6,7 +6,7 @@
#ifdef __GNUC__


-static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
+static __inline__ __u32 ___arch__swab32(__u32 x)
{
#ifdef CONFIG_X86_BSWAP
   __asm__("bswap %0" : "=r" (x) : "0" (x));
@@ -20,7 +20,7 @@ static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
   return x;
}

-static __inline__ __const__ __u16 ___arch__swab16(__u16 x)
+static __inline__ __u16 ___arch__swab16(__u16 x)
{
   __asm__("xchgb %b0,%h0"        /* swap bytes        */ \
       : "=q" (x) \
diff --git a/include/asm-i386/global_data.h b/include/asm-i386/global_data.h
index 5dfb595..f31bac6 100644
--- a/include/asm-i386/global_data.h
+++ b/include/asm-i386/global_data.h
@@ -58,8 +58,8 @@ typedef    struct {
#define    GD_FLG_POSTSTOP    0x00010        /* POST seqeunce aborted      */
#define    GD_FLG_LOGINIT    0x00020        /* Log Buffer has been
initialized    */

-extern gd_t *global_data;
+extern gd_t *gd;

-#define DECLARE_GLOBAL_DATA_PTR     gd_t *gd = global_data
+#define DECLARE_GLOBAL_DATA_PTR

#endif /* __ASM_GBL_DATA_H */
diff --git a/include/asm-i386/ic/ssi.h b/include/asm-i386/ic/ssi.h
new file mode 100644
index 0000000..bd48eab
--- /dev/null
+++ b/include/asm-i386/ic/ssi.h
@@ -0,0 +1,34 @@
+/*
+ * (C) Copyright 2008
+ * Graeme Russ <graeme.russ at gmail.com>.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef _ASM_IC_SSI_H_
+#define _ASM_IC_SSI_H_ 1
+
+int ssi_set_interface(int, int, int, int);
+void ssi_chip_select(int);
+u8 ssi_txrx_byte(u8);
+void ssi_tx_byte(u8);
+u8 ssi_rx_byte(void);
+
+
+#endif
diff --git a/include/asm-i386/pci.h b/include/asm-i386/pci.h
index bde9550..85f60d7 100644
--- a/include/asm-i386/pci.h
+++ b/include/asm-i386/pci.h
@@ -31,5 +31,4 @@ int pci_enable_legacy_video_ports(struct
pci_controller* hose);
int pci_shadow_rom(pci_dev_t dev, unsigned char *dest);
void pci_remove_rom_window(struct pci_controller* hose, u32 addr);
u32 pci_get_rom_window(struct pci_controller* hose, int size);
-
#endif
diff --git a/include/asm-i386/string.h b/include/asm-i386/string.h
index 91a23f9..3643a79 100644
--- a/include/asm-i386/string.h
+++ b/include/asm-i386/string.h
@@ -5,6 +5,8 @@
 * We don't do inline string functions, since the
 * optimised inline asm versions are not small.
 */
+#undef __HAVE_ARCH_STRNCPY
+extern char *strncpy(char *__dest, __const__ char *__src, __kernel_size_t __n);

#undef __HAVE_ARCH_STRRCHR
extern char * strrchr(const char * s, int c);
diff --git a/include/configs/sc520_cdp.h b/include/configs/sc520_cdp.h
index e29655e..6a73c90 100644
--- a/include/configs/sc520_cdp.h
+++ b/include/configs/sc520_cdp.h
@@ -28,6 +28,7 @@
#ifndef __CONFIG_H
#define __CONFIG_H

+#define GRUSS_TESTING
/*
 * High Level Configuration Options
 * (easy to change)
@@ -81,7 +82,11 @@
#include <config_cmd_default.h>

#define CONFIG_CMD_PCI
+#ifndef GRUSS_TESTING
#define CONFIG_CMD_SATA
+#else
+#undef CONFIG_CMD_SATA
+#endif
#define CONFIG_CMD_JFFS2
#define CONFIG_CMD_NET
#define CONFIG_CMD_EEPROM
@@ -175,10 +180,18 @@
/************************************************************
*SATA/Native Stuff
************************************************************/
+#ifndef GRUSS_TESTING
#define CFG_SATA_MAXBUS         2       /*Max Sata buses supported */
#define CFG_SATA_DEVS_PER_BUS   2      /*Max no. of devices per bus/port */
#define CFG_SATA_MAX_DEVICE     (CFG_SATA_MAXBUS* CFG_SATA_DEVS_PER_BUS)
#define CONFIG_ATA_PIIX        1       /*Supports ata_piix driver */
+#else
+#undef CFG_SATA_MAXBUS
+#undef CFG_SATA_DEVS_PER_BUS
+#undef CFG_SATA_MAX_DEVICE
+#undef CONFIG_ATA_PIIX
+#endif
+

/************************************************************
 * DISK Partition support
@@ -190,7 +203,11 @@
/************************************************************
 * Video/Keyboard support
 ************************************************************/
+#ifndef GRUSS_TESTING
#define CONFIG_VIDEO            /* To enable video controller support */
+#else
+#undef CONFIG_VIDEO
+#endif
#define CONFIG_I8042_KBD
#define CFG_ISA_IO 0

@@ -203,6 +220,7 @@
/*
 * PCI stuff
 */
+#ifndef GRUSS_TESTING
#define CONFIG_PCI                                /* include pci support */
#define CONFIG_PCI_PNP                            /* pci plug-and-play */
#define CONFIG_PCI_SCAN_SHOW
@@ -211,5 +229,11 @@
#define    CFG_SECOND_PCI_IRQ  9
#define CFG_THIRD_PCI_IRQ   11
#define    CFG_FORTH_PCI_IRQ   15
+#else
+#undef CONFIG_PCI
+#undef CONFIG_PCI_PNP
+#undef CONFIG_PCI_SCAN_SHOW
+#endif
+

#endif    /* __CONFIG_H */
diff --git a/include/image.h b/include/image.h
index 9be806e..e095a32 100644
--- a/include/image.h
+++ b/include/image.h
@@ -40,7 +40,7 @@
#include <lmb.h>
#include <linux/string.h>
#include <asm/u-boot.h>
-
+#include <asm/string.h>
#else

/* new uImage format support enabled on host */
diff --git a/lib_i386/bios_setup.c b/lib_i386/bios_setup.c
index 75f04a0..2018425 100644
--- a/lib_i386/bios_setup.c
+++ b/lib_i386/bios_setup.c
@@ -140,8 +140,9 @@ int bios_setup(void)
{
   static int done=0;
   int vector;
+#ifdef CONFIG_PCI
   struct pci_controller *pri_hose;
-
+#endif
   if (done) {
       return 0;
   }
@@ -223,12 +224,13 @@ int bios_setup(void)
    * (This, ofcause break on multi hose systems,
    *  but our PCI BIOS only support one hose anyway)
    */
+#ifdef CONFIG_PCI
   pri_hose = pci_bus_to_hose(0);
   if (NULL != pri_hose) {
       /* fill in last pci bus number for use by the realmode
        * PCI BIOS */
       RELOC_16_BYTE(0xf000, pci_last_bus) = pri_hose->last_busno;
   }
-
+#endif
   return 0;
}
diff --git a/lib_i386/board.c b/lib_i386/board.c
index 55fa42a..8103211 100644
--- a/lib_i386/board.c
+++ b/lib_i386/board.c
@@ -213,7 +213,7 @@ init_fnc_t *init_sequence[] = {
   NULL,
};

-gd_t *global_data;
+gd_t *gd;

void start_i386boot (void)
{
@@ -226,7 +226,7 @@ void start_i386boot (void)

   show_boot_progress(0x21);

-    gd = global_data = &gd_data;
+    gd = &gd_data;
   /* compiler optimization barrier needed for GCC >= 3.4 */
   __asm__ __volatile__("": : :"memory");

@@ -266,7 +266,7 @@ void start_i386boot (void)
       int i;
       ulong reg;
       char *s, *e;
-        uchar tmp[64];
+        char tmp[64];

       i = getenv_r ("ethaddr", tmp, sizeof (tmp));
       s = (i > 0) ? tmp : NULL;
@@ -412,7 +412,10 @@ void hang (void)
unsigned long do_go_exec (ulong (*entry)(int, char *[]), int argc, char *argv[])
{
   /*
-     * Nios function pointers are address >> 1
+     * TODO: Test this function - changed to fix compiler error.
+     * Original code was:
+     *   return (entry >> 1) (argc, argv);
+     * with a comment about Nios function pointers are address >> 1
    */
-    return (entry >> 1) (argc, argv);
+    return (entry) (argc, argv);
}
diff --git a/lib_i386/bootm.c b/lib_i386/bootm.c
index 522d7ad..613e339 100644
--- a/lib_i386/bootm.c
+++ b/lib_i386/bootm.c
@@ -34,7 +34,7 @@ int do_bootm_linux(int flag, int argc, char *argv[],
bootm_headers_t *images)
   void        *base_ptr;
   ulong        os_data, os_len;
   image_header_t    *hdr;
-    int        ret;
+
#if defined(CONFIG_FIT)
   const void    *data;
   size_t        len;
diff --git a/lib_i386/video_bios.c b/lib_i386/video_bios.c
index 45f78e2..02c2166 100644
--- a/lib_i386/video_bios.c
+++ b/lib_i386/video_bios.c
@@ -136,6 +136,8 @@ static u32 probe_pci_video(void)

#endif

+#ifdef CONFIG_VIDEO
+
static int probe_isa_video(void)
{
   u32 ptr;
@@ -217,3 +219,4 @@ int video_bios_init(void)
   return 1;

}
+#endif


More information about the U-Boot mailing list