[U-Boot] [PATCH 0/8] Blackfin updates for 2009.11

A few bug fixes, smaller code, and a new board port.
Harald Krapfenbauer (1): Blackfin: cm-bf537u: new board port
Michael Hennerich (1): Blackfin: bf537-stamp: comment CF-Flash Card Support better
Mike Frysinger (3): Blackfin: fix debug printf modifiers Blackfin: increase default console size Blackfin: use scratch pad for exception stack
Robin Getz (3): Blackfin: use +(filesize) to make sure we are only doing what is necessary Blackfin: enable more network commands for ADI dev boards Blackfin: change global data register from P5 to P3
MAINTAINERS | 1 + MAKEALL | 1 + Makefile | 2 +- README | 4 +- board/cm-bf537u/Makefile | 54 +++++++++++++ board/cm-bf537u/cm-bf537u.c | 59 ++++++++++++++ board/cm-bf537u/config.mk | 34 ++++++++ board/cm-bf537u/flash.c | 34 ++++++++ board/cm-bf537u/gpio_cfi_flash.c | 60 ++++++++++++++ board/cm-bf537u/gpio_cfi_flash.h | 10 +++ cpu/blackfin/interrupt.S | 5 + doc/README.standalone | 2 +- examples/standalone/stubs.c | 4 +- include/asm-blackfin/config.h | 10 +- include/asm-blackfin/global_data.h | 2 +- include/configs/bf537-stamp.h | 29 ++++++- include/configs/bfin_adi_common.h | 14 +++- include/configs/cm-bf537u.h | 149 ++++++++++++++++++++++++++++++++++++ lib_blackfin/board.c | 36 +++++----- lib_blackfin/config.mk | 2 +- 20 files changed, 474 insertions(+), 38 deletions(-) create mode 100644 board/cm-bf537u/Makefile create mode 100644 board/cm-bf537u/cm-bf537u.c create mode 100644 board/cm-bf537u/config.mk create mode 100644 board/cm-bf537u/flash.c create mode 100644 board/cm-bf537u/gpio_cfi_flash.c create mode 100644 board/cm-bf537u/gpio_cfi_flash.h create mode 100644 include/configs/cm-bf537u.h

From: Robin Getz robin.getz@analog.com
Signed-off-by: Robin Getz robin.getz@analog.com Signed-off-by: Mike Frysinger vapier@gentoo.org --- include/configs/bfin_adi_common.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/configs/bfin_adi_common.h b/include/configs/bfin_adi_common.h index 1ca2e51..ceb130c 100644 --- a/include/configs/bfin_adi_common.h +++ b/include/configs/bfin_adi_common.h @@ -160,8 +160,8 @@ "nand write $(loadaddr) 0 0x40000" # else # define UBOOT_ENV_UPDATE \ - "protect off 0x20000000 0x2003FFFF;" \ - "erase 0x20000000 0x2003FFFF;" \ + "protect off 0x20000000 +$(filesize);" \ + "erase 0x20000000 +$(filesize);" \ "cp.b $(loadaddr) 0x20000000 $(filesize)" # endif # define NETWORK_ENV_SETTINGS \

From: Michael Hennerich michael.hennerich@analog.com
Signed-off-by: Michael Hennerich michael.hennerich@analog.com Signed-off-by: Mike Frysinger vapier@gentoo.org --- include/configs/bf537-stamp.h | 29 ++++++++++++++++++++++++----- 1 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/include/configs/bf537-stamp.h b/include/configs/bf537-stamp.h index 98300db..74b9ecd 100644 --- a/include/configs/bf537-stamp.h +++ b/include/configs/bf537-stamp.h @@ -178,9 +178,28 @@ /* * CF-CARD IDE-HDD Support */ -/* #define CONFIG_BFIN_TRUE_IDE */ /* Add CF flash card support */ -/* #define CONFIG_BFIN_CF_IDE */ /* Add CF flash card support */ -/* #define CONFIG_BFIN_HDD_IDE */ /* Add IDE Disk Drive (HDD) support */ + +/* + * Add CF flash card support in TRUE-IDE Mode (CF-IDE-NAND Card) + * Strange address mapping Blackfin A13 connects to CF_A0 + */ + +/* #define CONFIG_BFIN_TRUE_IDE */ + +/* + * Add CF flash card support in Common Memory Mode (CF-IDE-NAND Card) + * This should be the preferred mode + */ + +/* #define CONFIG_BFIN_CF_IDE */ + +/* + * Add IDE Disk Drive (HDD) support + * See example interface here: + * http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:drivers:ide-blackf... + */ + +/* #define CONFIG_BFIN_HDD_IDE */
#if defined(CONFIG_BFIN_CF_IDE) || \ defined(CONFIG_BFIN_HDD_IDE) || \ @@ -218,7 +237,7 @@ #define CONFIG_SYS_ATA_DATA_OFFSET 0x0020 /* data I/O */ #define CONFIG_SYS_ATA_REG_OFFSET 0x0020 /* normal register accesses */ #define CONFIG_SYS_ATA_ALT_OFFSET 0x001C /* alternate registers */ -#define CONFIG_SYS_ATA_STRIDE 2 /* CF.A0 --> Blackfin.Ax */ +#define CONFIG_SYS_ATA_STRIDE 2 /* CF.A0 --> Blackfin.A13 */
#elif defined(CONFIG_BFIN_CF_IDE) #define CONFIG_SYS_ATA_BASE_ADDR 0x20211800 @@ -226,7 +245,7 @@ #define CONFIG_SYS_ATA_DATA_OFFSET 0x0000 /* data I/O */ #define CONFIG_SYS_ATA_REG_OFFSET 0x0000 /* normal register accesses */ #define CONFIG_SYS_ATA_ALT_OFFSET 0x000E /* alternate registers */ -#define CONFIG_SYS_ATA_STRIDE 1 /* CF.A0 --> Blackfin.Ax */ +#define CONFIG_SYS_ATA_STRIDE 1 /* CF_A0=0, with /CE1 /CE2 odd/even byte selects */
#elif defined(CONFIG_BFIN_HDD_IDE) #define CONFIG_SYS_ATA_BASE_ADDR 0x20314000

