
On 21:48 Wed 08 Apr , Prafulla Wadaskar wrote:
From: prafulla_wadaskar prafulla@marvell.com
This is Marvell's 88F6281_A0 based custom board developed for wireless access point product
This patch is tested for-
- Boot from DRAM/SPI flash/NFS
- File transfer using tftp and loadb
- SPI flash read/write/erase
- Booting Linux kernel and RFS from SPI flash
Note: doImage utility needed to convert u-boot.bin to u-boot-spiflash.bin, DRAM configuration will be part of this utility
btw where is the spi driver?
Reviewed-by: Ronen Shitrit rshitrit@marvell.com Signed-off-by: Prafulla Wadaskar prafulla@marvell.com
Changelog v2: updated as per first review comments by Wolfgang Denk debug_prints updated to debug
MAKEALL | 1 + Makefile | 3 + board/Marvell/mv88f6281gtw_ge/Makefile | 52 +++++++ board/Marvell/mv88f6281gtw_ge/config.mk | 25 +++ board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c | 118 ++++++++++++++ board/Marvell/mv88f6281gtw_ge/u-boot.lds | 53 +++++++ include/configs/mv88f6281gtw_ge.h | 185 +++++++++++++++++++++++ 7 files changed, 437 insertions(+), 0 deletions(-) create mode 100644 board/Marvell/mv88f6281gtw_ge/Makefile create mode 100644 board/Marvell/mv88f6281gtw_ge/config.mk create mode 100644 board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c create mode 100644 board/Marvell/mv88f6281gtw_ge/u-boot.lds create mode 100644 include/configs/mv88f6281gtw_ge.h
diff --git a/MAKEALL b/MAKEALL index e4eb42b..1caf81d 100755 --- a/MAKEALL +++ b/MAKEALL @@ -504,6 +504,7 @@ LIST_ARM9=" \ cp946es \ cp966 \ lpd7a400 \
- mv88f6281gtw_ge \ mx1ads \ mx1fs2 \ netstar \
diff --git a/Makefile b/Makefile index d2c7c3f..709e4be 100644 --- a/Makefile
- 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>
+DECLARE_GLOBAL_DATA_PTR;
+#define MV88F6281GTW_GE_OE_LOW (~((BIT7) | (BIT20) \
|(BIT21))) /*enable GLED,RLED */
+#define MV88F6281GTW_GE_OE_HIGH (~((BIT4)|(BIT6)|(BIT7)|(BIT12) \
|(BIT13)|(BIT16)|(BIT17)))
+#define MV88F6281GTW_GE_OE_VAL_LOW (BIT20) /*make GLED on */ +#define MV88F6281GTW_GE_OE_VAL_HIGH ((BIT6)|(BIT13)|(BIT16)|(BIT17))
plese remove the BITxx
+/*
- Default values for MPP registers
- */
+#define MV88F6281GTW_GE_MPP0_7 0x01112222 +#define MV88F6281GTW_GE_MPP8_15 0x11103311 +#define MV88F6281GTW_GE_MPP16_23 0x00001111 +#define MV88F6281GTW_GE_MPP24_31 0x22222222 +#define MV88F6281GTW_GE_MPP32_39 0x40440222 +#define MV88F6281GTW_GE_MPP40_47 0x00004444 +#define MV88F6281GTW_GE_MPP48_55 0x00000000
please move all this define to a header and if possible please use macro to describe the content
+/*
- function definitations
- */
+#ifdef CONFIG_SWITCH_88E61XX +extern int mv_switch_88e61xx_init(u32 eth_port_num); +#endif
please move it to a header
+int board_init(void) +{
- unsigned int i;
- /* Board Parameters initializations */
- kw_window_ctrl_reg_init();
- kw_gpio_init(MV88F6281GTW_GE_OE_VAL_LOW,
MV88F6281GTW_GE_OE_VAL_HIGH,
MV88F6281GTW_GE_OE_LOW,
MV88F6281GTW_GE_OE_HIGH);
- kw_mpp_control_init(MV88F6281GTW_GE_MPP0_7,
MV88F6281GTW_GE_MPP8_15,
MV88F6281GTW_GE_MPP16_23,
MV88F6281GTW_GE_MPP24_31,
MV88F6281GTW_GE_MPP32_39,
MV88F6281GTW_GE_MPP40_47,
MV88F6281GTW_GE_MPP48_55);
- /* init serial */
- gd->baudrate = CONFIG_BAUDRATE;
- gd->have_console = 1;
- serial_init();
no need please remove the serial init is done by the lib_arm/board.c
- /*
* arch number of USED SOC
*/
- gd->bd->bi_arch_number = MACH_TYPE_MV88F6281GTW_GE;
- /* adress of boot parameters */
- gd->bd->bi_boot_params = 0x00000100;
- return 0;
+}
+int dram_init(void) +{
- int i;
- for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
gd->bd->bi_dram[i].start = kw_sdram_bar(i);
gd->bd->bi_dram[i].size = kw_sdram_bs(i);
- }
- return 0;
+}
+int last_stage_init(void) +{
- return 0;
+}
+#if defined(CONFIG_MISC_INIT_R) +/* miscellaneous platform dependent init */ +int misc_init_r(void) +{
- return kw_misc_init_r();
+}
+void reset_phy(void) +{ +#ifdef CONFIG_SWITCH_88E61XX
- mv_switch_88e61xx_init(ETH_0);
+#endif +}
+#endif /* CONFIG_MISC_INIT_R */ diff --git a/board/Marvell/mv88f6281gtw_ge/u-boot.lds b/board/Marvell/mv88f6281gtw_ge/u-boot.lds
is it possible to have a shorter name for the board?
new file mode 100644 index 0000000..0338757 --- /dev/null +++ b/board/Marvell/mv88f6281gtw_ge/u-boot.lds
as all kirkwood will use the same lds please move it to soc cpu/.../kirlwood/
@@ -0,0 +1,53 @@ +/*
- (C) Copyright 2009
- Marvell Semiconductor <www.marvell.com>
- 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
- */
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{
- . = _start;
- . = ALIGN(4);
- .text :
- {
cpu/arm926ejs/start.o (.text)
*(.text)
- }
- .rodata : { *(.rodata) }
please replace by this .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
- . = ALIGN(4);
- .data : { *(.data) }
- . = ALIGN(4);
- .got : { *(.got) }
- . = .;
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
- . = ALIGN(4);
- __bss_start = .;
- .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
- _end = .;
+}
diff --git a/include/configs/mv88f6281gtw_ge.h b/include/configs/mv88f6281gtw_ge.h new file mode 100644 index 0000000..7f2b325 --- /dev/null +++ b/include/configs/mv88f6281gtw_ge.h @@ -0,0 +1,185 @@ +/*
- (C) Copyright 2009
- Marvell Semiconductor <www.marvell.com>
- 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
- */
+#ifndef _CONFIG_MV88F6281GTW_GE_H +#define _CONFIG_MV88F6281GTW_GE_H
+/*
- Version number information
- */
+#define CONFIG_IDENT_STRING "\nMarvell-MV88F6281GTW_GE-A0"
+/*
- High Level Configuration Options (easy to change)
- */
+#define CONFIG_MARVELL 1 +#define CONFIG_ARM926EJS 1 /* Basic Architecture */ +#define CONFIG_FEROCEON_88FR131 1 /* CPU Core subversion */ +#define LE 1 /* Specify LE/BE operation */
why?
+#define CONFIG_KIRKWOOD 1 /* SOC Family Name */ +#define CONFIG_KW88F6281 1 /* SOC Name */ +#define CONFIG_KW88F6281_A0 1 /* SOC Revision */
is is not possible to detect it?
+#define CONFIG_MV88F6281GTW_GE_A0 1 /* Board Name */
+#ifdef CONFIG_KIRKWOOD +#define CONFIG_MD5 /* get_random_hex on krikwood needs MD5 support */ +#define CONFIG_KIRKWOOD_EGIGA_INIT /* Enable GbePort0/1 for kernel */ +#define CONFIG_KIRKWOOD_PCIE_INIT /* Enable PCIE Port0 for kernel */ +#define CONFIG_KIRKWOOD_RGMII_PAD_1V8 /* Set RGMII Pad voltage to 1.8V */ +#endif
+/*
- CLKs configurations
- */
+#define CONFIG_SYS_HZ 1000
+/*
- Serial Port configuration
- The following definitions let you select what serial you want to use
- for your console driver.
- */
+#define CONFIG_KW_SERIAL +#define CONFIG_CONS_INDEX 0 /*Console on UART0 */
+#define CONFIG_BAUDRATE 115200 /* console baudrate */
^^^^^^^^^ whitespace please remove
+#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, \
115200,230400, 460800, 921600 }
+/* auto boot */ +#define CONFIG_BOOTDELAY 3 /* default enable autoboot */
+/*
- For booting Linux, the board info and command line data
- have to be in the first 8 MB of memory, since this is
- the maximum mapped by the Linux kernel during initialization.
- */
+#define CONFIG_BOOTMAPSZ (8<<20) /* Initial Memmap for Linux */ +#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */ +#define CONFIG_INITRD_TAG 1 /* enable INITRD tag */ +#define CONFIG_SETUP_MEMORY_TAGS 1 /* enable memory tag */
+#define CONFIG_SYS_PROMPT "Marvell>> " /* Command Prompt
why not Marvell> or a board name?
+#define CONFIG_SYS_CBSIZE 1024 /* Console I/O Buff Size */ +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE \
+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buff */
please add space before and after '+'
+/*
- Commands configuration
- */
+#define CONFIG_CMD_ENV +#define CONFIG_CMD_RUN +#define CONFIG_CMD_LOADB +#define CONFIG_CMD_NET +#define CONFIG_CMD_DHCP +#define CONFIG_CMD_AUTOSCRIPT +#define CONFIG_CMD_MEMORY
- "x_bootcmd_kernel=cp.b 0xf8100000 0x6400000 0x200000\0" \
- "x_bootargs_root=root=/dev/mtdblock3 ro rootfstype=squashfs\0"
+/*
- Size of malloc() pool
- */
+#define CONFIG_SYS_MALLOC_LEN 0x00400000 /* 4M */
4M?
+/* size in bytes reserved for initial data */ +#define CONFIG_SYS_GBL_DATA_SIZE 128
+/*
- Other required minimal configurations
- */
+#define CONFIG_CONSOLE_INFO_QUIET /* some code reduction */ +#define CONFIG_MISC_INIT_R 1 /* call misc_init_r() */ +#define CONFIG_NR_DRAM_BANKS 4
^ whitespace please remove
+#define CONFIG_STACKSIZE 0x00100000 /* regular stack- 1M */ +#define CONFIG_SYS_LOAD_ADDR 0x00800000 /* default load adr- 8M */ +#define CONFIG_SYS_MEMTEST_START 0x00400000 /* 4M */ +#define CONFIG_SYS_MEMTEST_END 0x007fffff /*(_8M -1) */
_8M?
+#define CONFIG_SYS_RESET_ADDRESS 0xffff0000 /* Rst Vector Adr */ +#define CONFIG_SYS_MAXARGS 16 /* max number of command args */
+/*
- Ethernet Driver configuration
- */
+#ifdef CONFIG_CMD_NET +#define CONFIG_NETCONSOLE /* include NetConsole support */
whitespace please remove
+#define CONFIG_NET_MULTI /* specify more that one ports available */ +#define CONFIG_KIRKWOOD_EGIGA /* Enable SOC specific Ethernet Gigabit
Controller Driver */
please use this style of multiple comment /* * */
+#undef CONFIG_PHY_LINK_DETECT /* detect link always on */
/* specify ports to be used */
+#define CONFIG_KIRKWOOD_EGIGA_PORTS {TRUE,FALSE}
/* phy base addr for multi-chip addressing */
+#define CONFIG_IPADDR 192.168.5.44 +#define CONFIG_SERVERIP 192.168.5.30 +#define CONFIG_NETMASK 255.255.255.0
please remove the IP params
+#define CONFIG_ENV_OVERWRITE /* ethaddr can be reprogrammed */ +#endif /* CONFIG_CMD_NET */
+/*
- Marvell 88Exxxx Switch configurations
- */
+#define CONFIG_RESET_PHY_R /* use reset_phy() to init phy/swtich */
whitespace please remove
+#define CONFIG_SWITCH_88E61XX /* Enable mv88e61xx switch driver */ +#define CONFIG_SWITCH_MV88E6165 /* Used Switch is 88E6165 */
/* p5 of 88E6165 connceted to CPU */
+#define CONFIG_SWITCH_88E61XX_CPU_PORT 5 +#define CONFIG_SWITCH_88E61XX_ENABLED_PORTS (BIT0 | BIT1 | BIT2 | \
BIT3 | BIT4 | BIT5)
please remobe this BITx
+#endif /* _CONFIG_MV88F6281GTW_GE_H */
Best Regards, J.