• Chen-Yu Tsai's avatar
    pinctrl: mediatek: paris: Rework support for PIN_CONFIG_{INPUT,OUTPUT}_ENABLE · c5d3b64c
    Chen-Yu Tsai authored
    There is a misinterpretation of some of the PIN_CONFIG_* options in this
    driver library. PIN_CONFIG_OUTPUT_ENABLE should refer to a buffer or
    switch in the output direction of the electrical path. The MediaTek
    hardware does not have such a thing. The driver incorrectly maps this
    option to the GPIO function's direction.
    
    Likewise, PIN_CONFIG_INPUT_ENABLE should refer to a buffer or switch in
    the input direction. The hardware does have such a mechanism, and is
    mapped to the IES bit. The driver however sets the direction in addition
    to the IES bit, which is incorrect. On readback, the IES bit isn't even
    considered.
    
    Ironically, the driver does not support readback for PIN_CONFIG_OUTPUT,
    while its readback of PIN_CONFIG_{INPUT,OUTPUT}_ENABLE is what it should
    be doing for PIN_CONFIG_OUTPUT.
    
    Rework support for these three options, so that PIN_CONFIG_OUTPUT_ENABLE
    is completely removed, PIN_CONFIG_INPUT_ENABLE is only linked to the IES
    bit, and PIN_CONFIG_OUTPUT is linked to the GPIO function's direction
    and output level.
    
    Fixes: 80525098 ("pinctrl: mediatek: add pinctrl-paris that implements the vendor dt-bindings")
    Signed-off-by: default avatarChen-Yu Tsai <wenst@chromium.org>
    Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Message-ID: <20240327091336.3434141-3-wenst@chromium.org>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    c5d3b64c
pinctrl-paris.c 27.6 KB