[U-Boot] [PATCH v2] add new board nas62x0

Add support for new boards RaidSonic ICY BOX NAS6210 and NAS6220 boards.
Only difference between boards is number of SATA ports. By default we use only one SATA port.
Signed-off-by: Luka Perkov uboot@lukaperkov.net Signed-off-by: Gerald Kerma dreagle@doukki.net ---
Changes from version v1:
* use tools/checkpatch.pl to locate patch errors and fix them * add two entries in boards.cfg, one for each board * fixed CONFIG_RESET_PHY_R * don't define values for macros that enable features only * remove static RAM configuration * fix comments * use only CONFIG_ENV_OFFSET and remove CONFIG_ENV_ADDR * clean coding style * add entry in MAINTAINERS file
I will send README for booting from UART in separate patch, but before I do that can somebody please look at:
http://www.solinno.co.uk/public/kwuartboot/ http://www.solinno.co.uk/public/kwuartboot/kwuartboot-0.1.tar.gz
I have 100% success rate, even the author states he had only 75%. Does including this tool in uboot tools/ make sense?
Anybody want to give it a try on another kirkwood board?
MAINTAINERS | 4 + board/Marvell/ib62x0/Makefile | 51 +++++++++++ board/Marvell/ib62x0/ib62x0.c | 114 ++++++++++++++++++++++++ board/Marvell/ib62x0/ib62x0.h | 41 +++++++++ board/Marvell/ib62x0/kwbimage.cfg | 167 +++++++++++++++++++++++++++++++++++ boards.cfg | 2 + include/configs/ib62x0.h | 176 +++++++++++++++++++++++++++++++++++++ 7 files changed, 555 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS index 46f63a0..11d023e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -782,6 +782,10 @@ Linus Walleij linus.walleij@linaro.org integratorap various integratorcp various
+Luka Perkov uboot@lukaperkov.net + + ib62x0 ARM926EJS + Dave Peverley dpeverley@mpc-data.co.uk
omap730p2 ARM926EJS diff --git a/board/Marvell/ib62x0/Makefile b/board/Marvell/ib62x0/Makefile new file mode 100644 index 0000000..3d82f27 --- /dev/null +++ b/board/Marvell/ib62x0/Makefile @@ -0,0 +1,51 @@ +# +# (C) Copyright 2009 +# Marvell Semiconductor <www.marvell.com> +# Written-by: Prafulla Wadaskar prafulla@marvell.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., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA +# + +include $(TOPDIR)/config.mk + +LIB = $(obj)lib$(BOARD).o + +COBJS := ib62x0.o + +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) +SOBJS := $(addprefix $(obj),$(SOBJS)) + +$(LIB): $(obj).depend $(OBJS) $(SOBJS) + $(call cmd_link_o_target, $(OBJS) $(SOBJS)) + +clean: + rm -f $(SOBJS) $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak .depend + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/Marvell/ib62x0/ib62x0.c b/board/Marvell/ib62x0/ib62x0.c new file mode 100644 index 0000000..2b7762a --- /dev/null +++ b/board/Marvell/ib62x0/ib62x0.c @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2011 Gérald Kerma dreagle@doukki.net + * + * Written-by: Gérald Kerma dreagle@doukki.net + * + * 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., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ + +#include <common.h> +#include <miiphy.h> +#include <asm/arch/cpu.h> +#include <asm/arch/kirkwood.h> +#include <asm/arch/mpp.h> +#include "ib62x0.h" + +DECLARE_GLOBAL_DATA_PTR; + +int board_early_init_f(void) +{ + /* + * default gpio configuration + * There are maximum 64 gpios controlled through 2 sets of registers + * the below configuration configures mainly initial LED status + */ + kw_config_gpio(IB62x0_OE_VAL_LOW, + IB62x0_OE_VAL_HIGH, + IB62x0_OE_LOW, IB62x0_OE_HIGH); + + /* Multi-Purpose Pins Functionality configuration */ + u32 kwmpp_config[] = { + MPP0_NF_IO2, + MPP1_NF_IO3, + MPP2_NF_IO4, + MPP3_NF_IO5, + MPP4_NF_IO6, + MPP5_NF_IO7, + MPP6_SYSRST_OUTn, + MPP7_GPO, + MPP8_UART0_RTS, + MPP9_UART0_CTS, + MPP10_UART0_TXD, + MPP11_UART0_RXD, + MPP12_SD_CLK, + MPP13_SD_CMD, + MPP14_SD_D0, + MPP15_SD_D1, + MPP16_SD_D2, + MPP17_SD_D3, + MPP18_NF_IO0, + MPP19_NF_IO1, + MPP20_GPIO, + MPP21_GPIO, + MPP22_GPIO, /* Power LED red */ + MPP23_GPIO, + MPP24_GPIO, + MPP25_GPIO, /* Power LED green */ + MPP26_GPIO, + MPP27_GPIO, /* USB transfer LED */ + MPP28_GPIO, /* Reset button */ + MPP29_TSMP9, /* USB Copy button */ + MPP30_GPIO, + MPP31_GPIO, + MPP32_GPIO, + MPP33_GPIO, + MPP34_GPIO, + MPP35_GPIO, + MPP36_GPIO, + MPP37_GPIO, + MPP38_GPIO, + MPP39_GPIO, + MPP40_GPIO, + MPP41_GPIO, + MPP42_GPIO, + MPP43_GPIO, + MPP44_GPIO, + MPP45_GPIO, + MPP46_GPIO, + MPP47_GPIO, + MPP48_GPIO, + MPP49_GPIO, + 0 + }; + kirkwood_mpp_conf(kwmpp_config); + return 0; +} + +int board_init(void) +{ + /* + * arch number of board + */ + gd->bd->bi_arch_number = MACH_TYPE_NAS6210; + + /* adress of boot parameters */ + gd->bd->bi_boot_params = kw_sdram_bar(0) + 0x100; + + return 0; +} diff --git a/board/Marvell/ib62x0/ib62x0.h b/board/Marvell/ib62x0/ib62x0.h new file mode 100644 index 0000000..b26a257 --- /dev/null +++ b/board/Marvell/ib62x0/ib62x0.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2011 Gérald Kerma dreagle@doukki.net + * + * Written-by: Gérald Kerma dreagle@doukki.net + * + * 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., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ + +#ifndef __IB62x0_H +#define __IB62x0_H + +#define IB62x0_OE_LOW (~(0)) +#define IB62x0_OE_HIGH (~(0)) +#define IB62x0_OE_VAL_LOW (1 << 29) /* USB_PWEN low */ +#define IB62x0_OE_VAL_HIGH (1 << 17) /* LED pin high */ + +/* PHY related */ +#define MV88E1116_LED_FCTRL_REG 10 +#define MV88E1116_CPRSP_CR3_REG 21 +#define MV88E1116_MAC_CTRL_REG 21 +#define MV88E1116_PGADR_REG 22 +#define MV88E1116_RGMII_TXTM_CTRL (1 << 4) +#define MV88E1116_RGMII_RXTM_CTRL (1 << 5) + +#endif /* __IB62x0_H */ diff --git a/board/Marvell/ib62x0/kwbimage.cfg b/board/Marvell/ib62x0/kwbimage.cfg new file mode 100644 index 0000000..ffa3c18 --- /dev/null +++ b/board/Marvell/ib62x0/kwbimage.cfg @@ -0,0 +1,167 @@ +# +# Copyright (C) 2011 Gérald Kerma dreagle@doukki.net +# +# Written-by: Gérald Kerma dreagle@doukki.net +# +# 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., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA +# +# Refer docs/README.kwimage for more details about how-to configure +# and create kirkwood boot image +# + +# Boot Media configurations +BOOT_FROM nand # change from nand to uart if building UART image +NAND_ECC_MODE default +NAND_PAGE_SIZE 0x0800 + +# SOC registers configuration using bootrom header extension +# Maximum KWBIMAGE_MAX_CONFIG configurations allowed + +# Configure RGMII-0 interface pad voltage to 1.8V +DATA 0xFFD100e0 0x1b1b1b9b + +#Dram initalization for SINGLE x16 CL=5 @ 400MHz +DATA 0xFFD01400 0x43000c30 # DDR Configuration register +# bit13-0: 0xc30 (3120 DDR2 clks refresh rate) +# bit23-14: zero +# bit24: 1= enable exit self refresh mode on DDR access +# bit25: 1 required +# bit29-26: zero +# bit31-30: 01 + +DATA 0xFFD01404 0x37543000 # DDR Controller Control Low +# bit 4: 0=addr/cmd in smame cycle +# bit 5: 0=clk is driven during self refresh, we don't care for APX +# bit 6: 0=use recommended falling edge of clk for addr/cmd +# bit14: 0=input buffer always powered up +# bit18: 1=cpu lock transaction enabled +# bit23-20: 5=recommended value for CL=5 and STARTBURST_DEL disabled bit31=0 +# bit27-24: 7= CL+2, STARTBURST sample stages, for freqs 400MHz, unbuffered DIMM +# bit30-28: 3 required +# bit31: 0=no additional STARTBURST delay + +DATA 0xFFD01408 0x22125451 # DDR Timing (Low) (active cycles value +1) +# bit3-0: TRAS lsbs +# bit7-4: TRCD +# bit11- 8: TRP +# bit15-12: TWR +# bit19-16: TWTR +# bit20: TRAS msb +# bit23-21: 0x0 +# bit27-24: TRRD +# bit31-28: TRTP + +DATA 0xFFD0140C 0x00000a33 # DDR Timing (High) +# bit6-0: TRFC +# bit8-7: TR2R +# bit10-9: TR2W +# bit12-11: TW2W +# bit31-13: zero required + +DATA 0xFFD01410 0x000000CC # DDR Address Control +# bit1-0: 00, Cs0width=x8 +# bit3-2: 11, Cs0size=1Gb +# bit5-4: 00, Cs1width=x8 +# bit7-6: 11, Cs1size=1Gb +# bit9-8: 00, Cs2width=nonexistent +# bit11-10: 00, Cs2size =nonexistent +# bit13-12: 00, Cs3width=nonexistent +# bit15-14: 00, Cs3size =nonexistent +# bit16: 0, Cs0AddrSel +# bit17: 0, Cs1AddrSel +# bit18: 0, Cs2AddrSel +# bit19: 0, Cs3AddrSel +# bit31-20: 0 required + +DATA 0xFFD01414 0x00000000 # DDR Open Pages Control +# bit0: 0, OpenPage enabled +# bit31-1: 0 required + +DATA 0xFFD01418 0x00000000 # DDR Operation +# bit3-0: 0x0, DDR cmd +# bit31-4: 0 required + +DATA 0xFFD0141C 0x00000C52 # DDR Mode +# bit2-0: 2, BurstLen=2 required +# bit3: 0, BurstType=0 required +# bit6-4: 4, CL=5 +# bit7: 0, TestMode=0 normal +# bit8: 0, DLL reset=0 normal +# bit11-9: 6, auto-precharge write recovery ???????????? +# bit12: 0, PD must be zero +# bit31-13: 0 required + +DATA 0xFFD01420 0x00000004 # DDR Extended Mode +# bit0: 0, DDR DLL enabled +# bit1: 0, DDR drive strenght normal +# bit2: 1, DDR ODT control lsd (disabled) +# bit5-3: 000, required +# bit6: 0, DDR ODT control msb, (disabled) +# bit9-7: 000, required +# bit10: 0, differential DQS enabled +# bit11: 0, required +# bit12: 0, DDR output buffer enabled +# bit31-13: 0 required + +DATA 0xFFD01424 0x0000F17F # DDR Controller Control High +# bit2-0: 111, required +# bit3 : 1 , MBUS Burst Chop disabled +# bit6-4: 111, required +# bit7 : 0 +# bit8 : 1 , add writepath sample stage, must be 1 for DDR freq >= 300MHz +# bit9 : 0 , no half clock cycle addition to dataout +# bit10 : 0 , 1/4 clock cycle skew enabled for addr/ctl signals +# bit11 : 0 , 1/4 clock cycle skew disabled for write mesh +# bit15-12: 1111 required +# bit31-16: 0 required + +DATA 0xFFD01428 0x00085520 # DDR2 ODT Read Timing (default values) +DATA 0xFFD0147C 0x00008552 # DDR2 ODT Write Timing (default values) + +DATA 0xFFD01500 0x00000000 # CS[0]n Base address to 0x0 +DATA 0xFFD01504 0x0FFFFFF1 # CS[0]n Size +# bit0: 1, Window enabled +# bit1: 0, Write Protect disabled +# bit3-2: 00, CS0 hit selected +# bit23-4: ones, required +# bit31-24: 0x0F, Size (i.e. 256MB) + +DATA 0xFFD01508 0x10000000 # CS[1]n Base address to 256Mb +DATA 0xFFD0150C 0x00000000 # CS[1]n Size, window disabled + +DATA 0xFFD01514 0x00000000 # CS[2]n Size, window disabled +DATA 0xFFD0151C 0x00000000 # CS[3]n Size, window disabled + +DATA 0xFFD01494 0x00120012 # DDR ODT Control (Low) +# bit3-0: 2, ODT0Rd, MODT[0] asserted during read from DRAM CS1 +# bit7-4: 1, ODT0Rd, MODT[0] asserted during read from DRAM CS0 +# bit19-16:2, ODT0Wr, MODT[0] asserted during write to DRAM CS1 +# bit23-20:1, ODT0Wr, MODT[0] asserted during write to DRAM CS0 + +DATA 0xFFD01498 0x00000000 # DDR ODT Control (High) +# bit1-0: 00, ODT0 controlled by ODT Control (low) register above +# bit3-2: 01, ODT1 active NEVER! +# bit31-4: zero, required + +DATA 0xFFD0149C 0x0000E40F # CPU ODT Control +DATA 0xFFD01480 0x00000001 # DDR Initialization Control +#bit0=1, enable DDR init upon this register write + +# End of Header extension +DATA 0x0 0x0 diff --git a/boards.cfg b/boards.cfg index 28cc345..a4e8852 100644 --- a/boards.cfg +++ b/boards.cfg @@ -147,6 +147,8 @@ netspace_max_v2 arm arm926ejs netspace_v2 LaCie netspace_v2 arm arm926ejs netspace_v2 LaCie kirkwood lacie_kw:NETSPACE_V2 dreamplug arm arm926ejs - Marvell kirkwood guruplug arm arm926ejs - Marvell kirkwood +ib_nas6210 arm arm926ejs ib62x0 Marvell kirkwood ib62x0:BOARD_IS_IB_NAS6210 +ib_nas6220 arm arm926ejs ib62x0 Marvell kirkwood ib62x0:BOARD_IS_IB_NAS6220 mv88f6281gtw_ge arm arm926ejs - Marvell kirkwood openrd_base arm arm926ejs openrd Marvell kirkwood openrd:BOARD_IS_OPENRD_BASE openrd_client arm arm926ejs openrd Marvell kirkwood openrd:BOARD_IS_OPENRD_CLIENT diff --git a/include/configs/ib62x0.h b/include/configs/ib62x0.h new file mode 100644 index 0000000..5981b65 --- /dev/null +++ b/include/configs/ib62x0.h @@ -0,0 +1,176 @@ +/* + * Copyright (C) 2011-2012 + * Gérald Kerma dreagle@doukki.net + * Luka Perkov uboot@lukaperkov.net + * + * 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., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ + +#ifndef _CONFIG_IB62x0_H +#define _CONFIG_IB62x0_H + +/* + * Version number information + */ +#ifdef CONFIG_BOARD_IS_IB_NAS6210 +# define CONFIG_IDENT_STRING " RaidSonic ICY BOX IB-NAS6210" +#elif CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_IDENT_STRING " RaidSonic ICY BOX IB-NAS6220" +#else +# error Unknown RaidSonic ICY BOX board specified +#endif + +/* + * High Level Configuration Options (easy to change) + */ +#define CONFIG_FEROCEON_88FR131 /* CPU Core subversion */ +#define CONFIG_KIRKWOOD /* SOC Family Name */ +#define CONFIG_KW88F6281 /* SOC Name */ +#define CONFIG_MACH_NAS6210 /* Machine type */ +#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init */ + +/* + * Other required minimal configurations + */ +#define CONFIG_DISPLAY_CPUINFO /* Display cpu info */ +#define CONFIG_SYS_ALT_MEMTEST + +/* + * Compression configuration + */ +#define CONFIG_BZIP2 +#define CONFIG_LZMA +#define CONFIG_LZO + +/* + * Commands configuration + */ +#define CONFIG_SYS_NO_FLASH /* Declare no flash (NOR/SPI) */ +#define CONFIG_SYS_MVFS +#include <config_cmd_default.h> +#define CONFIG_CMD_ENV +#define CONFIG_CMD_IDE +#define CONFIG_CMD_MII +#define CONFIG_CMD_NAND +#define CONFIG_CMD_PING +#define CONFIG_CMD_USB +/* + * mv-common.h should be defined after CMD configs since it used them + * to enable certain macros + */ +#include "mv-common.h" + +#undef CONFIG_SYS_PROMPT +#ifdef CONFIG_BOARD_IS_IB_NAS6210 +# define CONFIG_SYS_PROMPT "IB-NAS6210 # " +#elif CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_SYS_PROMPT "IB-NAS6220 # " +#else +# error Unknown RaidSonic ICY BOX board specified +#endif + +/* + * Environment variables configurations + */ +#ifdef CONFIG_CMD_NAND +#define CONFIG_ENV_IS_IN_NAND +#define CONFIG_ENV_SECT_SIZE 0x20000 +#else +#define CONFIG_ENV_IS_NOWHERE +#endif +#define CONFIG_ENV_SIZE 0x20000 +#define CONFIG_ENV_OFFSET 0x80000 + +/* + * Default environment variables + */ +#define CONFIG_BOOTCOMMAND \ + "setenv bootargs ${console} ${mtdparts} ${bootargs_root}; " \ + "ubi part root; " \ + "ubifsmount root; " \ + "ubifsload 0x800000 ${kernel}; " \ + "ubifsload 0x1100000 ${initrd}; " \ + "bootm 0x800000 0x1100000" + +#define CONFIG_MTDPARTS \ + "mtdparts=orion_nand:" \ + "0x80000@0x0(uboot)," \ + "0x20000@0x80000(uboot_env)," \ + "-@0xa0000(root)\0" + +#define CONFIG_EXTRA_ENV_SETTINGS \ + "console=console=ttyS0,115200\0" \ + "mtdids=nand0=orion_nand\0" \ + "mtdparts="CONFIG_MTDPARTS \ + "kernel=/boot/uImage\0" \ + "initrd=/boot/uInitrd\0" \ + "bootargs_root=ubi.mtd=2 root=ubi0:root rootfstype=ubifs\0" + +/* + * Ethernet Driver configuration + */ +#ifdef CONFIG_CMD_NET +#define CONFIG_MVGBE_PORTS {1, 0} /* enable port 0 only */ +#define CONFIG_PHY_BASE_ADR 0 +#undef CONFIG_RESET_PHY_R +#endif /* CONFIG_CMD_NET */ + +/* + * SATA Driver configuration + */ +#ifdef CONFIG_CMD_IDE +#define __io +#define CONFIG_IDE_PREINIT +#define CONFIG_DOS_PARTITION +#define CONFIG_MVSATA_IDE_USE_PORT0 +# ifdef CONFIG_BOARD_IS_IB_NAS6210 +# undef CONFIG_SYS_IDE_MAXBUS +# define CONFIG_SYS_IDE_MAXBUS 1 +# undef CONFIG_SYS_IDE_MAXDEVICE +# define CONFIG_SYS_IDE_MAXDEVICE 1 +# elif CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_MVSATA_IDE_USE_PORT1 +# endif +#define CONFIG_SYS_ATA_IDE0_OFFSET KW_SATA_PORT0_OFFSET +# ifdef CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_SYS_ATA_IDE1_OFFSET KW_SATA_PORT1_OFFSET +# endif +#endif /* CONFIG_CMD_IDE */ + +/* + * RTC driver configuration + */ +#ifdef CONFIG_CMD_DATE +#define CONFIG_RTC_MV +#endif /* CONFIG_CMD_DATE */ + +/* + * File system + */ +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_FAT +#define CONFIG_CMD_JFFS2 +#define CONFIG_CMD_UBI +#define CONFIG_CMD_UBIFS +#define CONFIG_RBTREE +#define CONFIG_MTD_DEVICE +#define CONFIG_MTD_PARTITIONS +#define CONFIG_CMD_MTDPARTS + +#endif /* _CONFIG_IB62x0_H */

