07 Feb, 2014

1 commit


25 Jan, 2014

1 commit


16 Dec, 2013

1 commit

  • The next version VxWorks adopts device tree (for PowerPC and ARM) as its hardware
    description mechanism. For PowerPC, the boot interface conforms to
    the ePAPR standard, which is:

    void (*kernel_entry)(ulong fdt_addr,
    ulong r4 /* 0 */,
    ulong r5 /* 0 */,
    ulong r6 /* EPAPR_MAGIC */, ulong r7 /* IMA size */,
    ulong r8 /* 0 */, ulong r9 /* 0 */)

    For ARM, the boot interface is:

    void (*kernel_entry)(void *fdt_addr)

    Signed-off-by: Miao Yan
    [trini: Fix build error when !CONFIG_OF_FDT is set, typo on PowerPC,
    missing extern ft_fixup_num_cores]
    Signed-off-by: Tom Rini

    Miao Yan
     

22 Nov, 2013

1 commit


15 Oct, 2013

1 commit


08 Oct, 2013

1 commit


05 Oct, 2013

1 commit


04 Oct, 2013

1 commit

  • Currently the non-secure switch is only done for the boot processor.
    To enable full SMP support, we have to switch all secondary cores
    into non-secure state also.

    So we add an entry point for secondary CPUs coming out of low-power
    state and make sure we put them into WFI again after having switched
    to non-secure state.
    For this we acknowledge and EOI the wake-up IPI, then go into WFI.
    Once being kicked out of it later, we sanity check that the start
    address has actually been changed (since another attempt to switch
    to non-secure would block the core) and jump to the new address.

    The actual CPU kick is done by sending an inter-processor interrupt
    via the GIC to all CPU interfaces except the requesting processor.
    The secondary cores will then setup their respective GIC CPU
    interface.
    While this approach is pretty universal across several ARMv7 boards,
    we make this function weak in case someone needs to tweak this for
    a specific board.

    The way of setting the secondary's start address is board specific,
    but mostly different only in the actual SMP pen address, so we also
    provide a weak default implementation and just depend on the proper
    address to be set in the config file.

    Signed-off-by: Andre Przywara

    Andre Przywara
     

21 Sep, 2013

1 commit


20 Sep, 2013

2 commits


25 Jul, 2013

1 commit


24 Jul, 2013

2 commits


26 Jun, 2013

1 commit

  • Add a library which supports tracing of execution using built-in gcc
    features and a microsecond timer. This can be used to record a list of
    function which are executed, along with a timestamp for each. Later
    this information can be sent to the host for processing.

    Signed-off-by: Simon Glass

    Simon Glass
     

05 Jun, 2013

1 commit

  • There are two implementations of abortboot(). Turn these into two separate
    functions, and create a single abortboot() which calls either one or the
    other.

    Also it seems that nothing uses abortboot() outside main, so make it static.

    At this point there is no further use of CONFIG_MENU in main.c.

    Signed-off-by: Simon Glass
    Reviewed-by: Joe Hershberger

    Simon Glass
     

15 May, 2013

2 commits

  • The Freescale MPC8220 Power Architecture processors have long reached
    EOL; Freescale does not even list these any more on their web site.

    Remove the code to avoid wasting maitaining efforts on dead stuff.

    Signed-off-by: Wolfgang Denk
    Cc: Andy Fleming

    Wolfgang Denk
     
  • This seems to be a common function for several architectures, so create
    a common function rather than duplicating the code in each arch.

    Also make an attempt to avoid introducing #ifdefs in the new code, partly
    by removing useless #ifdefs around function declarations in the image.h
    header.

    Signed-off-by: Simon Glass

    Simon Glass
     

06 May, 2013

1 commit


03 May, 2013

2 commits


02 May, 2013

2 commits


01 May, 2013

2 commits

  • This conversion is required in a number of places in U-Boot. Add a
    standard function to provide this feature, so we avoid all the different
    variations in the way it is coded.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • In many cases, pointers to memory are passed around, and these pointers
    refer to U-Boot memory, not host memory. This in itself is not a
    problem.

    However, in a few places, we cast that pointer back to a ulong (being
    a U-Boot memory address). It is possible to convert many of these cases
    to avoid this. However there are data structures (e.g. struct
    bootm_headers) which use pointers. We could with a lot of effort adjust
    the structs and all code that uses them to use ulong instead of pointers.

    This seems like an unacceptable cost, since our objective with sandbox
    is to minimise the impact on U-Boot code while maximising the features
    available to sandbox.

    Therefore, create a map_to_sysmem() function which converts from a
    pointer to a U-Boot address. This can be used sparingly when needed.

    Signed-off-by: Simon Glass

    Simon Glass
     

12 Apr, 2013

3 commits


16 Mar, 2013

2 commits


01 Mar, 2013