From: Robin Getz robin.getz@analog.com
Add dns and ntp to default networking commands, and ask for more dhcp options to better configure the network environment.
Signed-off-by: Robin Getz robin.getz@analog.com Signed-off-by: Mike Frysinger vapier@gentoo.org --- include/configs/bfin_adi_common.h | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/include/configs/bfin_adi_common.h b/include/configs/bfin_adi_common.h index ceb130c..b615c79 100644 --- a/include/configs/bfin_adi_common.h +++ b/include/configs/bfin_adi_common.h @@ -12,6 +12,13 @@ # include <config_cmd_default.h> # if ADI_CMDS_NETWORK # define CONFIG_CMD_DHCP +# define CONFIG_BOOTP_SUBNETMASK +# define CONFIG_BOOTP_GATEWAY +# define CONFIG_BOOTP_DNS +# define CONFIG_BOOTP_NTPSERVER +# define CONFIG_BOOTP_RANDOM_DELAY +# define CONFIG_KEEP_SERVERADDR +# define CONFIG_CMD_DNS # define CONFIG_CMD_PING # ifdef CONFIG_BFIN_MAC # define CONFIG_CMD_MII @@ -46,6 +53,9 @@ # endif # ifdef CONFIG_RTC_BFIN # define CONFIG_CMD_DATE +# if ADI_CMDS_NETWORK +# define CONFIG_CMD_SNTP +# endif # endif # ifdef CONFIG_SPI # define CONFIG_CMD_EEPROM

From: Robin Getz robin.getz@analog.com
Since the Blackfin ABI favors higher scratch registers by default, use the last scratch register (P3) for global data rather than the first (P5). This allows the compiler's register allocator to use higher number scratch P registers, which in turn better matches the Blackfin instruction set, which reduces the size of U-Boot by more than 1024 bytes...
Signed-off-by: Robin Getz robin.getz@analog.com Signed-off-by: Mike Frysinger vapier@gentoo.org --- README | 4 ++-- doc/README.standalone | 2 +- examples/standalone/stubs.c | 4 ++-- include/asm-blackfin/global_data.h | 2 +- lib_blackfin/config.mk | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/README b/README index 246ae2b..c90f6ee 100644 --- a/README +++ b/README @@ -3912,10 +3912,10 @@ For PowerPC, the following registers have specific use: average for all boards 752 bytes for the whole U-Boot image, 624 text + 127 data).
-On Blackfin, the normal C ABI (except for P5) is followed as documented here: +On Blackfin, the normal C ABI (except for P3) is followed as documented here: http://docs.blackfin.uclinux.org/doku.php?id=application_binary_interface
- ==> U-Boot will use P5 to hold a pointer to the global data + ==> U-Boot will use P3 to hold a pointer to the global data
On ARM, the following registers are used:
diff --git a/doc/README.standalone b/doc/README.standalone index 81b949a..885c92f 100644 --- a/doc/README.standalone +++ b/doc/README.standalone @@ -21,7 +21,7 @@ Design Notes on Exporting U-Boot Functions to Standalone Applications: 2. The pointer to the jump table is passed to the application in a machine-dependent way. PowerPC, ARM, MIPS and Blackfin architectures use a dedicated register to hold the pointer to the 'global_data' - structure: r2 on PowerPC, r8 on ARM, k0 on MIPS, and P5 on Blackfin. + structure: r2 on PowerPC, r8 on ARM, k0 on MIPS, and P3 on Blackfin. The x86 architecture does not use such a register; instead, the pointer to the 'global_data' structure is passed as 'argv[-1]' pointer. diff --git a/examples/standalone/stubs.c b/examples/standalone/stubs.c index a8cb954..339bbf9 100644 --- a/examples/standalone/stubs.c +++ b/examples/standalone/stubs.c @@ -127,14 +127,14 @@ gd_t *global_data; : : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x * sizeof(void *)) : "r5"); #elif defined(CONFIG_BLACKFIN) /* - * P5 holds the pointer to the global_data, P0 is a call-clobbered + * P3 holds the pointer to the global_data, P0 is a call-clobbered * register */ #define EXPORT_FUNC(x) \ asm volatile ( \ " .globl _" #x "\n_" \ #x ":\n" \ -" P0 = [P5 + %0]\n" \ +" P0 = [P3 + %0]\n" \ " P0 = [P0 + %1]\n" \ " JUMP (P0)\n" \ : : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x * sizeof(void *)) : "P0"); diff --git a/include/asm-blackfin/global_data.h b/include/asm-blackfin/global_data.h index 5c9903b..3194b72 100644 --- a/include/asm-blackfin/global_data.h +++ b/include/asm-blackfin/global_data.h @@ -66,6 +66,6 @@ typedef struct global_data { #define GD_FLG_LOGINIT 0x00020 /* Log Buf has been initialized */ #define GD_FLG_DISABLE_CONSOLE 0x00040 /* Disable console (in & out) */
-#define DECLARE_GLOBAL_DATA_PTR register gd_t * volatile gd asm ("P5") +#define DECLARE_GLOBAL_DATA_PTR register gd_t * volatile gd asm ("P3")
#endif diff --git a/lib_blackfin/config.mk b/lib_blackfin/config.mk index a7e3658..34b53e6 100644 --- a/lib_blackfin/config.mk +++ b/lib_blackfin/config.mk @@ -28,7 +28,7 @@ CONFIG_BFIN_BOOT_MODE := $(strip $(subst ",,$(CONFIG_BFIN_BOOT_MODE))) CONFIG_ENV_OFFSET := $(strip $(subst ",,$(CONFIG_ENV_OFFSET))) CONFIG_ENV_SIZE := $(strip $(subst ",,$(CONFIG_ENV_SIZE)))
-PLATFORM_RELFLAGS += -ffixed-P5 -fomit-frame-pointer -mno-fdpic +PLATFORM_RELFLAGS += -ffixed-P3 -fomit-frame-pointer -mno-fdpic PLATFORM_CPPFLAGS += -DCONFIG_BLACKFIN
LDFLAGS += --gc-sections