On Sun, Mar 18, 2012 at 12:40:54AM +0100, Luka Perkov wrote:
Add support for new boards RaidSonic ICY BOX NAS6210 and NAS6220 boards.
Only difference between boards is number of SATA ports. By default we use only one SATA port.
Sorry wrong commit message. Please use this:
Add support for new boards RaidSonic ICY BOX NAS6210 and NAS6220 boards.
Only difference between boards is number of SATA ports.
Regards, Luka

Dear Luka Perkov,
In message 20120317234054.GA21334@w500.lan you wrote:
Add support for new boards RaidSonic ICY BOX NAS6210 and NAS6220 boards.
Just a tiny detail...
...
+/*
- Version number information
- */
+#ifdef CONFIG_BOARD_IS_IB_NAS6210 +# define CONFIG_IDENT_STRING " RaidSonic ICY BOX IB-NAS6210" +#elif CONFIG_BOARD_IS_IB_NAS6220
For robustness, this should rather be
#elif defined(CONFIG_BOARD_IS_IB_NAS6220)
[and for consistency, you then may want to reqrite the #if above as
#if defined(CONFIG_BOARD_IS_IB_NAS6210)
]
Thanks!
Best regards,
Wolfgang Denk

Dear Luka Perkov,
Add support for new boards RaidSonic ICY BOX NAS6210 and NAS6220 boards.
Only difference between boards is number of SATA ports. By default we use only one SATA port.
[...]
diff --git a/board/Marvell/ib62x0/ib62x0.h b/board/Marvell/ib62x0/ib62x0.h new file mode 100644 index 0000000..b26a257 --- /dev/null +++ b/board/Marvell/ib62x0/ib62x0.h @@ -0,0 +1,41 @@ +/*
- Copyright (C) 2011 Gérald Kerma dreagle@doukki.net
Can you please fix your name here?
- Written-by: Gérald Kerma dreagle@doukki.net
And probably elsewhere?
- 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., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301 USA
- */
+#ifndef __IB62x0_H +#define __IB62x0_H
+#define IB62x0_OE_LOW (~(0)) +#define IB62x0_OE_HIGH (~(0))
Fix this constant please (0xffffffff) and remove those parenthesis ... btw OE_HIGH and OE_LOW have both the same value?
+#define IB62x0_OE_VAL_LOW (1 << 29) /* USB_PWEN low */ +#define IB62x0_OE_VAL_HIGH (1 << 17) /* LED pin high */
+/* PHY related */ +#define MV88E1116_LED_FCTRL_REG 10 +#define MV88E1116_CPRSP_CR3_REG 21 +#define MV88E1116_MAC_CTRL_REG 21 +#define MV88E1116_PGADR_REG 22 +#define MV88E1116_RGMII_TXTM_CTRL (1 << 4) +#define MV88E1116_RGMII_RXTM_CTRL (1 << 5)
+#endif /* __IB62x0_H */ diff --git a/board/Marvell/ib62x0/kwbimage.cfg b/board/Marvell/ib62x0/kwbimage.cfg new file mode 100644 index 0000000..ffa3c18 --- /dev/null +++ b/board/Marvell/ib62x0/kwbimage.cfg @@ -0,0 +1,167 @@ +# +# Copyright (C) 2011 Gérald Kerma dreagle@doukki.net +# +# Written-by: Gérald Kerma dreagle@doukki.net +# +# 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., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA +# +# Refer docs/README.kwimage for more details about how-to configure +# and create kirkwood boot image +#
+# Boot Media configurations +BOOT_FROM nand # change from nand to uart if building UART image +NAND_ECC_MODE default +NAND_PAGE_SIZE 0x0800
+# SOC registers configuration using bootrom header extension +# Maximum KWBIMAGE_MAX_CONFIG configurations allowed
+# Configure RGMII-0 interface pad voltage to 1.8V +DATA 0xFFD100e0 0x1b1b1b9b
Make usage of upper/lower case consistent across files in your patch please (lowercase prefered).
+#Dram initalization for SINGLE x16 CL=5 @ 400MHz +DATA 0xFFD01400 0x43000c30 # DDR Configuration register +# bit13-0: 0xc30 (3120 DDR2 clks refresh rate) +# bit23-14: zero +# bit24: 1= enable exit self refresh mode on DDR access +# bit25: 1 required +# bit29-26: zero +# bit31-30: 01
+DATA 0xFFD01404 0x37543000 # DDR Controller Control Low +# bit 4: 0=addr/cmd in smame cycle +# bit 5: 0=clk is driven during self refresh, we don't care for APX +# bit 6: 0=use recommended falling edge of clk for addr/cmd +# bit14: 0=input buffer always powered up +# bit18: 1=cpu lock transaction enabled +# bit23-20: 5=recommended value for CL=5 and STARTBURST_DEL disabled bit31=0 +# bit27-24: 7= CL+2, STARTBURST sample stages, for freqs 400MHz, unbuffered DIMM +# bit30-28: 3 required +# bit31: 0=no additional STARTBURST delay
+DATA 0xFFD01408 0x22125451 # DDR Timing (Low) (active cycles value +1) +# bit3-0: TRAS lsbs +# bit7-4: TRCD +# bit11- 8: TRP +# bit15-12: TWR +# bit19-16: TWTR +# bit20: TRAS msb +# bit23-21: 0x0 +# bit27-24: TRRD +# bit31-28: TRTP
+DATA 0xFFD0140C 0x00000a33 # DDR Timing (High) +# bit6-0: TRFC +# bit8-7: TR2R +# bit10-9: TR2W +# bit12-11: TW2W +# bit31-13: zero required
+DATA 0xFFD01410 0x000000CC # DDR Address Control +# bit1-0: 00, Cs0width=x8 +# bit3-2: 11, Cs0size=1Gb +# bit5-4: 00, Cs1width=x8 +# bit7-6: 11, Cs1size=1Gb +# bit9-8: 00, Cs2width=nonexistent +# bit11-10: 00, Cs2size =nonexistent +# bit13-12: 00, Cs3width=nonexistent +# bit15-14: 00, Cs3size =nonexistent +# bit16: 0, Cs0AddrSel +# bit17: 0, Cs1AddrSel +# bit18: 0, Cs2AddrSel +# bit19: 0, Cs3AddrSel +# bit31-20: 0 required
+DATA 0xFFD01414 0x00000000 # DDR Open Pages Control +# bit0: 0, OpenPage enabled +# bit31-1: 0 required
+DATA 0xFFD01418 0x00000000 # DDR Operation +# bit3-0: 0x0, DDR cmd +# bit31-4: 0 required
+DATA 0xFFD0141C 0x00000C52 # DDR Mode +# bit2-0: 2, BurstLen=2 required +# bit3: 0, BurstType=0 required +# bit6-4: 4, CL=5 +# bit7: 0, TestMode=0 normal +# bit8: 0, DLL reset=0 normal +# bit11-9: 6, auto-precharge write recovery ???????????? +# bit12: 0, PD must be zero +# bit31-13: 0 required
+DATA 0xFFD01420 0x00000004 # DDR Extended Mode +# bit0: 0, DDR DLL enabled +# bit1: 0, DDR drive strenght normal +# bit2: 1, DDR ODT control lsd (disabled) +# bit5-3: 000, required +# bit6: 0, DDR ODT control msb, (disabled) +# bit9-7: 000, required +# bit10: 0, differential DQS enabled +# bit11: 0, required +# bit12: 0, DDR output buffer enabled +# bit31-13: 0 required
+DATA 0xFFD01424 0x0000F17F # DDR Controller Control High +# bit2-0: 111, required +# bit3 : 1 , MBUS Burst Chop disabled +# bit6-4: 111, required +# bit7 : 0 +# bit8 : 1 , add writepath sample stage, must be 1 for DDR freq >= 300MHz +# bit9 : 0 , no half clock cycle addition to dataout +# bit10 : 0 , 1/4 clock cycle skew enabled for addr/ctl signals +# bit11 : 0 , 1/4 clock cycle skew disabled for write mesh +# bit15-12: 1111 required +# bit31-16: 0 required
+DATA 0xFFD01428 0x00085520 # DDR2 ODT Read Timing (default values) +DATA 0xFFD0147C 0x00008552 # DDR2 ODT Write Timing (default values)
+DATA 0xFFD01500 0x00000000 # CS[0]n Base address to 0x0 +DATA 0xFFD01504 0x0FFFFFF1 # CS[0]n Size +# bit0: 1, Window enabled +# bit1: 0, Write Protect disabled +# bit3-2: 00, CS0 hit selected +# bit23-4: ones, required +# bit31-24: 0x0F, Size (i.e. 256MB)
+DATA 0xFFD01508 0x10000000 # CS[1]n Base address to 256Mb +DATA 0xFFD0150C 0x00000000 # CS[1]n Size, window disabled
+DATA 0xFFD01514 0x00000000 # CS[2]n Size, window disabled +DATA 0xFFD0151C 0x00000000 # CS[3]n Size, window disabled
+DATA 0xFFD01494 0x00120012 # DDR ODT Control (Low) +# bit3-0: 2, ODT0Rd, MODT[0] asserted during read from DRAM CS1 +# bit7-4: 1, ODT0Rd, MODT[0] asserted during read from DRAM CS0 +# bit19-16:2, ODT0Wr, MODT[0] asserted during write to DRAM CS1 +# bit23-20:1, ODT0Wr, MODT[0] asserted during write to DRAM CS0
+DATA 0xFFD01498 0x00000000 # DDR ODT Control (High) +# bit1-0: 00, ODT0 controlled by ODT Control (low) register above +# bit3-2: 01, ODT1 active NEVER! +# bit31-4: zero, required
+DATA 0xFFD0149C 0x0000E40F # CPU ODT Control +DATA 0xFFD01480 0x00000001 # DDR Initialization Control +#bit0=1, enable DDR init upon this register write
+# End of Header extension +DATA 0x0 0x0 diff --git a/boards.cfg b/boards.cfg index 28cc345..a4e8852 100644 --- a/boards.cfg +++ b/boards.cfg @@ -147,6 +147,8 @@ netspace_max_v2 arm arm926ejs netspace_v2 LaCie netspace_v2 arm arm926ejs netspace_v2 LaCie kirkwood lacie_kw:NETSPACE_V2 dreamplug arm arm926ejs - Marvell kirkwood guruplug arm arm926ejs - Marvell kirkwood +ib_nas6210 arm arm926ejs ib62x0 Marvell kirkwood ib62x0:BOARD_IS_IB_NAS6210 +ib_nas6220 arm arm926ejs ib62x0 Marvell kirkwood ib62x0:BOARD_IS_IB_NAS6220 mv88f6281gtw_ge arm arm926ejs - Marvell kirkwood openrd_base arm arm926ejs openrd Marvell kirkwood openrd:BOARD_IS_OPENRD_BASE openrd_client arm arm926ejs openrd Marvell kirkwood openrd:BOARD_IS_OPENRD_CLIENT diff --git a/include/configs/ib62x0.h b/include/configs/ib62x0.h new file mode 100644 index 0000000..5981b65 --- /dev/null +++ b/include/configs/ib62x0.h @@ -0,0 +1,176 @@ +/*
- Copyright (C) 2011-2012
- Gérald Kerma dreagle@doukki.net
- Luka Perkov uboot@lukaperkov.net
- 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., 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301 USA
- */
+#ifndef _CONFIG_IB62x0_H +#define _CONFIG_IB62x0_H
+/*
- Version number information
- */
+#ifdef CONFIG_BOARD_IS_IB_NAS6210 +# define CONFIG_IDENT_STRING " RaidSonic ICY BOX IB-NAS6210" +#elif CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_IDENT_STRING " RaidSonic ICY BOX IB-NAS6220" +#else +# error Unknown RaidSonic ICY BOX board specified +#endif
+/*
- High Level Configuration Options (easy to change)
- */
+#define CONFIG_FEROCEON_88FR131 /* CPU Core subversion */ +#define CONFIG_KIRKWOOD /* SOC Family Name */ +#define CONFIG_KW88F6281 /* SOC Name */ +#define CONFIG_MACH_NAS6210 /* Machine type */ +#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init */
Are you sure you want to skip lowlevel init? It'll break cache setup etc. I believe.
+/*
- Other required minimal configurations
- */
+#define CONFIG_DISPLAY_CPUINFO /* Display cpu info */ +#define CONFIG_SYS_ALT_MEMTEST
+/*
- Compression configuration
- */
+#define CONFIG_BZIP2 +#define CONFIG_LZMA +#define CONFIG_LZO
+/*
- Commands configuration
- */
+#define CONFIG_SYS_NO_FLASH /* Declare no flash (NOR/SPI) */ +#define CONFIG_SYS_MVFS +#include <config_cmd_default.h> +#define CONFIG_CMD_ENV +#define CONFIG_CMD_IDE +#define CONFIG_CMD_MII +#define CONFIG_CMD_NAND +#define CONFIG_CMD_PING +#define CONFIG_CMD_USB +/*
- mv-common.h should be defined after CMD configs since it used them
- to enable certain macros
- */
+#include "mv-common.h"
+#undef CONFIG_SYS_PROMPT +#ifdef CONFIG_BOARD_IS_IB_NAS6210 +# define CONFIG_SYS_PROMPT "IB-NAS6210 # " +#elif CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_SYS_PROMPT "IB-NAS6220 # " +#else +# error Unknown RaidSonic ICY BOX board specified +#endif
Please make the prompt like "=> " so we can run tests on this :)
+/*
- Environment variables configurations
- */
+#ifdef CONFIG_CMD_NAND +#define CONFIG_ENV_IS_IN_NAND +#define CONFIG_ENV_SECT_SIZE 0x20000 +#else +#define CONFIG_ENV_IS_NOWHERE +#endif +#define CONFIG_ENV_SIZE 0x20000 +#define CONFIG_ENV_OFFSET 0x80000
+/*
- Default environment variables
- */
+#define CONFIG_BOOTCOMMAND \
- "setenv bootargs ${console} ${mtdparts} ${bootargs_root}; " \
- "ubi part root; " \
- "ubifsmount root; " \
- "ubifsload 0x800000 ${kernel}; " \
- "ubifsload 0x1100000 ${initrd}; " \
- "bootm 0x800000 0x1100000"
+#define CONFIG_MTDPARTS \
- "mtdparts=orion_nand:" \
- "0x80000@0x0(uboot)," \
- "0x20000@0x80000(uboot_env)," \
- "-@0xa0000(root)\0"
+#define CONFIG_EXTRA_ENV_SETTINGS \
- "console=console=ttyS0,115200\0" \
- "mtdids=nand0=orion_nand\0" \
- "mtdparts="CONFIG_MTDPARTS \
- "kernel=/boot/uImage\0" \
- "initrd=/boot/uInitrd\0" \
- "bootargs_root=ubi.mtd=2 root=ubi0:root rootfstype=ubifs\0"
+/*
- Ethernet Driver configuration
- */
+#ifdef CONFIG_CMD_NET +#define CONFIG_MVGBE_PORTS {1, 0} /* enable port 0 only */ +#define CONFIG_PHY_BASE_ADR 0 +#undef CONFIG_RESET_PHY_R +#endif /* CONFIG_CMD_NET */
+/*
- SATA Driver configuration
- */
+#ifdef CONFIG_CMD_IDE +#define __io +#define CONFIG_IDE_PREINIT +#define CONFIG_DOS_PARTITION +#define CONFIG_MVSATA_IDE_USE_PORT0 +# ifdef CONFIG_BOARD_IS_IB_NAS6210 +# undef CONFIG_SYS_IDE_MAXBUS +# define CONFIG_SYS_IDE_MAXBUS 1 +# undef CONFIG_SYS_IDE_MAXDEVICE +# define CONFIG_SYS_IDE_MAXDEVICE 1 +# elif CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_MVSATA_IDE_USE_PORT1 +# endif +#define CONFIG_SYS_ATA_IDE0_OFFSET KW_SATA_PORT0_OFFSET +# ifdef CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_SYS_ATA_IDE1_OFFSET KW_SATA_PORT1_OFFSET +# endif +#endif /* CONFIG_CMD_IDE */
please don't use this "#[space][space]define" convention.
+/*
- RTC driver configuration
- */
+#ifdef CONFIG_CMD_DATE +#define CONFIG_RTC_MV +#endif /* CONFIG_CMD_DATE */
+/*
- File system
- */
+#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_FAT +#define CONFIG_CMD_JFFS2 +#define CONFIG_CMD_UBI +#define CONFIG_CMD_UBIFS +#define CONFIG_RBTREE +#define CONFIG_MTD_DEVICE +#define CONFIG_MTD_PARTITIONS +#define CONFIG_CMD_MTDPARTS
+#endif /* _CONFIG_IB62x0_H */
The patch looks good otherwise )