3 commits

  • We might as well use this common function instead of repeating the same
    code.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • Sandbox doesn't actually provide U-Boot access to the machine's physical
    memory. Instead it provides a RAM buffer of configurable size, and all
    memory accesses are within that buffer. Sandbox memory starts at 0 and
    is CONFIG_DRAM_SIZE bytes in size. Allowing access outside this buffer
    might produce unpredictable results in the event of an error, and would
    expose the host machine's memory architecture to the sandbox U-Boot.

    Most U-Boot functions assume that they can just access memory at given
    address. For sandbox this is not true.

    Add a map_sysmem() call which converts a U-Boot address to a system
    address. In most cases this is a NOP, but for sandbox it returns a
    pointer to that memory inside the RAM buffer.

    To get a U-Boot feature to work correctly within sandbox, you should call
    map_sysmem() to get a pointer to the address, and then use that address for
    any U-Boot memory accesses.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • The buffer cannot be changed by this function, so change the buffer
    pointer to a const. This allows callers with const pointer to use the
    function without a cast.

    Signed-off-by: Simon Glass

    Simon Glass
     

11 Jan, 2013

1 commit

  • Some boards want to report more than just memory size. For example, it
    might be useful to display the memory type (DDR2, DDR3) or manufacturer.

    Add a weak function to support this requirement, accessed through a new
    'meminfo' command.

    Any example of the DRAM: output is below, just for illustration:

    SMDK5250 # meminfo
    DRAM: 2 GiB Elpida DDR3 @ 800MHz

    Signed-off-by: Simon Glass

    Simon Glass
     

09 Jan, 2013

1 commit

  • Move all the C runtime setup code from every start.S
    in arch/arm into arch/arm/lib/crt0.S. This covers
    the code sequence from setting up the initial stack
    to calling into board_init_r().

    Also, rewrite the C runtime setup and make functions
    board_init_*() and relocate_code() behave according to
    normal C semantics (no jumping across the C stack any
    more, etc).

    Some SPL targets had to be touched because they use
    start.S explicitly or for some reason; the relevant
    maintainers and custodians are cc:ed.

    Signed-off-by: Albert ARIBAUD

    Albert ARIBAUD
     

14 Dec, 2012

1 commit


05 Nov, 2012

1 commit

  • u-boot's byteorder headers did not contain endianness attributions
    for use with sparse, causing a lot of false positives. Import the
    kernel's latest definitions, and enable them by including compiler.h
    and types.h. They come with 'const' added for some swab functions, so
    fix those up, too:

    include/linux/byteorder/big_endian.h:46:2: warning: passing argument 1 of '__swab64p' discards 'const' qualifier from pointer target type [enabled by default]

    Also, note: u-boot's historic __BYTE_ORDER definition has been
    preserved (for the time being at least).

    We also remove ad-hoc barrier() definitions, since we're including
    compiler.h in files that hadn't in the past:

    macb.c:54:0: warning: "barrier" redefined [enabled by default]

    In addition, including compiler.h in byteorder changes the 'noinline'
    definition to expand to __attribute__((noinline)). This fixes
    arch/powerpc/lib/bootm.c:

    bootm.c:329:16: error: attribute '__attribute__': unknown attribute
    bootm.c:329:16: error: expected ')' before '__attribute__'
    bootm.c:329:25: error: expected identifier or '(' before ')' token

    powerpc sparse builds yield:

    include/common.h:356:22: error: marked inline, but without a definition

    the unknown-reason inlining without a definition is considered obsolete
    given it was part of the 2002 initial commit, and no arm version was
    'fixed.'

    also fixed:
    ydirectenv.h:60:0: warning: "inline" redefined [enabled by default]

    and:

    Configuring for devconcenter - Board: intip, Options: DEVCONCENTER
    make[1]: *** [4xx_ibm_ddr2_autocalib.o] Error 1
    make: *** [arch/powerpc/cpu/ppc4xx/libppc4xx.o] Error 2
    powerpc-fsl-linux-size: './u-boot': No such file
    4xx_ibm_ddr2_autocalib.c: In function 'DQS_autocalibration':
    include/asm/ppc4xx-sdram.h:1407:13: sorry, unimplemented: inlining failed in call to 'ppc4xx_ibm_ddr2_register_dump': function body not available
    4xx_ibm_ddr2_autocalib.c:1243:32: sorry, unimplemented: called from here

    and:

    In file included from crc32.c:50:0:
    crc32table.h:4:1: warning: implicit declaration of function '___constant_swab32' [-Wimplicit-function-declaration]
    crc32table.h:4:1: error: initializer element is not constant
    crc32table.h:4:1: error: (near initialization for 'crc32table_le[0]')

    Signed-off-by: Kim Phillips
    [trini: Remove '#endif' in include/common.h around setenv portion]
    Signed-off-by: Tom Rini

    Kim Phillips
     

03 Nov, 2012

1 commit


16 Oct, 2012

2 commits

  • As the board seems to be unmaintained for some time, lets remove
    the support in mainline completely.

    Signed-off-by: Stefan Roese
    Cc: James MacAulay
    Acked-by: Marek Vasut

    Stefan Roese
     
  • Since the IOP480 (PPC401/3 variant from PLX) is only used on 2
    boards that are not actively maintained, lets remove support
    for it completely. This way the ppc4xx code will get a bit cleaner.

    Signed-off-by: Stefan Roese
    Acked-by: Matthias Fuchs
    Acked-by: Marek Vasut

    Stefan Roese