From: Harald Krapfenbauer Harald.Krapfenbauer@bluetechnix.at
The CM-BF537U is similar to the CM-BF537E module, but enough to need its own board port.
Signed-off-by: Harald Krapfenbauer Harald.Krapfenbauer@bluetechnix.at Signed-off-by: Mike Frysinger vapier@gentoo.org --- MAINTAINERS | 1 + MAKEALL | 1 + Makefile | 2 +- board/cm-bf537u/Makefile | 54 ++++++++++++++ board/cm-bf537u/cm-bf537u.c | 59 +++++++++++++++ board/cm-bf537u/config.mk | 34 +++++++++ board/cm-bf537u/flash.c | 34 +++++++++ board/cm-bf537u/gpio_cfi_flash.c | 60 +++++++++++++++ board/cm-bf537u/gpio_cfi_flash.h | 10 +++ include/configs/cm-bf537u.h | 149 ++++++++++++++++++++++++++++++++++++++ 10 files changed, 403 insertions(+), 1 deletions(-) create mode 100644 board/cm-bf537u/Makefile create mode 100644 board/cm-bf537u/cm-bf537u.c create mode 100644 board/cm-bf537u/config.mk create mode 100644 board/cm-bf537u/flash.c create mode 100644 board/cm-bf537u/gpio_cfi_flash.c create mode 100644 board/cm-bf537u/gpio_cfi_flash.h create mode 100644 include/configs/cm-bf537u.h
diff --git a/MAINTAINERS b/MAINTAINERS index f99eae5..d674753 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -917,6 +917,7 @@ Blackfin Team u-boot-devel@blackfin.uclinux.org CM-BF527 BF527 CM-BF533 BF533 CM-BF537E BF537 + CM-BF537U BF537 CM-BF548 BF548 CM-BF561 BF561 TCM-BF537 BF537 diff --git a/MAKEALL b/MAKEALL index c8a1f37..85f99ef 100755 --- a/MAKEALL +++ b/MAKEALL @@ -838,6 +838,7 @@ LIST_blackfin=" \ cm-bf527 \ cm-bf533 \ cm-bf537e \ + cm-bf537u \ cm-bf548 \ cm-bf561 \ ibf-dsp561 \ diff --git a/Makefile b/Makefile index c9727f8..dd01b66 100644 --- a/Makefile +++ b/Makefile @@ -3525,7 +3525,7 @@ BFIN_BOARDS = bf518f-ezbrd bf526-ezbrd bf527-ezkit bf533-ezkit bf533-stamp \ bf537-pnav bf537-stamp bf538f-ezkit bf548-ezkit bf561-ezkit
# Bluetechnix tinyboards -BFIN_BOARDS += cm-bf527 cm-bf533 cm-bf537e cm-bf548 cm-bf561 tcm-bf537 +BFIN_BOARDS += cm-bf527 cm-bf533 cm-bf537e cm-bf537u cm-bf548 cm-bf561 tcm-bf537
# Misc third party boards BFIN_BOARDS += bf537-minotaur bf537-srv1 blackstamp diff --git a/board/cm-bf537u/Makefile b/board/cm-bf537u/Makefile new file mode 100644 index 0000000..3812ba1 --- /dev/null +++ b/board/cm-bf537u/Makefile @@ -0,0 +1,54 @@ +# +# U-boot - Makefile +# +# Copyright (c) 2005-2008 Analog Device Inc. +# +# (C) Copyright 2000-2006 +# 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 $(TOPDIR)/config.mk + +LIB = $(obj)lib$(BOARD).a + +COBJS-y := $(BOARD).o flash.o gpio_cfi_flash.o + +SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS-y)) +SOBJS := $(addprefix $(obj),$(SOBJS-y)) + +$(LIB): $(obj).depend $(OBJS) $(SOBJS) + $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) + +clean: + rm -f $(SOBJS) $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak $(obj).depend + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/cm-bf537u/cm-bf537u.c b/board/cm-bf537u/cm-bf537u.c new file mode 100644 index 0000000..2d0f65b --- /dev/null +++ b/board/cm-bf537u/cm-bf537u.c @@ -0,0 +1,59 @@ +/* + * U-boot - main board file + * + * Copyright (c) 2005-2009 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#include <common.h> +#include <config.h> +#include <command.h> +#include <net.h> +#include <netdev.h> +#include <asm/blackfin.h> +#include <asm/net.h> +#include "gpio_cfi_flash.h" + +DECLARE_GLOBAL_DATA_PTR; + +int checkboard(void) +{ + printf("Board: Bluetechnix CM-BF537U board\n"); + printf(" Support: http://www.bluetechnix.at/%5Cn"); + return 0; +} + +phys_size_t initdram(int board_type) +{ + gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; + gd->bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE; + return gd->bd->bi_memsize; +} + +#ifdef CONFIG_BFIN_MAC +static void board_init_enetaddr(uchar *mac_addr) +{ + puts("Warning: Generating 'random' MAC address\n"); + bfin_gen_rand_mac(mac_addr); + eth_setenv_enetaddr("ethaddr", mac_addr); +} + +int board_eth_init(bd_t *bis) +{ + return bfin_EMAC_initialize(bis); +} +#endif + +int misc_init_r(void) +{ +#ifdef CONFIG_BFIN_MAC + uchar enetaddr[6]; + if (!eth_getenv_enetaddr("ethaddr", enetaddr)) + board_init_enetaddr(enetaddr); +#endif + + gpio_cfi_flash_init(); + + return 0; +} diff --git a/board/cm-bf537u/config.mk b/board/cm-bf537u/config.mk new file mode 100644 index 0000000..3c0b46f --- /dev/null +++ b/board/cm-bf537u/config.mk @@ -0,0 +1,34 @@ +# +# Copyright (c) 2005-2008 Analog Device Inc. +# +# (C) Copyright 2001 +# 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 +# + +# This is not actually used for Blackfin boards so do not change it +#TEXT_BASE = do-not-use-me + +CFLAGS_lib_generic += -O2 +CFLAGS_lzma += -O2 + +# Set some default LDR flags based on boot mode. +LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8 +LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE)) diff --git a/board/cm-bf537u/flash.c b/board/cm-bf537u/flash.c new file mode 100644 index 0000000..ebe17b6 --- /dev/null +++ b/board/cm-bf537u/flash.c @@ -0,0 +1,34 @@ +/* + * flash.c - helper commands for working with GPIO-assisted flash + * + * Copyright (c) 2005-2009 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#include <common.h> +#include <command.h> +#include <asm/blackfin.h> +#include "gpio_cfi_flash.h" + +int do_ph(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + ulong faddr = CONFIG_SYS_FLASH_BASE; + ushort data; + ulong dflg; + + if (argc > 1) { + dflg = simple_strtoul(argv[1], NULL, 16); + faddr |= (dflg << 21); + gpio_cfi_flash_swizzle((void *)faddr); + } else { + data = bfin_read_PORTHIO(); + printf("Port H data %04x (PH0:%i)\n", data, !!(data & PH0)); + } + + return 0; +} + +U_BOOT_CMD(ph, 3, 0, do_ph, + "set/clear PH0 GPIO flash bank switch\n", + "<ph0> - set PH0 GPIO pin state\n"); diff --git a/board/cm-bf537u/gpio_cfi_flash.c b/board/cm-bf537u/gpio_cfi_flash.c new file mode 100644 index 0000000..68633ec --- /dev/null +++ b/board/cm-bf537u/gpio_cfi_flash.c @@ -0,0 +1,60 @@ +/* + * gpio_cfi_flash.c - GPIO-assisted Flash Chip Support + * + * Copyright (c) 2009 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#include <common.h> +#include <asm/blackfin.h> +#include <asm/io.h> +#include "gpio_cfi_flash.h" + +#define GPIO_PIN_1 PH0 +#define GPIO_MASK_1 (1 << 21) +#define GPIO_MASK (GPIO_MASK_1) + +void *gpio_cfi_flash_swizzle(void *vaddr) +{ + unsigned long addr = (unsigned long)vaddr; + + if (addr & GPIO_MASK_1) + bfin_write_PORTHIO_SET(GPIO_PIN_1); + else + bfin_write_PORTHIO_CLEAR(GPIO_PIN_1); + +#ifdef GPIO_MASK_2 + if (addr & GPIO_MASK_2) + bfin_write_PORTGIO_SET(GPIO_PIN_2); + else + bfin_write_PORTGIO_CLEAR(GPIO_PIN_2); +#endif + + SSYNC(); + + return (void *)(addr & ~GPIO_MASK); +} + +#define __raw_writeq(value, addr) *(volatile u64 *)addr = value +#define __raw_readq(addr) *(volatile u64 *)addr + +#define MAKE_FLASH(size, sfx) \ +void flash_write##size(u##size value, void *addr) \ +{ \ + __raw_write##sfx(value, gpio_cfi_flash_swizzle(addr)); \ +} \ +u##size flash_read##size(void *addr) \ +{ \ + return __raw_read##sfx(gpio_cfi_flash_swizzle(addr)); \ +} +MAKE_FLASH(8, b) /* flash_write8() flash_read8() */ +MAKE_FLASH(16, w) /* flash_write16() flash_read16() */ +MAKE_FLASH(32, l) /* flash_write32() flash_read32() */ +MAKE_FLASH(64, q) /* flash_write64() flash_read64() */ + +void gpio_cfi_flash_init(void) +{ + bfin_write_PORTHIO_DIR(bfin_read_PORTHIO_DIR() | GPIO_PIN_1); + gpio_cfi_flash_swizzle((void *)CONFIG_SYS_FLASH_BASE); +} diff --git a/board/cm-bf537u/gpio_cfi_flash.h b/board/cm-bf537u/gpio_cfi_flash.h new file mode 100644 index 0000000..5211e97 --- /dev/null +++ b/board/cm-bf537u/gpio_cfi_flash.h @@ -0,0 +1,10 @@ +/* + * gpio_cfi_flash.c - GPIO-assisted Flash Chip Support + * + * Copyright (c) 2009 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +void *gpio_cfi_flash_swizzle(void *vaddr); +void gpio_cfi_flash_init(void); diff --git a/include/configs/cm-bf537u.h b/include/configs/cm-bf537u.h new file mode 100644 index 0000000..2393926 --- /dev/null +++ b/include/configs/cm-bf537u.h @@ -0,0 +1,149 @@ +/* + * U-boot - Configuration file for CM-BF537U board + */ + +#ifndef __CONFIG_CM_BF537U_H__ +#define __CONFIG_CM_BF537U_H__ + +#include <asm/config-pre.h> + + +/* + * Processor Settings + */ +#define CONFIG_BFIN_CPU bf537-0.2 +#define CONFIG_BFIN_BOOT_MODE BFIN_BOOT_BYPASS + + +/* + * Clock Settings + * CCLK = (CLKIN * VCO_MULT) / CCLK_DIV + * SCLK = (CLKIN * VCO_MULT) / SCLK_DIV + */ +/* CONFIG_CLKIN_HZ is any value in Hz */ +#define CONFIG_CLKIN_HZ 30000000 +/* CLKIN_HALF controls the DF bit in PLL_CTL 0 = CLKIN */ +/* 1 = CLKIN / 2 */ +#define CONFIG_CLKIN_HALF 0 +/* PLL_BYPASS controls the BYPASS bit in PLL_CTL 0 = do not bypass */ +/* 1 = bypass PLL */ +#define CONFIG_PLL_BYPASS 0 +/* VCO_MULT controls the MSEL (multiplier) bits in PLL_CTL */ +/* Values can range from 0-63 (where 0 means 64) */ +#define CONFIG_VCO_MULT 18 +/* CCLK_DIV controls the core clock divider */ +/* Values can be 1, 2, 4, or 8 ONLY */ +#define CONFIG_CCLK_DIV 1 +/* SCLK_DIV controls the system clock divider */ +/* Values can range from 1-15 */ +#define CONFIG_SCLK_DIV 5 +/* Core voltage */ +#define CONFIG_VR_CTL_VAL (VLEV_110 | GAIN_20 | FREQ_1000) + + +/* + * Memory Settings + */ +#define CONFIG_MEM_ADD_WDTH 9 +#define CONFIG_MEM_SIZE 32 + +#define CONFIG_EBIU_SDRRC_VAL 0x3f8 +#define CONFIG_EBIU_SDGCTL_VAL 0x9111cd + +#define CONFIG_EBIU_AMGCTL_VAL (AMBEN_ALL) +#define CONFIG_EBIU_AMBCTL0_VAL (B1WAT_7 | B1RAT_11 | B1HT_2 | B1ST_3 | B0WAT_7 | B0RAT_11 | B0HT_2 | B0ST_3) +#define CONFIG_EBIU_AMBCTL1_VAL (B3WAT_7 | B3RAT_11 | B3HT_2 | B3ST_3 | B2WAT_7 | B2RAT_11 | B2HT_2 | B2ST_3) + +#define CONFIG_SYS_MONITOR_LEN (256 * 1024) +#define CONFIG_SYS_MALLOC_LEN (128 * 1024) + + +/* + * Network Settings + */ +#ifndef __ADSPBF534__ +#define ADI_CMDS_NETWORK 1 +/* The next 3 lines are for use with SMSC on EXT-BF5xx-USB-ETH2 */ +#define CONFIG_DRIVER_SMC911X 1 +#define CONFIG_DRIVER_SMC911X_BASE 0x20308000 +#define CONFIG_DRIVER_SMC911X_16_BIT 1 +#endif +#define CONFIG_HOSTNAME cm-bf537u +/* Uncomment next line to use fixed MAC address */ +/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */ + + +/* + * Flash Settings + */ +#define CONFIG_FLASH_CFI_DRIVER +#define CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS +#define CONFIG_SYS_FLASH_BASE 0x20000000 +#define CONFIG_SYS_FLASH_CFI +#define CONFIG_SYS_FLASH_PROTECTION +#define CONFIG_SYS_MAX_FLASH_BANKS 1 +#define CONFIG_SYS_MAX_FLASH_SECT 35 + + +/* + * Env Storage Settings + */ +#define CONFIG_ENV_IS_IN_FLASH 1 +#define CONFIG_ENV_OFFSET 0x4000 +#define CONFIG_ENV_SIZE 0x2000 +#define CONFIG_ENV_SECT_SIZE 0x20000 +#if (CONFIG_BFIN_BOOT_MODE == BFIN_BOOT_BYPASS) +#define ENV_IS_EMBEDDED +#else +#define ENV_IS_EMBEDDED_CUSTOM +#endif +#ifdef ENV_IS_EMBEDDED +/* WARNING - the following is hand-optimized to fit within + * the sector before the environment sector. If it throws + * an error during compilation remove an object here to get + * it linked after the configuration sector. + */ +# define LDS_BOARD_TEXT \ + cpu/blackfin/traps.o (.text .text.*); \ + cpu/blackfin/interrupt.o (.text .text.*); \ + cpu/blackfin/serial.o (.text .text.*); \ + common/dlmalloc.o (.text .text.*); \ + lib_generic/crc32.o (.text .text.*); \ + . = DEFINED(env_offset) ? env_offset : .; \ + common/env_embedded.o (.text .text.*); +#endif + + +/* + * I2C Settings + */ +#define CONFIG_BFIN_TWI_I2C 1 +#define CONFIG_HARD_I2C 1 +#define CONFIG_SYS_I2C_SPEED 50000 +#define CONFIG_SYS_I2C_SLAVE 0 + + +/* + * Misc Settings + */ +#define CONFIG_BAUDRATE 115200 +#define CONFIG_MISC_INIT_R +#define CONFIG_RTC_BFIN +#define CONFIG_UART_CONSOLE 0 + + +/* + * Pull in common ADI header for remaining command/environment setup + */ +#include <configs/bfin_adi_common.h> + +#undef CONFIG_BOOTCOMMAND +#define CONFIG_BOOTCOMMAND "run flashboot" + +#undef CONFIG_EXTRA_ENV_SETTINGS +#define CONFIG_EXTRA_ENV_SETTINGS \ + NAND_ENV_SETTINGS \ + NETWORK_ENV_SETTINGS \ + "flashboot=flread 20040000 1000000 280000; bootm 0x1000000\0" + +#endif