Hi Marek,
On Sun, Mar 18, 2012 at 04:15:53PM +0100, Marek Vasut wrote:
- Copyright (C) 2011 G??rald Kerma dreagle@doukki.net
Can you please fix your name here?
I think your mail agent is not displaying UTF8 characters correctly. If this is a problem we could change it if Gerald is ok with that. Nobody else had problems with this...
+#define IB62x0_OE_LOW (~(0)) +#define IB62x0_OE_HIGH (~(0))
Fix this constant please (0xffffffff) and remove those parenthesis ... btw OE_HIGH and OE_LOW have both the same value?
Are you sure? It's done this way in:
board/Marvell/dreamplug/dreamplug.h board/Marvell/sheevaplug/sheevaplug.h board/Seagate/dockstar/dockstar.h
+# Configure RGMII-0 interface pad voltage to 1.8V +DATA 0xFFD100e0 0x1b1b1b9b
Make usage of upper/lower case consistent across files in your patch please (lowercase prefered).
Ok. I will send this in v4 once I get your feedback on other items.
+#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init */
Are you sure you want to skip lowlevel init? It'll break cache setup etc. I believe.
I will retest and send v4 once I get your feedback on other items.
+# define CONFIG_SYS_PROMPT "IB-NAS6210 # " +#elif CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_SYS_PROMPT "IB-NAS6220 # " +#else +# error Unknown RaidSonic ICY BOX board specified +#endif
Please make the prompt like "=> " so we can run tests on this :)
Ok.
+#define CONFIG_MVSATA_IDE_USE_PORT0 +# ifdef CONFIG_BOARD_IS_IB_NAS6210 +# undef CONFIG_SYS_IDE_MAXBUS +# define CONFIG_SYS_IDE_MAXBUS 1 +# undef CONFIG_SYS_IDE_MAXDEVICE +# define CONFIG_SYS_IDE_MAXDEVICE 1 +# elif CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_MVSATA_IDE_USE_PORT1 +# endif +#define CONFIG_SYS_ATA_IDE0_OFFSET KW_SATA_PORT0_OFFSET +# ifdef CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_SYS_ATA_IDE1_OFFSET KW_SATA_PORT1_OFFSET +# endif +#endif /* CONFIG_CMD_IDE */
please don't use this "#[space][space]define" convention.
I must disagree here. This is more readable and there are many examples in u-boot that use that syntax:
$ egrep '#[ ]+define' * -r | wc -l 12557
The patch looks good otherwise )
Cool. Thanks for reviewing.
Bye, Luka

