26 Jan, 2017

1 commit


03 Dec, 2016

1 commit

  • Commit e2f88dfd2d96 ("libfdt: Introduce new ARCH_FIXUP_FDT option")
    allows us to skip memory setup of DTB, but a problem for ARM is that
    spin_table_update_dt() and psci_update_dt() are skipped as well if
    CONFIG_ARCH_FIXUP_FDT is disabled.

    This commit allows us to skip only fdt_fixup_memory_banks() instead
    of the whole of arch_fixup_fdt(). It will be useful when we want to
    use a memory node from a kernel DTB as is, but need some fixups for
    Spin-Table/PSCI.

    Signed-off-by: Masahiro Yamada
    Acked-by: Alexey Brodkin
    Acked-by: Simon Glass
    Fixed build error for x86:
    Signed-off-by: Simon Glass

    Masahiro Yamada
     

24 Sep, 2016

1 commit

  • Unlike Linux, nothing about errno.h is arch-specific in U-Boot.
    As you see, all of arch/${ARCH}/include/asm/errno.h is just a
    wrapper of . Actually, U-Boot does not
    export headers to user-space, so we just have to care about the
    consistency in the U-Boot tree.

    Now all of include directives for are gone.
    Deprecate .

    Signed-off-by: Masahiro Yamada
    Acked-by: Alexey Brodkin

    Masahiro Yamada
     

16 Sep, 2016

1 commit


05 Aug, 2016

5 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
     
  • Starting from arc-2016.03 GNU tools linker properly works with
    symbols defined in linker script and so external declarations
    are no longer required, dump them.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     
  • Initially IVT for ARCv2 was simply copypasted from ARCompact
    with some selected fixes so basic stuff works.

    Now we update it with more ARCv2 specific vectors like
    * Software Interrupt
    * Division by zero
    * Data cache consistency error
    * Misaligned access

    Also normal interrupts are now implemented properly and extened to
    all possible 240 items.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     
  • This might be useful to make sure relocation fixups really
    happen. And since this info gets printed only in DEBUG
    build it doesn't really hurt normal execution.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

04 Jul, 2016

2 commits

  • Currently on attempt to use global_data.h in an assembly file following
    will happen:
    -------------------->8-----------------
    ./arch/arc/include/asm/global_data.h: Assembler messages:
    ./arch/arc/include/asm/global_data.h:11: Error: bad instruction 'struct arch_global_data{'
    ./arch/arc/include/asm/global_data.h:12: Error: junk at end of line, first unrecognized character is `}'
    scripts/Makefile.build:316: recipe for target 'arch/arc/lib/start.o' failed
    -------------------->8-----------------

    In this change we disable struct arch_global_data in ASM which fixes
    the issue above.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     
  • Newer ARC toolchains don't support "-marchs" option any longer.
    Instead "-mcpu=archs" should be used. What's also important older
    toiolchains that support ARC HS cores will also happily accept
    "-mcpu=archs" so that's a very safe move.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

13 Jun, 2016

3 commits

  • Memory barriers are proven to be a requirement for both compiler and
    real hardware to properly serialize access to critical data.

    For example if CPU or data bus it uses may do reordering of data
    accesses absence of memory barriers might easily lead to very subtle and
    hard to debug data corruptions.

    This implementation was heavily borrowed from up to date Linux kernel.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     
  • According to ARC HS databook it is required to flush and disable
    caches prior programming IOC registers. Otherwise ongoing coherent
    memory operations may not observe the coherency protocols as
    expected.

    But since in ARC HS v2.1 there's no way to disable SLC (AKA L2 cache)
    we're doing our best flushing and invalidating it.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     
  • invalidate_dcache_all() could be used in different use-cases
    and what is especially important most of those cases won't be
    related to DMAed data to or from peripherals, i.e. we'll be doing
    invalidation of data used purely by CPU cores.

    Given that IOC engine only snoops data that goes through DMA
    we need to care ourselves about data used only by CPU cores
    and so remove dependency on IOC from invalidate_dcache_all()
    and always do real invalidation.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

22 Apr, 2016

1 commit

  • flush_dcache_all() is used in the very end of U-Boot self relocation
    to write back all copied and then patched code and data to their
    new location in the very end of available memory space.

    Since that has nothing to do with IO (i.e. no external DMA happens
    here) IOC won't help here and we need to write back data cache contents
    manually.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

12 Apr, 2016

2 commits

  • Commit cf7c93cdd755 "usb: ehci: Implement V2P mapping"
    introduced usage of virt_to_phys() in ehci-hcd.

    Since there was no implementation of virt_to_phys() for ARC
    compilation of the ehci-generic driver failed.

    This change adds virt_to_phys() stub for ARC so now
    USB driver for AXS101 board could be built again.

    Signed-off-by: Alexey Brodkin
    Cc: Daniel Schwierzeck
    Cc: Hans de Goede
    Acked-by: Marek Vasut

    Alexey Brodkin
     
  • ISS is obsolete now and nSIM is used for simulation instead.
    In its turn nSIM properly handles baud-rate settings so get rid
    of now useless check.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

20 Feb, 2016

2 commits

  • With release of ARC HS38 v2.1 new IO coherency engine could be built-in
    ARC core. This hardware module ensures coherency between DMA-ed data
    from peripherals and L2 cache.

    With L2 and IOC enabled there's no overhead for L2 cache manual
    maintenance which results in significantly improved IO bandwidth.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     
  • ARC core could be configured with different L1 and L2 (AKA SLC) cache
    line lengths. At least these values are possible and were really used:
    32, 64 or 128 bytes.

    Current implementation requires cache line to be selected upon U-Boot
    configuration and then it will only work on matching hardware. Indeed
    this is quite efficient because cache line length gets hardcoded during
    code compilation. But OTOH it makes binary less portable.

    With this commit we allow U-Boot to determine real L1 cache line length
    early in runtime and use this value later on. This extends portability
    of U-Boot binary a lot.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

14 Jan, 2016

1 commit

  • board_init_f_mem() alters the C runtime environment's
    stack it is actually already using. This is not a valid
    behaviour within a C runtime environment.

    Split board_init_f_mem into C functions which do not alter
    their own stack and always behave properly with respect to
    their C runtime environment.

    Signed-off-by: Albert ARIBAUD
    Acked-by: Thomas Chou

    Albert ARIBAUD
     

22 Dec, 2015

1 commit

  • This commit adds support of USB 1.1 storage media on AXS103 board.
    For some yet unknown reason USB 2.0 doesn't work on AXS103 board issuing
    messages like this:
    ------------------------>8-------------------
    AXS# usb start
    starting USB...
    USB0: USB EHCI 1.00
    scanning bus 0 for devices... EHCI timed out on TD - token=0x80008c80
    unable to get device descriptor (error=-1)
    1 USB Device(s) found
    ------------------------>8-------------------

    As a work-around we're falling back to USB 1.1.
    Indeed it is much slower but at least USB storage devices are usable on
    AXS103.

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

    Alexey Brodkin
     

08 Dec, 2015

1 commit


18 Nov, 2015

3 commits

  • 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
     
  • common/usb.c unconditionally includes
    And now to allow USB support on ARC boards we have to have that header.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     
  • Up until now there was no need in those stubs.

    But since following commit compilation of U-Boot on ARC is broken:
    ------------------------>8----------------------
    commit 7861204c9af7fec1ea9b41541c272516235a6c93
    Author: Stephen Warren
    Date: Sat Oct 3 13:56:46 2015 -0600

    itest: make memory access work under sandbox

    itest accesses memory, and hence must map/unmap it. Without doing so, it
    accesses invalid addresses and crashes.

    Signed-off-by: Stephen Warren
    Reviewed-by: Simon Glass
    ------------------------>8----------------------

    That's because CMD_ITEST is enabled by default in common/Kconfig and now
    map_physmem()/unmap_physmem() is used there.

    So this patch adds missing stubs for ARC.

    Signed-off-by: Alexey Brodkin
    Reviewed-by: Simon Glass
    Cc: Stephen Warren

    Alexey Brodkin
     

10 Nov, 2015

1 commit

  • After consulting with some of the SPDX team, the conclusion is that
    Makefiles are worth adding SPDX-License-Identifier tags too, and most of
    ours have one. This adds tags to ones that lack them and converts a few
    that had full (or in one case, very partial) license blobs into the
    equivalent tag.

    Cc: Kate Stewart
    Signed-off-by: Tom Rini

    Tom Rini
     

05 Nov, 2015

1 commit


07 Sep, 2015

1 commit

  • This fixes building in automated flow that doesn't use defconfigs.

    See discussion on that topic here:
    http://patchwork.ozlabs.org/patch/502558/

    See similar patches for other architectures/platforms here:
    [1] http://git.denx.de/?p=u-boot.git;a=commit;h=ff560a13056a565a4e9ce1761bd04276a3cace88
    [2] http://git.denx.de/?p=u-boot.git;a=commit;h=589907e2c187ec69b351c38ccda36730d25ab5d6

    And while at it add missing shell prompt to axs103.

    Cc: Tom Rini
    Cc: Joe Hershberger
    Cc: Masahiro Yamada
    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

01 Jul, 2015

2 commits

  • [1] Align cache management functions to those in Linux kernel. I.e.:
    a) Use the same functions for all cache ops (D$ Inv/Flush)
    b) Split cache ops in 3 sub-functions: "before", "lineloop" and
    "after". That way we may re-use "before" and "after" functions for
    region and full cache ops.

    [2] Implement full-functional L2 (SLC) management. Before SLC was
    simply disabled early on boot. It's also possible to enable or disable
    L2 cache from config utility.

    [3] Disable/enable corresponding caches early on boot. So if U-Boot is
    configured to use caches they will be used at all times (this is useful
    in partucular for speed-up of relocation).

    Signed-off-by: Alexey Brodkin

    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
     

26 Jun, 2015

1 commit

  • Some archs/boards specify their own default by pre-defining the config
    which causes the Kconfig system to mix up the order of the configs in
    the defconfigs... This will cause merge pain if allowed to proliferate.

    Remove the configs that behave this way from the archs.

    A few configs still remain, but that is because they only exist as
    defaults and do not have a proper Kconfig entry. Those appear to be:

    SPIFLASH
    DISPLAY_BOARDINFO

    Signed-off-by: Joe Hershberger
    [trini: rastaban, am43xx_evm_usbhost_boot, am43xx_evm_ethboot updates,
    drop DM_USB from MSI_Primo81 as USB_MUSB_SUNXI isn't converted yet to DM]
    Signed-off-by: Tom Rini

    Joe Hershberger
     

18 May, 2015

1 commit


14 May, 2015

1 commit

  • TARGET_DUMMY was introduced to resolve the same problem as commit
    "arch: Make board selection choices optional"
    http://git.denx.de/?p=u-boot.git;a=commit;h=a26cd04920dc069fd6e91abb785426cf6c29f45f

    Latter implementation is much cleaner and appropriate.

    And anyways TARGET_DUMMY is no longer required.

    Signed-off-by: Alexey Brodkin
    Acked-by: Joe Hershberger

    Alexey Brodkin
     

13 May, 2015

2 commits

  • As doc/README.ARC says, pre-build ARC toolchains are available at
    the Synopsys GitHub page.

    The bin files are prefixed with arc(eb)-buildroot-linux- for earlier
    releases, but with arc(eb)-snps-linux- for the latest releases.

    The symbolic links prefixed with arc(eb)-linux- are also available
    for all the release, so those prefixes can be used as the default
    CROSS_COMPILE regardless of the toolchains version/variants.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • By making the board selections optional, every defconfig will include
    the board selection when running savedefconfig so if a new board is
    added to the top of the list of choices the former top's defconfig will
    still be correct.

    Signed-off-by: Joe Hershberger
    Cc: Masahiro Yamada
    Acked-by: Stephen Warren
    Cc: Tom Rini

    Joe Hershberger
     

11 Apr, 2015

1 commit

  • While testing "arc: make sure _start is in the beginning of .text
    section" I haven't done proper clean-up of built binaries and so missed
    another tiny bit that lead to the following error:
    --->8---
    LD u-boot
    arc-linux-ld.bfd: cannot find arch/arc/lib/start.o
    Makefile:1107: recipe for target 'u-boot' failed
    make: *** [u-boot] Error 1
    --->8---

    Fix is trivial: put "start.o" in "extra-y".

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

10 Apr, 2015

1 commit

  • This is important to have entry point in the beginning of .text section
    because it allows simple loading and execution of U-Boot.

    For example pre-bootloader loads U-Boot in memory starting from offset
    0x81000000 and then just jumps to the same address.

    Otherwise pre-bootloader would need to find-out where entry-point is. In
    its turn if it deals with binary image of U-Boot there's no way for
    pre-bootloader to get required value.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     

03 Apr, 2015

3 commits