пн, 6 жовт. 2025 р. о 10:15 Łukasz Majewski <[email protected]> пише: > > Hi Svyatoslav, > > > пн, 29 вер. 2025 р. о 13:22 Łukasz Majewski <[email protected]> пише: > > > > > > Hi Svyatoslav, > > > > > > > пн, 29 вер. 2025 р. о 10:23 Łukasz Majewski <[email protected]> > > > > пише: > > > > > > > > > > Hi Svyatoslav, > > > > > > > > > > > пн, 22 вер. 2025 р. о 17:16 Lukasz Majewski > > > > > > <[email protected]> пише: > > > > > > > > > > > > > > This patch adds support for the .set_flags callback. > > > > > > > For now following flags are supported: > > > > > > > - GPIOD_IS_AF (i.e. "alternate function"). > > > > > > > - GPIOD_IS_IN > > > > > > > - GPIOD_IS_OUT > > > > > > > > > > > > > > Currently, the .set_flags in gpio-uclass.c (function > > > > > > > dm_gpio_set_value()) is used before .set_value callback, so > > > > > > > functionally replaces it. As a result the corresponding > > > > > > > tegra_gpio_set_value() can be removed. > > > > > > > > > > > > > > Signed-off-by: Lukasz Majewski <[email protected]> > > > > > > > --- > > > > > > > > > > > > > > Changes for v2: > > > > > > > - Fix the format specifier for flags in debug() function > > > > > > > - Update commit message > > > > > > > - Remove tegra_gpio_set_value() method (as it is > > > > > > > functionally replaced by set_value() > > > > > > > - Prevent from returning errors when flags = 0 (problem with > > > > > > > e.g. I2C GPIO support) > > > > > > > --- > > > > > > > drivers/gpio/tegra_gpio.c | 39 > > > > > > > +++++++++++++++++++++++---------------- 1 file changed, 23 > > > > > > > insertions(+), 16 deletions(-) > > > > > > > > > > > > Lukasz, thank you for this change I would really like to see > > > > > > it in mainline. ATM I have no capabilities to debug > > > > > > > > > > You mean test if it works? > > > > > > > > > > > this and I will return > > > > > > to it but that may not be soon unfortunately. > > > > > > > > > > This is a bit problematic for me, as: > > > > > > > > > > 1. Some future work depends on it (more details below). > > > > > 2. The "set_flags()" callback seems like being now the one to be > > > > > advised to being implemented and used. > > > > > > > > > > > > > > > > > > > > Can you predict when you will be able to come back to this > > > > > task? Is this the matter of weeks or months? > > > > > > > > > > > > > Weeks maybe, I will try to look into this when I have some spare > > > > time > > > > > > Ok. > > > > > > > > > In case you really need > > > > > > switch GPIO back to SFIO and Linux cannot handle this, you an > > > > > > use dm_gpio_free to release gpios in board_preboot_os in the > > > > > > board as a temporary measure. > > > > > > > > > > Yes, this is a temporary solution - i.e. dm_gpio_free() is > > > > > supposed to "free" the pin. IMHO, the set_flags() shall be > > > > > used, as I in fact do want to set the CFG_SFIO flag, not > > > > > release the gpio. > > > > > > > > dm_gpio_free in tegra case calls CFG_SFIO > > > > > > Yes, but as you said - this is not the "proper" solution. > > > > > > > > > > > > > > > > > > > Overall issue you are describing is not u-boot's it is > > > > > > kernels, kernel must reconfigure gpios for proper work > > > > > > regardless of their previous state. If it is not the case, > > > > > > then kernel device configuration is incomplete or wrong. > > > > > > > > > > This is how the pinmux in Linux for Tegra is written. You can > > > > > setup the PAD parameters, but you cannot set the pin's function. > > > > > > > > > > > > > WDYM? Tegra30+ has per-pin configuration, this includes FUNCTION, > > > > direction, tristate and pull for all pins > > > > > > With DTS pinmux description, you cannot change the PAD function > > > (special vs gpio) in Linux. It is assumed that bootloader would set > > > the function (which, yes, is IMHO a bug). > > > > > > > > > > > > In other words - you have to do it in bootloader (u-boot in this > > > > > case). > > > > > > > > > > In my case - customer uses the pin in u-boot as GPIO to check > > > > > carrier board version, then the same pin in Linux is going to be > > > > > used as special function one. > > > > > > > > > > Unfortunately, above "reconfiguration" cannot be done in Linux. > > > > > > > > > > As other "rework" of gpio code depends on it (use dm) - I would > > > > > like to postpone my work until this functionality is available > > > > > in mainline (and hence avoid "temporal solutions"). > > > > > > > > > > -- > > > > > Best regards, > > > > Try this > > https://source.denx.de/u-boot/custodians/u-boot-tegra/-/commit/d95d942b6e796429342845d153d95330f5257cdd > > I have combined your v1 and v2 and added a few tweaks. It works on > > star and olympus (tegra20), p895 and grouper (tegra30), tegratab and > > tf701t (tegra114) and mocha (tegra124). > > I've tested it on Colibri T30. No issues observed. > > Thanks for your tweaks. > > Please add mine: > Tested-by: Łukasz Majewski <[email protected]> >
Reviewed-by: Svyatoslav Ryhel <[email protected]> Signed-off-by: Svyatoslav Ryhel <[email protected]> Applied to u-boot-tegra/staging, thank you!