Dear Luka Perkov,
Hi Marek,
On Sun, Mar 18, 2012 at 04:15:53PM +0100, Marek Vasut wrote:
- Copyright (C) 2011 G??rald Kerma dreagle@doukki.net
Can you please fix your name here?
I think your mail agent is not displaying UTF8 characters correctly. If this is a problem we could change it if Gerald is ok with that. Nobody else had problems with this...
+#define IB62x0_OE_LOW (~(0)) +#define IB62x0_OE_HIGH (~(0))
Fix this constant please (0xffffffff) and remove those parenthesis ... btw OE_HIGH and OE_LOW have both the same value?
Are you sure? It's done this way in:
board/Marvell/dreamplug/dreamplug.h board/Marvell/sheevaplug/sheevaplug.h board/Seagate/dockstar/dockstar.h
Does that mean it's inherently correct and not just a duplicated bug?
+# Configure RGMII-0 interface pad voltage to 1.8V +DATA 0xFFD100e0 0x1b1b1b9b
Make usage of upper/lower case consistent across files in your patch please (lowercase prefered).
Ok. I will send this in v4 once I get your feedback on other items.
Thanks
+#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init
*/
Are you sure you want to skip lowlevel init? It'll break cache setup etc. I believe.
I will retest and send v4 once I get your feedback on other items.
Ok, what's the result? From IRC I take it you must define this ... why?
+# define CONFIG_SYS_PROMPT "IB-NAS6210 # " +#elif CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_SYS_PROMPT "IB-NAS6220 # " +#else +# error Unknown RaidSonic ICY BOX board specified +#endif
Please make the prompt like "=> " so we can run tests on this :)
Ok.
+#define CONFIG_MVSATA_IDE_USE_PORT0 +# ifdef CONFIG_BOARD_IS_IB_NAS6210 +# undef CONFIG_SYS_IDE_MAXBUS +# define CONFIG_SYS_IDE_MAXBUS 1 +# undef CONFIG_SYS_IDE_MAXDEVICE +# define CONFIG_SYS_IDE_MAXDEVICE 1 +# elif CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_MVSATA_IDE_USE_PORT1 +# endif +#define CONFIG_SYS_ATA_IDE0_OFFSET KW_SATA_PORT0_OFFSET +# ifdef CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_SYS_ATA_IDE1_OFFSET KW_SATA_PORT1_OFFSET +# endif +#endif /* CONFIG_CMD_IDE */
please don't use this "#[space][space]define" convention.
I must disagree here. This is more readable and there are many examples in u-boot that use that syntax:
$ egrep '#[ ]+define' * -r | wc -l 12557
Again, the fact that it's used doesn't mean it's correct. It's not more readable actually, it's readable in the same way given you have good editor. Also, doesn't checkpatch.pl caugh on this stuff ?
The patch looks good otherwise )
Cool. Thanks for reviewing.
You're welcome ;-)
Bye, Luka
Best regards, Marek Vasut

