11 Dec, 2017

1 commit

  • DW SDIO controller has external CIU clock divider controlled via
    register in the SDIO IP. Due to its unexpected default value
    (we expected it to divide by 1 but in reality it divides by 8)
    SDIO IP uses wrong CIU clock (it should be 100000000Hz but actual
    is 12500000Hz) and works unstable (see STAR 9001204800).

    So increase SDIO CIU frequency from actual 12500000Hz to 50000000Hz
    by switching from the default divisor value (div-by-8) to the
    minimum possible value of the divisor (div-by-2) in HSDK platform
    code.

    Signed-off-by: Eugeniy Paltsev
    Signed-off-by: Alexey Brodkin

    Eugeniy Paltsev
     

30 Jun, 2017

1 commit

  • ARC HS Development Kit board is a new low-cost
    development platform sporting ARC HS38 in real silicon
    with nice set of features such as:
    * Quad-core ARC HS38 with 512 kB L2 cache and running @1GHz
    * 4Gb of DDR (we use only lowest 1Gb out of it now)
    * Lots of DesigWare peripherals
    * Different connectivity modules:
    - Synopsys HAPS HT3
    - Arduino-compatible connector
    - MikroBUS

    This initial commit supports the following peripherals:
    * UART (DW 8250)
    * Ethernet (DW GMAC)
    * SD/MMC (DW Mobile Storage)
    * USB 1.1 & 2.0

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

01 Apr, 2017

2 commits

  • In axs103 v1.1 procedure to kick-start slave cores has changed quite a bit
    compared t previous implementation.

    In particular:
    * We used to have a generic START bit for all cores selected by CORE_SEL
    mask. But now we don't touch CORE_SEL at all because we have a dedicated
    START bit for each core:
    bit 0: Core 0 (master)
    bit 1: Core 1 (slave)
    * Now there's no need to select "manual" mode of core start

    Additional challenge for us is how to tell which axs103 firmware we're
    dealing with. For now we'll rely on ARC core version which was bumped
    from 2.1c to 3.0.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     
  • * Rely on default pulse polarity value
    * Don't mess with "multicore" value as it doesn't affect execution

    In essence we now do a bare minimal stuff:
    1) Select HS38x2_1 with CORE_SEL=1 bits
    2) Select "manual" core start (via CREG) with START_MODE=0
    3) Generate cpu_start pulse with START=1

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

24 Mar, 2017

1 commit

  • We want to use the same device tree blobs in both Linux and U-Boot for
    ARC boards.

    Earlier device tree sources in U-Boot were very simplified and hadn't been
    updated for quite a long period of time.

    So this commit is the first step on the road to unified device tree blobs.

    First of all we re-organize device tree sources for AXS10X boards.
    As AXS101 and AXS103 boards consist of AXS10X motherboard and AXC001 and
    AXC003 cpu tiles respectively we add corresponding device tree source
    files: axs10x_mb.dtsi for motherboard, axc001.dtsi and axc003.dtsi for
    cpu tiles and axs101.dts and axs103.dts to represent actual boards.

    Also we delete axs10x.dts as it is no longer used.

    One more important change - we add timer device to ARC skeleton device
    tree sources as both ARC700 and ARCHS cores contain such timer.
    We add core_clk nodes to abilis_tb100, nsim, axc001 and axc003 device tree
    sources as it is referenced via phandle from timer node in common
    skeleton.dtsi file.

    Signed-off-by: Vlad Zakharov
    Reviewed-by: Simon Glass

    Vlad Zakharov
     

05 Aug, 2016

