13 Jun, 2016

40 commits

  • Add initial support for NXP's S32V234 SoC and S32V234EVB board.

    The S32V230 family is designed to support computation-intensive applications
    for image processing. The S32V234, as part of the S32V230 family, is a
    high-performance automotive processor designed to support safe
    computation-intensive applications in the area of vision and sensor fusion.

    Code originally writen by:
    Original-signed-off-by: Stoica Cosmin-Stefan
    Original-signed-off-by: Mihaela Martinas
    Original-signed-off-by: Eddy Petrișor

    Signed-off-by: Eddy Petrișor

    Eddy Petrișor
     
  • The Linflex module is integrated on some NXP automotive SoCs part of the former
    Freescale portfolio, like S32V234, an SoC for Advanced Driver Assistance
    Systems.

    Original-signed-off-by: Stoica Cosmin-Stefan
    Original-signed-off-by: Chircu Bogdan
    Original-signed-off-by: Depons Eric
    Original-signed-off-by: Eddy Petrișor

    Signed-off-by: Eddy Petrișor

    Stoica Cosmin-Stefan
     
  • Add support for the Broadcom BCM23550 board.

    Signed-off-by: Steve Rae

    Steve Rae
     
  • Tom Rini
     
  • Tom Rini
     
  • Tom Rini
     
  • In the upcoming release of axs103 v1.1 CPU will
    run @100MHz which we support with that change.

    Signed-off-by: Alexey Brodkin

    Alexey Brodkin
     
  • 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
     
  • 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
     
  • 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
     
  • In case we have restarted u-boot there is a chance that environment
    buffer contains old environment (from the previous boot). If UBI volume
    is zero size, ubi_volume_read() doesn't modify the buffer and exits
    successfully.

    We need to clear buffer manually before reading it from UBI, so the
    invalid CRC will cause setting default environment in case that the UBI
    volume is zero size.

    Signed-off-by: Marcin Niestroj

    Marcin Niestroj
     
  • Tom Rini
     
  • Tidy up garbage left by commit bb597c0eeb7e ("common: bootdelay: move
    CONFIG_BOOTDELAY into a Kconfig option").

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • At this point, this is not referenced from anywhere, so remove it
    (but it will be re-added later for a different meaning).

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • The sed script, tools/scripts/define2mk.sed, converts config defines
    from C headers into include/autoconf.mk for the use in Makefiles.

    I found the tool adds quotes around negative integer values.

    For example, at the point of the v2016.07-rc1 tag,
    include/configs/microblaze-generic.h defines
    #define CONFIG_BOOTDELAY -1 /* -1 disables auto-boot */

    Because it is an integer option, it should be converted to:
    CONFIG_BOOTDELAY=-1

    But, the script actually converts it to:
    CONFIG_BOOTDELAY="-1"

    This is a fatal problem for the tools/moveconfig.py because it parses
    include/autoconf.mk for the config defines from the board headers.
    CONFIG_BOOTDELAY="-1" is considered as a string type option and it
    is dropped due to the type mismatch from the entry in Kconfig.

    This commit fixes the script so that the tools/moveconfig.py can
    correctly convert integer options with a negative value.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This option allows the 'make autoconf.mk' step to run against a former
    repo state, while the savedefconfig step runs against the current repo
    state. This is convenient for the case where something in the Kconfig
    has changed such that the defconfig is no longer complete with the new
    Kconfigs. This feature allows the .config to be built assuming those old
    Kconfigs, but then savedefconfig based on the new state of the Kconfigs.

    If in doubt, always specify this switch. It will always do the right
    thing even if not required, but if it was required and you don't use it,
    the moved configs will be incorrect. When not using this switch, you
    must very carefully evaluate that all moved configs are correct.

    Signed-off-by: Joe Hershberger
    Reviewed-by: Masahiro Yamada

    Joe Hershberger
     
  • The old color blends in with similar messages and makes them not stand
    out.

    Signed-off-by: Joe Hershberger
    Reviewed-by: Masahiro Yamada

    Joe Hershberger
     
  • Signed-off-by: Joe Hershberger
    Reviewed-by: Masahiro Yamada

    Joe Hershberger
     
  • The Slot.poll() method is already complicated and a new feature
    we are going to add will make it more difficult to understand
    the execution flow.

    Refactor it with helper methods, .handle_error(), .do_defconfig(),
    .do_autoconf(), .do_savedefconfig, and .update_defconfig().

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • I found "tools/moveconfig -s" might be useful for defconfig re-sync.
    I could optimize it for re-sync if I wanted, but I do not want to
    make the code complex for this feature.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • Now, this tools invokes "make savedefconfig" only when it needs to
    do so, but there might be cases where a user wants the tool to do
    savedefconfig forcibly, for example, some defconfigs were already
    out of sync and the user wants to fix it as well.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • There are various factors that determine if the given defconfig is
    updated, and it is probably what users are more interested in.

    Show the log when the defconfig is updated. Also, copy the file
    only when the file content was really updated to avoid changing
    the time stamp needlessly.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • This is a rare case, but there is still possibility that some CONFIG
    is moved to the .config, but it is removed by "make savedefconfig".
    (For example, it happens when the specified CONFIG has no prompt in
    the Kconfig entry, i.e. it is not user-configurable.)

    It might be an unexpected case. So, display the log in this case
    (in yellow color to gain user's attention if --color option is given).

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • Now, "make savedefconfig" does not always happen. Display the log
    when it happens.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • If no CONFIG option is moved to the .config, no need to sync the
    defconfig file. This accelerates the processing by skipping
    needless "make savedefconfig".

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • Move similar code to finish() function.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • Before this commit, the log was displayed in the format:

    :
    :
    :

    When we move multiple CONFIGs at the same time, we see as many
    strings as actions for every defconfig, which is
    redundant information.

    Moreover, since normal log and error log are displayed separately,
    Messages from different threads could be mixed, like this:

    :
    :
    :
    :
    :

    This commit makes sure to call "print" once a defconfig, which
    enables atomic logging for each defconfig. It also makes it
    possible to refactor the log format as follows:




    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • This will help further improvement/clean-up.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • The paths to .config, include/autoconf.mk, include/config/auto.conf
    are not changed during the defconfig walk. Compute them only once
    when a new class instance is created.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • We still pass the input file with CONFIG name, type, default value
    in each line, but the last two fields are just ignored by the tool.
    So, let's deprecate the input file and allow users to give CONFIG
    names directly from the command line. The types and default values
    are automatically detected and handled nicely by the tool.

    Going forward, we can use this tool more easily like:

    tools/moveconfig.py CONFIG_FOO CONFIG_BAR

    Update the documentation and fix some typos I noticed while I was
    working on.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • Now types and defalut values given by the input file are just
    ignored. Delete unnecessary code.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • Commit 96464badc794 ("moveconfig: Always run savedefconfig on the
    moved config") changed the work flow of this tool a lot from the
    original intention when this tool was designed first.

    Since then, before running this tool, users must edit the Kconfig to
    add the menu entries for the configs they are moving. It means users
    had already specified the type and the default value for each CONFIG
    via its Kconfig entry. Nevertheless, users are still required to
    dictate the same type and the default value in the input file. This
    is tedious to use. So, my idea here is to deprecate the latter.

    Before moving forward with it, there is one issue worth mentioning;
    since the savedefconfig re-sync was introduced, this tool has not
    been able to move bool options with "default y". Joe sent a patch
    to solve this problem about a year ago, but it was not applied for
    some reasons. Now, he came back with an updated patch, so this
    problem will be fixed soon.

    For other use cases, I see no reason to require redundant dictation
    in the input file. Instead, the tool can know the types and default
    values by parsing the .config file.

    This commit changes the tool to use the CONFIG names, but ignore the
    types and default values given by the input file.

    This commit also fixes one bug. Prior to this commit, it could not
    move an integer-typed CONFIG with value 1.

    For example, assume we are moving CONFIG_CONS_INDEX. Please note
    this is an integer type option.

    Many board headers define this CONFIG as 1.

    #define CONFIG_CONS_INDEX 1

    It will be converted to

    CONFIG_CONS_INDEX=y

    and moved to include/autoconf.mk, by the tools/scripts/define2mk.sed.
    It will cause "make savedefconfig" to fail due to the type conflict.

    This commit takes care of it by detecting the type and converting the
    CONFIG value correctly.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • Currently, the progress " * defconfigs out of 1133" does not increase
    monotonically.

    Moreover, the number of processed defconfigs does not match the total
    number of defconfigs when this tool finishes, like:

    1132 defconfigs out of 1133
    Clean up headers? [y/n]:

    It looks like the task was not completed, and some users might feel
    upset about it.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • When the source tree is not clean, this tool raises an exception
    with a message like follows:

    Traceback (most recent call last):
    File "tools/moveconfig.py", line 939, in
    main()
    File "tools/moveconfig.py", line 934, in main
    move_config(config_attrs, options)
    File "tools/moveconfig.py", line 808, in move_config
    while not slots.available():
    File "tools/moveconfig.py", line 733, in available
    if slot.poll():
    File "tools/moveconfig.py", line 645, in poll
    self.parser.update_dotconfig(self.defconfig)
    File "tools/moveconfig.py", line 503, in update_dotconfig
    with open(autoconf_path) as f:
    IOError: [Errno 2] No such file or directory: '/tmp/tmpDtzCgl/include/autoconf.mk'

    This does not explain what is wrong. Show an appropriate error
    message "source tree is not clean, please run 'make mrproper'"
    in such a situation.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • Since commit 25400090b1e2 ("moveconfig: Print a message for
    missing compiler"), this tool parses an error message every time an
    error occurs during the process in order to detect missing compiler.

    Instead of that, we can look for compilers in the PATH environment
    only once before starting the defconfig walk. If a desired compiler
    is missing, "make include/config/auto.conf" will apparently fail for
    that architecture. So, the tool can just skip those board, showing
    "Compiler is missing. Do nothing.".

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • We must ensure this tool is run from the top of source directory
    before calling update_cross_compile(). Otherwise, the following
    exception is thrown:

    Traceback (most recent call last):
    File "./moveconfig.py", line 918, in
    main()
    File "./moveconfig.py", line 908, in main
    update_cross_compile()
    File "./moveconfig.py", line 292, in update_cross_compile
    for arch in os.listdir('arch'):
    OSError: [Errno 2] No such file or directory: 'arch'

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • Nesting by "else:" is not generally useful after such statements
    as return, break, sys.exit(), etc.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • Commit 96464badc794 ("moveconfig: Always run savedefconfig on the
    moved config") changed how defconfig files were updated.

    Since then, the function update_defconfig() does not modify defconfig
    files at all (instead, they are updated by "make savedefconfig"), so
    update_dotconfig() is a better fit for this function. Also, update
    the comment block to match the actual behavior.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada
     
  • Since commit 96464badc794 ("moveconfig: Always run savedefconfig on
    the moved config"), --dry-run option is broken.

    The --dry-run option prevents the .config from being modified,
    but defconfig files might be updated by "make savedefconfig"
    regardless of the --dry-run option.

    Move the "if not self.options.dry_run" conditional to the correct
    place.

    Fixes 96464badc794 ("moveconfig: Always run savedefconfig on the moved config")
    Signed-off-by: Masahiro Yamada
    Reviewed-by: Joe Hershberger

    Masahiro Yamada