Hi Marek,
On Mon, Mar 19, 2012 at 04:50:52PM +0100, Marek Vasut wrote:
+#define IB62x0_OE_LOW (~(0)) +#define IB62x0_OE_HIGH (~(0))
Fix this constant please (0xffffffff) and remove those parenthesis ... btw OE_HIGH and OE_LOW have both the same value?
Are you sure? It's done this way in:
board/Marvell/dreamplug/dreamplug.h board/Marvell/sheevaplug/sheevaplug.h board/Seagate/dockstar/dockstar.h
Does that mean it's inherently correct and not just a duplicated bug?
Well I really dont know. Judging by your comments it looks like kirkwood target could use some optimizations in "core" and not only in the board code.
+#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init
*/
Are you sure you want to skip lowlevel init? It'll break cache setup etc. I believe.
I will retest and send v4 once I get your feedback on other items.
Ok, what's the result? From IRC I take it you must define this ... why?
It generates error when building without it:
/home/luka/uboot/arch/arm/cpu/arm926ejs/start.S:393: undefined reference to `lowlevel_init' arm-openwrt-linux-ld: BFD (GNU Binutils) 2.22 assertion fail elf32-arm.c:13830
All other kirkwood targets I looked at define CONFIG_SKIP_LOWLEVEL_INIT, including the ones mentioned above; here are their configs for comparison:
include/configs/dreamplug.h include/configs/sheevaplug.h include/configs/dockstar.h
+#define CONFIG_MVSATA_IDE_USE_PORT0 +# ifdef CONFIG_BOARD_IS_IB_NAS6210 +# undef CONFIG_SYS_IDE_MAXBUS +# define CONFIG_SYS_IDE_MAXBUS 1 +# undef CONFIG_SYS_IDE_MAXDEVICE +# define CONFIG_SYS_IDE_MAXDEVICE 1 +# elif CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_MVSATA_IDE_USE_PORT1 +# endif +#define CONFIG_SYS_ATA_IDE0_OFFSET KW_SATA_PORT0_OFFSET +# ifdef CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_SYS_ATA_IDE1_OFFSET KW_SATA_PORT1_OFFSET +# endif +#endif /* CONFIG_CMD_IDE */
please don't use this "#[space][space]define" convention.
I must disagree here. This is more readable and there are many examples in u-boot that use that syntax:
$ egrep '#[ ]+define' * -r | wc -l 12557
Again, the fact that it's used doesn't mean it's correct. It's not more readable actually, it's readable in the same way given you have good editor. Also, doesn't checkpatch.pl caugh on this stuff ?
checkpatch.pl is ok with this. It's readable only if your editor uses different colors for this, and I would not like to go into editor fight here. I use vim probably as you but that is not important. I'll resend v4 with this indentation unless Wolfgang has some objections. If indentation is wrong in all other places in u-boot we can easily fix that with some sed magic.
This is my proposal - I'll resend v4 and it should be ok to commit without fixes for:
1) IB62x0_OE_LOW and IB62x0_OE_HIGH 2) CONFIG_SKIP_LOWLEVEL_INIT 3) ifdef indentation
Because fixing the 1) and 2) is more than adding support for this new board, and if it was in the same patch I would need to separate it. That is a different issue.
I'll put on my TODO list, and work on this after commit:
* replace tabs with spaces in boards.config * look at IB62x0_OE_LOW and IB62x0_OE_HIGH issue * look at CONFIG_SKIP_LOWLEVEL_INIT issue
If nobody has objections I'll resend v4...
Bye, Luka

Dear Luka Perkov,
Hi Marek,
On Mon, Mar 19, 2012 at 04:50:52PM +0100, Marek Vasut wrote:
+#define IB62x0_OE_LOW (~(0)) +#define IB62x0_OE_HIGH (~(0))
Fix this constant please (0xffffffff) and remove those parenthesis ... btw OE_HIGH and OE_LOW have both the same value?
Are you sure? It's done this way in:
board/Marvell/dreamplug/dreamplug.h board/Marvell/sheevaplug/sheevaplug.h board/Seagate/dockstar/dockstar.h
Does that mean it's inherently correct and not just a duplicated bug?
Well I really dont know. Judging by your comments it looks like kirkwood target could use some optimizations in "core" and not only in the board code.
Not optimizations, bugfixes ;-) Nice job pointing this out, Luka :-) Prafulla, can you please comment?
+#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init
*/
Are you sure you want to skip lowlevel init? It'll break cache setup etc. I believe.
I will retest and send v4 once I get your feedback on other items.
Ok, what's the result? From IRC I take it you must define this ... why?
It generates error when building without it:
/home/luka/uboot/arch/arm/cpu/arm926ejs/start.S:393: undefined reference to `lowlevel_init' arm-openwrt-linux-ld: BFD (GNU Binutils) 2.22 assertion fail elf32-arm.c:13830
Define it empty in your arch/arm/cpu/..../kirkwood.c and be done with it ;-)
All other kirkwood targets I looked at define CONFIG_SKIP_LOWLEVEL_INIT, including the ones mentioned above; here are their configs for comparison:
include/configs/dreamplug.h include/configs/sheevaplug.h include/configs/dockstar.h
Why do you need to skip it? Does it hang or something?
+#define CONFIG_MVSATA_IDE_USE_PORT0 +# ifdef CONFIG_BOARD_IS_IB_NAS6210 +# undef CONFIG_SYS_IDE_MAXBUS +# define CONFIG_SYS_IDE_MAXBUS 1 +# undef CONFIG_SYS_IDE_MAXDEVICE +# define CONFIG_SYS_IDE_MAXDEVICE 1 +# elif CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_MVSATA_IDE_USE_PORT1 +# endif +#define CONFIG_SYS_ATA_IDE0_OFFSET KW_SATA_PORT0_OFFSET +# ifdef CONFIG_BOARD_IS_IB_NAS6220 +# define CONFIG_SYS_ATA_IDE1_OFFSET KW_SATA_PORT1_OFFSET +# endif +#endif /* CONFIG_CMD_IDE */
please don't use this "#[space][space]define" convention.
I must disagree here. This is more readable and there are many examples in u-boot that use that syntax:
$ egrep '#[ ]+define' * -r | wc -l 12557
Again, the fact that it's used doesn't mean it's correct. It's not more readable actually, it's readable in the same way given you have good editor. Also, doesn't checkpatch.pl caugh on this stuff ?
checkpatch.pl is ok with this. It's readable only if your editor uses different colors for this, and I would not like to go into editor fight here. I use vim probably as you but that is not important.
Let's flame!!!
Hm ... on second thought, I use VIM too ... how are we supposed to flame about editors if we both happily use the same one? ;-)
I'll resend v4 with this indentation unless Wolfgang has some objections.
Good idea.
If indentation is wrong in all other places in u-boot we can easily fix that with some sed magic.
... or elisp script :trollface: :-)
This is my proposal - I'll resend v4 and it should be ok to commit without fixes for:
- IB62x0_OE_LOW and IB62x0_OE_HIGH
- CONFIG_SKIP_LOWLEVEL_INIT
- ifdef indentation
Because fixing the 1) and 2) is more than adding support for this new board, and if it was in the same patch I would need to separate it. That is a different issue.
You can wait for Prafulla with #1 and #2, also for #2 check my comment. But we have two bugs going on for granted here at least and they're not your boards fault. On the other hand, it'd be cool if you could fix them prior to adding your board ;-)
I'll put on my TODO list, and work on this after commit:
- replace tabs with spaces in boards.config
- look at IB62x0_OE_LOW and IB62x0_OE_HIGH issue
- look at CONFIG_SKIP_LOWLEVEL_INIT issue
If nobody has objections I'll resend v4...
Wait just a few hours until the other people express their opinion so you don't waste too much of your time.
Bye, Luka
Best regards, Marek Vasut