2 commits

  • As of now we have 2 flavors of ARC SDP boards:
    1) AXS101 - with ARC770 in ASIC
    2) AXS103 - with ARC HS38 in FPGA

    Both options share exactly the same base-board and only differ with
    CPU-tiles in use. That means all peripherals are the same (they are
    implemented in FPGA on the base-board) and so generic board could be
    used for both.

    While at it:
    * Recreated defconfigs with savedefconfig
    * In include/configs/axs10x.h numerical sizes replaced with
    defines from linux/sizes.h for better readability.

    Signed-off-by: Alexey Brodkin
    Reviewed-by: Tom Rini

    Alexey Brodkin
     
  • ARCangel was one of the main development boards back in the day but
    now it's gone and replaced by other boards like ARC SDP.

    But we also used to have simulation platform very similar to ARCangel4
    in terms of CPU settings as well as basic IO like UART. Even though
    ARCangel4 is long gone now we have a replacement for simulation which is
    a plain or stand-alone nSIM and Free nSIM.

    Note Free nSIM is available for download here:
    https://www.synopsys.com/cgi-bin/dwarcnsim/req1.cgi

    And while at it:
    * Finally switch hex numerical values in nsim.h to defines from
    include/linux/sizes.h
    * Add defconfigs with ARC HS38 cores
    * Recreated all defconfigs with savedefconfig

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

13 Jun, 2016

1 commit

  • Now when we have support of IOC (IO-Coherency block) cahce operations
    on regions are tuned to not be dummy stubs if IOC was found and enabled
    in the core. That makes flush_dcache_range() useless for our purposes
    here. And since we do need to flush modified reset vector to at least L2
    cache (AKA SLC) so other cores will see it via its L1 instruction cache
    we're using always functional flush_dcache_all() here.

    Signed-off-by: Alexey Brodkin
    Cc: Marek Vasut

    Alexey Brodkin
     

18 Nov, 2015

1 commit

  • With this change Synopsys DesignWare SDP board is switched to driver
    model for both serial port (serial_dw) and Ethernet (Designware GMAC).

    This simplifies include/configs/axs101.h and allows for reuse of Linux's
    Device Tree description.

    For simplicity Linux's .dts files are not blindly copied but only very
    few extracts of them are really used (those that are supported in U-Boot
    at the moment).

    Signed-off-by: Alexey Brodkin
    Reviewed-by: Simon Glass
    Cc: Masahiro Yamada

    Alexey Brodkin
     

07 Oct, 2015

1 commit

  • It turned out with some boards (FPGA firmwares?) and cards combos
    current clock settings doesn't work as expected leading to strange
    card freezes or corrupted data being read from the card.

    Especially this was seen with Transcend 2Gb cards shipped as a part of
    ARC SDP:
    ----------------->8---------------
    AXS# mmcinfo
    Device: Synopsys Mobile storage
    Manufacturer ID: 74
    OEM: 4a60
    Name: SDC
    Tran Speed: 50000000
    Rd Block Len: 512
    SD version 3.0
    High Capacity: No
    Capacity: 1.8 GiB
    Bus Width: 4-bit
    Erase Group Size: 512 Bytes
    AXS# fatload mmc 0
    ** Unrecognized filesystem type **
    ----------------->8---------------

    With this change that problem is fixed.
    Note "Tran Speed" above doesn't match clock value set in DW MMC.
    It is max value for card's speed class.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

01 Jul, 2015

2 commits

  • Looks like I forgot to add myself as a maintainer for AXS103 defconfig.
    Fixing this now.

    Signed-off-by: Alexey Brodkin
    Cc: Tom Rini

    Alexey Brodkin
     
  • With new SMP-enabled CPUs with ARC HS38 cores and corresponding support
    in Linux kernel it's required to add basic SMP support in U-Boot.

    Currently we assume the one and only core starts execution after
    power-on. So most of things in U-Boot is handled in UP mode.

    But when U-Boot is used for loading and starting Linux kernel right
    before jumping to kernel's entry point U-Boot:
    [1] Sets all slave cores to jump to the same address [kernel's entry
    point]
    [2] Really starts all slav cores

    In ARC's implemetation of SMP in Linux kernel all cores are supposed to
    run the same start-up code. But only core with ID 0 (master core)
    processes further while others are looping waiting for master core to
    complete some initialization.

    That means it's safe to un-pause slave cores and let them execute kernel
    - they will wait for master anyway.

    Signed-off-by: Alexey Brodkin
    Cc: Vineet Gupta

    Alexey Brodkin
     

10 Apr, 2015

1 commit

  • There're 2 versions of motherboards that could be used in ARC SDP.
    The only important difference for U-Boot is different NAND IC in use:
    [1] v2 board (we used to support up until now) sports MT29F4G08ABADAWP
    while
    [2] v3 board sports MT29F4G16ABADAWP

    They are almost the same except data bus width 8-bit in [1] and 16-bit
    in [2]. And for proper support of 16-bit data bus we have to pass
    NAND_BUSWIDTH_16 option to NAND driver core - which we do now knowing
    board type we're running on.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

03 Apr, 2015

1 commit

  • With the most recent board firmware correct SDIO clock is 50MHz as
    opposed to 25 MHz before.

    Also set max frequency of MMC data exchange equal to SDIO clock -
    because there's no way to transfer data faster than interface clock.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

09 Feb, 2015

1 commit

  • This change allows to keep board description clean and minimalistic.
    This is especially helpful if one board may house different CPUs with
    different features.

    It is applicable to both FPGA-based boards or those that have CPUs
    mounted on interchnagable daughter-boards.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

16 Jan, 2015

1 commit


14 Sep, 2014

1 commit

  • Now the types of CONFIG_SYS_{ARCH, CPU, SOC, VENDOR, BOARD, CONFIG_NAME}
    are specified in arch/Kconfig.

    We can delete the ones in arch and board Kconfig files.

    This commit can be easily reproduced by the following command:

    find . -name Kconfig -a ! -path ./arch/Kconfig | xargs sed -i -e '
    /config[[:space:]]SYS_\(ARCH\|CPU\|SOC\|\VENDOR\|BOARD\|CONFIG_NAME\)/ {
    N
    s/\n[[:space:]]*string//
    }
    '

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

26 Aug, 2014

1 commit


30 Jul, 2014

2 commits

  • We have switched to Kconfig and the boards.cfg file is going to
    be removed. We have to retrieve the board status and maintainers
    information from it.

    The MAINTAINERS format as in Linux Kernel would be nice
    because we can crib the scripts/get_maintainer.pl script.

    After some discussion, we chose to put a MAINTAINERS file under each
    board directory, not the top-level one because we want to collect
    relevant information for a board into a single place.

    TODO:
    Modify get_maintainer.pl to scan multiple MAINTAINERS files.

    Signed-off-by: Masahiro Yamada
    Suggested-by: Tom Rini
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • This commit adds:
    - arch/${ARCH}/Kconfig
    provide a menu to select target boards
    - board/${VENDOR}/${BOARD}/Kconfig or board/${BOARD}/Kconfig
    set CONFIG macros to the appropriate values for each board
    - configs/${TARGET_BOARD}_defconfig
    default setting of each board

    (This commit was automatically generated by a conversion script
    based on boards.cfg)

    In Linux Kernel, defconfig files are located under
    arch/${ARCH}/configs/ directory.
    It works in Linux Kernel since ARCH is always given from the
    command line for cross compile.

    But in U-Boot, ARCH is not given from the command line.
    Which means we cannot know ARCH until the board configuration is done.
    That is why all the "*_defconfig" files should be gathered into a
    single directory ./configs/.

    Signed-off-by: Masahiro Yamada
    Acked-by: Simon Glass

    Masahiro Yamada
     

29 Mar, 2014

1 commit


05 Mar, 2014

1 commit


21 Feb, 2014

1 commit


07 Feb, 2014

2 commits

  • AXS101 is a new generation of devlopment boards from Synopsys that houses
    ASIC with ARC700 and lots of DesignWare peripherals:

    * DW APB UART
    * DW Mobile Storage (MMC/SD)
    * DW I2C
    * DW GMAC

    Signed-off-by: Alexey Brodkin

    Cc: Vineet Gupta
    Cc: Francois Bedard
    Cc: Wolfgang Denk
    Cc: Heiko Schocher

    Alexey Brodkin
     
  • Arcangel4 is a FPGA-based development board that is used for prototyping and
    verificationof of both ARC hardware (CPUs) and software running upon CPU.

    This board avaialble in 2 flavours:
    * Little-endian (arcangel4)
    * Big-endian (arcangel4-be)

    Signed-off-by: Alexey Brodkin

    Cc: Vineet Gupta
    Cc: Francois Bedard
    Cc: Wolfgang Denk
    Cc: Heiko Schocher

    Alexey Brodkin