• Mika Westerberg's avatar
    pinctrl: intel: Add support for variable size pad groups · 919eb475
    Mika Westerberg authored
    The Intel GPIO hardware has a concept of pad groups, which means 1 to 32
    pads occupying their own GPI_IS, GPI_IE, PAD_OWN and so on registers. The
    existing hardware has the same amount of pads in each pad group (except the
    last one) so it is possible to use community->gpp_size to calculate start
    offset of each register.
    
    With the next generation SoCs the pad group size is not always the same
    anymore which means we cannot use community->gpp_size for register offset
    calculations directly.
    
    To support variable size pad groups we introduce struct intel_padgroup that
    can be filled in by the client drivers according the hardware pad group
    layout. The core driver will always use these when it performs calculations
    for pad register offsets. The core driver will automatically populate pad
    groups based on community->gpp_size if the driver does not provide any.
    This makes sure the existing drivers still work as expected.
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: default avatarChuah, Kim Tatt <kim.tatt.chuah@intel.com>
    Signed-off-by: default avatarTan Jui Nee <jui.nee.tan@intel.com>
    Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    919eb475
pinctrl-sunrisepoint.c 19.2 KB