From: Harald Krapfenbauer Harald.Krapfenbauer@bluetechnix.at
The CM-BF537U is similar to the CM-BF537E module, but enough to need its own board port.
Signed-off-by: Harald Krapfenbauer Harald.Krapfenbauer@bluetechnix.at Signed-off-by: Mike Frysinger vapier@gentoo.org --- v2 - update for smc911x net multi
MAINTAINERS | 1 + MAKEALL | 1 + Makefile | 2 +- board/cm-bf537u/Makefile | 54 ++++++++++++++ board/cm-bf537u/cm-bf537u.c | 66 +++++++++++++++++ board/cm-bf537u/config.mk | 34 +++++++++ board/cm-bf537u/flash.c | 34 +++++++++ board/cm-bf537u/gpio_cfi_flash.c | 60 +++++++++++++++ board/cm-bf537u/gpio_cfi_flash.h | 10 +++ include/configs/cm-bf537u.h | 150 ++++++++++++++++++++++++++++++++++++++ 10 files changed, 411 insertions(+), 1 deletions(-) create mode 100644 board/cm-bf537u/Makefile create mode 100644 board/cm-bf537u/cm-bf537u.c create mode 100644 board/cm-bf537u/config.mk create mode 100644 board/cm-bf537u/flash.c create mode 100644 board/cm-bf537u/gpio_cfi_flash.c create mode 100644 board/cm-bf537u/gpio_cfi_flash.h create mode 100644 include/configs/cm-bf537u.h
diff --git a/MAINTAINERS b/MAINTAINERS index f99eae5..d674753 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -917,6 +917,7 @@ Blackfin Team u-boot-devel@blackfin.uclinux.org CM-BF527 BF527 CM-BF533 BF533 CM-BF537E BF537 + CM-BF537U BF537 CM-BF548 BF548 CM-BF561 BF561 TCM-BF537 BF537 diff --git a/MAKEALL b/MAKEALL index c8a1f37..85f99ef 100755 --- a/MAKEALL +++ b/MAKEALL @@ -838,6 +838,7 @@ LIST_blackfin=" \ cm-bf527 \ cm-bf533 \ cm-bf537e \ + cm-bf537u \ cm-bf548 \ cm-bf561 \ ibf-dsp561 \ diff --git a/Makefile b/Makefile index c9727f8..dd01b66 100644 --- a/Makefile +++ b/Makefile @@ -3525,7 +3525,7 @@ BFIN_BOARDS = bf518f-ezbrd bf526-ezbrd bf527-ezkit bf533-ezkit bf533-stamp \ bf537-pnav bf537-stamp bf538f-ezkit bf548-ezkit bf561-ezkit
# Bluetechnix tinyboards -BFIN_BOARDS += cm-bf527 cm-bf533 cm-bf537e cm-bf548 cm-bf561 tcm-bf537 +BFIN_BOARDS += cm-bf527 cm-bf533 cm-bf537e cm-bf537u cm-bf548 cm-bf561 tcm-bf537
# Misc third party boards BFIN_BOARDS += bf537-minotaur bf537-srv1 blackstamp diff --git a/board/cm-bf537u/Makefile b/board/cm-bf537u/Makefile new file mode 100644 index 0000000..3812ba1 --- /dev/null +++ b/board/cm-bf537u/Makefile @@ -0,0 +1,54 @@ +# +# U-boot - Makefile +# +# Copyright (c) 2005-2008 Analog Device Inc. +# +# (C) Copyright 2000-2006 +# 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 $(TOPDIR)/config.mk + +LIB = $(obj)lib$(BOARD).a + +COBJS-y := $(BOARD).o flash.o gpio_cfi_flash.o + +SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS-y)) +SOBJS := $(addprefix $(obj),$(SOBJS-y)) + +$(LIB): $(obj).depend $(OBJS) $(SOBJS) + $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) + +clean: + rm -f $(SOBJS) $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak $(obj).depend + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/cm-bf537u/cm-bf537u.c b/board/cm-bf537u/cm-bf537u.c new file mode 100644 index 0000000..9628e0f --- /dev/null +++ b/board/cm-bf537u/cm-bf537u.c @@ -0,0 +1,66 @@ +/* + * U-boot - main board file + * + * Copyright (c) 2005-2009 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#include <common.h> +#include <config.h> +#include <command.h> +#include <net.h> +#include <netdev.h> +#include <asm/blackfin.h> +#include <asm/net.h> +#include "gpio_cfi_flash.h" + +DECLARE_GLOBAL_DATA_PTR; + +int checkboard(void) +{ + printf("Board: Bluetechnix CM-BF537U board\n"); + printf(" Support: http://www.bluetechnix.at/%5Cn"); + return 0; +} + +phys_size_t initdram(int board_type) +{ + gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; + gd->bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE; + return gd->bd->bi_memsize; +} + +#ifdef CONFIG_BFIN_MAC +static void board_init_enetaddr(uchar *mac_addr) +{ + puts("Warning: Generating 'random' MAC address\n"); + bfin_gen_rand_mac(mac_addr); + eth_setenv_enetaddr("ethaddr", mac_addr); +} + +int board_eth_init(bd_t *bis) +{ + return bfin_EMAC_initialize(bis); +} +#endif + +#ifdef CONFIG_SMC911X +int board_eth_init(bd_t *bis) +{ + return smc911x_initialize(0, CONFIG_SMC911X_BASE); +} +#endif + +int misc_init_r(void) +{ +#ifdef CONFIG_BFIN_MAC + uchar enetaddr[6]; + if (!eth_getenv_enetaddr("ethaddr", enetaddr)) + board_init_enetaddr(enetaddr); +#endif + + gpio_cfi_flash_init(); + + return 0; +} diff --git a/board/cm-bf537u/config.mk b/board/cm-bf537u/config.mk new file mode 100644 index 0000000..3c0b46f --- /dev/null +++ b/board/cm-bf537u/config.mk @@ -0,0 +1,34 @@ +# +# Copyright (c) 2005-2008 Analog Device Inc. +# +# (C) Copyright 2001 +# 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 +# + +# This is not actually used for Blackfin boards so do not change it +#TEXT_BASE = do-not-use-me + +CFLAGS_lib_generic += -O2 +CFLAGS_lzma += -O2 + +# Set some default LDR flags based on boot mode. +LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8 +LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE)) diff --git a/board/cm-bf537u/flash.c b/board/cm-bf537u/flash.c new file mode 100644 index 0000000..ebe17b6 --- /dev/null +++ b/board/cm-bf537u/flash.c @@ -0,0 +1,34 @@ +/* + * flash.c - helper commands for working with GPIO-assisted flash + * + * Copyright (c) 2005-2009 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#include <common.h> +#include <command.h> +#include <asm/blackfin.h> +#include "gpio_cfi_flash.h" + +int do_ph(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + ulong faddr = CONFIG_SYS_FLASH_BASE; + ushort data; + ulong dflg; + + if (argc > 1) { + dflg = simple_strtoul(argv[1], NULL, 16); + faddr |= (dflg << 21); + gpio_cfi_flash_swizzle((void *)faddr); + } else { + data = bfin_read_PORTHIO(); + printf("Port H data %04x (PH0:%i)\n", data, !!(data & PH0)); + } + + return 0; +} + +U_BOOT_CMD(ph, 3, 0, do_ph, + "set/clear PH0 GPIO flash bank switch\n", + "<ph0> - set PH0 GPIO pin state\n"); diff --git a/board/cm-bf537u/gpio_cfi_flash.c b/board/cm-bf537u/gpio_cfi_flash.c new file mode 100644 index 0000000..68633ec --- /dev/null +++ b/board/cm-bf537u/gpio_cfi_flash.c @@ -0,0 +1,60 @@ +/* + * gpio_cfi_flash.c - GPIO-assisted Flash Chip Support + * + * Copyright (c) 2009 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#include <common.h> +#include <asm/blackfin.h> +#include <asm/io.h> +#include "gpio_cfi_flash.h" + +#define GPIO_PIN_1 PH0 +#define GPIO_MASK_1 (1 << 21) +#define GPIO_MASK (GPIO_MASK_1) + +void *gpio_cfi_flash_swizzle(void *vaddr) +{ + unsigned long addr = (unsigned long)vaddr; + + if (addr & GPIO_MASK_1) + bfin_write_PORTHIO_SET(GPIO_PIN_1); + else + bfin_write_PORTHIO_CLEAR(GPIO_PIN_1); + +#ifdef GPIO_MASK_2 + if (addr & GPIO_MASK_2) + bfin_write_PORTGIO_SET(GPIO_PIN_2); + else + bfin_write_PORTGIO_CLEAR(GPIO_PIN_2); +#endif + + SSYNC(); + + return (void *)(addr & ~GPIO_MASK); +} + +#define __raw_writeq(value, addr) *(volatile u64 *)addr = value +#define __raw_readq(addr) *(volatile u64 *)addr + +#define MAKE_FLASH(size, sfx) \ +void flash_write##size(u##size value, void *addr) \ +{ \ + __raw_write##sfx(value, gpio_cfi_flash_swizzle(addr)); \ +} \ +u##size flash_read##size(void *addr) \ +{ \ + return __raw_read##sfx(gpio_cfi_flash_swizzle(addr)); \ +} +MAKE_FLASH(8, b) /* flash_write8() flash_read8() */ +MAKE_FLASH(16, w) /* flash_write16() flash_read16() */ +MAKE_FLASH(32, l) /* flash_write32() flash_read32() */ +MAKE_FLASH(64, q) /* flash_write64() flash_read64() */ + +void gpio_cfi_flash_init(void) +{ + bfin_write_PORTHIO_DIR(bfin_read_PORTHIO_DIR() | GPIO_PIN_1); + gpio_cfi_flash_swizzle((void *)CONFIG_SYS_FLASH_BASE); +} diff --git a/board/cm-bf537u/gpio_cfi_flash.h b/board/cm-bf537u/gpio_cfi_flash.h new file mode 100644 index 0000000..5211e97 --- /dev/null +++ b/board/cm-bf537u/gpio_cfi_flash.h @@ -0,0 +1,10 @@ +/* + * gpio_cfi_flash.c - GPIO-assisted Flash Chip Support + * + * Copyright (c) 2009 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +void *gpio_cfi_flash_swizzle(void *vaddr); +void gpio_cfi_flash_init(void); diff --git a/include/configs/cm-bf537u.h b/include/configs/cm-bf537u.h new file mode 100644 index 0000000..d1870a8 --- /dev/null +++ b/include/configs/cm-bf537u.h @@ -0,0 +1,150 @@ +/* + * U-boot - Configuration file for CM-BF537U board + */ + +#ifndef __CONFIG_CM_BF537U_H__ +#define __CONFIG_CM_BF537U_H__ + +#include <asm/config-pre.h> + + +/* + * Processor Settings + */ +#define CONFIG_BFIN_CPU bf537-0.2 +#define CONFIG_BFIN_BOOT_MODE BFIN_BOOT_BYPASS + + +/* + * Clock Settings + * CCLK = (CLKIN * VCO_MULT) / CCLK_DIV + * SCLK = (CLKIN * VCO_MULT) / SCLK_DIV + */ +/* CONFIG_CLKIN_HZ is any value in Hz */ +#define CONFIG_CLKIN_HZ 30000000 +/* CLKIN_HALF controls the DF bit in PLL_CTL 0 = CLKIN */ +/* 1 = CLKIN / 2 */ +#define CONFIG_CLKIN_HALF 0 +/* PLL_BYPASS controls the BYPASS bit in PLL_CTL 0 = do not bypass */ +/* 1 = bypass PLL */ +#define CONFIG_PLL_BYPASS 0 +/* VCO_MULT controls the MSEL (multiplier) bits in PLL_CTL */ +/* Values can range from 0-63 (where 0 means 64) */ +#define CONFIG_VCO_MULT 18 +/* CCLK_DIV controls the core clock divider */ +/* Values can be 1, 2, 4, or 8 ONLY */ +#define CONFIG_CCLK_DIV 1 +/* SCLK_DIV controls the system clock divider */ +/* Values can range from 1-15 */ +#define CONFIG_SCLK_DIV 5 +/* Core voltage */ +#define CONFIG_VR_CTL_VAL (VLEV_110 | GAIN_20 | FREQ_1000) + + +/* + * Memory Settings + */ +#define CONFIG_MEM_ADD_WDTH 9 +#define CONFIG_MEM_SIZE 32 + +#define CONFIG_EBIU_SDRRC_VAL 0x3f8 +#define CONFIG_EBIU_SDGCTL_VAL 0x9111cd + +#define CONFIG_EBIU_AMGCTL_VAL (AMBEN_ALL) +#define CONFIG_EBIU_AMBCTL0_VAL (B1WAT_7 | B1RAT_11 | B1HT_2 | B1ST_3 | B0WAT_7 | B0RAT_11 | B0HT_2 | B0ST_3) +#define CONFIG_EBIU_AMBCTL1_VAL (B3WAT_7 | B3RAT_11 | B3HT_2 | B3ST_3 | B2WAT_7 | B2RAT_11 | B2HT_2 | B2ST_3) + +#define CONFIG_SYS_MONITOR_LEN (256 * 1024) +#define CONFIG_SYS_MALLOC_LEN (128 * 1024) + + +/* + * Network Settings + */ +#ifndef __ADSPBF534__ +#define ADI_CMDS_NETWORK 1 +#define CONFIG_NET_MULTI +/* The next 3 lines are for use with SMSC on EXT-BF5xx-USB-ETH2 */ +#define CONFIG_SMC911X 1 +#define CONFIG_SMC911X_BASE 0x24000000 +#define CONFIG_SMC911X_16_BIT +#endif +#define CONFIG_HOSTNAME cm-bf537u +/* Uncomment next line to use fixed MAC address */ +/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */ + + +/* + * Flash Settings + */ +#define CONFIG_FLASH_CFI_DRIVER +#define CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS +#define CONFIG_SYS_FLASH_BASE 0x20000000 +#define CONFIG_SYS_FLASH_CFI +#define CONFIG_SYS_FLASH_PROTECTION +#define CONFIG_SYS_MAX_FLASH_BANKS 1 +#define CONFIG_SYS_MAX_FLASH_SECT 35 + + +/* + * Env Storage Settings + */ +#define CONFIG_ENV_IS_IN_FLASH 1 +#define CONFIG_ENV_OFFSET 0x4000 +#define CONFIG_ENV_SIZE 0x2000 +#define CONFIG_ENV_SECT_SIZE 0x20000 +#if (CONFIG_BFIN_BOOT_MODE == BFIN_BOOT_BYPASS) +#define ENV_IS_EMBEDDED +#else +#define ENV_IS_EMBEDDED_CUSTOM +#endif +#ifdef ENV_IS_EMBEDDED +/* WARNING - the following is hand-optimized to fit within + * the sector before the environment sector. If it throws + * an error during compilation remove an object here to get + * it linked after the configuration sector. + */ +# define LDS_BOARD_TEXT \ + cpu/blackfin/traps.o (.text .text.*); \ + cpu/blackfin/interrupt.o (.text .text.*); \ + cpu/blackfin/serial.o (.text .text.*); \ + common/dlmalloc.o (.text .text.*); \ + lib_generic/crc32.o (.text .text.*); \ + . = DEFINED(env_offset) ? env_offset : .; \ + common/env_embedded.o (.text .text.*); +#endif + + +/* + * I2C Settings + */ +#define CONFIG_BFIN_TWI_I2C 1 +#define CONFIG_HARD_I2C 1 +#define CONFIG_SYS_I2C_SPEED 50000 +#define CONFIG_SYS_I2C_SLAVE 0 + + +/* + * Misc Settings + */ +#define CONFIG_BAUDRATE 115200 +#define CONFIG_MISC_INIT_R +#define CONFIG_RTC_BFIN +#define CONFIG_UART_CONSOLE 0 + + +/* + * Pull in common ADI header for remaining command/environment setup + */ +#include <configs/bfin_adi_common.h> + +#undef CONFIG_BOOTCOMMAND +#define CONFIG_BOOTCOMMAND "run flashboot" + +#undef CONFIG_EXTRA_ENV_SETTINGS +#define CONFIG_EXTRA_ENV_SETTINGS \ + NAND_ENV_SETTINGS \ + NETWORK_ENV_SETTINGS \ + "flashboot=flread 20040000 1000000 280000; bootm 0x1000000\0" + +#endif

