[PATCH v2 12/12] mips: octeon: Add minimal Octeon 3 EBB7304 EVK support
Stefan Roese
sr at denx.de
Fri Jun 19 10:06:32 CEST 2020
On 16.06.20 19:35, Daniel Schwierzeck wrote:
>
>
> Am 14.05.20 um 11:59 schrieb Stefan Roese:
>> This patch adds very basic minimal support for the Marvell Octeon 3
>> CN73xx based EBB7304 EVK. Please note that the basic Octeon port does
>> not support DDR3/4 initialization yet. To still use U-Boot on with this
>> port, the L2 cache (4MiB) is used as RAM. This way, U-Boot can boot
>> to the prompt on this board.
>>
>> Supported devices:
>> - UART
>> - reset
>> - CFI parallel NOR flash
>>
>> Signed-off-by: Stefan Roese <sr at denx.de>
>>
>> ---
>>
>> Changes in v2:
>> - Removed CONFIG_SYS_MIPS_TIMER_FREQ
>>
>> arch/mips/dts/Makefile | 1 +
>> arch/mips/dts/mrvl,octeon-ebb7304.dts | 96 ++++++++++++++++++++++++
>> arch/mips/mach-octeon/Kconfig | 14 ++++
>> board/Marvell/octeon_ebb7304/Kconfig | 19 +++++
>> board/Marvell/octeon_ebb7304/MAINTAINERS | 7 ++
>> board/Marvell/octeon_ebb7304/Makefile | 8 ++
>> board/Marvell/octeon_ebb7304/board.c | 12 +++
>> configs/octeon_ebb7304_defconfig | 34 +++++++++
>> include/configs/octeon_common.h | 25 ++++++
>> include/configs/octeon_ebb7304.h | 20 +++++
>> 10 files changed, 236 insertions(+)
>> create mode 100644 arch/mips/dts/mrvl,octeon-ebb7304.dts
>> create mode 100644 board/Marvell/octeon_ebb7304/Kconfig
>> create mode 100644 board/Marvell/octeon_ebb7304/MAINTAINERS
>> create mode 100644 board/Marvell/octeon_ebb7304/Makefile
>> create mode 100644 board/Marvell/octeon_ebb7304/board.c
>> create mode 100644 configs/octeon_ebb7304_defconfig
>> create mode 100644 include/configs/octeon_common.h
>> create mode 100644 include/configs/octeon_ebb7304.h
>>
>> diff --git a/arch/mips/dts/Makefile b/arch/mips/dts/Makefile
>> index f711e9fb59..dc85901dca 100644
>> --- a/arch/mips/dts/Makefile
>> +++ b/arch/mips/dts/Makefile
>> @@ -18,6 +18,7 @@ dtb-$(CONFIG_BOARD_COMTREND_VR3032U) += comtrend,vr-3032u.dtb
>> dtb-$(CONFIG_BOARD_COMTREND_WAP5813N) += comtrend,wap-5813n.dtb
>> dtb-$(CONFIG_BOARD_HUAWEI_HG556A) += huawei,hg556a.dtb
>> dtb-$(CONFIG_BOARD_MT7628_RFB) += mediatek,mt7628-rfb.dtb
>> +dtb-$(CONFIG_TARGET_OCTEON_EBB7304) += mrvl,octeon-ebb7304.dtb
>> dtb-$(CONFIG_BOARD_NETGEAR_CG3100D) += netgear,cg3100d.dtb
>> dtb-$(CONFIG_BOARD_NETGEAR_DGND3700V2) += netgear,dgnd3700v2.dtb
>> dtb-$(CONFIG_BOARD_SAGEM_FAST1704) += sagem,f at st1704.dtb
>> diff --git a/arch/mips/dts/mrvl,octeon-ebb7304.dts b/arch/mips/dts/mrvl,octeon-ebb7304.dts
>> new file mode 100644
>> index 0000000000..4e9c2de7d4
>> --- /dev/null
>> +++ b/arch/mips/dts/mrvl,octeon-ebb7304.dts
>> @@ -0,0 +1,96 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +/*
>> + * Marvell / Cavium Inc. EVB CN7300
>> + */
>> +
>> +/dts-v1/;
>> +
>> +/include/ "mrvl,cn73xx.dtsi"
>> +
>> +/ {
>> + model = "cavium,ebb7304";
>> + compatible = "cavium,ebb7304";
>> +
>> + aliases {
>> + serial0 = &uart0;
>> + };
>> +
>> + chosen {
>> + stdout-path = &uart0;
>> + };
>> +};
>> +
>> +&bootbus {
>> + /*
>> + * bootbus CS0 for CFI flash is remapped (0x1fc0.0000 -> 1f40.0000)
>> + * as the initial size is too small for the 8MiB flash device
>> + */
>> + ranges = <0 0 0 0x1f400000 0xc00000>,
>> + <1 0 0x10000 0x10000000 0>,
>> + <2 0 0x10000 0x20000000 0>,
>> + <3 0 0x10000 0x30000000 0>,
>> + <4 0 0 0x1d020000 0x10000>,
>> + <5 0 0x10000 0x50000000 0>,
>> + <6 0 0x10000 0x60000000 0>,
>> + <7 0 0x10000 0x70000000 0>;
>> +
>> + cavium,cs-config at 0 {
>> + compatible = "cavium,octeon-3860-bootbus-config";
>> + cavium,cs-index = <0>;
>> + cavium,t-adr = <10>;
>> + cavium,t-ce = <50>;
>> + cavium,t-oe = <50>;
>> + cavium,t-we = <35>;
>> + cavium,t-rd-hld = <25>;
>> + cavium,t-wr-hld = <35>;
>> + cavium,t-pause = <0>;
>> + cavium,t-wait = <50>;
>> + cavium,t-page = <30>;
>> + cavium,t-rd-dly = <0>;
>> + cavium,page-mode = <1>;
>> + cavium,pages = <8>;
>> + cavium,bus-width = <8>;
>> + };
>> +
>> + cavium,cs-config at 4 {
>> + compatible = "cavium,octeon-3860-bootbus-config";
>> + cavium,cs-index = <4>;
>> + cavium,t-adr = <10>;
>> + cavium,t-ce = <10>;
>> + cavium,t-oe = <160>;
>> + cavium,t-we = <100>;
>> + cavium,t-rd-hld = <10>;
>> + cavium,t-wr-hld = <0>;
>> + cavium,t-pause = <50>;
>> + cavium,t-wait = <50>;
>> + cavium,t-page = <10>;
>> + cavium,t-rd-dly = <10>;
>> + cavium,pages = <0>;
>> + cavium,bus-width = <8>;
>> + };
>> +
>> + flash0: nor at 0,0 {
>> + compatible = "cfi-flash";
>> + reg = <0 0 0x800000>;
>> + #address-cells = <1>;
>> + #size-cells = <1>;
>> + partition at 0 {
>> + label = "bootloader";
>> + reg = <0 0x340000>;
>> + read-only;
>> + };
>> + partition at 300000 {
>> + label = "storage";
>> + reg = <0x340000 0x4be000>;
>> + };
>> + partition at 7fe000 {
>> + label = "environment";
>> + reg = <0x7fe000 0x2000>;
>> + read-only;
>> + };
>> + };
>> +};
>> +
>> +&uart0 {
>> + clock-frequency = <1200000000>;
>> +};
>> diff --git a/arch/mips/mach-octeon/Kconfig b/arch/mips/mach-octeon/Kconfig
>> index 9fd4c6cb0a..4fc89dc97e 100644
>> --- a/arch/mips/mach-octeon/Kconfig
>> +++ b/arch/mips/mach-octeon/Kconfig
>> @@ -31,6 +31,18 @@ config SOC_OCTEON3
>>
>> endchoice
>>
>> +choice
>> + prompt "Octeon 3 board select"
>> + default TARGET_OCTEON_EBB7304
>> +
>> +config TARGET_OCTEON_EBB7304
>> + bool "Marvell Octeon EBB7304"
>> + select OCTEON_CN73XX
>> + help
>> + Choose this for the Octeon EBB7304 board
>> +
>> +endchoice
>> +
>> config SYS_DCACHE_SIZE
>> default 32768
>>
>> @@ -50,4 +62,6 @@ config MIPS_INIT_JUMP_OFFSET
>> This specifies the address where U-Boot starts exceution.
>> In this case its the flash base address of the bootbus.
>>
>> +source "board/Marvell/octeon_ebb7304/Kconfig"
>> +
>> endmenu
>> diff --git a/board/Marvell/octeon_ebb7304/Kconfig b/board/Marvell/octeon_ebb7304/Kconfig
>> new file mode 100644
>> index 0000000000..ab54e6dbbc
>> --- /dev/null
>> +++ b/board/Marvell/octeon_ebb7304/Kconfig
>> @@ -0,0 +1,19 @@
>> +if TARGET_OCTEON_EBB7304
>> +
>> +config SYS_BOARD
>> + string
>> + default "octeon_ebb7304"
>> +
>> +config SYS_VENDOR
>> + string
>> + default "Marvell"
>> +
>> +config SYS_CONFIG_NAME
>> + string
>> + default "octeon_ebb7304"
>> +
>> +config DEFAULT_DEVICE_TREE
>> + string
>> + default "mrvl,octeon-ebb7304"
>> +
>> +endif
>> diff --git a/board/Marvell/octeon_ebb7304/MAINTAINERS b/board/Marvell/octeon_ebb7304/MAINTAINERS
>> new file mode 100644
>> index 0000000000..f52beacbac
>> --- /dev/null
>> +++ b/board/Marvell/octeon_ebb7304/MAINTAINERS
>> @@ -0,0 +1,7 @@
>> +OCTEON_EBB7304 BOARD
>> +M: Aaron Williams <awilliams at marvell.com>
>> +S: Maintained
>> +F: board/Marvell/octeon_ebb7304
>> +F: configs/octeon_ebb7304_defconfig
>> +F: include/configs/octeon_ebb7304.h
>> +F: arch/mips/dts/mrvl,octeon-ebb7304.dts
>> diff --git a/board/Marvell/octeon_ebb7304/Makefile b/board/Marvell/octeon_ebb7304/Makefile
>> new file mode 100644
>> index 0000000000..8c6ffb9328
>> --- /dev/null
>> +++ b/board/Marvell/octeon_ebb7304/Makefile
>> @@ -0,0 +1,8 @@
>> +#
>> +# Copyright (C) 2016 Stefan Roese <sr at denx.de>
>> +# Copyright (C) 2019 Marvell International Ltd.
>
> I've noticed that the copyright statements are inconsistent in various
> files and the year numbers are outdated. Shouldn't that be something
> like this?
>
> Copyright (C) 2020 Stefan Roese <sr at denx.de>
> Copyright (C) 2019-2020 Marvell International Ltd.
Thanks for spotting. I'll adjust this for v3.
Thanks,
Stefan
>
>> +#
>> +# SPDX-License-Identifier: GPL-2.0+
>> +#
>> +
>> +obj-y := board.o
>> diff --git a/board/Marvell/octeon_ebb7304/board.c b/board/Marvell/octeon_ebb7304/board.c
>> new file mode 100644
>> index 0000000000..41ac18b952
>> --- /dev/null
>> +++ b/board/Marvell/octeon_ebb7304/board.c
>> @@ -0,0 +1,12 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +/*
>> + * Copyright (C) 2020 Stefan Roese <sr at denx.de>
>> + */
>> +
>> +#include <common.h>
>> +#include <dm.h>
>> +
>> +/*
>> + * Nothing included right now. Code will be added in follow-up
>> + * patches.
>> + */
>> diff --git a/configs/octeon_ebb7304_defconfig b/configs/octeon_ebb7304_defconfig
>> new file mode 100644
>> index 0000000000..e4f3526ff6
>> --- /dev/null
>> +++ b/configs/octeon_ebb7304_defconfig
>> @@ -0,0 +1,34 @@
>> +CONFIG_MIPS=y
>> +CONFIG_SYS_TEXT_BASE=0xffffffff80000000
>> +CONFIG_SYS_MALLOC_F_LEN=0x4000
>> +CONFIG_ENV_SIZE=0x2000
>> +CONFIG_ENV_SECT_SIZE=0x10000
>> +CONFIG_NR_DRAM_BANKS=2
>> +CONFIG_DEBUG_UART_BASE=0x8001180000000800
>> +CONFIG_DEBUG_UART_CLOCK=1200000000
>> +CONFIG_ARCH_OCTEON=y
>> +CONFIG_DEBUG_UART=y
>> +CONFIG_SYS_CONSOLE_INFO_QUIET=y
>> +CONFIG_HUSH_PARSER=y
>> +CONFIG_CMD_MTD=y
>> +CONFIG_CMD_PCI=y
>> +CONFIG_CMD_DHCP=y
>> +CONFIG_CMD_PING=y
>> +CONFIG_CMD_TIME=y
>> +CONFIG_ENV_IS_IN_FLASH=y
>> +CONFIG_ENV_ADDR=0x1FBFE000
>> +CONFIG_MTD=y
>> +CONFIG_DM_MTD=y
>> +CONFIG_MTD_NOR_FLASH=y
>> +CONFIG_FLASH_CFI_DRIVER=y
>> +CONFIG_CFI_FLASH=y
>> +CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
>> +CONFIG_FLASH_CFI_MTD=y
>> +CONFIG_SYS_FLASH_CFI=y
>> +CONFIG_DM_ETH=y
>> +CONFIG_DEBUG_UART_SHIFT=3
>> +CONFIG_DEBUG_UART_ANNOUNCE=y
>> +CONFIG_SYS_NS16550=y
>> +CONFIG_SYSRESET=y
>> +CONFIG_SYSRESET_OCTEON=y
>> +CONFIG_HEXDUMP=y
>> diff --git a/include/configs/octeon_common.h b/include/configs/octeon_common.h
>> new file mode 100644
>> index 0000000000..5d1e74cb76
>> --- /dev/null
>> +++ b/include/configs/octeon_common.h
>> @@ -0,0 +1,25 @@
>> +/* SPDX-License-Identifier: GPL-2.0+ */
>> +/*
>> + * Copyright (C) 2019-2020
>> + * Marvell <www.marvell.com>
>> + */
>> +
>> +#ifndef __OCTEON_COMMON_H__
>> +#define __OCTEON_COMMON_H__
>> +
>> +/* No DDR init yet -> run in L2 cache with limited resources */
>> +#define CONFIG_SYS_MALLOC_LEN (256 << 10)
>> +#define CONFIG_SYS_SDRAM_BASE 0xffffffff80000000
>> +#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE
>> +
>> +#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + (1 << 20))
>> +
>> +/*
>> + * Set a max image size for the image (incl. DTB), so that a growing
>> + * image will not exceed this maximum size
>> + */
>> +#define CONFIG_BOARD_SIZE_LIMIT 0x100000 /* 1MiB */
>> +
>> +#define CONFIG_SYS_INIT_SP_OFFSET 0x180000
>> +
>> +#endif /* __OCTEON_COMMON_H__ */
>> diff --git a/include/configs/octeon_ebb7304.h b/include/configs/octeon_ebb7304.h
>> new file mode 100644
>> index 0000000000..04fe4dfe22
>> --- /dev/null
>> +++ b/include/configs/octeon_ebb7304.h
>> @@ -0,0 +1,20 @@
>> +/* SPDX-License-Identifier: GPL-2.0+ */
>> +/*
>> + * Copyright (C) 2019-2020
>> + * Marvell <www.marvell.com>
>> + */
>> +
>> +#ifndef __CONFIG_H__
>> +#define __CONFIG_H__
>> +
>> +#include "octeon_common.h"
>> +
>> +/*
>> + * CFI flash
>> + */
>> +#define CONFIG_SYS_MAX_FLASH_BANKS 1
>> +#define CONFIG_SYS_MAX_FLASH_SECT 256
>> +#define CONFIG_SYS_FLASH_CFI_WIDTH FLASH_CFI_8BIT
>> +#define CONFIG_SYS_FLASH_EMPTY_INFO /* flinfo indicates empty blocks */
>> +
>> +#endif /* __CONFIG_H__ */
>>
>
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de
More information about the U-Boot
mailing list