Re: [U-Boot] [PATCH 4/4] armv7: cache: remove flush on un-aligned invalidate
On Wednesday 10 August 2011 11:41 PM, Anton Staaf wrote: On Tue, Aug 9, 2011 at 11:48 PM, Aneesh Vane...@ti.com wrote: Hi Anton, On Tuesday 09 August 2011 10:09 PM, Anton Staaf wrote: I'm not sure what the larger context of this change is, but it seems like a bad idea to me. There are a lot of locations in U-Boot that Please see this thread for the context. http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/105113/focus=105135 Ahh, I missed this thread (Its title became stale). :) But I completely agree with the outcome, we need to fix the unaligned buffer problem. will end up causing an unaligned invalidate (ext2 and dos file system code in particular). And this change will cause those unaligned invalidates to possibly throw away stores to adjacent variables. If No. Those partial cache-lines on the boundary are left alone. They are not invalidated. So, it still affects only the party calling the invalidate. Ahh, you are correct. I missed that the change would cause fewer cache lines to be invalidated. In this case I am much happier with this change. In light of this I still think the warning is a little mild, since it means that the driver that called the invalidate is certainly going to get the wrong values. Perhaps changing it to an error would be good (I realize that functionally it would be identical, but it would be more potent psychologically). I don't think an assert is warranted in this case since as Albert points out it would prevent online debugging of U-Boot which is a very useful way of working. Ok. I will change the warning to an error. br, Aneesh ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v4] ARM926ejs: Add routines to invalidate D-Cache
Hi Albert, Hong, On Wednesday 10 August 2011 12:06 PM, Albert ARIBAUD wrote: Hi Hong Xu, Le 10/08/2011 08:17, Hong Xu a écrit : There are some ARM926 specific code in arch/arm/lib/cache.c; So I also put the stuff there. ;-) I think Albert Aribaud or the original contributor of cache part shall have clearer view.So, I'll keep neutral to hear more ideas. Basically, cache operations are CP15 commands which are defined for each ARM architecture, not for each ISA, so Marek is right about the best I am not sure if this is the case. I just quickly had a look at the ARMv5 and ARMv6 manuals. They are defining the CP15 instructions for cache operations(section 5.6.2 in ARMv5 manual and section B6.6.5 in the ARMv6 manual. And on first look, the CP15 operations look very similar So, I feel that we can benefit many boards if Hong's operations are kept armv5/armv6 generic(you may have to carefully look at all operations and make sure they are valid for both armv5/v6). My suggestion would be to create a new file in arch/arm /lib/cache_v5_v6.c and include this file in the build conditionally based on a config flag like CONFIG_SYS_ARM_CACHE_V5_V6_SUPPORT or something like that. Any platform that wants to use these operations can then just enable this flag. BTW, ARMv7 is not really backward compatible in the way the operations are done, because it provides the capability to find the levels of caches and repeat the operations at all levels where as up to armv6 the CP15 operations were only for Level 1. I have not looked at the compatibility of ARMv4 operations. best regards, Aneesh ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 8/9] DM9000: change some printf to use debug instead
Dear Eric Jarrige, On 08/10/2011 10:33 PM, Eric Jarrige wrote: Signed-off-by: Eric Jarrigeeric.jarr...@armadeus.org Cc: Ben Warrenbiggerbadder...@gmail.com --- drivers/net/dm9000x.c |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/dm9000x.c b/drivers/net/dm9000x.c index b5c5573..9cd0195 100644 --- a/drivers/net/dm9000x.c +++ b/drivers/net/dm9000x.c @@ -232,7 +232,7 @@ dm9000_probe(void) id_val |= DM9000_ior(DM9000_PIDL) 16; id_val |= DM9000_ior(DM9000_PIDH) 24; if (id_val == DM9000_ID) { - printf(dm9000 i/o: 0x%x, id: 0x%x \n, CONFIG_DM9000_BASE, + DM9000_DBG(dm9000 i/o: 0x%x, id: 0x%x \n, CONFIG_DM9000_BASE, id_val); return 0; } else { @@ -298,19 +298,19 @@ static int dm9000_init(struct eth_device *dev, bd_t *bd) switch (io_mode) { case 0x0: /* 16-bit mode */ - printf(DM9000: running in 16 bit mode\n); + DM9000_DBG(DM9000: running in 16 bit mode\n); snip I'am just wondering: I see that DM9000_DBG is used all over dm9000 code - do you know the reason why not just use debug()? Regards Simon ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v4] ARM926ejs: Add routines to invalidate D-Cache
On Thursday, August 11, 2011 09:02:20 AM Aneesh V wrote: Hi Albert, Hong, On Wednesday 10 August 2011 12:06 PM, Albert ARIBAUD wrote: Hi Hong Xu, Le 10/08/2011 08:17, Hong Xu a écrit : There are some ARM926 specific code in arch/arm/lib/cache.c; So I also put the stuff there. ;-) I think Albert Aribaud or the original contributor of cache part shall have clearer view.So, I'll keep neutral to hear more ideas. Basically, cache operations are CP15 commands which are defined for each ARM architecture, not for each ISA, so Marek is right about the best I am not sure if this is the case. I just quickly had a look at the ARMv5 and ARMv6 manuals. They are defining the CP15 instructions for cache operations(section 5.6.2 in ARMv5 manual and section B6.6.5 in the ARMv6 manual. And on first look, the CP15 operations look very similar So, I feel that we can benefit many boards if Hong's operations are kept armv5/armv6 generic(you may have to carefully look at all operations and make sure they are valid for both armv5/v6). My suggestion would be to create a new file in arch/arm /lib/cache_v5_v6.c and include this file in the build conditionally based on a config flag like CONFIG_SYS_ARM_CACHE_V5_V6_SUPPORT or something like that. Any platform that wants to use these operations can then just enable this flag. BTW, ARMv7 is not really backward compatible in the way the operations are done, because it provides the capability to find the levels of caches and repeat the operations at all levels where as up to armv6 the CP15 operations were only for Level 1. That's actually not a bad idea, but we need to be definitelly 100% sure it'll work for all these different v5 and v6 cores ! I have not looked at the compatibility of ARMv4 operations. best regards, Aneesh ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 8/9] DM9000: change some printf to use debug instead
Hi Simon, Dear Eric Jarrige, On 08/10/2011 10:33 PM, Eric Jarrige wrote: Signed-off-by: Eric Jarrigeeric.jarr...@armadeus.org Cc: Ben Warrenbiggerbadder...@gmail.com --- drivers/net/dm9000x.c |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/dm9000x.c b/drivers/net/dm9000x.c index b5c5573..9cd0195 100644 --- a/drivers/net/dm9000x.c +++ b/drivers/net/dm9000x.c @@ -232,7 +232,7 @@ dm9000_probe(void) id_val |= DM9000_ior(DM9000_PIDL) 16; id_val |= DM9000_ior(DM9000_PIDH) 24; if (id_val == DM9000_ID) { -printf(dm9000 i/o: 0x%x, id: 0x%x \n, CONFIG_DM9000_BASE, +DM9000_DBG(dm9000 i/o: 0x%x, id: 0x%x \n, CONFIG_DM9000_BASE, id_val); return 0; } else { @@ -298,19 +298,19 @@ static int dm9000_init(struct eth_device *dev, bd_t *bd) switch (io_mode) { case 0x0: /* 16-bit mode */ -printf(DM9000: running in 16 bit mode\n); +DM9000_DBG(DM9000: running in 16 bit mode\n); snip I'am just wondering: I see that DM9000_DBG is used all over dm9000 code - do you know the reason why not just use debug()? Very likely only historical reasons as the code predates the DEBUG best practice. Bow that you've identified it, we should change it ;) Cheers Detlev -- It was actually a very beautiful thing to see a sunrise, cause' that's such a calm time of day. It's a wonderful time of day to get ready to go to bed. -- Richard M. Stallman -- DENX Software Engineering GmbH, MD: Wolfgang Denk Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: d...@denx.de ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 3/9] apf9328: Add Armadeus Project board APF9328
On 08/10/2011 10:33 PM, Eric Jarrige wrote: Add Armadeus Project board APF9328 Signed-off-by: Eric Jarrige eric.jarr...@armadeus.org Signed-off-by: Nicolas Colombain nicolas.colomb...@armadeus.com Hi Eric, diff --git a/board/armadeus/apf9328/apf9328.c b/board/armadeus/apf9328/apf9328.c new file mode 100644 index 000..2250221 --- /dev/null +++ b/board/armadeus/apf9328/apf9328.c @@ -0,0 +1,91 @@ +/* + * (C) Copyright 2005-2011 + * Nicolas Colombin tho...@users.sourceforge.net + * Eric Jarrige eric.jarr...@armadeus.org + * Copyright (C) 2004 Sascha Hauer, Synertronixx GmbH + * + * 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 +#include asm/arch/imx-regs.h +#include flash.h +#include netdev.h +#include apf9328fpga.h + +DECLARE_GLOBAL_DATA_PTR; + +int board_init(void) +{ + gd-bd-bi_arch_number = CONFIG_MACH_TYPE; Is there no MACH_TYPE for this board ? It is uncommon for an ARM board. Should this board run Linux ? +void dram_init_banksize(void) +{ +#if (CONFIG_NR_DRAM_BANKS 0) I think you can get rid of this #ifdef, if you have no RAM at all you cannot simply run u-boot. + * Miscellaneous intialization + */ +int misc_init_r(void) +{ + char *s; + +#if (CONFIG_FPGA) + apf9328_init_fpga(); +#endif + +#if (CONFIG_DRIVER_DM9000) + imx_gpio_mode(GPIO_PORTB | GPIO_DR | GPIO_IN | 14); Is there a reason to put this code here and not in board_eth_init ? It is related to Ethernet and I am supposing this setup should be done before dm9000_initialize. + +void show_boot_progress(int status) +{ + return; +} This function seems to me not very useful. Is it not better to drop it ? It is not strictly required. You set also #undef CONFIG_SHOW_BOOT_PROGRESS in the configuration file. +#if (CONFIG_FPGA) +DECLARE_GLOBAL_DATA_PTR; +/* Note that these are pointers to code that is in Flash. They will be + * relocated at runtime. + * Spartan3 code is used to download our Spartan 3 :) code is compatible. + * Just take care about the file size +*/ +Xilinx_Spartan3_Slave_Serial_fns fpga_fns = { + fpga_pre_fn, + fpga_pgm_fn, + fpga_clk_fn, + fpga_init_fn, + fpga_done_fn, + fpga_wr_fn, +}; + +Xilinx_desc fpga[CONFIG_FPGA_COUNT] = { Do you have more as one FPGA on your board ? And if this is true, they share the same firmware ? (I see only one CONFIG_FIRMWARE_ADDR..) +/* + * Initialize the fpga. Return 1 on success, 0 on failure. + */ +int apf9328_init_fpga(void) +{ + char *autoload = getenv(firmware_autoload); + int i, lout = 1; + + debug(%s:%d: Initialize FPGA interface (relocation offset= 0x%.8lx)\n, + __func__, __LINE__, gd-reloc_off); + + fpga_init(); + + for (i = 0; i CONFIG_FPGA_COUNT; i++) { + debug(%s:%d: Adding fpga %d\n, __func__, __LINE__, i); + fpga_add(fpga_xilinx, fpga[i]); + } + + if ((autoload) (0 == strcmp(autoload, 1))) { + if (FPGA_SUCCESS != fpga_load(0, (void *)CONFIG_FIRMWARE_ADDR, I am confused...you add in the configuration file a variable firmware_addr=, and you set it as default to CONFIG_FIRMWARE_ADDR, but you do not use this variable at all. Do you not shoul get the address with getenv(firmware_addr) instead of the precompiled value ? If you add some new CONFIG_ switches in U-Boot, you must document them in the Readme file. However, CONFIG_FIRMWARE_* do not need to be global, right ? +/* + * Spartan 3 FPGA configuration support for the APF9328 daughter board + */ + +#include fpga.h +extern int apf9328_init_fpga(void); diff --git a/board/armadeus/apf9328/eeprom.c b/board/armadeus/apf9328/eeprom.c It seems to much fo me to add a new file only for a single prototype. and it is used only in apf9328fpga.c, as I can see. + +#include common.h +#include command.h +#include dm9000.h + +static int do_read_dm9000_eeprom(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + unsigned int i; + u8 data[2]; + + for (i = 0; i 0x40; i++) { + if (!(i % 0x10)) + printf(\n%08x:, i); + dm9000_read_srom_word(i, data); + printf( %02x%02x, data[1], data[0]); + }
Re: [U-Boot] [PATCH 2/9] mx1: add i2c registers
On 08/10/2011 10:33 PM, Eric Jarrige wrote: Add i2c registers for Freescale imx1/L/S Signed-off-by: Eric Jarrige eric.jarr...@armadeus.org Cc: Stefano Babic sba...@denx.de --- arch/arm/include/asm/arch-imx/imx-regs.h | 23 +++ 1 files changed, 23 insertions(+), 0 deletions(-) Hi Eric, +/* + * I2C module + */ +#define IADR __REG(IMX_I2C_BASE + 0x000) /* I2C Address Register */ +#define IFDR __REG(IMX_I2C_BASE + 0x004) /* I2C Frequency Divider Register*/ +#define I2CR __REG(IMX_I2C_BASE + 0x008) /* I2C Control Register */ +#define I2SR __REG(IMX_I2C_BASE + 0x00C) /* I2C Status Register */ +#define I2DR __REG(IMX_I2C_BASE + 0x010) /* I2C Data I/O Register */ See my comments on your [PATCH 3/9] apf9328: Add Armadeus Project board APF9328. Access to registers must be done via accessors and __REG macro should be removed. Best regards, Stefano Babic -- = DENX Software Engineering GmbH, MD: Wolfgang Denk Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: off...@denx.de = ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 5/9] apf9328: add default board configuration file
On 08/10/2011 10:33 PM, Eric Jarrige wrote: Signed-off-by: Eric Jarrige eric.jarr...@armadeus.org --- include/configs/apf9328.h | 1034 + 1 files changed, 1034 insertions(+), 0 deletions(-) create mode 100644 include/configs/apf9328.h Hi Eric, + +#ifndef __CONFIG_H +#define __CONFIG_H + +#define CONFIG_VERSION_VARIABLE +#define CONFIG_ENV_VERSION 4.0 +#define CONFIG_IDENT_STRING apf9328 patch 4.0 You add CONFIG_ without documenting them. If they are specific for your board, you should use another name, or please add documentation to make them available for other boards, too. + +#define CONFIG_ARM920T 1 /* this is an ARM920T CPU */ It is enough to #define a switch, without setting the value. This should be only: #define CONFIG_ARM920T /* this is an ARM920T CPU */ This must be fixed globally. +#define CONFIG_IMX 1 /* in a Motorola MC9328MXL Chip */ Ditto, and so on.. +/* + * Definition of u-boot build in commands. Check out CONFIG_CMD_DFL if + * neccessary in include/cmd_confdefs.h file. (Un)comment for getting + * functionality or size of u-boot code. + */ + +#include config_cmd_default.h + +#define CONFIG_CMD_ASKENV/* ask for env variable */ +#define CONFIG_CMD_BSP /* Board Specific functions */ +#define CONFIG_CMD_CACHE /* icache, dcache */ +#define CONFIG_CMD_DATE /* support for RTC, date/time.. */ +#define CONFIG_CMD_DHCP /* DHCP Support */ +#define CONFIG_CMD_DIAG /* Diagnostics */ +#define CONFIG_CMD_EEPROM/* EEPROM read/write support*/ +#define CONFIG_CMD_FLASH /* flinfo, erase, protect */ +#define CONFIG_CMD_I2C /* I2C serial bus support */ +#define CONFIG_CMD_IMLS /* List all found images*/ IMLS is already part of default commands +#define CONFIG_CMD_IMMAP /* IMMR dump support*/ Is this not specific for PowerQuick processor ? +#define CONFIG_EXTRA_ENV_SETTINGS \ + env_version= CONFIG_ENV_VERSION \0\ + fileaddr= MK_STR(CONFIG_SYS_LOAD_ADDR)\0\ + filesize= MK_STR(CONFIG_SYS_MONITOR_LEN) \0\ filesize is dynamically computed, you should not add it + ntpserverip=217.147.208.1\0 \ No fixed IP address, please, even if they are related to known NTP servers. +#define CONFIG_MACH_TYPE MACH_TYPE_APF9328 Why do you need it ? Is it not enough to use directly MACH_TYPE_APF9328 ? +#define CONFIG_ETHADDR Not required, right ? +#define CONFIG_NETMASK 255.255.255.0 +#define CONFIG_IPADDR192.168.000.10 Please drop fix ip address. They should not be part of mainline, +#define CONFIG_BOARD_NAMEapf9328 +#define CONFIG_HOSTNAME apf9328 +#define CONFIG_GATEWAYIP 192.168.000.1 +#define CONFIG_SERVERIP 192.168.000.2 Ditto +/* + * Malloc pool need to host env + 128 Kb reserve for other allocations. + */ +#define CONFIG_SYS_MALLOC_LEN(CONFIG_ENV_SIZE + (12810)) I Think checkpatch will complain about missing spaces before and after +#define CONFIG_STACKSIZE (12010) /* stack size */ + +#ifdef CONFIG_USE_IRQ +#define CONFIG_STACKSIZE_IRQ (410) /* IRQ stack*/ +#define CONFIG_STACKSIZE_FIQ (410) /* FIQ stack*/ +#endif Do you need IRQ ? It is undefined, you can drop this part + +/* +* Clocks configuration +*/ +/* + * PLL configuration + * + * f_{dpll}=2*f{ref}*(MFI+MFN/(MFD+1))/(PD+1) + * f_ref=16,777216MHz + * 32768 Hz xtal + * 0x07B32DA5: 192.173 + * 0x002a141f: 191,9944MHz + * 0x040b2007: 144MHz + * 0x0FB32DA5: 96.0864 MHz + * 0x042a141f: 96MHz + * 0x0811140d: 64MHz + * 0x040e200e: 150MHz + * 0x00321431: 200MHz + * + *16 MHz xtal + * 0x08001800: 64MHz mit 16er Quarz + * 0x04001800: 96MHz mit 16er Quarz + * 0x04002400: 144MHz mit 16er Quarz + * + * 31|x x x x|x x x x|x x x x|x x x x|x x x x|x x x x|x x x x|x x x x| 0 + * |XXX|--PD---|---MFD-|XXX|--MFI--|-MFN---| + */ + +#define CONFIG_SYS_OSC32 32768 /* 32768 or 32000 Hz crystal */ +#undef CONFIG_SYS_OSC16/* there is no external 16MHz external clock */ + +/* MPU CLOCK source before PLL (should be named CONFIG_SYS_SYS_CLK_FREQ) */ +#define CONFIG_SYS_CLK_FREQ (512*CONFIG_SYS_OSC32) +#define CONFIG_SYS_MPCTL0_VAL0x07B32DA5 /* 192.17 MHz */ +#define CONFIG_SYS_MPCTL1_VAL0 + +/* system clock source before PLL (should be named CONFIG_SYS_SYSPLL_CLK_FREQ)*/ +#ifndef CONFIG_SYS_OSC16 +#define CONFIG_SYSPLL_CLK_FREQ (512*CONFIG_SYS_OSC32) +#if (CONFIG_SYS_OSC32 == 32000) +#define CONFIG_SYS_SPCTL0_VAL0x043F1437 /* 96
Re: [U-Boot] [PATCH 6/9] mx1: improve PLL freq computation
On 08/10/2011 10:33 PM, Eric Jarrige wrote: Improve PLL freq computation by using the full resolution of the PLL registers Hi Eric, + return (2*(u64)sys_clk_freq * (mfi*(mfd+1) + mfn))/((mfd+1)*(pd+1)); +} - return (2*(CONFIG_SYSPLL_CLK_FREQ10)*( (mfi10) + (mfn10)/(mfd+1)))/(pd+1); Please run checkpatch on your patches for V2. I have not yet done, but this line will report missing spaces. Best regards, Stefano Babic -- = DENX Software Engineering GmbH, MD: Wolfgang Denk Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: off...@denx.de = ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 8/9] DM9000: change some printf to use debug instead
On 08/10/2011 10:33 PM, Eric Jarrige wrote: Signed-off-by: Eric Jarrige eric.jarr...@armadeus.org Cc: Ben Warren biggerbadder...@gmail.com --- drivers/net/dm9000x.c |8 1 files changed, 4 insertions(+), 4 deletions(-) Hi Eric, - printf(dm9000 i/o: 0x%x, id: 0x%x \n, CONFIG_DM9000_BASE, + DM9000_DBG(dm9000 i/o: 0x%x, id: 0x%x \n, CONFIG_DM9000_BASE, id_val); This is a good choice to get rid of nasty DM9000_DBG replacing it with the general debug() ! Best regards, Stefano Babic -- = DENX Software Engineering GmbH, MD: Wolfgang Denk Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: off...@denx.de = ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v3] i2c:gpio:s5p: I2C GPIO Software implementation (via soft_i2c)
Dear Lukasz Majewski, On 10 August 2011 18:21, Lukasz Majewski l.majew...@samsung.com wrote: This patch adds support for software I2C for GONI reference target. It adds support for access to GPIOs by number, not as it is present, by bank and offset. Signed-off-by: Lukasz Majewski l.majew...@samsung.com Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com Cc: Minkyu Kang mk7.k...@samsung.com Cc: Heiko Schocher h...@denx.de --- Changes for v2: - Generic GPIO code added to arch/arm/gpio.h - Platform dependent GPIO code added to board/samsung/goni.c - Code cleanup Changes for v3: - I2C GPIO common code added to drivers/gpio/s5p_gpio.c - i2c_init_board() function added(required by soft_i2c) --- arch/arm/include/asm/arch-s5pc1xx/gpio.h | 38 ++ Please adds s5pc2xx also. board/samsung/goni/goni.c | 16 drivers/gpio/s5p_gpio.c | 24 +++ include/configs/s5p_goni.h | 14 +++ 4 files changed, 86 insertions(+), 6 deletions(-) diff --git a/arch/arm/include/asm/arch-s5pc1xx/gpio.h b/arch/arm/include/asm/arch-s5pc1xx/gpio.h index 903de9c..619ba6f 100644 --- a/arch/arm/include/asm/arch-s5pc1xx/gpio.h +++ b/arch/arm/include/asm/arch-s5pc1xx/gpio.h @@ -134,6 +134,41 @@ unsigned int s5p_gpio_get_value(struct s5p_gpio_bank *bank, int gpio); void s5p_gpio_set_pull(struct s5p_gpio_bank *bank, int gpio, int mode); void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode); void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode); +struct s5p_gpio_bank *s5p_gpio_get_bank(int nr); +int s5p_gpio_get_pin(int nr); + +static inline int gpio_request(int gpio, const char *label) +{ + return 0; +} + +static inline int gpio_direction_input(int nr) +{ + s5p_gpio_direction_input(s5p_gpio_get_bank(nr), + s5p_gpio_get_pin(nr)); + return 0; +} + +static inline int gpio_direction_output(int nr, int value) +{ + s5p_gpio_direction_output(s5p_gpio_get_bank(nr), + s5p_gpio_get_pin(nr), value); + return 0; +} + +static inline int gpio_get_value(int nr) +{ + return (int) s5p_gpio_get_value(s5p_gpio_get_bank(nr), + s5p_gpio_get_pin(nr)); +} + +static inline void gpio_set_value(int nr, int value) +{ + s5p_gpio_set_value(s5p_gpio_get_bank(nr), + s5p_gpio_get_pin(nr), value); +} + +extern struct s5pc110_gpio *s5p_gpio; #endif /* Pin configurations */ @@ -155,4 +190,7 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode); #define GPIO_DRV_FAST 0x0 #define GPIO_DRV_SLOW 0x1 +/* GPIO pins per bank */ +#define GPIO_PER_BANK 8 + #endif diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c index e24cd29..354f5ad 100644 --- a/board/samsung/goni/goni.c +++ b/board/samsung/goni/goni.c @@ -28,12 +28,12 @@ DECLARE_GLOBAL_DATA_PTR; -static struct s5pc110_gpio *s5pc110_gpio; +struct s5pc110_gpio *s5p_gpio; Why you removed the static? And.. why you change s5pc110_gpio to s5p_gpio? It is unrelated changes with this patch. int board_init(void) { /* Set Initial global variables */ - s5pc110_gpio = (struct s5pc110_gpio *)S5PC110_GPIO_BASE; + s5p_gpio = (struct s5pc110_gpio *)S5PC110_GPIO_BASE; gd-bd-bi_arch_number = MACH_TYPE_GONI; gd-bd-bi_boot_params = PHYS_SDRAM_1 + 0x100; @@ -67,13 +67,17 @@ int checkboard(void) } #endif +#ifdef CONFIG_SOFT_I2C +void i2c_init_board(void) {} +#endif Empty function? then please undef CONFIG_SYS_I2C_INIT_BOARD. + #ifdef CONFIG_GENERIC_MMC int board_mmc_init(bd_t *bis) { int i; /* MASSMEMORY_EN: XMSMDATA7: GPJ2[7] output high */ - s5p_gpio_direction_output(s5pc110_gpio-j2, 7, 1); + s5p_gpio_direction_output(s5p_gpio-j2, 7, 1); unrelated change. /* * MMC0 GPIO @@ -86,11 +90,11 @@ int board_mmc_init(bd_t *bis) if (i == 2) continue; /* GPG0[0:6] special function 2 */ - s5p_gpio_cfg_pin(s5pc110_gpio-g0, i, 0x2); + s5p_gpio_cfg_pin(s5p_gpio-g0, i, 0x2); ditto. /* GPG0[0:6] pull disable */ - s5p_gpio_set_pull(s5pc110_gpio-g0, i, GPIO_PULL_NONE); + s5p_gpio_set_pull(s5p_gpio-g0, i, GPIO_PULL_NONE); ditto. /* GPG0[0:6] drv 4x */ - s5p_gpio_set_drv(s5pc110_gpio-g0, i, GPIO_DRV_4X); + s5p_gpio_set_drv(s5p_gpio-g0, i, GPIO_DRV_4X); ditto. } return s5p_mmc_init(0, 4); diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c index 2043859..e247b6f 100644 --- a/drivers/gpio/s5p_gpio.c +++ b/drivers/gpio/s5p_gpio.c @@ -141,3 +141,27 @@ void
Re: [U-Boot] [PATCH] gpio:samsung: s5p_ suffix add for GPIO functions (C210_universal)
Dear Lukasz, On 10 August 2011 18:18, Lukasz Majewski l.majew...@samsung.com wrote: This is a cosmetic patch, which is changing the gpio_ prefix to s5p_gpio_. Signed-off-by: Lukasz Majewski l.majew...@samsung.com Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com Cc: Minkyu Kang mk7.k...@samsung.com --- board/samsung/universal_c210/universal.c | 28 ++-- 1 files changed, 14 insertions(+), 14 deletions(-) applied to u-boot-samsung Thanks Minkyu Kang -- from. prom. www.promsoft.net ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] relocation problem
Dear Marcel, Dear Reinhard, I have the same problem with my board and the actual u-boot-atmel (git from 5th Aug. 2011). It even looks like I am using the same board. It is a in-circuit ICnova SAM9G45 OEM on a ADB1000 with a 5 display. Actually I use the u-boot from in-circuit, which is a patched version basing on u-boot from 2009. I would like to upgrade this old version to the actual u-boot version. Some time ago somebody tried to get the in-circuit patch into the u-boot mainstream, but the patch was rejected because of not meeting the coding rules. Marcel, can you give me a hint what you changed to get your configuration running ? I used the latest code for the at91sam9m10g45ek as reference and added/changed it. Starting the old u-boot version with patches from in-circuit: - Start AT91Bootstrap U-Boot 2009.11 (Jun 18 2011 - 19:57:09) DRAM: 128 MB Flash: 1 MB NAND: 256 MiB In:serial Out: serial Err: serial MMC: Atmel MCI: 0 Net: macb0 Hit any key to stop autoboot: 0 ICnova Starting u-boot-atmel (git) from 5th Aug. 2011: Start AT91Bootstrap U-Boot 2011.06 (Aug 10 2011 - 20:49:32) U-Boot code: 73F0 - 73F45494 BSS: - 73F87110 CPU: AT91SAM9G45 Crystal frequency: 12 MHz CPU clock: 400 MHz Master clock : 133.333 MHz monitor len: 00087110 ramsize: 0800 TLB table at: 77ff Top of RAM usable for U-Boot at: 77ff Reserving 540k for U-Boot at: 77f68000 Reserving 384k for malloc() at: 77f08000 Reserving 24 Bytes for Board Info at: 77f07fe8 Reserving 144 Bytes for Global Data at: 77f07f58 New Stack Pointer is: 77f07f48 RAM Configuration: Bank #0: 7000 128 MiB relocation Offset is: 04068000 no more output, it seems the relocation fails. I have a #DEBUG in lib/board.c to get the above output. Here is my configuration: /* * Configuation settings for the ICNOVA ADB1000 with SAM9G45 OEM and 5 TFT. * * 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 __CONFIG_H #define __CONFIG_H #include asm/hardware.h #define CONFIG_AT91_LEGACY #define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */ /* ARM asynchronous clock */ #define CONFIG_SYS_AT91_SLOW_CLOCK 32768 #define CONFIG_SYS_AT91_MAIN_CLOCK 1200 /* from 12 MHz crystal */ #define CONFIG_SYS_HZ 1000 #define CONFIG_AT91FAMILY #define CONFIG_ARCH_CPU_INIT #undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */ #define CONFIG_CMDLINE_TAG /* enable passing of ATAGs */ #define CONFIG_SETUP_MEMORY_TAGS #define CONFIG_INITRD_TAG #define CONFIG_SKIP_LOWLEVEL_INIT #define CONFIG_BOARD_EARLY_INIT_F #define CONFIG_DISPLAY_CPUINFO /* general purpose I/O */ #define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */ #define CONFIG_AT91_GPIO #define CONFIG_AT91_GPIO_PULLUP 1 /* keep pullups on peripheral pins */ /* serial console */ #define CONFIG_ATMEL_USART #define CONFIG_USART_BASE ATMEL_BASE_DBGU #define CONFIG_USART_ID ATMEL_ID_SYS /* * This needs to be defined for the OHCI code to work but it is defined as * ATMEL_ID_UHPHS in the CPU specific header files. */ #define ATMEL_ID_UHPATMEL_ID_UHPHS /* * Specify the clock enable bit in the PMC_SCER register. */ #define ATMEL_PMC_UHP AT91SAM926x_PMC_UHP /* LCD */ #define CONFIG_LCD #define LCD_BPP LCD_COLOR8 #define CONFIG_LCD_LOGO #undef LCD_TEST_PATTERN #define CONFIG_LCD_INFO #define CONFIG_LCD_INFO_BELOW_LOGO #define CONFIG_SYS_WHITE_ON_BLACK #define CONFIG_ATMEL_LCD #define CONFIG_ATMEL_LCD_RGB565 #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* board specific(not enough SRAM) */ #define CONFIG_ICNOVA_LCD_BASE 0x73E0 #define CONFIG_BOOTDELAY3 /* * Command line configuration. */ #include config_cmd_default.h #define CONFIG_CMD_ASKENV #define CONFIG_CMD_DHCP #define CONFIG_CMD_USB #define CONFIG_CMD_NAND #define CONFIG_CMD_MTDPARTS #define CONFIG_MTD_DEVICE #define CONFIG_MTD_PARTITIONS #define CONFIG_MTD_NAND_ECC_JFFS2 //#define CONFIG_CMD_UBIFS #define CONFIG_CMD_PING #define CONFIG_CMD_JFFS2 #define
Re: [U-Boot] [PATCH] tsec: Configure the buffer descriptor bases to always include all of the descriptors
Hello. On 10-08-2011 11:12, Joe Hershberger wrote: Previously only the last N were included based on the current one in use. Signed-off-by: Joe Hershbergerjoe.hershber...@ni.com Cc: Joe Hershbergerjoe.hershber...@gmail.com Cc: Mingkai Humingkai...@freescale.com Cc: Andy Flemingaflem...@freescale.com Cc: Kumar Galaga...@kernel.crashing.org Cc: Detlev Zundeld...@denx.de --- drivers/net/tsec.c |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index 78ffc95..1805ca0 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -250,8 +250,8 @@ static void startup_tsec(struct eth_device *dev) txIdx = 0; /* Point to the buffer descriptors */ - out_be32(regs-tbase, (unsigned int)(rtx.txbd[txIdx])); - out_be32(regs-rbase, (unsigned int)(rtx.rxbd[rxIdx])); + out_be32(regs-tbase, (unsigned int)(rtx.txbd[0])); + out_be32(regs-rbase, (unsigned int)(rtx.rxbd[0])); Note that and [0] are not really needed. WBR, Sergei ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [u-boot-release] [Patch v2] powerpc/eeprom: cleanup mac command
On Wed, 2011-08-10 at 20:27 -0500, Tabi Timur-B04825 wrote: York Sun wrote: Change the help message to be more helpful. Print argument format. Fix MAX_NUM_PORTS to comply with v1 NXID format. Signed-off-by: York Sunyork...@freescale.com Could you also fix the commands so that they take a number in decimal instead of hex? e.mac[index][i] = simple_strtoul(p, p, 16); ... e.mac_count = simple_strtoul(argv[2], NULL, 16); I know U-Boot uses hex for everything, but it doesn't make sense for this command. Yes, I can change it. But not all of them. We use hexadecimal for mac address but not the count of ports. Please comment on my next version. York ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH v3 3/4] armv7: stronger barrier for cache-maintenance operations
set-way operations need a DSB after them to ensure the operation is complete. DMB may not be enough. Use DSB after all operations instead of DMB. Signed-off-by: Aneesh V ane...@ti.com --- arch/arm/cpu/armv7/cache_v7.c | 12 ++-- 1 files changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/arm/cpu/armv7/cache_v7.c b/arch/arm/cpu/armv7/cache_v7.c index 3e1e1bf..665f025 100644 --- a/arch/arm/cpu/armv7/cache_v7.c +++ b/arch/arm/cpu/armv7/cache_v7.c @@ -81,8 +81,8 @@ static void v7_inval_dcache_level_setway(u32 level, u32 num_sets, : : r (setway)); } } - /* DMB to make sure the operation is complete */ - CP15DMB; + /* DSB to make sure the operation is complete */ + CP15DSB; } static void v7_clean_inval_dcache_level_setway(u32 level, u32 num_sets, @@ -108,8 +108,8 @@ static void v7_clean_inval_dcache_level_setway(u32 level, u32 num_sets, : : r (setway)); } } - /* DMB to make sure the operation is complete */ - CP15DMB; + /* DSB to make sure the operation is complete */ + CP15DSB; } static void v7_maint_dcache_level_setway(u32 level, u32 operation) @@ -227,8 +227,8 @@ static void v7_dcache_maint_range(u32 start, u32 stop, u32 range_op) break; } - /* DMB to make sure the operation is complete */ - CP15DMB; + /* DSB to make sure the operation is complete */ + CP15DSB; } /* Invalidate TLB */ -- 1.7.0.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH v3 1/4] arm: do not force d-cache enable on all boards
c2dd0d45540397704de9b13287417d21049d34c6 added dcache_enable() to board_init_r(). This enables d-cache for all ARM boards. As a result some of the arm boards that are not cache-ready are broken. Revert this change and allow platform code to take the decision on d-cache enabling. Also add some documentation for cache usage in ARM. Signed-off-by: Aneesh V ane...@ti.com --- V2: Updated with additional guidelines in the README. --- arch/arm/lib/board.c |8 ++ arch/arm/lib/cache.c | 12 +++ doc/README.arm-caches | 51 + include/common.h |1 + 4 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 doc/README.arm-caches diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index 14a56f6..38a31d8 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -451,11 +451,9 @@ void board_init_r(gd_t *id, ulong dest_addr) gd-flags |= GD_FLG_RELOC; /* tell others: relocation done */ monitor_flash_len = _end_ofs; - /* -* Enable D$: -* I$, if needed, must be already enabled in start.S -*/ - dcache_enable(); + + /* Enable caches */ + enable_caches(); debug(monitor flash len: %08lX\n, monitor_flash_len); board_init(); /* Setup chipselects */ diff --git a/arch/arm/lib/cache.c b/arch/arm/lib/cache.c index 92b61a2..b545fb7 100644 --- a/arch/arm/lib/cache.c +++ b/arch/arm/lib/cache.c @@ -53,3 +53,15 @@ void __flush_dcache_all(void) } void flush_dcache_all(void) __attribute__((weak, alias(__flush_dcache_all))); + + +/* + * Default implementation of enable_caches() + * Real implementation should be in platform code + */ +void __enable_caches(void) +{ + puts(WARNING: Caches not enabled\n); +} +void enable_caches(void) + __attribute__((weak, alias(__enable_caches))); diff --git a/doc/README.arm-caches b/doc/README.arm-caches new file mode 100644 index 000..a833eee --- /dev/null +++ b/doc/README.arm-caches @@ -0,0 +1,51 @@ +Disabling I-cache: +- Set CONFIG_SYS_ICACHE_OFF + +Disabling D-cache: +- Set CONFIG_SYS_DCACHE_OFF + +Enabling I-cache: +- Make sure CONFIG_SYS_ICACHE_OFF is not set and call icache_enable(). + +Enabling D-cache: +- Make sure CONFIG_SYS_ICACHE_OFF is not set and call dcache_enable(). + +Enabling Caches at System Startup: +- Implement enable_caches() for your platform and enable the I-cache and + D-cache from this function. This function is called immediately + after relocation. + +Guidelines for Working with D-cache: + +Memory to Peripheral DMA: +- Flush the buffer after the MPU writes the data and before the DMA is + initiated. + +Peripheral to Memory DMA: +- Invalidate the buffer before starting the DMA. In case there are any dirty + lines from the DMA buffer in the cache, subsequent cache-line replacements + may corrupt the buffer in memory while the DMA is still going on. Cache-line + replacement can happen if the CPU tries to bring some other memory locations + into the cache while the DMA is going on. +- Invalidate the buffer after the DMA is complete and before the MPU reads + it. This may be needed in addition to the invalidation before the DMA + mentioned above, because in some processors memory contents can spontaneously + come to the cache due to speculative memory access by the CPU. If this + happens with the DMA buffer while DMA is going on we have a coherency problem. + +Buffer Requirements: +- Any buffer that is invalidated(that is, typically the peripheral to + memory DMA buffer) should be aligned to cache-line boundary both at + at the beginning and at the end of the buffer. +- If the buffer is not cache-line aligned invalidation will be restricted + to the aligned part. That is, one cache-line at the respective boundary + may be left out while doing invalidation. + +Cleanup Before Linux: +- cleanup_before_linux() should flush the D-cache, invalidate I-cache, and + disable MMU and caches. +- The following sequence is advisable while disabling d-cache: + 1. disable_dcache() - flushes and disables d-cache + 2. invalidate_dcache_all() - invalid any entry that came to the cache + in the short period after the cache was flushed but before the + cache got disabled. diff --git a/include/common.h b/include/common.h index 12a1074..bd10f31 100644 --- a/include/common.h +++ b/include/common.h @@ -616,6 +616,7 @@ ulong lcd_setmem (ulong); ulong video_setmem (ulong); /* arch/$(ARCH)/lib/cache.c */ +void enable_caches(void); void flush_cache (unsigned long, unsigned long); void flush_dcache_all(void); void flush_dcache_range(unsigned long start, unsigned long stop); -- 1.7.0.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH v3 4/4] armv7: cache: remove flush on un-aligned invalidate
Remove the flush of boundary cache-lines done as part of invalidate on a non cache-line boundary aligned buffer Also, print a warning when this situation is recognized. Signed-off-by: Aneesh V ane...@ti.com --- V2: * New in V2 V3: * error notification instead of warning on un-aligned invalidate --- arch/arm/cpu/armv7/cache_v7.c | 14 -- arch/arm/lib/cache-pl310.c| 15 +-- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/arch/arm/cpu/armv7/cache_v7.c b/arch/arm/cpu/armv7/cache_v7.c index 665f025..1b4e808 100644 --- a/arch/arm/cpu/armv7/cache_v7.c +++ b/arch/arm/cpu/armv7/cache_v7.c @@ -181,21 +181,23 @@ static void v7_dcache_inval_range(u32 start, u32 stop, u32 line_len) u32 mva; /* -* If start address is not aligned to cache-line flush the first -* line to prevent affecting somebody else's buffer +* If start address is not aligned to cache-line do not +* invalidate the first cache-line */ if (start (line_len - 1)) { - v7_dcache_clean_inval_range(start, start + 1, line_len); + printf(ERROR: %s - start address is not aligned - 0x%08x\n, + __func__, start); /* move to next cache line */ start = (start + line_len - 1) ~(line_len - 1); } /* -* If stop address is not aligned to cache-line flush the last -* line to prevent affecting somebody else's buffer +* If stop address is not aligned to cache-line do not +* invalidate the last cache-line */ if (stop (line_len - 1)) { - v7_dcache_clean_inval_range(stop, stop + 1, line_len); + printf(ERROR: %s - stop address is not aligned - 0x%08x\n, + __func__, stop); /* align to the beginning of this cache line */ stop = ~(line_len - 1); } diff --git a/arch/arm/lib/cache-pl310.c b/arch/arm/lib/cache-pl310.c index 36c629c..21d13f7 100644 --- a/arch/arm/lib/cache-pl310.c +++ b/arch/arm/lib/cache-pl310.c @@ -26,6 +26,7 @@ #include asm/armv7.h #include asm/pl310.h #include config.h +#include common.h struct pl310_regs *const pl310 = (struct pl310_regs *)CONFIG_SYS_PL310_BASE; @@ -89,21 +90,23 @@ void v7_outer_cache_inval_range(u32 start, u32 stop) u32 pa, line_size = 32; /* -* If start address is not aligned to cache-line flush the first -* line to prevent affecting somebody else's buffer +* If start address is not aligned to cache-line do not +* invalidate the first cache-line */ if (start (line_size - 1)) { - v7_outer_cache_flush_range(start, start + 1); + printf(ERROR: %s - start address is not aligned - 0x%08x\n, + __func__, start); /* move to next cache line */ start = (start + line_size - 1) ~(line_size - 1); } /* -* If stop address is not aligned to cache-line flush the last -* line to prevent affecting somebody else's buffer +* If stop address is not aligned to cache-line do not +* invalidate the last cache-line */ if (stop (line_size - 1)) { - v7_outer_cache_flush_range(stop, stop + 1); + printf(ERROR: %s - stop address is not aligned - 0x%08x\n, + __func__, stop); /* align to the beginning of this cache line */ stop = ~(line_size - 1); } -- 1.7.0.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH v3 2/4] omap: enable caches at system start-up
Signed-off-by: Aneesh V ane...@ti.com --- arch/arm/cpu/armv7/omap3/board.c |8 arch/arm/cpu/armv7/omap4/board.c |8 2 files changed, 16 insertions(+), 0 deletions(-) diff --git a/arch/arm/cpu/armv7/omap3/board.c b/arch/arm/cpu/armv7/omap3/board.c index 4aaf97b..2c3d7f3 100644 --- a/arch/arm/cpu/armv7/omap3/board.c +++ b/arch/arm/cpu/armv7/omap3/board.c @@ -402,3 +402,11 @@ void v7_outer_cache_disable(void) omap3_update_aux_cr(0, 0x2); } #endif + +#ifndef CONFIG_SYS_DCACHE_OFF +void enable_caches(void) +{ + /* Enable D-cache. I-cache is already enabled in start.S */ + dcache_enable(); +} +#endif diff --git a/arch/arm/cpu/armv7/omap4/board.c b/arch/arm/cpu/armv7/omap4/board.c index 5943d61..8f7c375 100644 --- a/arch/arm/cpu/armv7/omap4/board.c +++ b/arch/arm/cpu/armv7/omap4/board.c @@ -299,3 +299,11 @@ void v7_outer_cache_disable(void) set_pl310_ctrl_reg(0); } #endif + +#ifndef CONFIG_SYS_DCACHE_OFF +void enable_caches(void) +{ + /* Enable D-cache. I-cache is already enabled in start.S */ + dcache_enable(); +} +#endif -- 1.7.0.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH v3 0/4] arm: changes in cache handling
- Avoid enabling caches for all ARM boards - Enable caches for omap3/4 - Stronger barrier for armv7 cache-maintenance operations. V2: * Rebased to latest HEAD of u-boot/master * Improved the README * Added a patch for removing the flush in invalidate and for printing a warning in such cases. V3: * Improve the error message on un-aligned invalidate Aneesh V (4): arm: do not force d-cache enable on all boards omap: enable caches at system start-up armv7: stronger barrier for cache-maintenance operations armv7: cache: remove flush on un-aligned invalidate arch/arm/cpu/armv7/cache_v7.c| 26 ++- arch/arm/cpu/armv7/omap3/board.c |8 ++ arch/arm/cpu/armv7/omap4/board.c |8 ++ arch/arm/lib/board.c |8 ++--- arch/arm/lib/cache-pl310.c | 15 ++ arch/arm/lib/cache.c | 12 + doc/README.arm-caches| 51 ++ include/common.h |1 + 8 files changed, 106 insertions(+), 23 deletions(-) create mode 100644 doc/README.arm-caches ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 0/7] SPL Linux boot
This addds direct Linux boot to SPL. It implements a savebp command to save ATAGS or FDT to NAND flash. The kernel image has to be in place for this! checkpatch whines about not using strict_strtoull - since this is not available I can't change this. based on: - The new SPL layout - OMAP3 new SPL layout (http://article.gmane.org/gmane.comp.boot-loaders.u-boot/105260) Related to: - http://article.gmane.org/gmane.comp.boot-loaders.u-boot/102669 Simon Schwarz (7): arm: Add Prep subcommand support to bootm Add savebp command arm: Add savebp implementation for arm omap-common/spl: Add linux boot to SPL devkit8000/spl: init GPMC for dm9000 in SPL omap-common: Add NAND SPL linux booting omap-common: fixes BSS overwriting problem arch/arm/cpu/armv7/omap-common/spl.c | 49 +++- arch/arm/cpu/armv7/omap-common/spl_nand.c | 63 +++ arch/arm/include/asm/omap_common.h|2 + arch/arm/include/asm/savebp.h | 27 ++ arch/arm/lib/Makefile |1 + arch/arm/lib/bootm.c | 116 +++ arch/arm/lib/savebp.c | 92 + board/timll/devkit8000/devkit8000.c | 33 ++-- common/Makefile |1 + common/cmd_bootm.c|2 +- common/cmd_savebp.c | 123 + include/command.h |5 + include/configs/devkit8000.h | 14 +++- 13 files changed, 446 insertions(+), 82 deletions(-) create mode 100644 arch/arm/include/asm/savebp.h create mode 100644 arch/arm/lib/savebp.c create mode 100644 common/cmd_savebp.c -- 1.7.4.1 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 1/7] arm: Add Prep subcommand support to bootm
Adds prep subcommand to bootm implementation of ARM. When bootm is called with the subcommand prep the function stops right after ATAGS creation and before announce_and_cleanup. This is used in savebp command Signed-off-by: Simon Schwarz simonschwarz...@gmail.com --- arch/arm/lib/bootm.c | 116 +++-- common/cmd_bootm.c |2 +- 2 files changed, 65 insertions(+), 53 deletions(-) diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c index 802e833..d3152ae 100644 --- a/arch/arm/lib/bootm.c +++ b/arch/arm/lib/bootm.c @@ -1,4 +1,7 @@ -/* +/* Copyright (C) 2011 + * Corscience GmbH Co. KG - Simon Schwarz schw...@corscience.de + * - Added prep subcommand support + * * (C) Copyright 2002 * Sysgo Real-Time Solutions, GmbH www.elinos.com * Marius Groeger mgroe...@sysgo.de @@ -55,7 +58,7 @@ static struct tag *params; static ulong get_sp(void); #if defined(CONFIG_OF_LIBFDT) -static int bootm_linux_fdt(int machid, bootm_headers_t *images); +static int bootm_linux_fdt(int machid, bootm_headers_t *images, int flag); #endif void arch_lmb_reserve(struct lmb *lmb) @@ -98,63 +101,67 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images) bd_t*bd = gd-bd; char*s; int machid = bd-bi_arch_number; - void(*kernel_entry)(int zero, int arch, uint params); + void(*kernel_entry)(int zero, int arch, uint params) = NULL; #ifdef CONFIG_CMDLINE_TAG char *commandline = getenv (bootargs); #endif - - if ((flag != 0) (flag != BOOTM_STATE_OS_GO)) - return 1; - - s = getenv (machid); - if (s) { - machid = simple_strtoul (s, NULL, 16); - printf (Using machid 0x%x from environment\n, machid); - } - - show_boot_progress (15); + if ((flag != 0) (!(flag BOOTM_STATE_OS_GO || +flag BOOTM_STATE_OS_PREP))) + return 1; /* subcommand not implemented */ + else if ((flag == 0) || flag BOOTM_STATE_OS_PREP) { + s = getenv(machid); + if (s) { + strict_strtoul(s, 16, (long unsigned int *) machid); + printf(Using machid 0x%x from environment\n, machid); + } + + show_boot_progress(15); #ifdef CONFIG_OF_LIBFDT - if (images-ft_len) - return bootm_linux_fdt(machid, images); + if (images-ft_len) + return bootm_linux_fdt(machid, images, flag); #endif - kernel_entry = (void (*)(int, int, uint))images-ep; + kernel_entry = (void (*)(int, int, uint))images-ep; - debug (## Transferring control to Linux (at address %08lx) ...\n, - (ulong) kernel_entry); + debug(## Transferring control to Linux (at address %08lx) \ + ...\n, (ulong) kernel_entry); #if defined (CONFIG_SETUP_MEMORY_TAGS) || \ defined (CONFIG_CMDLINE_TAG) || \ defined (CONFIG_INITRD_TAG) || \ defined (CONFIG_SERIAL_TAG) || \ defined (CONFIG_REVISION_TAG) - setup_start_tag (bd); + setup_start_tag(bd); #ifdef CONFIG_SERIAL_TAG - setup_serial_tag (params); + setup_serial_tag(params); #endif #ifdef CONFIG_REVISION_TAG - setup_revision_tag (params); + setup_revision_tag(params); #endif #ifdef CONFIG_SETUP_MEMORY_TAGS - setup_memory_tags (bd); + setup_memory_tags(bd); #endif #ifdef CONFIG_CMDLINE_TAG - setup_commandline_tag (bd, commandline); + setup_commandline_tag(bd, commandline); #endif #ifdef CONFIG_INITRD_TAG - if (images-rd_start images-rd_end) - setup_initrd_tag (bd, images-rd_start, images-rd_end); + if (images-rd_start images-rd_end) + setup_initrd_tag(bd, images-rd_start, images-rd_end); #endif - setup_end_tag(bd); + setup_end_tag(bd); #endif + if (flag BOOTM_STATE_OS_PREP) + return 0; + } - announce_and_cleanup(); - - kernel_entry(0, machid, bd-bi_boot_params); - /* does not return */ + if (flag == 0 || flag BOOTM_STATE_OS_GO) { + announce_and_cleanup(); + kernel_entry(0, machid, bd-bi_boot_params); + /* does not return */ + } return 1; } @@ -174,10 +181,10 @@ static int fixup_memory_node(void *blob) return fdt_fixup_memory_banks(blob, start, size, CONFIG_NR_DRAM_BANKS); } -static int bootm_linux_fdt(int machid, bootm_headers_t *images) +static int bootm_linux_fdt(int machid, bootm_headers_t *images, int flag) { ulong rd_len; - void (*kernel_entry)(int zero, int dt_machid, void *dtblob); + void (*kernel_entry)(int zero, int dt_machid, void *dtblob) = NULL; ulong of_size = images-ft_len; char **of_flat_tree =
[U-Boot] [PATCH 2/7] Add savebp command
This adds a savebp command to the u-boot. Related config: CONFIG_CMD_SAVEBP activate/deactivate the command CONFIG_CMD_SAVEBP_NAND_OFS Offset in NAND to use CONFIG_SYS_NAND_SPL_KERNEL_OFFS Offset in NAND of direct boot kernel image to use in SPL CONFIG_SYS_SPL_ARGS_ADDR Address where the kernel boot arguments are expected - this is normally RAM-begin + 0x100 Signed-off-by: Simon Schwarz simonschwarz...@gmail.com --- common/Makefile |1 + common/cmd_savebp.c | 123 ++ include/configs/devkit8000.h |6 ++ 3 files changed, 130 insertions(+), 0 deletions(-) create mode 100644 common/cmd_savebp.c diff --git a/common/Makefile b/common/Makefile index 124a427..0b42968 100644 --- a/common/Makefile +++ b/common/Makefile @@ -158,6 +158,7 @@ COBJS-$(CONFIG_USB_STORAGE) += usb_storage.o endif COBJS-$(CONFIG_CMD_XIMG) += cmd_ximg.o COBJS-$(CONFIG_YAFFS2) += cmd_yaffs2.o +COBJS-$(CONFIG_CMD_SAVEBP) += cmd_savebp.o # others COBJS-$(CONFIG_DDR_SPD) += ddr_spd.o diff --git a/common/cmd_savebp.c b/common/cmd_savebp.c new file mode 100644 index 000..cc988fd --- /dev/null +++ b/common/cmd_savebp.c @@ -0,0 +1,123 @@ +/* Copyright (C) 2011 + * Corscience GmbH Co. KG - Simon Schwarz schw...@corscience.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 +#include command.h + +#define TYPE_FDT 0 +#define TYPE_ATAGS 1 + +static inline int str2off(const char *p, loff_t *num) +{ + char *endptr; + + *num = simple_strtoull(p, endptr, 16); + return *p != '\0' *endptr == '\0'; +} + +int do_savebp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + loff_t offset; + char *bootm_argsv[] = {do_bootm, xxx}; + int img_type = TYPE_ATAGS; + int ret = 0; + + /* - Validate args - */ + switch (argc) { + case 3: /*2. arg offset */ + if (!str2off(argv[2], offset)) { + printf('%s' is not a number\n, argv[2]); + return cmd_usage(cmdtp); + } + case 2: /* 1. arg atags or fdt */ + if (!(strcmp(argv[1], fdt) || strcmp(argv[1], atags))) + return cmd_usage(cmdtp); + if (!strcmp(argv[1], fdt)) + img_type = TYPE_FDT; + /* using standard offset */ + offset = (loff_t)CONFIG_CMD_SAVEBP_NAND_OFS; + printf(using standard destination at: 0x%x\n, + (uint32_t)offset); + break; + default: + return cmd_usage(cmdtp); + } + + /* - do the work - */ + /* exec bootm_start as subcommand of do_bootm to init the images +* data structure */ + debug(exec bootm subcommand start\n); + bootm_argsv[1] = start; + ret = do_bootm(find_cmd(do_bootm), 0, 2, bootm_argsv); + debug(Subcommand start bootm retcode: %d\n, ret); + + debug(exec bootm subcommand loados\n); + bootm_argsv[1] = loados; + ret = do_bootm(find_cmd(do_bootm), 0, 2, bootm_argsv); + debug(Subcommand loados bootm retcode: %d\n, ret); + +#ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH + debug(exec bootm subcommand ramdisk\n); + bootm_argsv[1] = ramdisk; + ret = do_bootm(find_cmd(do_bootm), 0, 2, bootm_argsv); + debug(Subcommand ramdisk bootm retcode: %d\n, ret); +#endif + +#ifdef CONFIG_OF_LIBFDT + if (img_type == TYPE_FDT) { + debug(exec bootm subcommand fdt\n); + bootm_argsv[1] = fdt; + ret = do_bootm(find_cmd(do_bootm), 0, 2, bootm_argsv); + debug(Subcommand fdt bootm retcode: %d\n, ret); + } +#endif + + debug(exec bootm subcommand cmdline\n); + bootm_argsv[1] = cmdline; + ret = do_bootm(find_cmd(do_bootm), 0, 2, bootm_argsv); + debug(Subcommand cmdline bootm retcode: %d\n, ret); + + debug(exec bootm bdt cmdline\n); + bootm_argsv[1] = bdt; + ret = do_bootm(find_cmd(do_bootm), 0, 2, bootm_argsv); + debug(Subcommand bdt bootm retcode: %d\n, ret); + + debug(exec bootm subcommand
[U-Boot] [PATCH 4/7] omap-common/spl: Add linux boot to SPL
This adds Linux booting to the SPL Related CONFIGs: CONFIG_SPL_OS_BOOT Activates/Deactivates the OS booting feature CONFIG_SPL_OS_BOOT_KEY defines the IO-pin number u-boot switch - if pressed u-boot is booted CONFIG_SYS_SPL_MACHID Machine ID of the used board CONFIG_SYS_NAND_SPL_KERNEL_OFFS Offset in NAND of direct boot kernel image to use in SPL CONFIG_SYS_SPL_ARGS_ADDR Address where the kernel boot arguments are expected - this is normaly RAM-begin + 0x100 Signed-off-by: Simon Schwarz simonschwarz...@gmail.com --- arch/arm/cpu/armv7/omap-common/spl.c | 48 - include/configs/devkit8000.h |7 +++- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/arch/arm/cpu/armv7/omap-common/spl.c b/arch/arm/cpu/armv7/omap-common/spl.c index c76fea6..9c22c7a 100644 --- a/arch/arm/cpu/armv7/omap-common/spl.c +++ b/arch/arm/cpu/armv7/omap-common/spl.c @@ -35,6 +35,7 @@ #include asm/arch/mmc_host_def.h #include i2c.h #include image.h +#include asm/omap_gpio.h DECLARE_GLOBAL_DATA_PTR; @@ -63,6 +64,25 @@ void board_init_f(ulong dummy) relocate_code(CONFIG_SPL_STACK, gdata, CONFIG_SPL_TEXT_BASE); } +#ifdef CONFIG_SPL_OS_BOOT +/* Return the value of the U-boot key + * + * RETURN + * 0 if not pressed + * positiv if pressed + */ +int spl_uboot_key(void) +{ + int val = 0; + if (!omap_request_gpio(CONFIG_SPL_OS_BOOT_KEY)) { + omap_set_gpio_direction(CONFIG_SPL_OS_BOOT_KEY, 1); + val = omap_get_gpio_datain(CONFIG_SPL_OS_BOOT_KEY); + omap_free_gpio(CONFIG_SPL_OS_BOOT_KEY); + } + return !val; +} +#endif /* CONFIG_SPL_OS_BOOT */ + void spl_parse_image_header(const struct image_header *header) { u32 header_size = sizeof(struct image_header); @@ -90,7 +110,25 @@ void spl_parse_image_header(const struct image_header *header) } } -static void jump_to_image_no_args(void) +#ifdef CONFIG_SPL_OS_BOOT +/* This function jumps to an image with argument. Normally an FDT or ATAGS + * image. + * arg: Pointer to paramter image in RAM + */ +void jump_to_image_linux(void *arg) +{ + debug(Entering kernel arg pointer: 0x%X\n, arg); + typedef void (*image_entry_arg_t)(int, int, void *) + __attribute__ ((noreturn)); + image_entry_arg_t image_entry = + (image_entry_arg_t) spl_image.entry_point; + /* cleanup_before_linux(); */ /*write SPL function for that*/ + image_entry(0, CONFIG_SYS_SPL_MACHID, arg); +} +void jump_to_image_linux(void *) __attribute__ ((noreturn)); +#endif + +void jump_to_image_no_args(void) { typedef void (*image_entry_noargs_t)(void)__attribute__ ((noreturn)); image_entry_noargs_t image_entry = @@ -99,8 +137,8 @@ static void jump_to_image_no_args(void) debug(image entry point: 0x%X\n, spl_image.entry_point); image_entry(); } - void jump_to_image_no_args(void) __attribute__ ((noreturn)); + void board_init_r(gd_t *id, ulong dummy) { u32 boot_device; @@ -134,6 +172,12 @@ void board_init_r(gd_t *id, ulong dummy) debug(Jumping to U-Boot\n); jump_to_image_no_args(); break; +#ifdef CONFIG_SPL_OS_BOOT + case IH_OS_LINUX: + debug(Jumping to Linux\n); + jump_to_image_linux((void *)CONFIG_SYS_SPL_ARGS_ADDR); + break; +#endif default: puts(Unsupported OS image.. Jumping nevertheless..\n); jump_to_image_no_args(); diff --git a/include/configs/devkit8000.h b/include/configs/devkit8000.h index 4d0573c..3897ab4 100644 --- a/include/configs/devkit8000.h +++ b/include/configs/devkit8000.h @@ -38,7 +38,7 @@ #define CONFIG_OMAP34301 /* which is in a 3430 */ #define CONFIG_OMAP3_DEVKIT80001 /* working with DevKit8000 */ -#defineCONFIG_SYS_TEXT_BASE0x80008000 +#defineCONFIG_SYS_TEXT_BASE0x8010 #define CONFIG_SDRC/* The chip has SDRC controller */ @@ -328,7 +328,7 @@ #define CONFIG_SPL_MAX_SIZE0xB400 /* 45 K */ #define CONFIG_SPL_STACK LOW_LEVEL_SRAM_STACK -#define CONFIG_SPL_BSS_START_ADDR 0x8000 /*CONFIG_SYS_SDRAM_BASE*/ +#define CONFIG_SPL_BSS_START_ADDR 0x8500 /* leave space for bootargs*/ #define CONFIG_SPL_BSS_MAX_SIZE0x8 /* NAND boot config */ @@ -358,6 +358,9 @@ #define CONFIG_CMD_SAVEBP_WRITE_SIZE 0x400 /* 1024 byte */ #define CONFIG_CMD_SAVEBP_NAND_OFS (CONFIG_SYS_NAND_SPL_KERNEL_OFFS+\ 0x40) +#define CONFIG_SPL_OS_BOOT +#define CONFIG_SPL_OS_BOOT_KEY 26 +#define CONFIG_SYS_SPL_MACHID MACH_TYPE_DEVKIT8000 #define CONFIG_SYS_NAND_SPL_KERNEL_OFFS0x28 #define CONFIG_SYS_SPL_ARGS_ADDR (PHYS_SDRAM_1 + 0x100) #endif /* __CONFIG_H */ -- 1.7.4.1
[U-Boot] [PATCH 3/7] arm: Add savebp implementation for arm
This adds the savebp implementation to the arm platform. Related CONFIGs: CONFIG_CMD_SAVEBP_WRITE_SIZE defines the size of the image to write Signed-off-by: Simon Schwarz simonschwarz...@gmail.com --- arch/arm/include/asm/savebp.h | 27 arch/arm/lib/Makefile |1 + arch/arm/lib/savebp.c | 92 + include/command.h |5 ++ include/configs/devkit8000.h |1 + 5 files changed, 126 insertions(+), 0 deletions(-) create mode 100644 arch/arm/include/asm/savebp.h create mode 100644 arch/arm/lib/savebp.c diff --git a/arch/arm/include/asm/savebp.h b/arch/arm/include/asm/savebp.h new file mode 100644 index 000..3774e45 --- /dev/null +++ b/arch/arm/include/asm/savebp.h @@ -0,0 +1,27 @@ +/* Copyright (C) 2011 + * Corscience GmbH Co. KG - Simon Schwarz schw...@corscience.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 + */ +#ifndef _SAVEBP_H_ +#define _SAVEBP_H_ + +extern bootm_headers_t images; + +#endif /* _SAVEBP_H_ */ diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile index 300c8fa..abf7a6a 100644 --- a/arch/arm/lib/Makefile +++ b/arch/arm/lib/Makefile @@ -44,6 +44,7 @@ COBJS-y += cache-cp15.o COBJS-$(CONFIG_SYS_L2_PL310) += cache-pl310.o COBJS-y+= interrupts.o COBJS-y+= reset.o +COBJS-$(CONFIG_CMD_SAVEBP) += savebp.o SOBJS-$(CONFIG_USE_ARCH_MEMSET) += memset.o SOBJS-$(CONFIG_USE_ARCH_MEMCPY) += memcpy.o endif diff --git a/arch/arm/lib/savebp.c b/arch/arm/lib/savebp.c new file mode 100644 index 000..412f623 --- /dev/null +++ b/arch/arm/lib/savebp.c @@ -0,0 +1,92 @@ +/* Copyright (C) 2011 + * Corscience GmbH Co. KG - Simon Schwarz schw...@corscience.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 +#include command.h +#include image.h + +#include nand.h +#include asm/savebp.h + +#ifdef CONFIG_OMAP34XX +#include asm/arch/sys_proto.h +#endif + +DECLARE_GLOBAL_DATA_PTR; + +/* This function writes given bootparams to NAND flash + * adr: Start adress of Kernel parameter image (ATAGS, FDT) + * length: length of the image in byte + * off: offset in NAND flash + * + * borrowd heavily from common/cmd_nand.c + */ +static void boot_params_to_nand(u_char *adr, size_t length, loff_t off) +{ + nand_info_t *nand = nand_info[0]; /* use 0 as in SPL */ + nand_erase_options_t opts; +#ifdef CONFIG_OMAP34XX + omap_nand_switch_ecc(1); /* use hw ecc on omap for SPL compat */ +#endif + /* erase */ + memset(opts, 0, sizeof(opts)); + opts.offset = off; + opts.length = length; + opts.quiet = 1; + opts.spread = 1; + nand_erase_opts(nand, opts); + + /* write */ + if (nand_write_skip_bad(nand, off, length, adr, 0)) { + printf(FAILED!\n); + return; + } + + printf(Written to offset 0x%llX, size: %d bytes\n, + off, length); +} + +/* Saves FDT to NAND */ +int do_savebp_fdt(loff_t offset) +{ + /* XXX: Problem address of FDT is needed here... */ + boot_params_to_nand((u_char *)images.ft_addr, + CONFIG_CMD_SAVEBP_WRITE_SIZE, offset); + return 0; +} + + +/* Saves ATAGS to NAND */ +int do_savebp_atags(loff_t offset) +{ + /* Vars */ + bd_t *bd = gd-bd; + + printf(write ATAGS to NAND...\n); + + /* save em */ + /* used fixed size - easier to read later just ignore garbage */ +
[U-Boot] [PATCH 6/7] omap-common: Add NAND SPL linux booting
This implements booting of Linux from NAND in SPL Signed-off-by: Simon Schwarz simonschwarz...@gmail.com --- arch/arm/cpu/armv7/omap-common/spl_nand.c | 48 +++- 1 files changed, 32 insertions(+), 16 deletions(-) diff --git a/arch/arm/cpu/armv7/omap-common/spl_nand.c b/arch/arm/cpu/armv7/omap-common/spl_nand.c index af02a59..06254b2 100644 --- a/arch/arm/cpu/armv7/omap-common/spl_nand.c +++ b/arch/arm/cpu/armv7/omap-common/spl_nand.c @@ -46,26 +46,42 @@ void spl_nand_load_image(void) /*use CONFIG_SYS_TEXT_BASE as temporary storage area */ header = (struct image_header *)(CONFIG_SYS_TEXT_BASE); +#ifdef CONFIG_SPL_OS_BOOT + if (!spl_uboot_key()) { + /* load parameter image */ + nand_spl_load_image(CONFIG_CMD_SAVEBP_NAND_OFS , + CONFIG_CMD_SAVEBP_WRITE_SIZE, + (void *)CONFIG_SYS_SPL_ARGS_ADDR); + /* load linux */ + nand_spl_load_image(CONFIG_SYS_NAND_SPL_KERNEL_OFFS, + CONFIG_SYS_NAND_PAGE_SIZE, (void *)header); + spl_parse_image_header(header); + nand_spl_load_image(CONFIG_SYS_NAND_SPL_KERNEL_OFFS, + spl_image.size, (void *)spl_image.load_addr); + } else +#endif + { #ifdef CONFIG_NAND_ENV_DST - nand_spl_load_image(CONFIG_ENV_OFFSET, - CONFIG_SYS_NAND_PAGE_SIZE, (void *)header); - spl_parse_image_header(header); - nand_spl_load_image(CONFIG_ENV_OFFSET, spl_image.size, - (void *)image_load_addr); + nand_spl_load_image(CONFIG_ENV_OFFSET, + CONFIG_SYS_NAND_PAGE_SIZE, (void *)header); + spl_parse_image_header(header); + nand_spl_load_image(CONFIG_ENV_OFFSET, spl_image.size, + (void *)spl_image.load_addr); #ifdef CONFIG_ENV_OFFSET_REDUND - nand_spl_load_image(CONFIG_ENV_OFFSET_REDUND, - CONFIG_SYS_NAND_PAGE_SIZE, (void *)header); - spl_parse_image_header(header); - nand_spl_load_image(CONFIG_ENV_OFFSET_REDUND, spl_image.size, - (void *)image_load_addr); + nand_spl_load_image(CONFIG_ENV_OFFSET_REDUND, + CONFIG_SYS_NAND_PAGE_SIZE, (void *)header); + spl_parse_image_header(header); + nand_spl_load_image(CONFIG_ENV_OFFSET_REDUND, spl_image.size, + (void *)spl_image.load_addr); #endif #endif - /* Load u-boot */ - nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS, - CONFIG_SYS_NAND_PAGE_SIZE, (void *)header); - spl_parse_image_header(header); - nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS, - spl_image.size, (void *)spl_image.load_addr); + /* Load u-boot */ + nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS, + CONFIG_SYS_NAND_PAGE_SIZE, (void *)header); + spl_parse_image_header(header); + nand_spl_load_image(CONFIG_SYS_NAND_U_BOOT_OFFS, + spl_image.size, (void *)spl_image.load_addr); + } nand_deselect(); } -- 1.7.4.1 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 5/7] devkit8000/spl: init GPMC for dm9000 in SPL
Linux crashes if the GPMC isn't configured for the dm9000. Signed-off-by: Simon Schwarz simonschwarz...@gmail.com --- arch/arm/cpu/armv7/omap-common/spl.c |1 + arch/arm/include/asm/omap_common.h |2 ++ board/timll/devkit8000/devkit8000.c | 33 - 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/arch/arm/cpu/armv7/omap-common/spl.c b/arch/arm/cpu/armv7/omap-common/spl.c index 9c22c7a..0c38bbb 100644 --- a/arch/arm/cpu/armv7/omap-common/spl.c +++ b/arch/arm/cpu/armv7/omap-common/spl.c @@ -175,6 +175,7 @@ void board_init_r(gd_t *id, ulong dummy) #ifdef CONFIG_SPL_OS_BOOT case IH_OS_LINUX: debug(Jumping to Linux\n); + spl_board_prepare_for_linux(); jump_to_image_linux((void *)CONFIG_SYS_SPL_ARGS_ADDR); break; #endif diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h index 015cede..0906f49 100644 --- a/arch/arm/include/asm/omap_common.h +++ b/arch/arm/include/asm/omap_common.h @@ -77,6 +77,8 @@ u32 omap_boot_mode(void); /* SPL common function s*/ void spl_parse_image_header(const struct image_header *header); +int spl_uboot_key(void); +void spl_board_prepare_for_linux(void); /* NAND SPL functions */ void spl_nand_load_image(void); diff --git a/board/timll/devkit8000/devkit8000.c b/board/timll/devkit8000/devkit8000.c index 9b53742..3dd0eeb 100644 --- a/board/timll/devkit8000/devkit8000.c +++ b/board/timll/devkit8000/devkit8000.c @@ -62,6 +62,18 @@ int board_init(void) return 0; } +/* Configure GPMC registers for DM9000 */ +static void gpmc_dm9000_config(void) +{ + writel(NET_GPMC_CONFIG1, gpmc_cfg-cs[6].config1); + writel(NET_GPMC_CONFIG2, gpmc_cfg-cs[6].config2); + writel(NET_GPMC_CONFIG3, gpmc_cfg-cs[6].config3); + writel(NET_GPMC_CONFIG4, gpmc_cfg-cs[6].config4); + writel(NET_GPMC_CONFIG5, gpmc_cfg-cs[6].config5); + writel(NET_GPMC_CONFIG6, gpmc_cfg-cs[6].config6); + writel(NET_GPMC_CONFIG7, gpmc_cfg-cs[6].config7); +} + /* * Routine: misc_init_r * Description: Configure board specific parts @@ -80,14 +92,7 @@ int misc_init_r(void) #endif #ifdef CONFIG_DRIVER_DM9000 - /* Configure GPMC registers for DM9000 */ - writel(NET_GPMC_CONFIG1, gpmc_cfg-cs[6].config1); - writel(NET_GPMC_CONFIG2, gpmc_cfg-cs[6].config2); - writel(NET_GPMC_CONFIG3, gpmc_cfg-cs[6].config3); - writel(NET_GPMC_CONFIG4, gpmc_cfg-cs[6].config4); - writel(NET_GPMC_CONFIG5, gpmc_cfg-cs[6].config5); - writel(NET_GPMC_CONFIG6, gpmc_cfg-cs[6].config6); - writel(NET_GPMC_CONFIG7, gpmc_cfg-cs[6].config7); + gpmc_dm9000_config(); /* Use OMAP DIE_ID as MAC address */ if (!eth_getenv_enetaddr(ethaddr, enetaddr)) { @@ -119,7 +124,7 @@ void set_muxconf_regs(void) MUX_DEVKIT8000(); } -#if defined(CONFIG_DRIVER_DM9000) !defined(CONFIG_SPL_BUILD) +#ifdef CONFIG_DRIVER_DM9000 /* * Routine: board_eth_init * Description: Setting up the Ethernet hardware. @@ -129,3 +134,13 @@ int board_eth_init(bd_t *bis) return dm9000_initialize(bis); } #endif + +#ifdef CONFIG_SPL_OS_BOOT +/* do board specific preperation before SPL + * Linux boot */ +void spl_board_prepare_for_linux(void) +{ + gpmc_dm9000_config(); +} + +#endif -- 1.7.4.1 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 7/7] omap-common: fixes BSS overwriting problem
spl_nand overwrote BSS section because it reads a whole block everytime. Now loads the block to spare area and just copy the needed junk to destination. Whole block read is necessary for ecc check! Signed-off-by: Simon Schwarz simonschwarz...@gmail.com --- arch/arm/cpu/armv7/omap-common/spl_nand.c | 21 ++--- 1 files changed, 18 insertions(+), 3 deletions(-) diff --git a/arch/arm/cpu/armv7/omap-common/spl_nand.c b/arch/arm/cpu/armv7/omap-common/spl_nand.c index 06254b2..408892f 100644 --- a/arch/arm/cpu/armv7/omap-common/spl_nand.c +++ b/arch/arm/cpu/armv7/omap-common/spl_nand.c @@ -24,6 +24,7 @@ #include asm/u-boot.h #include asm/utils.h #include asm/arch/sys_proto.h +#include asm/io.h #include nand.h #include timestamp_autogenerated.h #include version_autogenerated.h @@ -33,6 +34,7 @@ void spl_nand_load_image(void) { struct image_header *header; + int *src, *dst; switch (omap_boot_mode()) { case NAND_MODE_HW_ECC: debug(spl: nand - using hw ecc\n); @@ -49,16 +51,29 @@ void spl_nand_load_image(void) #ifdef CONFIG_SPL_OS_BOOT if (!spl_uboot_key()) { /* load parameter image */ - nand_spl_load_image(CONFIG_CMD_SAVEBP_NAND_OFS , + /* load to temp position since nand_spl_load_image reads +* a whole block which is typically larger than +* CONFIG_CMD_SAVEBP_WRITE_SIZE therefore may overwrite +* following sections like BSS */ + nand_spl_load_image(CONFIG_CMD_SAVEBP_NAND_OFS, CONFIG_CMD_SAVEBP_WRITE_SIZE, - (void *)CONFIG_SYS_SPL_ARGS_ADDR); + (void *)CONFIG_SYS_TEXT_BASE); + /* copy to destintion */ + for (dst = (int *)CONFIG_SYS_SPL_ARGS_ADDR, + src = (int *)CONFIG_SYS_TEXT_BASE; + src (int *)(CONFIG_SYS_TEXT_BASE + + CONFIG_CMD_SAVEBP_WRITE_SIZE); + src++, dst++) { + writel(readl(src), dst); + } /* load linux */ nand_spl_load_image(CONFIG_SYS_NAND_SPL_KERNEL_OFFS, CONFIG_SYS_NAND_PAGE_SIZE, (void *)header); spl_parse_image_header(header); nand_spl_load_image(CONFIG_SYS_NAND_SPL_KERNEL_OFFS, - spl_image.size, (void *)spl_image.load_addr); + spl_image.size, + (void *)spl_image.load_addr - sizeof(header)); } else #endif { -- 1.7.4.1 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [Patch v3] powerpc/eeprom: cleanup mac command
Change the help message to be more helpful. Print argument format. Fix MAX_NUM_PORTS to comply with v1 NXID format. Use decimal for port count. Signed-off-by: York Sun york...@freescale.com --- board/freescale/common/sys_eeprom.c |4 ++-- common/cmd_mac.c| 29 + 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/board/freescale/common/sys_eeprom.c b/board/freescale/common/sys_eeprom.c index d2ed036..e139a34 100644 --- a/board/freescale/common/sys_eeprom.c +++ b/board/freescale/common/sys_eeprom.c @@ -34,7 +34,7 @@ #endif #ifdef CONFIG_SYS_I2C_EEPROM_NXID -#define MAX_NUM_PORTS 23 +#define MAX_NUM_PORTS 31 #define NXID_VERSION 1 #endif @@ -398,7 +398,7 @@ int do_mac(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) set_date(argv[2]); break; case 'p': /* MAC table size */ - e.mac_count = simple_strtoul(argv[2], NULL, 16); + e.mac_count = simple_strtoul(argv[2], NULL, 10); update_crc(); break; case '0' ... '9': /* mac 0 through mac 22 */ diff --git a/common/cmd_mac.c b/common/cmd_mac.c index 1884c2a..bd9cc19 100644 --- a/common/cmd_mac.c +++ b/common/cmd_mac.c @@ -29,21 +29,26 @@ extern int do_mac(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); U_BOOT_CMD( mac, 3, 1, do_mac, display and program the system ID and MAC addresses in EEPROM, - [read|save|id|num|errata|date|ports|0|1|2|3|4|5|6|7]\n + without argument\n + - show content of system ID and MAC addresses\n read\n - - show content of EEPROM\n + - read EEPROM without showing\n mac save\n - save to the EEPROM\n mac id\n - - program system id\n - mac num\n - - program system serial number\n - mac errata\n - - program errata data\n - mac date\n - - program date\n - mac ports\n + - program system id (fixed)\n + mac num string\n + - program string as system serial number\n + mac errata string\n + - program string as errata data\n + mac date YYMMDDhhmmss\n + - program timestamp\n + mac ports n\n - program the number of ports\n - mac X\n - - program the MAC address for port X [X=0...7] + mac n XX:XX:XX:XX:XX:XX\n +#ifdef CONFIG_SYS_I2C_EEPROM_NXID + - program the MAC address for port n [n=0...30] +#else + - program the MAC address for port n [n=0...7] +#endif ); -- 1.7.0.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [u-boot-release] [Patch v3] powerpc/eeprom: cleanup mac command
York Sun wrote: - e.mac_count = simple_strtoul(argv[2], NULL, 16); + e.mac_count = simple_strtoul(argv[2], NULL, 10); You forgot the MAC address index. There's another use of strtoul in the code that needs to be fixed. Also, if you use 0 instead of 10, then it should be able to handle hex as well, just in case someone wants to use it. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] relocation problem (again)
Dear Marcel, Dear Reinhard, sorry I forgot to mention, that this is in reply to http://lists.denx.de/pipermail/u-boot/2011-January/084499.html I have the same problem with my board and the actual u-boot-atmel (git from 5th Aug. 2011). It even looks like I am using the same board. It is a in-circuit ICnova SAM9G45 OEM on a ADB1000 with a 5 display. Actually I use the u-boot from in-circuit, which is a patched version basing on u-boot from 2009. I would like to upgrade this old version to the actual u-boot version. Some time ago somebody tried to get the in-circuit patch into the u-boot mainstream, but the patch was rejected because of not meeting the coding rules. Marcel, can you give me a hint what you changed to get your configuration running ? I used the latest code for the at91sam9m10g45ek as reference and added/changed it. Starting the old u-boot version with patches from in-circuit: - Start AT91Bootstrap U-Boot 2009.11 (Jun 18 2011 - 19:57:09) DRAM: 128 MB Flash: 1 MB NAND: 256 MiB In:serial Out: serial Err: serial MMC: Atmel MCI: 0 Net: macb0 Hit any key to stop autoboot: 0 ICnova Starting u-boot-atmel (git) from 5th Aug. 2011: Start AT91Bootstrap U-Boot 2011.06 (Aug 10 2011 - 20:49:32) U-Boot code: 73F0 - 73F45494 BSS: - 73F87110 CPU: AT91SAM9G45 Crystal frequency: 12 MHz CPU clock: 400 MHz Master clock : 133.333 MHz monitor len: 00087110 ramsize: 0800 TLB table at: 77ff Top of RAM usable for U-Boot at: 77ff Reserving 540k for U-Boot at: 77f68000 Reserving 384k for malloc() at: 77f08000 Reserving 24 Bytes for Board Info at: 77f07fe8 Reserving 144 Bytes for Global Data at: 77f07f58 New Stack Pointer is: 77f07f48 RAM Configuration: Bank #0: 7000 128 MiB relocation Offset is: 04068000 no more output, it seems the relocation fails. I have a #DEBUG in lib/board.c to get the above output. Here is my configuration: /* * Configuation settings for the ICNOVA ADB1000 with SAM9G45 OEM and 5 TFT. * * 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 __CONFIG_H #define __CONFIG_H #include asm/hardware.h #define CONFIG_AT91_LEGACY #define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */ /* ARM asynchronous clock */ #define CONFIG_SYS_AT91_SLOW_CLOCK 32768 #define CONFIG_SYS_AT91_MAIN_CLOCK 1200 /* from 12 MHz crystal */ #define CONFIG_SYS_HZ 1000 #define CONFIG_AT91FAMILY #define CONFIG_ARCH_CPU_INIT #undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */ #define CONFIG_CMDLINE_TAG /* enable passing of ATAGs */ #define CONFIG_SETUP_MEMORY_TAGS #define CONFIG_INITRD_TAG #define CONFIG_SKIP_LOWLEVEL_INIT #define CONFIG_BOARD_EARLY_INIT_F #define CONFIG_DISPLAY_CPUINFO /* general purpose I/O */ #define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */ #define CONFIG_AT91_GPIO #define CONFIG_AT91_GPIO_PULLUP 1 /* keep pullups on peripheral pins */ /* serial console */ #define CONFIG_ATMEL_USART #define CONFIG_USART_BASE ATMEL_BASE_DBGU #define CONFIG_USART_ID ATMEL_ID_SYS /* * This needs to be defined for the OHCI code to work but it is defined as * ATMEL_ID_UHPHS in the CPU specific header files. */ #define ATMEL_ID_UHPATMEL_ID_UHPHS /* * Specify the clock enable bit in the PMC_SCER register. */ #define ATMEL_PMC_UHP AT91SAM926x_PMC_UHP /* LCD */ #define CONFIG_LCD #define LCD_BPP LCD_COLOR8 #define CONFIG_LCD_LOGO #undef LCD_TEST_PATTERN #define CONFIG_LCD_INFO #define CONFIG_LCD_INFO_BELOW_LOGO #define CONFIG_SYS_WHITE_ON_BLACK #define CONFIG_ATMEL_LCD #define CONFIG_ATMEL_LCD_RGB565 #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* board specific(not enough SRAM) */ #define CONFIG_ICNOVA_LCD_BASE 0x73E0 #define CONFIG_BOOTDELAY3 /* * Command line configuration. */ #include config_cmd_default.h #define CONFIG_CMD_ASKENV #define CONFIG_CMD_DHCP #define CONFIG_CMD_USB #define CONFIG_CMD_NAND #define CONFIG_CMD_MTDPARTS #define CONFIG_MTD_DEVICE #define CONFIG_MTD_PARTITIONS
Re: [U-Boot] Pull request: u-boot-arm/master -- updated
Hi Albert, Sandeep On Thursday 04 August 2011 10:34 PM, Albert ARIBAUD wrote: Hi Wolfgang, Here is my pull request for u-boot-arm/master, from which I did remove the wrongly applied commits that you indicated and in which all patches submitted before the merge window closure are taken into account. Developers, please direct complaints to me for any ARM-directed patches submitted before the window closure, and which is not accounted for at this point. Still to apply are bugfix patches submitted after window closure as well as the UTF-8 conversion patch and the ARM board removal patch. I hope you will be taking the following critical fixes for arm/omap: 1. http://marc.info/?l=u-bootm=131307370323792w=2 2. http://patchwork.ozlabs.org/patch/107678/ 3. http://patchwork.ozlabs.org/patch/108865/ best regards, Aneesh ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] relocation problem
Dear Cajus Hahn, Dear Marcel, Dear Reinhard, I have the same problem with my board and the actual u-boot-atmel (git from 5th Aug. 2011). It even looks like I am using the same board. It is a in-circuit ICnova SAM9G45 OEM on a ADB1000 with a 5 display. Actually I use the u-boot from in-circuit, which is a patched version basing on u-boot from 2009. I would like to upgrade this old version to the actual u-boot version. Some time ago somebody tried to get the in-circuit patch into the u-boot mainstream, but the patch was rejected because of not meeting the coding rules. Marcel, can you give me a hint what you changed to get your configuration running ? I used the latest code for the at91sam9m10g45ek as reference and added/changed it. First, let me clear up a thing: Most ARM boards were runtime broken when relocation was introduced. We additionally broke the AT91 boards by cleaning up the SoC header and source files. This second brokenness has been removed by the recent patches for most of the AT91 SoCs. What probably has not been fixed in all cases is the brokeness due to the relocation. It might well be, that boards build clean, but might not run beyond relocation. You probably have such an issue. Please refer to the doc/README.ARM-relocation. Make sure TEXT_BASE is exactly the address where at91bootstrap loads u-boot. Make sure that at91bootstrap loads the full u-boot image (u-boot became larger quite a bit due to relocation and other changes). Make sure that area is not overlapping the final location of the relocated u-boot (top of RAM). The default at91bootstraps tend to load the image already quite high into RAM, if relocation overlaps this, you are doomed. Starting the old u-boot version with patches from in-circuit: - Start AT91Bootstrap U-Boot 2009.11 (Jun 18 2011 - 19:57:09) DRAM: 128 MB Flash: 1 MB NAND: 256 MiB In:serial Out: serial Err: serial MMC: Atmel MCI: 0 Net: macb0 Hit any key to stop autoboot: 0 ICnova Starting u-boot-atmel (git) from 5th Aug. 2011: Start AT91Bootstrap U-Boot 2011.06 (Aug 10 2011 - 20:49:32) U-Boot code: 73F0 - 73F45494 BSS: - 73F87110 I do not see any TEXT_BASE definition in the files below. Have you merged current u-boot with some old patches? CPU: AT91SAM9G45 Crystal frequency: 12 MHz CPU clock: 400 MHz Master clock : 133.333 MHz monitor len: 00087110 ramsize: 0800 TLB table at: 77ff Top of RAM usable for U-Boot at: 77ff Reserving 540k for U-Boot at: 77f68000 Reserving 384k for malloc() at: 77f08000 Reserving 24 Bytes for Board Info at: 77f07fe8 Reserving 144 Bytes for Global Data at: 77f07f58 New Stack Pointer is: 77f07f48 RAM Configuration: Bank #0: 7000 128 MiB relocation Offset is: 04068000 no more output, it seems the relocation fails. I have a #DEBUG in lib/board.c to get the above output. Here is my configuration: /* * Configuation settings for the ICNOVA ADB1000 with SAM9G45 OEM and 5 TFT. * * 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 __CONFIG_H #define __CONFIG_H #include asm/hardware.h Where is the definition that an AT91SAM9G45 is used? It MUST BE defined before hardware.h is included. #define CONFIG_AT91_LEGACY #define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */ /* ARM asynchronous clock */ #define CONFIG_SYS_AT91_SLOW_CLOCK 32768 #define CONFIG_SYS_AT91_MAIN_CLOCK 1200 /* from 12 MHz crystal */ #define CONFIG_SYS_HZ 1000 #define CONFIG_AT91FAMILY #define CONFIG_ARCH_CPU_INIT #undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */ #define CONFIG_CMDLINE_TAG/* enable passing of ATAGs */ #define CONFIG_SETUP_MEMORY_TAGS #define CONFIG_INITRD_TAG #define CONFIG_SKIP_LOWLEVEL_INIT #define CONFIG_BOARD_EARLY_INIT_F #define CONFIG_DISPLAY_CPUINFO /* general purpose I/O */ #define CONFIG_ATMEL_LEGACY /* required until (g)pio is fixed */ #define CONFIG_AT91_GPIO #define CONFIG_AT91_GPIO_PULLUP 1 /*
Re: [U-Boot] [u-boot-release] [Patch v3] powerpc/eeprom: cleanup mac command
On Thu, 2011-08-11 at 09:55 -0500, Tabi Timur-B04825 wrote: York Sun wrote: - e.mac_count = simple_strtoul(argv[2], NULL, 16); + e.mac_count = simple_strtoul(argv[2], NULL, 10); You forgot the MAC address index. There's another use of strtoul in the code that needs to be fixed. I didn't forget the index. It is base 10 already. Also, if you use 0 instead of 10, then it should be able to handle hex as well, just in case someone wants to use it. That's not a bad idea. I will change to 0 but leave the mac address as hex. York ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] relocation problem (again)
Dear Cajus Hahn, Dear Marcel, Dear Reinhard, sorry I forgot to mention, that this is in reply to http://lists.denx.de/pipermail/u-boot/2011-January/084499.html I suppose you have not followed the steps I pointed out then? I have the same problem with my board and the actual u-boot-atmel (git ... Please do not repeat the same message. Best Regards, Reinhard ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [Patch v4] powerpc/eeprom: cleanup mac command
Change the help message to be more helpful. Print argument format. Fix MAX_NUM_PORTS to comply with v1 NXID format. Accept hexadecimal and decimal for port count and index. Signed-off-by: York Sun york...@freescale.com --- board/freescale/common/sys_eeprom.c |8 common/cmd_mac.c| 29 + 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/board/freescale/common/sys_eeprom.c b/board/freescale/common/sys_eeprom.c index d2ed036..bd3572b 100644 --- a/board/freescale/common/sys_eeprom.c +++ b/board/freescale/common/sys_eeprom.c @@ -34,7 +34,7 @@ #endif #ifdef CONFIG_SYS_I2C_EEPROM_NXID -#define MAX_NUM_PORTS 23 +#define MAX_NUM_PORTS 31 #define NXID_VERSION 1 #endif @@ -398,11 +398,11 @@ int do_mac(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) set_date(argv[2]); break; case 'p': /* MAC table size */ - e.mac_count = simple_strtoul(argv[2], NULL, 16); + e.mac_count = simple_strtoul(argv[2], NULL, 0); update_crc(); break; - case '0' ... '9': /* mac 0 through mac 22 */ - set_mac_address(simple_strtoul(argv[1], NULL, 10), argv[2]); + case '0' ... '9': /* mac 0 through mac 31 */ + set_mac_address(simple_strtoul(argv[1], NULL, 0), argv[2]); break; case 'h': /* help */ default: diff --git a/common/cmd_mac.c b/common/cmd_mac.c index 1884c2a..bd9cc19 100644 --- a/common/cmd_mac.c +++ b/common/cmd_mac.c @@ -29,21 +29,26 @@ extern int do_mac(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); U_BOOT_CMD( mac, 3, 1, do_mac, display and program the system ID and MAC addresses in EEPROM, - [read|save|id|num|errata|date|ports|0|1|2|3|4|5|6|7]\n + without argument\n + - show content of system ID and MAC addresses\n read\n - - show content of EEPROM\n + - read EEPROM without showing\n mac save\n - save to the EEPROM\n mac id\n - - program system id\n - mac num\n - - program system serial number\n - mac errata\n - - program errata data\n - mac date\n - - program date\n - mac ports\n + - program system id (fixed)\n + mac num string\n + - program string as system serial number\n + mac errata string\n + - program string as errata data\n + mac date YYMMDDhhmmss\n + - program timestamp\n + mac ports n\n - program the number of ports\n - mac X\n - - program the MAC address for port X [X=0...7] + mac n XX:XX:XX:XX:XX:XX\n +#ifdef CONFIG_SYS_I2C_EEPROM_NXID + - program the MAC address for port n [n=0...30] +#else + - program the MAC address for port n [n=0...7] +#endif ); -- 1.7.0.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 8/9] DM9000: change some printf to use debug instead
Hi Simon, Hi Detlev, Hi Simon, Dear Eric Jarrige, On 08/10/2011 10:33 PM, Eric Jarrige wrote: Signed-off-by: Eric Jarrigeeric.jarr...@armadeus.org Cc: Ben Warrenbiggerbadder...@gmail.com --- drivers/net/dm9000x.c |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/dm9000x.c b/drivers/net/dm9000x.c index b5c5573..9cd0195 100644 --- a/drivers/net/dm9000x.c +++ b/drivers/net/dm9000x.c @@ -232,7 +232,7 @@ dm9000_probe(void) id_val |= DM9000_ior(DM9000_PIDL) 16; id_val |= DM9000_ior(DM9000_PIDH) 24; if (id_val == DM9000_ID) { - printf(dm9000 i/o: 0x%x, id: 0x%x \n, CONFIG_DM9000_BASE, + DM9000_DBG(dm9000 i/o: 0x%x, id: 0x%x \n, CONFIG_DM9000_BASE, id_val); return 0; } else { @@ -298,19 +298,19 @@ static int dm9000_init(struct eth_device *dev, bd_t *bd) switch (io_mode) { case 0x0: /* 16-bit mode */ - printf(DM9000: running in 16 bit mode\n); + DM9000_DBG(DM9000: running in 16 bit mode\n); snip I'am just wondering: I see that DM9000_DBG is used all over dm9000 code - do you know the reason why not just use debug()? dm9000 does not use debug() at all. That's the reason to fix the printf issues as a first priority by using the DM9000_DBG. Very likely only historical reasons as the code predates the DEBUG best practice. Bow that you've identified it, we should change it ;) Cheers, Eric ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] Supplier LED Tube with UL
How are you? I am Marine Maysun International ltd ofChina, our company isspecialized in manufacturing LED lighting products. If you interest in our products LED lighting, you can visit our website: http://www.maysungroup.com And now I offer a product: LED Tube Length:600mm,900mm,1200mm,1500mm LED Tube:T8/T10 Power: 8W,12W,15W,18W,22W Certificate: CE ROHS / UL I hope we will have the opportunity to cooperate in the future. If you interest in our products, please contact me Sincerely Marine -- MaySun International Limited Add:ShiQi District,Zhongshan city,China P.O.Box:528400 E-mail:maysun...@hotmail.com sa...@maysungroup.com Skype:maysun100 MSN:maysun...@hotmail.com Mob:+86-13925338032 Tel/Fax:+86-760-88856860 http://www.maysungroup.com ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] relocation problem (again)
Hi Reinhard, Dear Cajus Hahn, Dear Marcel, Dear Reinhard, sorry I forgot to mention, that this is in reply to http://lists.denx.de/pipermail/u-boot/2011-January/084499.html I suppose you have not followed the steps I pointed out then? I have the same problem with my board and the actual u-boot-atmel (git ... Please do not repeat the same message. I have to admit that I'm responsible for this repetition. The copy of Cajus' mail that I received missed your address in the CC header, so I told Cajus off-list to explicitely CC you to increase chances of you reading the mail. Of course this misleading instruction by myself led to confusion and the repeated message. So I take the blame for this, sorry. Detlev -- To summarize: It is a well known and lamented fact that those people who most want to rule people are, ipso facto, those least suited to do it. To summarize the summary: anyone who is capable of getting themselves made President should on no account be allowed to do the job. -- The Hitchhikers Guide To The Galaxy -- DENX Software Engineering GmbH, MD: Wolfgang Denk Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: d...@denx.de ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH] beagle: pass expansionboard name in bootargs
On Thu, Aug 11, 2011 at 1:47 AM, Joel A Fernandes agnel.j...@gmail.com wrote: From: Koen Kooi k-k...@ti.com Signed-off-by: Koen Kooi k...@dominion.thruhere.net Signed-off-by: Joel A Fernandes agnel.j...@gmail.com Acked-by: Jason Kridner jkrid...@beagleboard.org I've put Sandeep (TI maintainer) and Khasim (BeagleBoard u-boot owner) in copy. --- include/configs/omap3_beagle.h | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h index 42575f1..c41d48e 100644 --- a/include/configs/omap3_beagle.h +++ b/include/configs/omap3_beagle.h @@ -202,6 +202,7 @@ usbtty=cdc_acm\0 \ console=ttyS2,115200n8\0 \ mpurate=auto\0 \ + buddy=none \ vram=12M\0 \ dvimode=1024x768MR-16@60\0 \ defaultdisplay=dvi\0 \ @@ -212,6 +213,7 @@ nandrootfstype=jffs2\0 \ mmcargs=setenv bootargs console=${console} \ mpurate=${mpurate} \ + buddy=${buddy} \ vram=${vram} \ omapfb.mode=dvi:${dvimode} \ omapdss.def_disp=${defaultdisplay} \ @@ -219,6 +221,7 @@ rootfstype=${mmcrootfstype}\0 \ nandargs=setenv bootargs console=${console} \ mpurate=${mpurate} \ + buddy=${buddy} \ vram=${vram} \ omapfb.mode=dvi:${dvimode} \ omapdss.def_disp=${defaultdisplay} \ -- 1.7.1 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH] OMAP3 Beagle Pin Mux initialization glitch fix
On Thu, Aug 11, 2011 at 1:26 AM, Joel A Fernandes agnel.j...@gmail.com wrote: From: Bob Feretich bob.feret...@rafresearch.com From: Bob Feretich bob.feret...@rafresearch.com The below patch reverses the order of two segments in the board file. Output pins need to have their values initialized, before they are exposed to the logic outside the chip. Previous discussions: http://lists.denx.de/pipermail/u-boot/2011-March/088115.html Signed-off-by: Bob Feretich bob.feret...@rafresearch.com Signed-off-by: Joel A Fernandes agnel.j...@gmail.com Acked-by: Jason Kridner jkrid...@beagleboard.org + Sandeep and Khasim --- board/ti/beagle/beagle.c | 12 ++-- 1 files changed, 6 insertions(+), 6 deletions(-) diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c index ab50514..15d061a 100644 --- a/board/ti/beagle/beagle.c +++ b/board/ti/beagle/beagle.c @@ -301,17 +301,17 @@ int misc_init_r(void) twl4030_power_init(); twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON); - /* Configure GPIOs to output */ - writel(~(GPIO23 | GPIO10 | GPIO8 | GPIO2 | GPIO1), gpio6_base-oe); - writel(~(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 | - GPIO15 | GPIO14 | GPIO13 | GPIO12), gpio5_base-oe); - - /* Set GPIOs */ + /* Set GPIO states before they are made outputs */ writel(GPIO23 | GPIO10 | GPIO8 | GPIO2 | GPIO1, gpio6_base-setdataout); writel(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 | GPIO15 | GPIO14 | GPIO13 | GPIO12, gpio5_base-setdataout); + /* Configure GPIOs to output */ + writel(~(GPIO23 | GPIO10 | GPIO8 | GPIO2 | GPIO1), gpio6_base-oe); + writel(~(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 | + GPIO15 | GPIO14 | GPIO13 | GPIO12), gpio5_base-oe); + dieid_num_r(); return 0; -- 1.7.1 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH] beagleboard: add support for xM revision C
On Thu, Aug 11, 2011 at 1:50 AM, Joel A Fernandes agnel.j...@gmail.com wrote: From: Koen Kooi k...@dominion.thruhere.net Signed-off-by: Koen Kooi k...@dominion.thruhere.net Signed-off-by: Joel A Fernandes agnel.j...@gmail.com Acked-by: Jason Kridner jkrid...@beagleboard.org + Sandeep and Khasim --- board/ti/beagle/beagle.c | 10 ++ board/ti/beagle/beagle.h | 1 + 2 files changed, 11 insertions(+), 0 deletions(-) diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c index 15d061a..7768901 100644 --- a/board/ti/beagle/beagle.c +++ b/board/ti/beagle/beagle.c @@ -216,6 +216,16 @@ int misc_init_r(void) TWL4030_PM_RECEIVER_VAUX2_DEV_GRP, TWL4030_PM_RECEIVER_DEV_GRP_P1); break; + case REVISION_XM_C: + printf(Beagle xM Rev C\n); + setenv(beaglerev, xMC); + MUX_BEAGLE_XM(); + /* Set VAUX2 to 1.8V for EHCI PHY */ + twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VAUX2_DEDICATED, + TWL4030_PM_RECEIVER_VAUX2_VSEL_18, + TWL4030_PM_RECEIVER_VAUX2_DEV_GRP, + TWL4030_PM_RECEIVER_DEV_GRP_P1); + break; default: printf(Beagle unknown 0x%02x\n, get_board_revision()); MUX_BEAGLE_XM(); diff --git a/board/ti/beagle/beagle.h b/board/ti/beagle/beagle.h index a7401b1..04247cd 100644 --- a/board/ti/beagle/beagle.h +++ b/board/ti/beagle/beagle.h @@ -39,6 +39,7 @@ const omap3_sysinfo sysinfo = { #define REVISION_C4 0x5 #define REVISION_XM_A 0x0 #define REVISION_XM_B 0x1 +#define REVISION_XM_C 0x2 /* * IEN - Input Enable -- 1.7.1 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH] OMAP: Remove omapfb.debug=y from Beagle and Overo env settings
On Thu, Aug 11, 2011 at 1:34 AM, Joel A Fernandes agnel.j...@gmail.com wrote: From: Steve Sakoman st...@sakoman.com The kernel DSS2 code is mature now, and keeping this setting hurts performance Signed-off-by: Steve Sakoman st...@sakoman.com Acked-by: Jason Kridner jkrid...@beagleboard.org + Sandeep and Khasim Joel, shouldn't we have your signed-off-by as well, since you are in the delivery path? --- include/configs/omap3_beagle.h | 2 -- include/configs/omap3_overo.h | 2 -- 2 files changed, 0 insertions(+), 4 deletions(-) diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h index 9fd80ed..42575f1 100644 --- a/include/configs/omap3_beagle.h +++ b/include/configs/omap3_beagle.h @@ -214,7 +214,6 @@ mpurate=${mpurate} \ vram=${vram} \ omapfb.mode=dvi:${dvimode} \ - omapfb.debug=y \ omapdss.def_disp=${defaultdisplay} \ root=${mmcroot} \ rootfstype=${mmcrootfstype}\0 \ @@ -222,7 +221,6 @@ mpurate=${mpurate} \ vram=${vram} \ omapfb.mode=dvi:${dvimode} \ - omapfb.debug=y \ omapdss.def_disp=${defaultdisplay} \ root=${nandroot} \ rootfstype=${nandrootfstype}\0 \ diff --git a/include/configs/omap3_overo.h b/include/configs/omap3_overo.h index 242b317..0f64054 100644 --- a/include/configs/omap3_overo.h +++ b/include/configs/omap3_overo.h @@ -170,7 +170,6 @@ mpurate=${mpurate} \ vram=${vram} \ omapfb.mode=dvi:${dvimode} \ - omapfb.debug=y \ omapdss.def_disp=${defaultdisplay} \ root=${mmcroot} \ rootfstype=${mmcrootfstype}\0 \ @@ -178,7 +177,6 @@ mpurate=${mpurate} \ vram=${vram} \ omapfb.mode=dvi:${dvimode} \ - omapfb.debug=y \ omapdss.def_disp=${defaultdisplay} \ root=${nandroot} \ rootfstype=${nandrootfstype}\0 \ -- 1.7.1 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [u-boot-release] [Patch v3] powerpc/eeprom: cleanup mac command
I see two calls to simple_stroul, and both have 16 in them. -- Timur Tabi Linux kernel developer at Freescale From: sun york-R58495 Sent: Thursday, August 11, 2011 10:03 AM To: Tabi Timur-B04825 Cc: u-boot@lists.denx.de Subject: Re: [u-boot-release] [Patch v3] powerpc/eeprom: cleanup mac command On Thu, 2011-08-11 at 09:55 -0500, Tabi Timur-B04825 wrote: York Sun wrote: - e.mac_count = simple_strtoul(argv[2], NULL, 16); + e.mac_count = simple_strtoul(argv[2], NULL, 10); You forgot the MAC address index. There's another use of strtoul in the code that needs to be fixed. I didn't forget the index. It is base 10 already. Also, if you use 0 instead of 10, then it should be able to handle hex as well, just in case someone wants to use it. That's not a bad idea. I will change to 0 but leave the mac address as hex. York ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] THANKS
l am a Staff of Hang Seng Bank HongKong, I do not know if we can work together in transferring $19,500,000.USD from my bank to you account. Finally if you are interested I shall provide you with more details. Email: song...@w.cn ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH] OMAP: Remove omapfb.debug=y from Beagle and Overo env settings
On Thu, Aug 11, 2011 at 1:24 PM, Jason Kridner jkrid...@beagleboard.org wrote: On Thu, Aug 11, 2011 at 1:34 AM, Joel A Fernandes agnel.j...@gmail.com wrote: From: Steve Sakoman st...@sakoman.com The kernel DSS2 code is mature now, and keeping this setting hurts performance Signed-off-by: Steve Sakoman st...@sakoman.com Acked-by: Jason Kridner jkrid...@beagleboard.org + Sandeep and Khasim Joel, shouldn't we have your signed-off-by as well, since you are in the delivery path? Sure, I will resubmit this once. I just hope that this patch is applied in the same order I submitted it so that there are no merge conflicts due to an out-of-order apply ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH v2] OMAP: Remove omapfb.debug=y from Beagle and Overo env settings
From: Steve Sakoman st...@sakoman.com The kernel DSS2 code is mature now, and keeping this setting hurts performance Signed-off-by: Steve Sakoman st...@sakoman.com Signed-off-by: Joel A Fernandes agnel.j...@gmail.com --- Changes since v1: Added myself to SOB include/configs/omap3_beagle.h |2 -- include/configs/omap3_overo.h |2 -- 2 files changed, 0 insertions(+), 4 deletions(-) diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h index 9fd80ed..42575f1 100644 --- a/include/configs/omap3_beagle.h +++ b/include/configs/omap3_beagle.h @@ -214,7 +214,6 @@ mpurate=${mpurate} \ vram=${vram} \ omapfb.mode=dvi:${dvimode} \ - omapfb.debug=y \ omapdss.def_disp=${defaultdisplay} \ root=${mmcroot} \ rootfstype=${mmcrootfstype}\0 \ @@ -222,7 +221,6 @@ mpurate=${mpurate} \ vram=${vram} \ omapfb.mode=dvi:${dvimode} \ - omapfb.debug=y \ omapdss.def_disp=${defaultdisplay} \ root=${nandroot} \ rootfstype=${nandrootfstype}\0 \ diff --git a/include/configs/omap3_overo.h b/include/configs/omap3_overo.h index 242b317..0f64054 100644 --- a/include/configs/omap3_overo.h +++ b/include/configs/omap3_overo.h @@ -170,7 +170,6 @@ mpurate=${mpurate} \ vram=${vram} \ omapfb.mode=dvi:${dvimode} \ - omapfb.debug=y \ omapdss.def_disp=${defaultdisplay} \ root=${mmcroot} \ rootfstype=${mmcrootfstype}\0 \ @@ -178,7 +177,6 @@ mpurate=${mpurate} \ vram=${vram} \ omapfb.mode=dvi:${dvimode} \ - omapfb.debug=y \ omapdss.def_disp=${defaultdisplay} \ root=${nandroot} \ rootfstype=${nandrootfstype}\0 \ -- 1.7.1 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] Prize Won
From: Claudette Moloney Sent: Thursday, August 11, 2011 1:03 PM To: Claudette Moloney Subject: Prize Won This is a confidential message from the Microsoft/Yahoo Office, You have been approved by the Microsoft/Yahoo Foundation Payment Board to receive a cash grant of $552,000.00 Dollars E-mail us on: msoft-helpde...@hotmail.commailto:msoft-helpde...@hotmail.com Contact Secertary- Mr. Wilson Harlings on this email: msoft-helpde...@hotmail.commailto:msoft-helpde...@hotmail.com Provide him With 1. Full Name: 2. Address: 3. Tel/Mobile: 4. Occupation: 5. Date of Birth: 6. Payment number: G-900-94 Note: All response and Queries concerning your claims should be sent via email to :(msoft-helpde...@hotmail.commailto:msoft-helpde...@hotmail.com) Claudette Moloney- Announcer Get in the know by becoming a fan of the Imagine! Facebook page. Click here: http://www.facebook.com/pages/Imagine/268474025494?ref=nf DISCLAIMER: The information contained in or accompanying this email is the property of Imagine! and for the use of the stated recipient only, and may contain information that is confidential and/or privileged. It is intended only for the person or entity to which it is addressed or the agent thereof. Anyone else is prohibited from disclosing, copying, or disseminating the contents or attachments. If you have received this email by mistake, please destroy this message and inform the sender immediately by telephone, fax or email. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 0/1 V2] add support for mcf5307 cpu
Add support for mcf5307 cpu V1 Initial wrong formatted patch V2 Following general patch submission rules arch/m68k/cpu/mcf530x/Makefile | 48 +++ arch/m68k/cpu/mcf530x/config.mk| 25 arch/m68k/cpu/mcf530x/cpu.c| 48 +++ arch/m68k/cpu/mcf530x/cpu.h| 33 + arch/m68k/cpu/mcf530x/cpu_init.c | 164 +++ arch/m68k/cpu/mcf530x/interrupts.c | 42 ++ arch/m68k/cpu/mcf530x/speed.c | 36 + arch/m68k/cpu/mcf530x/start.S | 253 arch/m68k/include/asm/immap_5307.h | 78 +++ arch/m68k/include/asm/m5307.h | 119 + 10 files changed, 846 insertions(+), 0 deletions(-) create mode 100644 arch/m68k/cpu/mcf530x/Makefile create mode 100644 arch/m68k/cpu/mcf530x/config.mk create mode 100644 arch/m68k/cpu/mcf530x/cpu.c create mode 100644 arch/m68k/cpu/mcf530x/cpu.h create mode 100644 arch/m68k/cpu/mcf530x/cpu_init.c create mode 100644 arch/m68k/cpu/mcf530x/interrupts.c create mode 100644 arch/m68k/cpu/mcf530x/speed.c create mode 100644 arch/m68k/cpu/mcf530x/start.S create mode 100644 arch/m68k/include/asm/immap_5307.h create mode 100644 arch/m68k/include/asm/m5307.h -- 1.7.2.3 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 1/1 V2] add support for mcf5307 cpu
Add cpu related files and memory map includes. Apply the related minor changes to general coldfire architecture include files. Signed-off-by: Angelo Dureghello sysa...@gmail.com --- arch/m68k/cpu/mcf530x/Makefile | 48 +++ arch/m68k/cpu/mcf530x/config.mk| 25 arch/m68k/cpu/mcf530x/cpu.c| 48 +++ arch/m68k/cpu/mcf530x/cpu.h| 33 + arch/m68k/cpu/mcf530x/cpu_init.c | 164 +++ arch/m68k/cpu/mcf530x/interrupts.c | 42 ++ arch/m68k/cpu/mcf530x/speed.c | 36 + arch/m68k/cpu/mcf530x/start.S | 253 arch/m68k/include/asm/immap_5307.h | 78 +++ arch/m68k/include/asm/m5307.h | 119 + 10 files changed, 846 insertions(+), 0 deletions(-) create mode 100644 arch/m68k/cpu/mcf530x/Makefile create mode 100644 arch/m68k/cpu/mcf530x/config.mk create mode 100644 arch/m68k/cpu/mcf530x/cpu.c create mode 100644 arch/m68k/cpu/mcf530x/cpu.h create mode 100644 arch/m68k/cpu/mcf530x/cpu_init.c create mode 100644 arch/m68k/cpu/mcf530x/interrupts.c create mode 100644 arch/m68k/cpu/mcf530x/speed.c create mode 100644 arch/m68k/cpu/mcf530x/start.S create mode 100644 arch/m68k/include/asm/immap_5307.h create mode 100644 arch/m68k/include/asm/m5307.h diff --git a/arch/m68k/cpu/mcf530x/Makefile b/arch/m68k/cpu/mcf530x/Makefile new file mode 100644 index 000..3c5a1c2 --- /dev/null +++ b/arch/m68k/cpu/mcf530x/Makefile @@ -0,0 +1,48 @@ +# +# Copyright (c) 2011 Angelo Dureghello sysa...@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 +# + +include $(TOPDIR)/config.mk + +# CFLAGS += -DET_DEBUG + +LIB= $(obj)lib$(CPU).o + +START = start.o +COBJS = interrupts.o cpu.o speed.o cpu_init.o + +SRCS := $(START:.o=.S) $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) +START := $(addprefix $(obj),$(START)) + +all: $(obj).depend $(START) $(LIB) + +$(LIB):$(OBJS) + $(call cmd_link_o_target, $(OBJS)) + +# + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +# diff --git a/arch/m68k/cpu/mcf530x/config.mk b/arch/m68k/cpu/mcf530x/config.mk new file mode 100644 index 000..2ba1644 --- /dev/null +++ b/arch/m68k/cpu/mcf530x/config.mk @@ -0,0 +1,25 @@ +# +# Copyright (c) 2011 Angelo Dureghello sysa...@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 +# + +PLATFORM_RELFLAGS += -ffixed-d7 -msep-data + +PLATFORM_CPPFLAGS += -m5307 -fPIC diff --git a/arch/m68k/cpu/mcf530x/cpu.c b/arch/m68k/cpu/mcf530x/cpu.c new file mode 100644 index 000..efd9cbd --- /dev/null +++ b/arch/m68k/cpu/mcf530x/cpu.c @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2011 Angelo Dureghello sysa...@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
[U-Boot] [PATCH v4] USB: Add align(4) in __attribute__ ((packed)) for struct ehci_hccr and ehci_hcor
From: Jason Kridner jkrid...@beagleboard.org Switched to align(4) to prevent byte access to soc registers in some gcc versions. Credits have to go to Laine Walker-Avina lwalk...@ieee.org for finding the problem. Signed-off-by: Jason Kridner jkrid...@beagleboard.org Signed-off-by: Joel A Fernandes agnel.j...@gmail.com Cc: Koen Kooi k-k...@ti.com Cc: Alexander Holler hol...@ahsoftware.de Cc: Sandeep Paulraj s-paul...@ti.com Cc: Igor Grinberg grinb...@compulab.co.il --- Changes for v2: * Original and v2 were provided by Alexander Holler. * v1 was http://patchwork.ozlabs.org/patch/89358/ * v2 was http://patchwork.ozlabs.org/patch/89362/ Changes for v3: * Switched to align(4), rather than remove the attribute, per suggestion from Alexander. Changes for v4: * Modified commit summary and title to be more accurate drivers/usb/host/ehci.h |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h index 945ab64..3d0ad0c 100644 --- a/drivers/usb/host/ehci.h +++ b/drivers/usb/host/ehci.h @@ -55,7 +55,7 @@ struct ehci_hccr { #define HCS_N_PORTS(p) (((p) 0) 0xf) uint32_t cr_hccparams; uint8_t cr_hcsp_portrt[8]; -} __attribute__ ((packed)); +} __attribute__ ((packed, aligned(4))); struct ehci_hcor { uint32_t or_usbcmd; @@ -85,7 +85,7 @@ struct ehci_hcor { #define FLAG_CF(1 0)/* true: we'll support high speed */ uint32_t or_portsc[CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS]; uint32_t or_systune; -} __attribute__ ((packed)); +} __attribute__ ((packed, aligned(4))); #define USBMODE0x68/* USB Device mode */ #define USBMODE_SDIS (1 3)/* Stream disable */ -- 1.7.1 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 6/9] mx1: improve PLL freq computation
Hi Stefano, On 11 août 2011, at 11:22, Stefano Babic wrote: On 08/10/2011 10:33 PM, Eric Jarrige wrote: Improve PLL freq computation by using the full resolution of the PLL registers Hi Eric, +return (2*(u64)sys_clk_freq * (mfi*(mfd+1) + mfn))/((mfd+1)*(pd+1)); +} -return (2*(CONFIG_SYSPLL_CLK_FREQ10)*( (mfi10) + (mfn10)/(mfd+1)))/(pd+1); Please run checkpatch on your patches for V2. I have not yet done, but this line will report missing spaces. I did it and had no error and no warning: Here is the ourput of checkpatch.pl: armadeus/buildroot/output/build/linux-3.0.1/scripts/checkpatch.pl ../../../target/u-boot/git/09-arm920t-relocation.patch total: 0 errors, 0 warnings, 10 lines checked ../../../target/u-boot/git/09-arm920t-relocation.patch has no obvious style problems and is ready for submission. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 2/9] mx1: add i2c registers
Hi Stefano, On 11 août 2011, at 10:52, Stefano Babic wrote: On 08/10/2011 10:33 PM, Eric Jarrige wrote: Add i2c registers for Freescale imx1/L/S Signed-off-by: Eric Jarrige eric.jarr...@armadeus.org Cc: Stefano Babic sba...@denx.de --- arch/arm/include/asm/arch-imx/imx-regs.h | 23 +++ 1 files changed, 23 insertions(+), 0 deletions(-) Hi Eric, +/* + * I2C module + */ +#define IADR __REG(IMX_I2C_BASE + 0x000) /* I2C Address Register */ +#define IFDR __REG(IMX_I2C_BASE + 0x004) /* I2C Frequency Divider Register*/ +#define I2CR __REG(IMX_I2C_BASE + 0x008) /* I2C Control Register */ +#define I2SR __REG(IMX_I2C_BASE + 0x00C) /* I2C Status Register */ +#define I2DR __REG(IMX_I2C_BASE + 0x010) /* I2C Data I/O Register */ See my comments on your [PATCH 3/9] apf9328: Add Armadeus Project board APF9328. Access to registers must be done via accessors and __REG macro should be removed. Ok, I remove the i2c driver from the apf9328 set of patches change the __REG macro to C struct and submit the i2c driver in a separate set of patches according to your comment in the [PATCH 3/9] Cheers, Eric ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 6/9] mx1: improve PLL freq computation
Hi Stefano, On 11 août 2011, at 11:22, Stefano Babic wrote: On 08/10/2011 10:33 PM, Eric Jarrige wrote: Improve PLL freq computation by using the full resolution of the PLL registers Hi Eric, + return (2*(u64)sys_clk_freq * (mfi*(mfd+1) + mfn))/((mfd+1)*(pd+1)); +} - return (2*(CONFIG_SYSPLL_CLK_FREQ10)*( (mfi10) + (mfn10)/(mfd+1)))/(pd+1); Please run checkpatch on your patches for V2. I have not yet done, but this line will report missing spaces. I did it and had no error and no warning: Here is the report of checkpatch.pl on [PATCH 6/9] this time : armadeus/buildroot/output/build/linux-3.0.1/scripts/checkpatch.pl ../../../target/u-boot/git/06-mx1-pllclk.patch total: 0 errors, 0 warnings, 44 lines checked ../../../target/u-boot/git/06-mx1-pllclk.patch has no obvious style problems and is ready for submission. Cheers, Eric ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 3/9] apf9328: Add Armadeus Project board APF9328
Hi Stefano, On 08/10/2011 10:33 PM, Eric Jarrige wrote: Add Armadeus Project board APF9328 Signed-off-by: Eric Jarrige eric.jarr...@armadeus.org Signed-off-by: Nicolas Colombain nicolas.colomb...@armadeus.com Hi Eric, diff --git a/board/armadeus/apf9328/apf9328.c b/board/armadeus/apf9328/apf9328.c new file mode 100644 index 000..2250221 --- /dev/null +++ b/board/armadeus/apf9328/apf9328.c @@ -0,0 +1,91 @@ +/* + * (C) Copyright 2005-2011 + * Nicolas Colombin tho...@users.sourceforge.net + * Eric Jarrige eric.jarr...@armadeus.org + * Copyright (C) 2004 Sascha Hauer, Synertronixx GmbH + * + * 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 +#include asm/arch/imx-regs.h +#include flash.h +#include netdev.h +#include apf9328fpga.h + +DECLARE_GLOBAL_DATA_PTR; + +int board_init(void) +{ +gd-bd-bi_arch_number = CONFIG_MACH_TYPE; Is there no MACH_TYPE for this board ? It is uncommon for an ARM board. Should this board run Linux ? The MACH_TYPE for this board is 906. This board runs linux and the integration in linux is on going. +void dram_init_banksize(void) +{ +#if (CONFIG_NR_DRAM_BANKS 0) I think you can get rid of this #ifdef, if you have no RAM at all you cannot simply run u-boot. Good point. I will fix it. + * Miscellaneous intialization + */ +int misc_init_r(void) +{ +char *s; + +#if (CONFIG_FPGA) +apf9328_init_fpga(); +#endif + +#if (CONFIG_DRIVER_DM9000) +imx_gpio_mode(GPIO_PORTB | GPIO_DR | GPIO_IN | 14); Is there a reason to put this code here and not in board_eth_init ? It is related to Ethernet and I am supposing this setup should be done before dm9000_initialize. The idea is to keep the configuration of the CPU pins at one place and to keep the initialization of the ethernet controller in a separate function. Here this principle of segregation is not obvious as there is only one GPIO pin to configure. + +void show_boot_progress(int status) +{ +return; +} This function seems to me not very useful. Is it not better to drop it ? It is not strictly required. You set also #undef CONFIG_SHOW_BOOT_PROGRESS in the configuration file. Well I choosed to keep it in place in empty state to be the template for the final user to add their own debug method if needed. If it is an issue I would prefer to define the CONFIG_SHOW_BOOT_PROGRESS in the configuration file than removing this empty show_boot_progress as the main purpose of the board is education and trainings on embedded developments. +#if (CONFIG_FPGA) +DECLARE_GLOBAL_DATA_PTR; +/* Note that these are pointers to code that is in Flash. They will be + * relocated at runtime. + * Spartan3 code is used to download our Spartan 3 :) code is compatible. + * Just take care about the file size +*/ +Xilinx_Spartan3_Slave_Serial_fns fpga_fns = { +fpga_pre_fn, +fpga_pgm_fn, +fpga_clk_fn, +fpga_init_fn, +fpga_done_fn, +fpga_wr_fn, +}; + +Xilinx_desc fpga[CONFIG_FPGA_COUNT] = { Do you have more as one FPGA on your board ? And if this is true, they share the same firmware ? (I see only one CONFIG_FIRMWARE_ADDR..) The APF9328 is a SOM therefore it possible to connect some other FPGA to the board. In such a situation the idea is to concatenate all the bitstream files in the firmware partition. During the download process to the FPGAs the end of one FPGA download starts the download of the next one using the FPGA signal PRG_DONE. So that it possible to have all firmware in only one partition and save memory space by using bitstream files. To be honest I do not remember if someone use this feature on this board but that is . +/* + * Initialize the fpga. Return 1 on success, 0 on failure. + */ +int apf9328_init_fpga(void) +{ +char *autoload = getenv(firmware_autoload); +int i, lout = 1; + +debug(%s:%d: Initialize FPGA interface (relocation offset= 0x%.8lx)\n, +__func__, __LINE__, gd-reloc_off); + +fpga_init(); + +for (i = 0; i CONFIG_FPGA_COUNT; i++) { +debug(%s:%d: Adding fpga %d\n, __func__, __LINE__, i); +fpga_add(fpga_xilinx, fpga[i]); +} + +if ((autoload) (0 == strcmp(autoload, 1))) { +if
Re: [U-Boot] [PATCH v3] mips32: fix wrong loop bound in flush_cache()
Hi, On 08/10/2011 04:11 PM, Yao Cheng wrote: The issue is found when calling flush_cache() with zero size argument. The bound of loop is miscalculated in this case and flush_cache() enters a wrong flushing loop. To fix this issue I skipped the operations when size is found to be zero. It feels like the last sentence is somewhat redundant (the diff output speaks for itself), so omitted. Other than that, the patch is ok and queued up to u-boot-mips/master. If no MIPS patches come up within a couple of weeks, I'll make a pull request. Thanks for your report, ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 1/2] fdt: Add a fdt_set_node_status function
Add a fdt_set_node_status function that will set the specified node's status to the value contained in status. If the node doesn't have status property that will be created. Signed-off-by: Chunhe Lan chunhe@freescale.com --- common/fdt_support.c | 17 - include/fdt_support.h |3 +++ 2 files changed, 19 insertions(+), 1 deletions(-) diff --git a/common/fdt_support.c b/common/fdt_support.c index 19b2ef6..384523b 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -2,7 +2,7 @@ * (C) Copyright 2007 * Gerald Van Baren, Custom IDEAS, vanba...@cideas.com * - * Copyright 2010 Freescale Semiconductor, Inc. + * Copyright 2010-2011 Freescale Semiconductor, Inc. * * See file CREDITS for list of people who contributed to this * project. @@ -904,6 +904,21 @@ void fdt_del_node_and_alias(void *blob, const char *alias) fdt_delprop(blob, off, alias); } +/* + * Sets the specified node's status to the value contained in status. + * If the first character of the specified path is / then we use + * alias as a path. Otherwise, we look for an alias of that name. + */ +void fdt_set_node_status(void *fdt, const char *alias, const char *status) +{ + const char *path = fdt_get_alias(fdt, alias); + + if (!path) + path = alias; + + do_fixup_by_path(fdt, path, status, status, strlen(status) + 1, 1); +} + /* Helper to read a big number; size is in cells (not bytes) */ static inline u64 of_read_number(const __be32 *cell, int size) { diff --git a/include/fdt_support.h b/include/fdt_support.h index 863024f..74d7c83 100644 --- a/include/fdt_support.h +++ b/include/fdt_support.h @@ -2,6 +2,8 @@ * (C) Copyright 2007 * Gerald Van Baren, Custom IDEAS, vanba...@cideas.com * + * Copyright (C) 2011 Freescale Semiconductor, Inc. + * * See file CREDITS for list of people who contributed to this * project. * @@ -85,6 +87,7 @@ int fdt_fixup_nor_flash_size(void *blob); void fdt_fixup_mtdparts(void *fdt, void *node_info, int node_info_size); void fdt_del_node_and_alias(void *blob, const char *alias); +void fdt_set_node_status(void *fdt, const char *alias, const char *status); u64 fdt_translate_address(void *blob, int node_offset, const u32 *in_addr); int fdt_node_offset_by_compat_reg(void *blob, const char *compat, phys_addr_t compat_off); -- 1.5.6.5 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 2/2] powerpc/p1023rds: Enable nand node and disable nor node
In the p1023rds, accessing exclusively nor flash or nand flash device by BR0/OR0. When booting from nor flash, nand node is disabled and nor node is enabled in the default dtb. So, when booting from nand flash, nand node should be enabled and nor node should be disabled. Signed-off-by: Chunhe Lan chunhe@freescale.com --- board/freescale/p1023rds/p1023rds.c | 10 ++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/board/freescale/p1023rds/p1023rds.c b/board/freescale/p1023rds/p1023rds.c index 8cfd199..b3511a4 100644 --- a/board/freescale/p1023rds/p1023rds.c +++ b/board/freescale/p1023rds/p1023rds.c @@ -146,6 +146,14 @@ int board_eth_init(bd_t *bis) return pci_eth_init(bis); } +void fdt_fixup_flash(void *fdt) +{ +#ifdef CONFIG_NAND_U_BOOT + fdt_set_node_status(fdt, nor_flash, disabled); + fdt_set_node_status(fdt, nand_flash, okay); +#endif +} + #if defined(CONFIG_OF_BOARD_SETUP) void ft_board_setup(void *blob, bd_t *bd) { @@ -158,5 +166,7 @@ void ft_board_setup(void *blob, bd_t *bd) size = getenv_bootm_size(); fdt_fixup_memory(blob, (u64)base, (u64)size); + + fdt_fixup_flash(blob); } #endif -- 1.5.6.5 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] HONDA PROMOTION 2011
Your email has won £1,750,000.00 GBP Contact richard_hcuk...@pkuit.com For More information. Mr. Berenice Lopez (Program Co-ordinator.) ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot