[coreboot-gerrit] Patch merged into coreboot/master: 3eab7ed Tegra, Tegra124: proposed layout for file hierarchy with example

gerrit at coreboot.org gerrit at coreboot.org
Wed Aug 13 19:36:30 CEST 2014


the following patch was just integrated into master:
commit 3eab7ed45ee80b2711419f448bb2bc8ae9ea8194
Author: Ronald G. Minnich <rminnich at google.com>
Date:   Thu Oct 3 17:05:55 2013 -0700

    Tegra,Tegra124: proposed layout for file hierarchy with example
    
    This change shows the source structure for nvidia Tegra and Tegra124
    SOC.  The problem we are trying to solve is that there is a large
    amount of common code in the form of .c and .h files across many
    different Tegra SOCs. The solution is to provide common code in a
    single directory, but not to compile in the common code directory;
    rather, we compile in a directory for a given SOC. Different SOCs
    will sometimes need different bits of code from the common directory.
    
    Tegra common code lives in tegra/, but there is no makefile there: if
    a Tegra common file is needed in a SOC, it is referenced via a
    Makefile in a specific Tegra SOC.
    
    Another issue is includes. Include files in the common directory  might be
    accessed by a piece of code in an SOC directory. More problematically,
    code in the common directory might require a file in an SOC directory.
    We don't want to put the SOC name in an #include path, e.g.
    in a C file in tegra/ is very undesirable, since we might be compiling
    for a tegra114.
    
    On some systems this is solved by a pre-pass which creates a set of
    symbolic links; on others with nested #ifdef in the common code
    which include different .h files depending on CPP variables.
    In previous years, both LinuxBIOS and coreboot have tried these
    solutions and found them inconvenient and error-prone.
    
    We choose to solve it by requiring explicit naming of part of the path
    of files that are in the common directory. This requirement, coupled
    with two -I directives in the Makefile.inc, allows common and SOC
    C code to incorporate both common and SOC .h files.
    
    .c and .h files -- SOC or common -- name include
    files in the common directory with the prefix tegra/, e.g.
    SOC files will be included from the SOC directory if they have no prefix:
    The full patch of clock.h will depend on what SOC is being compiled, which
    is desirable.
    
    In this way, a common file can pick up a specific SOC file without
    creating symlinks or other such tricky magic.
    
    We show this usage with one file, soc/nvidia/tega124/clock.c. This compiles.
    
    The last question is where to put the prototype for the function
    defined in this file -- soc.h?
    
    Change-Id: Iecb635cec70f24a5b3e18caeda09d04a00d29409
    Signed-off-by: Ronald G. Minnich <rminnich at gmail.com>
    Reviewed-on: https://chromium-review.googlesource.com/171569
    Reviewed-by: Ronald Minnich <rminnich at chromium.org>
    Tested-by: Gabe Black <gabeblack at chromium.org>
    Commit-Queue: Gabe Black <gabeblack at chromium.org>
    (cherry picked from commit 53e3bed868953f3da588ec90661d316a6482e27e)
    Signed-off-by: Isaac Christensen <isaac.christensen at se-eng.com>
    Reviewed-on: http://review.coreboot.org/6621
    Tested-by: build bot (Jenkins)


See http://review.coreboot.org/6621 for details.

-gerrit



More information about the coreboot-gerrit mailing list