The display_global_data() function generated warnings with pretty much every variable.
Signed-off-by: Mike Frysinger vapier@gentoo.org --- lib_blackfin/board.c | 36 ++++++++++++++++++------------------ 1 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/lib_blackfin/board.c b/lib_blackfin/board.c index b957a9d..5b9efde 100644 --- a/lib_blackfin/board.c +++ b/lib_blackfin/board.c @@ -93,25 +93,25 @@ static void display_global_data(void) #ifdef CONFIG_DEBUG_EARLY_SERIAL bd_t *bd; bd = gd->bd; - printf(" gd: %x\n", gd); - printf(" |-flags: %x\n", gd->flags); - printf(" |-board_type: %x\n", gd->board_type); - printf(" |-baudrate: %i\n", gd->baudrate); - printf(" |-have_console: %x\n", gd->have_console); - printf(" |-ram_size: %x\n", gd->ram_size); - printf(" |-reloc_off: %x\n", gd->reloc_off); - printf(" |-env_addr: %x\n", gd->env_addr); - printf(" |-env_valid: %x\n", gd->env_valid); - printf(" |-jt(%x): %x\n", gd->jt, *(gd->jt)); - printf(" \-bd: %x\n", gd->bd); + printf(" gd: %p\n", gd); + printf(" |-flags: %lx\n", gd->flags); + printf(" |-board_type: %lx\n", gd->board_type); + printf(" |-baudrate: %lu\n", gd->baudrate); + printf(" |-have_console: %lx\n", gd->have_console); + printf(" |-ram_size: %lx\n", gd->ram_size); + printf(" |-reloc_off: %lx\n", gd->reloc_off); + printf(" |-env_addr: %lx\n", gd->env_addr); + printf(" |-env_valid: %lx\n", gd->env_valid); + printf(" |-jt(%p): %p\n", gd->jt, *(gd->jt)); + printf(" \-bd: %p\n", gd->bd); printf(" |-bi_baudrate: %x\n", bd->bi_baudrate); - printf(" |-bi_ip_addr: %x\n", bd->bi_ip_addr); - printf(" |-bi_boot_params: %x\n", bd->bi_boot_params); - printf(" |-bi_memstart: %x\n", bd->bi_memstart); - printf(" |-bi_memsize: %x\n", bd->bi_memsize); - printf(" |-bi_flashstart: %x\n", bd->bi_flashstart); - printf(" |-bi_flashsize: %x\n", bd->bi_flashsize); - printf(" \-bi_flashoffset: %x\n", bd->bi_flashoffset); + printf(" |-bi_ip_addr: %lx\n", bd->bi_ip_addr); + printf(" |-bi_boot_params: %lx\n", bd->bi_boot_params); + printf(" |-bi_memstart: %lx\n", bd->bi_memstart); + printf(" |-bi_memsize: %lx\n", bd->bi_memsize); + printf(" |-bi_flashstart: %lx\n", bd->bi_flashstart); + printf(" |-bi_flashsize: %lx\n", bd->bi_flashsize); + printf(" \-bi_flashoffset: %lx\n", bd->bi_flashoffset); #endif }