Hi Marek,
On Tue, Mar 20, 2012 at 07:48:05AM +0100, Marek Vasut wrote:
+#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init
*/
Are you sure you want to skip lowlevel init? It'll break cache setup etc. I believe.
I will retest and send v4 once I get your feedback on other items.
Ok, what's the result? From IRC I take it you must define this ... why?
It generates error when building without it:
/home/luka/uboot/arch/arm/cpu/arm926ejs/start.S:393: undefined reference to `lowlevel_init' arm-openwrt-linux-ld: BFD (GNU Binutils) 2.22 assertion fail elf32-arm.c:13830
Define it empty in your arch/arm/cpu/..../kirkwood.c and be done with it ;-)
Yes, this seems to fix it:
diff --git a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c index fba5e01..ec2026c 100644 --- a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c +++ b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c @@ -33,6 +33,8 @@
#define BUFLEN 16
+inline void lowlevel_init(void) {} + void reset_cpu(unsigned long ignored) { struct kwcpu_registers *cpureg = diff --git a/include/configs/ib62x0.h b/include/configs/ib62x0.h index 1c4778d..9808a04 100644 --- a/include/configs/ib62x0.h +++ b/include/configs/ib62x0.h @@ -43,7 +43,6 @@ #define CONFIG_KIRKWOOD /* SOC Family Name */ #define CONFIG_KW88F6281 /* SOC Name */ #define CONFIG_MACH_NAS6210 /* Machine type */ -#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init */
/* * Other required minimal configurations
I'll clean this up and resend after we commit this...
All other kirkwood targets I looked at define CONFIG_SKIP_LOWLEVEL_INIT, including the ones mentioned above; here are their configs for comparison:
include/configs/dreamplug.h include/configs/sheevaplug.h include/configs/dockstar.h
Why do you need to skip it? Does it hang or something?
See above. I guess compile error also for other boards.
This is my proposal - I'll resend v4 and it should be ok to commit without fixes for:
- IB62x0_OE_LOW and IB62x0_OE_HIGH
- CONFIG_SKIP_LOWLEVEL_INIT
- ifdef indentation
Because fixing the 1) and 2) is more than adding support for this new board, and if it was in the same patch I would need to separate it. That is a different issue.
You can wait for Prafulla with #1 and #2, also for #2 check my comment. But we have two bugs going on for granted here at least and they're not your boards fault. On the other hand, it'd be cool if you could fix them prior to adding your board ;-)
I'll resend v4 now and work on patches for this stuff later.
I'll put on my TODO list, and work on this after commit:
- replace tabs with spaces in boards.config
- look at IB62x0_OE_LOW and IB62x0_OE_HIGH issue
- look at CONFIG_SKIP_LOWLEVEL_INIT issue
For this one we have a patch now :)
Thank you Marek.
Bye, Luka

Dear Luka Perkov,
Hi Marek,
On Tue, Mar 20, 2012 at 07:48:05AM +0100, Marek Vasut wrote:
> +#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board > lowlevel_init
*/
Are you sure you want to skip lowlevel init? It'll break cache setup etc. I believe.
I will retest and send v4 once I get your feedback on other items.
Ok, what's the result? From IRC I take it you must define this ... why?
It generates error when building without it:
/home/luka/uboot/arch/arm/cpu/arm926ejs/start.S:393: undefined reference to `lowlevel_init' arm-openwrt-linux-ld: BFD (GNU Binutils) 2.22 assertion fail elf32-arm.c:13830
Define it empty in your arch/arm/cpu/..../kirkwood.c and be done with it ;-)
Yes, this seems to fix it:
diff --git a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c index fba5e01..ec2026c 100644 --- a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c +++ b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c @@ -33,6 +33,8 @@
#define BUFLEN 16
+inline void lowlevel_init(void) {}
void reset_cpu(unsigned long ignored) { struct kwcpu_registers *cpureg = diff --git a/include/configs/ib62x0.h b/include/configs/ib62x0.h index 1c4778d..9808a04 100644 --- a/include/configs/ib62x0.h +++ b/include/configs/ib62x0.h @@ -43,7 +43,6 @@ #define CONFIG_KIRKWOOD /* SOC Family Name */ #define CONFIG_KW88F6281 /* SOC Name */ #define CONFIG_MACH_NAS6210 /* Machine type */ -#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board lowlevel_init */
/*
- Other required minimal configurations
I'll clean this up and resend after we commit this...
Commit what? Looking forward to V3 btw :)
All other kirkwood targets I looked at define CONFIG_SKIP_LOWLEVEL_INIT, including the ones mentioned above; here are their configs for comparison:
include/configs/dreamplug.h include/configs/sheevaplug.h include/configs/dockstar.h
Why do you need to skip it? Does it hang or something?
See above. I guess compile error also for other boards.
Still you're missing cpu_init_crit in start.S, which might cause trouble. Now that you defined lowlevel_init(), you can as well remove this define SKIP... right?
This is my proposal - I'll resend v4 and it should be ok to commit
without fixes for:
- IB62x0_OE_LOW and IB62x0_OE_HIGH
- CONFIG_SKIP_LOWLEVEL_INIT
- ifdef indentation
Because fixing the 1) and 2) is more than adding support for this new board, and if it was in the same patch I would need to separate it. That is a different issue.
You can wait for Prafulla with #1 and #2, also for #2 check my comment. But we have two bugs going on for granted here at least and they're not your boards fault. On the other hand, it'd be cool if you could fix them prior to adding your board ;-)
I'll resend v4 now and work on patches for this stuff later.
I'll put on my TODO list, and work on this after commit:
- replace tabs with spaces in boards.config
- look at IB62x0_OE_LOW and IB62x0_OE_HIGH issue
- look at CONFIG_SKIP_LOWLEVEL_INIT issue
For this one we have a patch now :)
Thank you Marek.
Thank you for your good work so far :)
Bye, Luka
Best regards, Marek Vasut

-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 21 March 2012 12:52 To: Luka Perkov Cc: u-boot@lists.denx.de; dreagle@doukki.net; Wolfgang Denk; Prafulla Wadaskar Subject: Re: [U-Boot] [PATCH v2] add new board nas62x0
Dear Luka Perkov,
Hi Marek,
...snip...
This is my proposal - I'll resend v4 and it should be ok to
commit
without fixes for:
- IB62x0_OE_LOW and IB62x0_OE_HIGH
- CONFIG_SKIP_LOWLEVEL_INIT
- ifdef indentation
Because fixing the 1) and 2) is more than adding support for
this new
board, and if it was in the same patch I would need to separate
it.
That is a different issue.
You can wait for Prafulla with #1 and #2, also for #2 check my
comment.
But we have two bugs going on for granted here at least and
they're not
your boards fault. On the other hand, it'd be cool if you could
fix them
prior to adding your board ;-)
Hi Luka
#1: Defining these values as 0xffffffff, indicates that all GPIOs are configured high by default. so this configuration solely depends upon your board requirement.
#2: on kirkwood, you should define CONFIG_SKIP_LOWLEVEL_INIT since lowlevel_init is not needed on Kirkwood platforms. (ref: doc/README.kwbimage)
Regards.. Prafulla . . .

Dear Prafulla Wadaskar,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 21 March 2012 12:52 To: Luka Perkov Cc: u-boot@lists.denx.de; dreagle@doukki.net; Wolfgang Denk; Prafulla Wadaskar Subject: Re: [U-Boot] [PATCH v2] add new board nas62x0
Dear Luka Perkov,
Hi Marek,
...snip...
This is my proposal - I'll resend v4 and it should be ok to
commit
without fixes for:
- IB62x0_OE_LOW and IB62x0_OE_HIGH
- CONFIG_SKIP_LOWLEVEL_INIT
- ifdef indentation
Because fixing the 1) and 2) is more than adding support for
this new
board, and if it was in the same patch I would need to separate
it.
That is a different issue.
You can wait for Prafulla with #1 and #2, also for #2 check my
comment.
But we have two bugs going on for granted here at least and
they're not
your boards fault. On the other hand, it'd be cool if you could
fix them
prior to adding your board ;-)
Hi Luka
#1: Defining these values as 0xffffffff, indicates that all GPIOs are configured high by default. so this configuration solely depends upon your board requirement.
#2: on kirkwood, you should define CONFIG_SKIP_LOWLEVEL_INIT since lowlevel_init is not needed on Kirkwood platforms. (ref: doc/README.kwbimage)
Prafulla, you're then missing the fiddling with CPSR bits, which might be quite necessary.
Regards.. Prafulla . . .
Best regards, Marek Vasut

-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 21 March 2012 15:33 To: Prafulla Wadaskar Cc: Luka Perkov; u-boot@lists.denx.de; dreagle@doukki.net; Wolfgang Denk Subject: Re: [U-Boot] [PATCH v2] add new board nas62x0
Dear Prafulla Wadaskar,
...snip...
Hi Luka
#1: Defining these values as 0xffffffff, indicates that all GPIOs
are
configured high by default. so this configuration solely depends
upon your
board requirement.
#2: on kirkwood, you should define CONFIG_SKIP_LOWLEVEL_INIT since lowlevel_init is not needed on Kirkwood platforms. (ref: doc/README.kwbimage)
Prafulla, you're then missing the fiddling with CPSR bits, which might be quite necessary.
Hi Marek. May be, may you please explain these bits? Or any pointers? Can't these be addressed in kwimage.cfg?
Regards.. Prafulla . . .

Dear Prafulla Wadaskar,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 21 March 2012 15:33 To: Prafulla Wadaskar Cc: Luka Perkov; u-boot@lists.denx.de; dreagle@doukki.net; Wolfgang Denk Subject: Re: [U-Boot] [PATCH v2] add new board nas62x0
Dear Prafulla Wadaskar,
...snip...
Hi Luka
#1: Defining these values as 0xffffffff, indicates that all GPIOs
are
configured high by default. so this configuration solely depends
upon your
board requirement.
#2: on kirkwood, you should define CONFIG_SKIP_LOWLEVEL_INIT since lowlevel_init is not needed on Kirkwood platforms. (ref: doc/README.kwbimage)
Prafulla, you're then missing the fiddling with CPSR bits, which might be quite necessary.
Hi Marek. May be, may you please explain these bits? Or any pointers? Can't these be addressed in kwimage.cfg?
I have no idea, I'm no kirkwood expert. And about these bits, check start.S, what it does with them.
Regards.. Prafulla . . .
Best regards, Marek Vasut

-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 21 March 2012 16:27 To: Prafulla Wadaskar Cc: Luka Perkov; u-boot@lists.denx.de; dreagle@doukki.net; Wolfgang Denk Subject: Re: [U-Boot] [PATCH v2] add new board nas62x0
Dear Prafulla Wadaskar,
-----Original Message----- From: Marek Vasut [mailto:marex@denx.de] Sent: 21 March 2012 15:33 To: Prafulla Wadaskar Cc: Luka Perkov; u-boot@lists.denx.de; dreagle@doukki.net;
Wolfgang
Denk Subject: Re: [U-Boot] [PATCH v2] add new board nas62x0
Dear Prafulla Wadaskar,
...snip...
Hi Luka
#1: Defining these values as 0xffffffff, indicates that all
GPIOs
are
configured high by default. so this configuration solely depends
upon your
board requirement.
#2: on kirkwood, you should define CONFIG_SKIP_LOWLEVEL_INIT
since
lowlevel_init is not needed on Kirkwood platforms. (ref: doc/README.kwbimage)
Prafulla, you're then missing the fiddling with CPSR bits, which
might
be quite necessary.
Hi Marek. May be, may you please explain these bits? Or any pointers? Can't
these be
addressed in kwimage.cfg?
I have no idea, I'm no kirkwood expert. And about these bits, check start.S, what it does with them.
Hi Marek,
I have checked arc/arm/cpu/arm926ejs/start.S, and I didn't find any issue, lowlevel_init will be called from cpu_init_crit which should be okay, there is cache init related code in it, if that can be a problem then it should be kept out. And on Kirkwood, internal bootloader does the job of lowlevel_init prior to start uboot execution.
Regards.. Prafulla . . .

Hi Luka,
Le 19/03/2012 16:50, Marek Vasut a écrit :
Dear Luka Perkov,
Hi Marek,
On Sun, Mar 18, 2012 at 04:15:53PM +0100, Marek Vasut wrote:
- Copyright (C) 2011 G??rald Kerma dreagle@doukki.net
Can you please fix your name here?
I think your mail agent is not displaying UTF8 characters correctly. If this is a problem we could change it if Gerald is ok with that. Nobody else had problems with this...
Okay for me.
Please, replace by ... Gerald Kerma drEagle@doukki.net
Regards, --- Gk2 :-]

Dear DrEagle,
Hi Luka,
Le 19/03/2012 16:50, Marek Vasut a écrit :
Dear Luka Perkov,
Hi Marek,
On Sun, Mar 18, 2012 at 04:15:53PM +0100, Marek Vasut wrote:
- Copyright (C) 2011 G??rald Kerma dreagle@doukki.net
Can you please fix your name here?
I think your mail agent is not displaying UTF8 characters correctly. If this is a problem we could change it if Gerald is ok with that. Nobody else had problems with this...
Okay for me.
Please, replace by ... Gerald Kerma drEagle@doukki.net
You should not use uppercase letters in email addresses ;-)
Regards,
Gk2
:-]
Best regards, Marek Vasut
participants (6)
-
DrEagle
-
Luka Perkov
-
Marek Vasut
-
Marek Vasut
-
Prafulla Wadaskar
-
Wolfgang Denk