summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile8
-rw-r--r--board/apollon/mem.c2
-rw-r--r--board/qemu-mips/Makefile2
-rw-r--r--board/qemu-mips/flash.c40
-rw-r--r--config.mk6
-rw-r--r--cpu/mcf52x2/interrupts.c2
-rw-r--r--drivers/mtd/cfi_flash.c7
-rw-r--r--drivers/net/uli526x.c10
-rw-r--r--include/api_public.h51
-rw-r--r--include/asm-ppc/fsl_law.h1
-rw-r--r--include/asm-ppc/mmu.h1
-rw-r--r--lib_mips/board.c16
-rw-r--r--lib_ppc/board.c22
-rw-r--r--post/lib_ppc/asm.S3
-rw-r--r--tools/easylogo/easylogo.c125
15 files changed, 175 insertions, 121 deletions
diff --git a/Makefile b/Makefile
index a731ee8..2790865 100644
--- a/Makefile
+++ b/Makefile
@@ -244,7 +244,7 @@ LIBS += libfdt/libfdt.a
LIBS += api/libapi.a
LIBS := $(addprefix $(obj),$(LIBS))
-.PHONY : $(LIBS)
+.PHONY : $(LIBS) $(VERSION_FILE)
# Add GCC lib
PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
@@ -326,6 +326,9 @@ $(LIBS): depend $(obj)include/autoconf.mk
$(SUBDIRS): depend $(obj)include/autoconf.mk
$(MAKE) -C $@ all
+$(LDSCRIPT): depend $(obj)include/autoconf.mk
+ $(MAKE) -C $(dir $@) $(notdir $@)
+
$(NAND_SPL): $(VERSION_FILE) $(obj)include/autoconf.mk
$(MAKE) -C nand_spl/board/$(BOARDDIR) all
@@ -411,6 +414,7 @@ $(obj)System.map: $(obj)u-boot
# to regenerate the autoconf.mk file.
$(obj)include/autoconf.mk: $(obj)include/config.h $(VERSION_FILE)
@$(XECHO) Generating include/autoconf.mk ; \
+ set -e ; \
: Generate the dependancies ; \
$(CC) -M $(HOST_CFLAGS) $(CPPFLAGS) -MQ $@ include/common.h > $@.dep ; \
: Extract the config macros ; \
@@ -1921,7 +1925,7 @@ M5485HFE_config : unconfig
M5485EFE_config) BOOT=2;CODE=0;VID=1;USB=1;RAM=64;RAM1=0;; \
M5485FFE_config) BOOT=2;CODE=32;VID=1;USB=1;RAM=64;RAM1=64;; \
M5485GFE_config) BOOT=4;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
- M5485HFE_config) BOOT=2;CODE=;VID=1;USB=0;RAM=64;RAM1=0;; \
+ M5485HFE_config) BOOT=2;CODE=16;VID=1;USB=0;RAM=64;RAM1=0;; \
esac; \
>include/config.h ; \
echo "#define CFG_BUSCLK 100000000" > $(obj)include/config.h ; \
diff --git a/board/apollon/mem.c b/board/apollon/mem.c
index c0edca5..0211c6a 100644
--- a/board/apollon/mem.c
+++ b/board/apollon/mem.c
@@ -198,6 +198,8 @@ void gpmc_init(void)
sdelay(2000);
/* setup cs2 */
+ __raw_writel(0x0, GPMC_CONFIG7_2); /* disable current map */
+ sdelay(1000);
__raw_writel(APOLLON_24XX_GPMC_CONFIG1_0 | mux | mtype | mwidth,
GPMC_CONFIG1_2);
/* It's same as cs 0 */
diff --git a/board/qemu-mips/Makefile b/board/qemu-mips/Makefile
index 23be447..837b6b9 100644
--- a/board/qemu-mips/Makefile
+++ b/board/qemu-mips/Makefile
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).a
-COBJS = $(BOARD).o flash.o
+COBJS = $(BOARD).o
SOBJS = lowlevel_init.o
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
diff --git a/board/qemu-mips/flash.c b/board/qemu-mips/flash.c
deleted file mode 100644
index e988272..0000000
--- a/board/qemu-mips/flash.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * 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
- */
-
-#include <common.h>
-/*-----------------------------------------------------------------------
- * flash_init()
- *
- * sets up flash_info and returns size of FLASH (bytes)
- */
-unsigned long flash_init(void)
-{
- printf("Skipping flash_init\n");
- return(0);
-}
-
-int write_buff(void *info, uchar *src, ulong addr, ulong cnt)
-{
- printf("write_buff not implemented\n");
- return(-1);
-}
diff --git a/config.mk b/config.mk
index ee057b5..22d3398 100644
--- a/config.mk
+++ b/config.mk
@@ -69,6 +69,9 @@ PLATFORM_CPPFLAGS+= -D__ARM__
endif
endif
+# Load generated board configuration
+sinclude $(OBJTREE)/include/autoconf.mk
+
ifdef ARCH
sinclude $(TOPDIR)/$(ARCH)_config.mk # include architecture dependend rules
endif
@@ -87,9 +90,6 @@ ifdef BOARD
sinclude $(TOPDIR)/board/$(BOARDDIR)/config.mk # include board specific rules
endif
-# Load generated board configuration
-sinclude $(OBJTREE)/include/autoconf.mk
-
#########################################################################
CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
diff --git a/cpu/mcf52x2/interrupts.c b/cpu/mcf52x2/interrupts.c
index 2ccbde5..9167cec 100644
--- a/cpu/mcf52x2/interrupts.c
+++ b/cpu/mcf52x2/interrupts.c
@@ -77,7 +77,7 @@ void dtimer_intr_setup(void)
volatile int0_t *intp = (int0_t *) (CFG_INTR_BASE);
intp->icr0[CFG_TMRINTR_NO] = CFG_TMRINTR_PRI;
- intp->imrl0 &= ~0xFFFFFFFE;
+ intp->imrl0 &= 0xFFFFFFFE;
intp->imrl0 &= ~CFG_TMRINTR_MASK;
}
#endif /* CONFIG_MCFTMR */
diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index eb509f5..439c950 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -1538,7 +1538,12 @@ static int __flash_detect_cfi (flash_info_t * info, struct cfi_qry *qry)
{
int cfi_offset;
- flash_write_cmd (info, 0, 0, info->cmd_reset);
+ /* We do not yet know what kind of commandset to use, so we issue
+ the reset command in both Intel and AMD variants, in the hope
+ that AMD flash roms ignore the Intel command. */
+ flash_write_cmd (info, 0, 0, AMD_CMD_RESET);
+ flash_write_cmd (info, 0, 0, FLASH_CMD_RESET);
+
for (cfi_offset=0;
cfi_offset < sizeof(flash_offset_cfi) / sizeof(uint);
cfi_offset++) {
diff --git a/drivers/net/uli526x.c b/drivers/net/uli526x.c
index 8460f69..d64845f 100644
--- a/drivers/net/uli526x.c
+++ b/drivers/net/uli526x.c
@@ -32,9 +32,9 @@
#define ULI5261_DEVICE_ID 0x5261
#define ULI5263_DEVICE_ID 0x5263
/* ULi M5261 ID*/
-#define PCI_ULI5261_ID ULI5261_DEVICE_ID << 16 | ULI_VENDOR_ID
+#define PCI_ULI5261_ID (ULI5261_DEVICE_ID << 16 | ULI_VENDOR_ID)
/* ULi M5263 ID*/
-#define PCI_ULI5263_ID ULI5263_DEVICE_ID << 16 | ULI_VENDOR_ID
+#define PCI_ULI5263_ID (ULI5263_DEVICE_ID << 16 | ULI_VENDOR_ID)
#define ULI526X_IO_SIZE 0x100
#define TX_DESC_CNT 0x10 /* Allocated Tx descriptors */
@@ -281,7 +281,7 @@ static int uli526x_init_one(struct eth_device *dev, bd_t *bis)
if (db->desc_pool_ptr == NULL)
return -1;
- db->buf_pool_ptr = &buf_pool[0];
+ db->buf_pool_ptr = (uchar *)&buf_pool[0];
db->buf_pool_dma_ptr = (dma_addr_t)&buf_pool[0];
if (db->buf_pool_ptr == NULL)
return -1;
@@ -588,7 +588,7 @@ static int uli526x_rx_packet(struct eth_device *dev)
__FUNCTION__, i, rxptr->rx_buf_ptr[i]);
#endif
- NetReceive(rxptr->rx_buf_ptr, rxlen);
+ NetReceive((uchar *)rxptr->rx_buf_ptr, rxlen);
uli526x_reuse_buf(rxptr);
} else {
@@ -656,7 +656,7 @@ static void uli526x_descriptor_init(struct uli526x_board_info *db,
tmp_tx_dma = db->first_tx_desc_dma;
for (tmp_tx = db->first_tx_desc, i = 0;
i < TX_DESC_CNT; i++, tmp_tx++) {
- tmp_tx->tx_buf_ptr = tmp_buf;
+ tmp_tx->tx_buf_ptr = (char *)tmp_buf;
tmp_tx->tdes0 = cpu_to_le32(0);
tmp_tx->tdes1 = cpu_to_le32(0x81000000); /* IC, chain */
tmp_tx->tdes2 = cpu_to_le32(tmp_buf_dma);
diff --git a/include/api_public.h b/include/api_public.h
index 690975e..9bc0501 100644
--- a/include/api_public.h
+++ b/include/api_public.h
@@ -1,3 +1,54 @@
+/*
+ * (C) Copyright 2007-2008 Semihalf
+ *
+ * Written by: Rafal Jaworowski <raj@semihalf.com>
+ *
+ * This file is dual licensed; you can use it under the terms of
+ * either the GPL, or the BSD license, at your option.
+ *
+ * I. GPL:
+ *
+ * This file 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 file 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
+ *
+ * Alternatively,
+ *
+ * II. BSD license:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
#ifndef _API_PUBLIC_H_
#define _API_PUBLIC_H_
diff --git a/include/asm-ppc/fsl_law.h b/include/asm-ppc/fsl_law.h
index 23bd505..e955c75 100644
--- a/include/asm-ppc/fsl_law.h
+++ b/include/asm-ppc/fsl_law.h
@@ -3,7 +3,6 @@
#include <asm/io.h>
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#define SET_LAW_ENTRY(idx, a, sz, trgt) \
{ .index = idx, .addr = a, .size = sz, .trgt_id = trgt }
diff --git a/include/asm-ppc/mmu.h b/include/asm-ppc/mmu.h
index ec1ca53..5af22af 100644
--- a/include/asm-ppc/mmu.h
+++ b/include/asm-ppc/mmu.h
@@ -427,7 +427,6 @@ extern void disable_tlb(u8 esel);
extern void invalidate_tlb(u8 tlb);
extern void init_tlbs(void);
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#define SET_TLB_ENTRY(_tlb, _epn, _rpn, _perms, _wimge, _ts, _esel, _sz, _iprot) \
{ .tlb = _tlb, .epn = _epn, .rpn = _rpn, .perms = _perms, \
.wimge = _wimge, .ts = _ts, .esel = _esel, .tsize = _sz, .iprot = _iprot }
diff --git a/lib_mips/board.c b/lib_mips/board.c
index c1a0acf..1645f2c 100644
--- a/lib_mips/board.c
+++ b/lib_mips/board.c
@@ -121,12 +121,13 @@ static int display_banner(void)
return (0);
}
+#ifndef CFG_NO_FLASH
static void display_flash_config(ulong size)
{
puts ("Flash: ");
print_size (size, "\n");
}
-
+#endif
static int init_baudrate (void)
{
@@ -247,7 +248,7 @@ void board_init_f(ulong bootflag)
debug ("Reserving %d Bytes for Global Data at: %08lx\n",
sizeof (gd_t), addr_sp);
- /* Reserve memory for boot params.
+ /* Reserve memory for boot params.
*/
addr_sp -= CFG_BOOTPARAMS_LEN;
bd->bi_boot_params = addr_sp;
@@ -301,7 +302,9 @@ void board_init_f(ulong bootflag)
void board_init_r (gd_t *id, ulong dest_addr)
{
cmd_tbl_t *cmdtp;
+#ifndef CFG_NO_FLASH
ulong size;
+#endif
extern void malloc_bin_reloc (void);
#ifndef CFG_ENV_IS_NOWHERE
extern char * env_name_spec;
@@ -322,7 +325,7 @@ void board_init_r (gd_t *id, ulong dest_addr)
/*
* We have to relocate the command table manually
*/
- for (cmdtp = &__u_boot_cmd_start; cmdtp != &__u_boot_cmd_end; cmdtp++) {
+ for (cmdtp = &__u_boot_cmd_start; cmdtp != &__u_boot_cmd_end; cmdtp++) {
ulong addr;
addr = (ulong) (cmdtp->cmd) + gd->reloc_off;
@@ -352,13 +355,16 @@ void board_init_r (gd_t *id, ulong dest_addr)
env_name_spec += gd->reloc_off;
#endif
+ bd = gd->bd;
+
+#ifndef CFG_NO_FLASH
/* configure available FLASH banks */
size = flash_init();
display_flash_config (size);
+ bd->bi_flashsize = size;
+#endif
- bd = gd->bd;
bd->bi_flashstart = CFG_FLASH_BASE;
- bd->bi_flashsize = size;
#if CFG_MONITOR_BASE == CFG_FLASH_BASE
bd->bi_flashoffset = monitor_flash_len; /* reserved area for U-Boot */
#else
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index 45d1328..fbf1c5d 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -361,6 +361,20 @@ init_fnc_t *init_sequence[] = {
NULL, /* Terminate this list */
};
+#ifndef CONFIG_MAX_MEM_MAPPED
+#define CONFIG_MAX_MEM_MAPPED (256 << 20)
+#endif
+ulong get_effective_memsize(void)
+{
+#ifndef CONFIG_VERY_BIG_RAM
+ return gd->ram_size;
+#else
+ /* limit stack to what we can reasonable map */
+ return ((gd->ram_size > CONFIG_MAX_MEM_MAPPED) ?
+ CONFIG_MAX_MEM_MAPPED : gd->ram_size);
+#endif
+}
+
/************************************************************************
*
* This is the first part of the initialization sequence that is
@@ -419,13 +433,7 @@ void board_init_f (ulong bootflag)
*/
len = (ulong)&_end - CFG_MONITOR_BASE;
-#ifndef CONFIG_VERY_BIG_RAM
- addr = CFG_SDRAM_BASE + gd->ram_size;
-#else
- /* only allow stack below 256M */
- addr = CFG_SDRAM_BASE +
- (gd->ram_size > 256 << 20) ? 256 << 20 : gd->ram_size;
-#endif
+ addr = CFG_SDRAM_BASE + get_effective_memsize();
#ifdef CONFIG_LOGBUFFER
/* reserve kernel log buffer */
diff --git a/post/lib_ppc/asm.S b/post/lib_ppc/asm.S
index 5e72b34..1279176 100644
--- a/post/lib_ppc/asm.S
+++ b/post/lib_ppc/asm.S
@@ -308,7 +308,10 @@ cpu_post_exec_31:
lwz r3, 0(r4)
lwz r4, 0(r5)
mr r6, r7
+
+ mfcr r7
blrl
+ mtcr r7
lwz r7, 8(r1)
stw r3, 0(r7)
diff --git a/tools/easylogo/easylogo.c b/tools/easylogo/easylogo.c
index 080bea9..c20e6a7 100644
--- a/tools/easylogo/easylogo.c
+++ b/tools/easylogo/easylogo.c
@@ -7,6 +7,8 @@
** This is still under construction!
*/
+#include <getopt.h>
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -216,15 +218,10 @@ int image_load_tga (image_t * image, char *filename)
return 0;
}
-int image_free (image_t * image)
+void image_free (image_t * image)
{
- if (image->data != NULL)
- free (image->data);
-
- if (image->palette != NULL)
- free (image->palette);
-
- return 0;
+ free (image->data);
+ free (image->palette);
}
int image_rgb_to_yuyv (image_t * rgb_image, image_t * yuyv_image)
@@ -353,59 +350,76 @@ int image_save_header (image_t * image, char *filename, char *varname)
#define DEF_FILELEN 256
+static void usage (int exit_status)
+{
+ puts (
+ "EasyLogo 1.0 (C) 2000 by Paolo Scaffardi\n"
+ "\n"
+ "Syntax: easylogo [options] inputfile [outputvar [outputfile]]\n"
+ "\n"
+ "Options:\n"
+ " -r Output RGB instead of YUYV\n"
+ " -h Help output\n"
+ "\n"
+ "Where: 'inputfile' is the TGA image to load\n"
+ " 'outputvar' is the variable name to create\n"
+ " 'outputfile' is the output header file (default is 'inputfile.h')"
+ );
+ exit (exit_status);
+}
+
int main (int argc, char *argv[])
{
+ int c;
+ bool use_rgb = false;
char inputfile[DEF_FILELEN],
outputfile[DEF_FILELEN], varname[DEF_FILELEN];
image_t rgb_logo, yuyv_logo;
- switch (argc) {
- case 2:
- case 3:
- case 4:
- strcpy (inputfile, argv[1]);
-
- if (argc > 2)
- strcpy (varname, argv[2]);
- else {
- char *dot = strchr (inputfile, '.');
- int pos = dot - inputfile;
-
- if (dot) {
- strncpy (varname, inputfile, pos);
- varname[pos] = 0;
- }
- }
-
- if (argc > 3)
- strcpy (outputfile, argv[3]);
- else {
- char *dot = strchr (varname, '.');
- int pos = dot - varname;
-
- if (dot) {
- char app[DEF_FILELEN];
-
- strncpy (app, varname, pos);
- app[pos] = 0;
- sprintf (outputfile, "%s.h", app);
- }
+ while ((c = getopt(argc, argv, "hr")) > 0) {
+ switch (c) {
+ case 'h':
+ usage (0);
+ break;
+ case 'r':
+ use_rgb = true;
+ puts ("Using 24-bit RGB Output Fromat");
+ break;
+ default:
+ usage (1);
+ break;
}
- break;
-
- default:
- printf ("EasyLogo 1.0 (C) 2000 by Paolo Scaffardi\n\n");
+ }
- printf("Syntax: easylogo inputfile [outputvar {outputfile}] \n");
- printf("\n");
- printf("Where: 'inputfile' is the TGA image to load\n");
- printf(" 'outputvar' is the variable name to create\n");
- printf(" 'outputfile' is the output header file (default is 'inputfile.h')\n");
+ c = argc - optind;
+ if (c > 4 || c < 1)
+ usage (1);
+
+ strcpy (inputfile, argv[optind]);
+
+ if (c > 1)
+ strcpy (varname, argv[optind + 1]);
+ else {
+ /* transform "input.tga" to just "input" */
+ char *dot;
+ strcpy (varname, inputfile);
+ dot = strchr (varname, '.');
+ if (dot)
+ *dot = '\0';
+ }
- return -1;
+ if (c > 2)
+ strcpy (outputfile, argv[optind + 2]);
+ else {
+ /* just append ".h" to input file name */
+ strcpy (outputfile, inputfile);
+ strcat (outputfile, ".h");
}
+ /* Make sure the output is sent as soon as we printf() */
+ setbuf(stdout, NULL);
+
printf ("Doing '%s' (%s) from '%s'...",
outputfile, varname, inputfile);
@@ -417,20 +431,23 @@ int main (int argc, char *argv[])
exit (1);
}
- /* Convert it to YUYV format */
+ /* Convert it to YUYV format if wanted */
- printf ("C");
- image_rgb_to_yuyv (&rgb_logo, &yuyv_logo);
+ if (!use_rgb) {
+ printf ("C");
+ image_rgb_to_yuyv (&rgb_logo, &yuyv_logo);
+ }
/* Save it into a header format */
printf ("S");
- image_save_header (&yuyv_logo, outputfile, varname);
+ image_save_header (use_rgb ? &rgb_logo : &yuyv_logo, outputfile, varname);
/* Free original image and copy */
image_free (&rgb_logo);
- image_free (&yuyv_logo);
+ if (!use_rgb)
+ image_free (&yuyv_logo);
printf ("\n");