[coreboot-gerrit] Patch merged into coreboot/master: 08d5a89 tegra124: Implement driver code for the pinmux, pingroup controls, and GPIOs.

gerrit at coreboot.org gerrit at coreboot.org
Tue Aug 19 22:46:54 CEST 2014


the following patch was just integrated into master:
commit 08d5a89fd0a64740b81d1319551ac580068d835d
Author: Gabe Black <gabeblack at google.com>
Date:   Thu Oct 3 04:35:01 2013 -0700

    tegra124: Implement driver code for the pinmux, pingroup controls, and GPIOs.
    
    The pins on tegra are controlled by three different units, the pinmux, the
    pin group controls, and the GPIO banks. Each of these units controls some
    aspect of the pins, and they layer together and interact in interesting ways.
    
    By default, the GPIOs are configured to pass through the special purpose IO
    that the pinmux is configured to and so can be ignored unless a GPIO is needed.
    The pinmux controls which special purpose signal passes through, along with
    pull ups, downs, and whether the output is tristated. The pingroup controls
    change the parameters of a group of pins which all have to do with a related
    function unit.
    
    The enum which holds constants related to the pinmux is relatively involved
    and may not be entirely complete or correct due to slightly inconsistent,
    incomplete, or missing documentation related to the pinmux. Considerable
    effort has been made to make it as accurate as possible. It includes a
    constant which is the index into the pinmux control registers for that pin,
    what each of the functions supported by that pin are, and which GPIO it
    corresponds to. The GPIO constant is named after the GPIO and is the pinmux
    register index for the pin for that GPIO. That way, when you need to turn on
    a GPIO, you can use that constant along with the pinmux manipulating functions
    to enable its tristate and pull up/down mode in addition to setting up the
    GPIO controls.
    
    Also, while in general I prefer not to use macros or the preprocessor when
    writing C code, in this case the set of constants in the enums was too large
    and cumbersome to manage without them. Since they're being used to construct
    a table in a straightforward way, hopefully their negative aspects will be
    minimized.
    
    In addition to the low level functions in each driver, the GPIO code also
    includes some high level functions to set up input or output GPIOs since that
    will probably be a very common thing to want to do.
    
    Old-Change-Id: I48efa58d1b5520c0367043cef76b6d3a7a18530d
    Signed-off-by: Gabe Black <gabeblack at google.com>
    Reviewed-on: https://chromium-review.googlesource.com/171806
    Reviewed-by: Ronald Minnich <rminnich at chromium.org>
    Reviewed-by: David Hendricks <dhendrix at chromium.org>
    Commit-Queue: Gabe Black <gabeblack at chromium.org>
    Tested-by: Gabe Black <gabeblack at chromium.org>
    (cherry picked from commit 5cd9f17fe0196d13c1e10b8cde0f2d3989b5ae1a)
    
    tegra124: Add base address for the pinmux and pingroup registers.
    
    There weren't any constants for the pinmux or pingroup registers in the
    address map header.
    
    Old-Change-Id: I52b9042c7506cab0bedd7a734f346cc9fe4ac3fe
    Signed-off-by: Gabe Black <gabeblack at google.com>
    Reviewed-on: https://chromium-review.googlesource.com/172081
    Reviewed-by: Julius Werner <jwerner at chromium.org>
    Tested-by: Gabe Black <gabeblack at chromium.org>
    Commit-Queue: Gabe Black <gabeblack at chromium.org>
    (cherry picked from commit 79b61016bfd702b0ea5221658305d8bd359f4f62)
    
    Squashed two related commits.
    
    Change-Id: Ifeb6085128bd53f0ef5f82c930eda66a2b59499b
    Signed-off-by: Isaac Christensen <isaac.christensen at se-eng.com>
    Reviewed-on: http://review.coreboot.org/6702
    Tested-by: build bot (Jenkins)


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

-gerrit



More information about the coreboot-gerrit mailing list