17 Jan, 2016

5 commits


15 Jan, 2016

12 commits


14 Jan, 2016

23 commits

  • Add myself as custodian for the Marvell git repository. Additionally,
    add the mach-mvebu directory to the list of files / directories. And
    add Armada XP & Armada 38x to the title (not only kirkwood).

    Signed-off-by: Stefan Roese
    Acked-by: Tom Rini
    Acked-by: Prafulla Wadaskar
    Acked-by: Luka Perkov

    Stefan Roese
     
  • Synology keeps per item configuration in a dedicated 'partition' in SPI
    flash, namely the one named 'vendor' in DTS file. It contains the two
    NICs MAC addresses as well as the item's serial number. I didn't find a
    way to have this information extracted automatically, therefore
    implemented 'syno populate_env' command which extracts the three values
    and puts them into environment. To make things permanent though, one has
    to 'saveenv'.

    Another command is 'syno clk_gate', which allows to change the clock
    gating which is done in DS414 board file.

    Signed-off-by: Phil Sutter
    Acked-by: Stefan Roese
    Reviewed-by: Tom Rini

    Phil Sutter
     
  • 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
    Acked-by: Stefan Roese
    Reviewed-by: Tom Rini

    Phil Sutter
     
  • This adds basic support for Marvell's MV78230 SoC which belongs to the
    Armada XP series.

    Signed-off-by: Phil Sutter
    Acked-by: Stefan Roese
    Reviewed-by: Tom Rini

    Phil Sutter
     
  • This should make it clear that this symbol is meant to be defined by
    board headers.

    Signed-off-by: Phil Sutter
    Acked-by: Stefan Roese
    Reviewed-by: Tom Rini

    Phil Sutter
     
  • This patch adds intermediate kconfig symbols which select their SoC
    family. Boards then select them instead of the family symbol directly.

    Signed-off-by: Phil Sutter
    Acked-by: Stefan Roese
    Reviewed-by: Tom Rini

    Phil Sutter
     
  • Instead of calling board_sat_r_get() only for those boards providing the
    satr11 value via I2C, call it for all boards and return static values
    for those not using I2C.

    In addition to that, make this a weak function to allow for board code
    to override it.

    Signed-off-by: Phil Sutter
    Acked-by: Stefan Roese
    Reviewed-by: Tom Rini

    Phil Sutter
     
  • Armada XP has support for X4 lanes, boards specify this in their
    serdes_cfg. During PEX init in high_speed_env_lib.c, the configuration
    is stored in GEN_PURP_RES_2_REG.

    When enumerating PEX, subsequent interfaces of an X4 lane must be
    skipped. Otherwise the enumeration hangs up the board.

    The way this is implemented here is not exactly beautiful, but it mimics
    how Marvell's BSP does it. Alternatively we could get the information
    using board_serdes_cfg_get(), but that won't lead to clean code, either.

    Signed-off-by: Phil Sutter
    Acked-by: Stefan Roese
    Reviewed-by: Tom Rini

    Phil Sutter
     
  • If MV_DEBUG_WL is defined, DEBUG_WL_S and DEBUG_WL_D macros are missing.
    In addition to that, get rid of debug output printing non-existent
    counter variable.

    Signed-off-by: Phil Sutter
    Acked-by: Stefan Roese
    Reviewed-by: Tom Rini

    Phil Sutter
     
  • * There is no boards.cfg anymore, so drop (1).
    * Creating flash.c and u-boot.lds seems not mandatory as well.
    * Adjusting the enumerators for the above implicitly fixed for
    double items numbered (3).

    Signed-off-by: Phil Sutter
    Acked-by: Stefan Roese
    Reviewed-by: Tom Rini

    Phil Sutter
     
  • The debug printing references bar_res, which exists only if
    CONFIG_PCI_ENUM_ONLY is not defined. Therefore move it into the ifdef'd
    area.

    Signed-off-by: Phil Sutter
    Acked-by: Stefan Roese
    Reviewed-by: Tom Rini

    Phil Sutter
     
  • This patch adds runtime detection of the Marvell UART boot-mode (xmodem
    protocol). If this boot-mode is detected, SPL will return to the
    BootROM to continue the UART booting.

    With this patch its now possible, to generate a U-Boot image that
    can be booted either from the strapped boot-device (e.g. SPI NOR, MMC,
    etc) or via the xmodem protocol from the UART. In the UART case,
    the kwboot tool will dynamically insert the UART boot-device type
    into the image. And also patch the load address in the header, so
    that the mkimage header will be skipped (as its not expected by the
    Marvell BootROM).

    This simplifies the development for Armada XP / 38x based boards.
    As no special images need to be generated by selecting the
    MVEBU_BOOTROM_UARTBOOT Kconfig option.

    Since the Kconfig option MVEBU_BOOTROM_UARTBOOT is not needed any
    more, its now completely removed.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov
    Cc: Dirk Eibach
    Cc: Phil Sutter
    Cc: Kevin Smith

    Stefan Roese
     
  • This patch adds runtime boot-device detection to SPL U-Boot.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov
    Cc: Dirk Eibach
    Cc: Phil Sutter
    Cc: Kevin Smith

    Stefan Roese
     
  • As these structs are local only and const, declare them accordingly.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov
    Cc: Dirk Eibach
    Cc: Phil Sutter
    Cc: Kevin Smith

    Stefan Roese
     
  • This is preparation for the runtime bootmode detection in spl.c.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov
    Cc: Dirk Eibach
    Cc: Phil Sutter
    Cc: Kevin Smith

    Stefan Roese
     
  • This Makefile was not used since quite some time. I only missed to
    remove it in the move to mach-mvebu. So lets remove it now so
    that the mvebu-common directory is really removed completely.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov

    Stefan Roese
     
  • Until now, the SoC selection for the ARCH_MVEBU platforms has been done
    in the config header. Using CONFIG_ARMADA_XP in a non-clear way. As
    it needed to get selected for AXP and A38x based boards. This patch
    now changes this to move the SoC selection to Kconfig. And also
    uses CONFIG_ARCH_MVEBU as a common define for both AXP and A38x.
    This makes things a bit clearer - especially for new board additions.

    Additionally the defines CONFIG_SYS_MVEBU_DDR_AXP and
    CONFIG_SYS_MVEBU_DDR_A38X are replaced with the already available
    CONFIG_ARMADA_38X and CONFIG_ARMADA_XP.

    And CONFIG_DDR3 is removed, as its not referenced anywhere.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov

    Stefan Roese
     
  • Merging all the board specific Kconfig options into the main Kconfig file
    for mach-mvebu makes things easier to maintain.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov

    Stefan Roese
     
  • With this patch, the CPU and the DDR frequencies will get printed in the
    U-Boot startup messages. Resulting in such a log:

    U-Boot 2016.01-rc2-00188-gb8eeaec-dirty (Dec 21 2015 - 12:32:35 +0100)

    SoC: MV78460-B0 at 1600 MHz
    I2C: ready
    DRAM: 4 GiB (800 MHz, ECC not enabled)
    ...

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov

    Stefan Roese
     
  • Change some of the PEX configuration output lines from always output to
    only ouput upon specific debug enabling.

    This changes the SPL output from:

    U-Boot SPL 2016.01-rc2-00037-g9353a7f (Dec 10 2015 - 10:27:42)
    High speed PHY - Version: 2.1.5 (COM-PHY-V20)
    Update Device ID PEX0782611ab
    Update Device ID PEX1782611ab
    Update Device ID PEX2782611ab
    Update Device ID PEX3782611ab
    Update Device ID PEX8782611ab
    Update PEX Device ID 0x78260
    High speed PHY - Ended Successfully
    DDR3 Training Sequence - Ver 5.7.4
    DDR3 Training Sequence - Ended Successfully

    to:

    U-Boot SPL 2016.01-rc2-00037-g9353a7f-dirty (Dec 10 2015 - 10:32:04)
    High speed PHY - Version: 2.1.5 (COM-PHY-V20)
    High speed PHY - Ended Successfully
    DDR3 Training Sequence - Ver 5.7.4
    DDR3 Training Sequence - Ended Successfully

    Resulting in a little faster bootup time.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov

    Stefan Roese
     
  • This is not needed any more since the switch to DM / DTS network
    initialization on MVEBU. Lets remove it, as it otherwise leads
    to compilation warning when CONFIG_NET is not enabled.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov

    Stefan Roese
     
  • Currently, ECC support is enabled for all Armada XP boards. So the
    DDR3 driver tries to configure the controller with ECC support, even
    on boards without ECC. This patch makes this ECC optional which now
    can be configured on a board-per-board basis.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov
    Cc: Phil Sutter

    Stefan Roese
     
  • This patch adds support for the dual core Armada XP variant, the
    MV78260. It has some minor differences to the 4-core MV78460,
    e.g. only 12 serdes lanes.

    Signed-off-by: Stefan Roese
    Cc: Luka Perkov
    Cc: Phil Sutter

    Stefan Roese