The default console size indirectly applies to length of env vars, so a smaller length makes it hard to pass longer command lines to kernels.
Signed-off-by: Mike Frysinger vapier@gentoo.org --- include/asm-blackfin/config.h | 6 +----- 1 files changed, 1 insertions(+), 5 deletions(-)
diff --git a/include/asm-blackfin/config.h b/include/asm-blackfin/config.h index 6623fb7..5739b13 100644 --- a/include/asm-blackfin/config.h +++ b/include/asm-blackfin/config.h @@ -120,11 +120,7 @@ # define CONFIG_SYS_PROMPT "bfin> " #endif #ifndef CONFIG_SYS_CBSIZE -# ifdef CONFIG_CMD_KGDB -# define CONFIG_SYS_CBSIZE 1024 -# else -# define CONFIG_SYS_CBSIZE 256 -# endif +# define CONFIG_SYS_CBSIZE 1024 #endif #ifndef CONFIG_SYS_BARGSIZE # define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE

If the memory layout pushes the stack out of the default DCPLB coverage, the exception handler may trigger a double fault by trying to push onto the uncovered stack. So handle the exception stack similar to the kernel by using the top of the scratch pad SRAM.
Signed-off-by: Mike Frysinger vapier@gentoo.org --- cpu/blackfin/interrupt.S | 5 +++++ include/asm-blackfin/config.h | 4 ++++ 2 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/cpu/blackfin/interrupt.S b/cpu/blackfin/interrupt.S index dd2cc53..71e0fc6 100644 --- a/cpu/blackfin/interrupt.S +++ b/cpu/blackfin/interrupt.S @@ -5,6 +5,7 @@ * Licensed under the GPL-2 or later. */
+#include <config.h> #include <asm/blackfin.h> #include <asm/entry.h>
@@ -12,12 +13,16 @@
/* default entry point for exceptions */ ENTRY(_trap) + CONFIG_BFIN_SCRATCH_REG = sp; + sp.l = LO(L1_SRAM_SCRATCH_END - 20); + sp.h = HI(L1_SRAM_SCRATCH_END - 20); SAVE_ALL_SYS r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */ sp += -12; call _trap_c; sp += 12; RESTORE_ALL_SYS + sp = CONFIG_BFIN_SCRATCH_REG; rtx; ENDPROC(_trap)
diff --git a/include/asm-blackfin/config.h b/include/asm-blackfin/config.h index 5739b13..25794dd 100644 --- a/include/asm-blackfin/config.h +++ b/include/asm-blackfin/config.h @@ -14,6 +14,10 @@ # error CONFIG_BFIN_CPU: your board config needs to define this #endif
+#ifndef CONFIG_BFIN_SCRATCH_REG +# define CONFIG_BFIN_SCRATCH_REG retn +#endif + /* Make sure the structure is properly aligned */ #if ((CONFIG_SYS_GBL_DATA_ADDR & -4) != CONFIG_SYS_GBL_DATA_ADDR) # error CONFIG_SYS_GBL_DATA_ADDR: must be 4 byte aligned

