u-boot/board
Phil Sutter aefb8f4c32 mvebu: Support Synology DS414
This adds support for the MV78230 based DS414 NAS by Synology. The
relevant bits have been extracted from the 'synogpl-5004-armadaxp'
package Synology kindly published, garnished with a fair amount of
trial-and-error.

Sadly, support is far from perfect. The major parts I have failed in
are SATA and XHCI support. Details about these and some other things
follow:

Device Tree
-----------

The device tree file armada-xp-synology-ds414.dts has been copied from
Linux and enhanced by recent U-Boot specific changes to
armada-xp-gp.dts.

SATA Support
------------

There is a Marvell 88SX7042 controller attached to PCIe which is
supported by Linux's sata_mv driver but sadly not U-Boot's sata_mv.
I'm not sure if extending the latter to support PCI devices is worth the
effort at all. Porting sata_mv from Linux exceeded my brain's
capacities. :(

XHCI Support
------------

There is an EtronTech EJ168A XHCI controller attached to PCIe which
drives the two rear USB3 ports. After a bit of playing around I managed
to get it recognized by xhci-pci, but never was able to access any
devices attached to it. Enabling it in ds414 board config shows that it
does not respond to commands for whatever reason. The (somewhat) bright
side to it is that it is not even supported in Synology's customized
U-Boot, but that also means nowhere to steal the relevant bits from.

EHCI Support
------------

This seems functional after issuing 'usb start'. At least it detects USB
storage devices, and IIRC reading from them was OK. OTOH Linux fails to
register the controller if 'usb start' wasn't given before in U-Boot.

According to Synology sources, this board seems to support USB device
(gadget?) mode. Though I didn't play around with it.

PCIe Support
------------

This is fine, but trying to gate the clocks of unused lanes will hang
PCI enum. In addition to that, pci_mvebu seems not to support DM_PCI.

DDR3 Training
-------------

Marvell/Synology uses eight PUPs instead of four. Does not look like
this is meant to be customized in mainline U-Boot at all. OTOH I have
no idea what a "PUP" actually is.

PEX Init
--------

Synology uses different values than mainline U-Boot with this patch:
pex_max_unit_get returns 2, pex_max_if_get returns 7 and
max_serdes_lines is set to 7. Not changing this seems to not have an
impact, although I'm not entirely sure it does not cause issues I am not
aware of.

Static Environment
------------------

This allows to boot stock Synology firmware at least. In order to be a
little more flexible when it comes to booting custom kernels, do not
only load zImage partition, but also rd.gz into memory. This way it is
possible to use about 7MB for kernel with piggyback initramfs.

Signed-off-by: Phil Sutter <phil@nwl.cc>
Acked-by: Stefan Roese <sr@denx.de>
Reviewed-by: Tom Rini <trini@konsulko.com>
2016-01-14 14:08:59 +01:00
..
8dtech/eco5pk omap3/am33xx: mux: fix several checkpatch issues 2014-10-23 11:53:02 -04:00
a3m071 fdt: Allow ft_board_setup() to report failure 2014-11-21 04:43:15 +01:00
a4m072 fdt: Allow ft_board_setup() to report failure 2014-11-21 04:43:15 +01:00
abilis/tb100 kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
alphaproject/ap_sh4a_4a net: cosmetic: Name ethaddr variables consistently 2015-04-18 11:11:32 -06:00
altera arm: socfpga: Fix i2c mux on cyclone5-socdk board 2015-12-23 16:11:49 +01:00
amcc Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
AndesTech/adp-ag101p NDS32: Generic Board Support and Unsupport 2015-08-28 11:46:35 -04:00
Arcturus/ucp1020 Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
aristainetos arm, imx6, aristainetos2: set gpr register after reset 2015-10-30 15:08:55 +01:00
armadeus/apf27 remove unnecessary version.h includes 2015-03-24 10:50:50 -04:00
armltd vexpress64: use 2nd DRAM bank only on juno 2015-11-21 21:50:28 -05:00
astro/mcf5373l Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
atmark-techno/armadillo-800eva Various Makefiles: Add SPDX-License-Identifier tags 2015-11-10 09:19:52 -05:00
atmel arm: atmel: Add SAMA5D2 Xplained board 2015-11-30 22:27:53 +01:00
avionic-design ARM: tegra: move NVIDIA common files to arch/arm/mach-tegra 2015-05-13 09:46:19 -07:00
avnet kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
bachmann/ot1200 ot1200: Remove empty reset_cpu() 2015-11-12 17:26:33 +01:00
barco mx6: remove SYS_SOC from board Kconfig 2015-09-13 10:37:29 +02:00
Barix/ipam390 kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
bct-brettl2 net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
bf506f-ezkit kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
bf518f-ezbrd net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
bf525-ucr2 kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
bf526-ezbrd net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
bf527-ad7160-eval kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
bf527-ezkit video: Drop DEV_EXT_VIDEO flag 2015-11-05 08:24:42 +01:00
bf527-sdp kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
bf533-ezkit kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
bf533-stamp video: Drop DEV_EXT_VIDEO flag 2015-11-05 08:24:42 +01:00
bf537-minotaur net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
bf537-pnav net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
bf537-srv1 net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
bf537-stamp net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
bf538f-ezkit kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
bf548-ezkit video: Drop DEV_EXT_VIDEO flag 2015-11-05 08:24:42 +01:00
bf561-acvilon kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
bf561-ezkit kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
bf609-ezkit Kconfig: Move CONFIG_DESIGNWARE_ETH to Kconfig 2015-04-18 11:11:36 -06:00
birdland/bav335x Various Makefiles: Add SPDX-License-Identifier tags 2015-11-10 09:19:52 -05:00
blackstamp kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
blackvme kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
bluegiga/apx4devkit kconfig: arm: introduce symbol for ARM CPUs 2014-10-29 09:02:09 -04:00
bluewater/snapper9260 ARM: at91: move board select menu and common settings 2015-02-21 08:23:51 -05:00
boundary/nitrogen6x nitrogen6x: Fix the error handling in board_eth_init() 2015-09-13 11:05:15 +02:00
br4 kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
broadcom usb: s3c-otg: Rename usb/s3c_udc.h to usb/dwc2_udc.h 2015-12-17 21:54:41 +01:00
buffalo/lsxl net: Fix a warning added by 76ec988 2015-05-28 08:18:25 -04:00
BuR board/BuR/kwb: use bootvx(...) (with bootline feature) instead go(...) 2015-11-12 13:17:27 -05:00
BuS/eb_cpu5282 arm: Remove vl_ma2sc board 2015-09-11 17:12:57 -04:00
calao/usb_a9263 ARM: at91: remove non-generic boards 2015-05-13 13:01:25 +02:00
canmb MAINTAINERS: comment out blank M: field 2014-09-24 18:30:28 -04:00
CarMediaLab/flea3 kconfig: arm: introduce symbol for ARM CPUs 2014-10-29 09:02:09 -04:00
cirrus/edb93xx kconfig: arm: introduce symbol for ARM CPUs 2014-10-29 09:02:09 -04:00
cloudengines/pogo_e02 arm: kirkwood: Change naming of dram functions from km_foo() to mvebu_foo() 2014-10-23 09:59:21 -04:00
cm5200 cm5200: fix FAT function prototypes 2015-08-14 11:05:28 -04:00
cm-bf527 net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
cm-bf533 MAINTAINERS: comment out invalid maintainers 2014-09-24 18:30:28 -04:00
cm-bf537e net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
cm-bf537u net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
cm-bf548 video: Drop DEV_EXT_VIDEO flag 2015-11-05 08:24:42 +01:00
cm-bf561 MAINTAINERS: comment out invalid maintainers 2014-09-24 18:30:28 -04:00
cobra5272 Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
compal/paz00 Various Makefiles: Add SPDX-License-Identifier tags 2015-11-10 09:19:52 -05:00
compulab dm: tegra: net: Convert tegra boards to driver model for Ethernet 2016-01-12 10:19:09 -07:00
congatec/cgtqmx6eval cgtqmx6eval: README: Fix parameter of 'sf write' command 2016-01-10 10:51:43 +01:00
coreboot x86: qemu: Create separate i440fx and q35 device trees 2015-06-04 03:03:18 -06:00
corscience/tricorder tricorder: rewrite tricordereeprom command 2015-11-21 21:50:20 -05:00
creative/xfi3 xfi3: correct function name 2015-11-12 17:38:08 +01:00
d-link/dns325 Change e-mail address of Stefan Herbrechtsmeier 2015-01-12 09:38:47 -05:00
dave/common powerpc: ppc4xx: remove PPChameleonEVB, CATcenter boards 2015-01-23 16:53:36 -05:00
davedenx/aria arm: Remove qong board 2015-09-11 14:59:16 -04:00
davinci arm: Remove da830evm board 2015-09-28 10:48:23 -04:00
dbau1x00 arch: Make board selection choices optional 2015-05-12 18:10:02 -04:00
denx arm: socfpga: Drop the board boilerplate 2015-12-20 03:36:51 +01:00
dnp5370 net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
ebv/socrates arm: socfpga: Drop the board boilerplate 2015-12-20 03:36:51 +01:00
efi x86: Add EFI board code 2015-08-05 08:44:06 -06:00
egnite/ethernut5 net: Remove the bd* parameter from net stack functions 2015-04-18 11:11:11 -06:00
embest/mx6boards mx6: remove SYS_SOC from board Kconfig 2015-09-13 10:37:29 +02:00
emulation x86: qemu: Convert to use driver model eth 2015-11-13 06:46:24 -08:00
esd Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
espt remove unnecessary version.h includes 2015-03-24 10:50:50 -04:00
evb_rk3036/evb_rk3036 rockchip: Add basic support for evb-rk3036 board 2015-12-01 08:07:22 -07:00
firefly/firefly-rk3288 rockchip: Add basic support for firefly-rk3288 2015-09-02 21:28:24 -06:00
freescale MAINTAINERS/mailmap: Update my email address 2016-01-11 11:22:43 -05:00
gaisler sparc: move CONFIG_SYS_TEXT_BASE to Kconfig 2014-11-04 15:01:46 -05:00
gateworks/gw_ventana arm: imx6: novena, gw_ventana: Fix use of pfuze100 bit definitions 2015-12-01 16:09:51 +01:00
gdsys Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
google x86: Remove HAVE_ACPI_RESUME 2015-12-09 17:44:56 +08:00
gumstix pepper: Implement Board Detection mechanism 2015-06-08 17:32:40 -04:00
h2200 h2200: Fix build error 2015-09-07 13:41:04 +02:00
highbank ARM: highbank: remove DRAM bank setup 2015-08-12 12:08:19 -04:00
hisilicon/hikey ARM: hikey: hi6220: Migrate over to DM_SERIAL and use UART3 by default. 2015-09-28 10:48:22 -04:00
htkw/mcx mcx: update maintainer and convert to generic board 2015-04-09 16:48:03 -04:00
ibf-dsp561 kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
ids/ids8313 fdt: Allow ft_board_setup() to report failure 2014-11-21 04:43:15 +01:00
ifm net: cosmetic: Name ethaddr variables consistently 2015-04-18 11:11:32 -06:00
imgtec/malta malta: delay after reset 2015-01-29 13:11:02 +01:00
imx31_phycore kconfig: arm: introduce symbol for ARM CPUs 2014-10-29 09:02:09 -04:00
in-circuit/grasshopper avr32: convert to dram_init() 2015-02-17 22:52:41 +01:00
inka4x0 Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
intel x86: Enable PCIe controller on quark/galileo 2015-09-09 07:48:03 -06:00
intercontrol/digsy_mtc Various Makefiles: Add SPDX-License-Identifier tags 2015-11-10 09:19:52 -05:00
inversepath/usbarmory ARM: mx5: add support for USB armory board 2015-04-09 09:14:12 +02:00
iomega/iconnect cosmetic: kirkwood: style fixes in kwbimage.cfg files 2015-01-25 23:56:09 +01:00
ip04 net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
ipek01 powerpc: ipek01: convert to generic board 2015-08-14 16:27:10 -04:00
isee ns16550: unify serial_omap 2015-11-21 21:50:17 -05:00
jupiter fdt: Allow ft_board_setup() to report failure 2014-11-21 04:43:15 +01:00
keymile km/powerpc: fix ft_board_setup prototype for km82xx & km83xx 2015-11-18 15:28:58 -05:00
kmc/kzm9g kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
kosagi/novena arm: imx6: novena, gw_ventana: Fix use of pfuze100 bit definitions 2015-12-01 16:09:51 +01:00
kylin/kylin_rk3036 rockchip: Add basic support for kylin board 2015-12-13 20:51:50 -07:00
LaCie Revert "arm: Remove d2net_v2 defconfig file" 2015-10-19 11:26:49 -04:00
lge/sniper ns16550: unify serial_omap 2015-11-21 21:50:17 -05:00
liebherr/lwmon5 PPC4xx: Create "liebherr" vendor directory 2015-11-30 12:50:29 +01:00
logicpd ns16550: unify serial_omap 2015-11-21 21:50:17 -05:00
Marvell arm: mvebu: Consolidate board Kconfig options into one file 2016-01-14 14:08:59 +01:00
maxbcm arm: mvebu: Consolidate board Kconfig options into one file 2016-01-14 14:08:59 +01:00
micronas/vct arch: Make board selection choices optional 2015-05-12 18:10:02 -04:00
mini-box/picosam9g45 arm: at91: add support for mini-box picosam9g45 board 2015-08-21 15:47:04 +02:00
mosaixtech/icon kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
motionpro fdt: Allow ft_board_setup() to report failure 2014-11-21 04:43:15 +01:00
mpc8308_p1m fdt: Allow ft_board_setup() to report failure 2014-11-21 04:43:15 +01:00
mpl Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
mpr2 sh: consolidate CONFIG_SYS_CPU defines 2014-11-13 08:48:48 +09:00
ms7720se sh: consolidate CONFIG_SYS_CPU defines 2014-11-13 08:48:48 +09:00
ms7722se remove unnecessary version.h includes 2015-03-24 10:50:50 -04:00
ms7750se remove unnecessary version.h includes 2015-03-24 10:50:50 -04:00
munices fdt: Allow ft_board_setup() to report failure 2014-11-21 04:43:15 +01:00
nokia/rx51 omap-common: Common function to display die id, replacing omap3-specific version 2015-10-22 14:18:30 -04:00
nvidia dm: tegra: net: Convert tegra boards to driver model for Ethernet 2016-01-12 10:19:09 -07:00
olimex/mx23_olinuxino arm: mxs: olinuxino: move DRAM config tuning to SPL 2014-12-19 15:32:14 +01:00
omicron/calimain kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
openrisc/openrisc-generic kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
overo ns16550: unify serial_omap 2015-11-21 21:50:17 -05:00
pandora omap-common: Common function to display die id, replacing omap3-specific version 2015-10-22 14:18:30 -04:00
pb1x00 MIPS: kconfig: globally define CONFIG_SYS_CPU for MIPS 2014-11-01 18:18:04 +01:00
pdm360ng fdt: Allow ft_board_setup() to report failure 2014-11-21 04:43:15 +01:00
phytec vf610: add support for Phytec PCM052 2015-10-02 10:42:59 +02:00
ppcag/bg0900 kconfig: arm: introduce symbol for ARM CPUs 2014-10-29 09:02:09 -04:00
pr1 kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
qemu-mips MIPS: kconfig: merge targets qemu_mips and qemu_mips64 2014-11-01 18:18:04 +01:00
quipos/cairo ns16550: unify serial_omap 2015-11-21 21:50:17 -05:00
raidsonic/ib62x0 cosmetic: kirkwood: style fixes in kwbimage.cfg files 2015-01-25 23:56:09 +01:00
raspberrypi rpi: add support for Raspberry Pi Zero 2015-12-05 18:22:36 -05:00
renesas Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
ronetix net: Remove the bd* parameter from net stack functions 2015-04-18 11:11:11 -06:00
samsung usb: s3c-otg: Rename usb/s3c_udc.h to usb/dwc2_udc.h 2015-12-17 21:54:41 +01:00
sandbox sandbox: add a sandbox timer and basic test 2015-11-19 20:13:41 -07:00
sandisk/sansa_fuze_plus kconfig: arm: introduce symbol for ARM CPUs 2014-10-29 09:02:09 -04:00
sbc8349 fdt: Allow ft_board_setup() to report failure 2014-11-21 04:43:15 +01:00
sbc8548 fdt: Allow ft_board_setup() to report failure 2014-11-21 04:43:15 +01:00
sbc8641d sbc8641d: increase monitor size from 256k to 384k 2015-10-19 17:06:19 -04:00
schulercontrol/sc_sps_1 kconfig: arm: introduce symbol for ARM CPUs 2014-10-29 09:02:09 -04:00
Seagate Add support for Seagate BlackArmor NAS220 2015-01-14 11:37:39 -05:00
seco Various Makefiles: Add SPDX-License-Identifier tags 2015-11-10 09:19:52 -05:00
shmin remove unnecessary version.h includes 2015-03-24 10:50:50 -04:00
siemens siemens,am33x: remove ddr3 delay workaround 2015-12-12 15:56:10 -05:00
silica/pengwyn pengwyn: nand and ethernet fixes 2015-11-12 18:13:19 -05:00
socrates nand: Remove CONFIG_MTD_NAND_VERIFY_WRITE 2015-03-30 23:24:39 -05:00
solidrun arm: mvebu: Consolidate board Kconfig options into one file 2016-01-14 14:08:59 +01:00
spear net: designware: Zap CONFIG_DW_AUTONEG 2015-12-22 04:42:27 +01:00
sr1500 arm: socfpga: Drop the board boilerplate 2015-12-20 03:36:51 +01:00
st stm32: Convert serial driver to DM 2015-12-12 15:56:08 -05:00
sunxi sun5i: Add defconfig and dts file for the Empire Electronix D709 tablet 2015-12-21 20:37:15 +01:00
Synology/ds414 mvebu: Support Synology DS414 2016-01-14 14:08:59 +01:00
synopsys board: axs10x switch serial port and Ethernet to driver model 2015-11-18 00:39:22 +03:00
sysam/amcore m68k: add architecture-specific u-boot.lds 2015-04-23 14:56:07 -04:00
syteco/zmx25 ARM: remove jadecpu board support 2015-02-24 17:06:51 -05:00
t3corp kconfig: remove redundant "string" type in arch and board Kconfigs 2014-09-13 16:43:55 -04:00
tbs/tbs2910 tbs2910: remove SYS_SOC from board specific Kconfig 2015-09-02 15:34:12 +02:00
tcl/sl50 board: Add Toby-Churchill SL50 board support. 2015-09-11 17:15:27 -04:00
tcm-bf518 net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
tcm-bf537 net: Remove all calls to net_random_ethaddr() 2015-05-20 11:07:27 -05:00
technexion omap-common: Common function to display die id, replacing omap3-specific version 2015-10-22 14:18:30 -04:00
technologic/ts4800 ARM: ts4800: add ethernet support 2015-09-02 15:26:13 +02:00
teejet/mt_ventoux omap-common: Common function to display die id, replacing omap3-specific version 2015-10-22 14:18:30 -04:00
terasic arm: socfpga: Drop the board boilerplate 2015-12-20 03:36:51 +01:00
ti ARM: dra7x/am57x: Remove pin input/output config from WAKEUP pins 2015-11-21 21:50:19 -05:00
timll ns16550: unify serial_omap 2015-11-21 21:50:17 -05:00
toradex dm: tegra: net: Convert tegra boards to driver model for Ethernet 2016-01-12 10:19:09 -07:00
tqc Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
udoo MAINTAINERS/mailmap: Update my email address 2016-01-11 11:22:43 -05:00
v38b MAINTAINERS: comment out blank M: field 2014-09-24 18:30:28 -04:00
varisys Various Makefiles: Add SPDX-License-Identifier tags 2015-11-10 09:19:52 -05:00
ve8313 fdt: Allow ft_board_setup() to report failure 2014-11-21 04:43:15 +01:00
vscom/baltos usb: musb-new: CONFIG_MUSB prefix replacement with CONFIG_USB_MUSB 2015-08-05 17:20:34 +02:00
wandboard MAINTAINERS/mailmap: Update my email address 2016-01-11 11:22:43 -05:00
warp mx6: remove SYS_SOC from board Kconfig 2015-09-13 10:37:29 +02:00
woodburn imx: woodburn: Remove reference to gdata 2015-01-20 10:15:33 -05:00
work-microwave/work_92105 lpc32xx: add support for board work_92105 2015-04-10 14:23:39 +02:00
xes Move console definitions into a new console.h file 2015-11-19 20:27:50 -07:00
xilinx microblaze: Do not handle watchdog and gpio in SPL 2015-12-18 13:15:58 +01:00
zyxel/nsa310s arm: kirkwood: add ZyXEL NSA310S device 2015-11-29 22:16:14 +01:00