Since the NAND code now uses 64bit code, make sure we enable support for ADI Blackfin boards in printf to avoid the warning: nand_util.c:45:2: warning: #warning Please define CONFIG_SYS_64BIT_VSPRINTF for correct output!
Signed-off-by: Mike Frysinger vapier@gentoo.org --- blah, one more ...
include/configs/bfin_adi_common.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/include/configs/bfin_adi_common.h b/include/configs/bfin_adi_common.h index b615c79..00bfc6e 100644 --- a/include/configs/bfin_adi_common.h +++ b/include/configs/bfin_adi_common.h @@ -87,6 +87,9 @@ # define CONFIG_CMD_SPIBOOTLDR # endif #endif +#ifdef CONFIG_CMD_NAND +# define CONFIG_SYS_64BIT_VSPRINTF +#endif
/* * Console Settings

The recent 52cb4d4fb348 commit which renamed device to stdio_dev missed the cm-bf548's video board.
Signed-off-by: Mike Frysinger vapier@gentoo.org --- board/cm-bf548/video.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/board/cm-bf548/video.c b/board/cm-bf548/video.c index 49dbe77..0787342 100644 --- a/board/cm-bf548/video.c +++ b/board/cm-bf548/video.c @@ -14,7 +14,7 @@ #include <asm/mach-common/bits/dma.h> #include <i2c.h> #include <linux/types.h> -#include <devices.h> +#include <stdio_dev.h>
int gunzip(void *, int, unsigned char *, unsigned long *);
@@ -291,7 +291,7 @@ void video_puts(const char *s) int drv_video_init(void) { int error, devices = 1; - device_t videodev; + struct stdio_dev videodev;
u8 *dst; u32 fbmem_size = @@ -331,7 +331,7 @@ int drv_video_init(void) videodev.putc = video_putc; /* 'putc' function */ videodev.puts = video_puts; /* 'puts' function */
- error = device_register(&videodev); + error = stdio_register(&videodev);
return (error == 0) ? devices : error; }
participants (1)
-
Mike Frysinger