Hi, On 28. 07. 20 20:58, Simon Glass wrote: > On Tue, 21 Jul 2020 at 07:15, Michal Simek <michal.si...@xilinx.com> wrote: >> >> The commit 2bd261dd1712 ("gpio: search for gpio label if gpio is not found >> through bank name") introduced the option to search gpio via labels (gpio >> hog). This patch is just follow up on this and fills pin name based on >> gpio-line-names DT property. >> >> Signed-off-by: Michal Simek <michal.si...@xilinx.com> >> --- >> >> arch/sandbox/dts/test.dts | 2 ++ >> drivers/gpio/gpio-uclass.c | 31 +++++++++++++++++++++++++++++++ >> test/dm/gpio.c | 6 ++++++ >> 3 files changed, 39 insertions(+) > > Reviewed-by: Simon Glass <s...@chromium.org> >
I have run CI loop with this patch added and I see one issue regarding this. Issue is visible when dm_test_gpio_get_dir_flags() is called. Specifically ut_asserteq(6, gpio_request_list_by_name(dev, "test3-gpios", desc_list, ARRAY_SIZE(desc_list), 0)); This function requests gpios and when request passes it assigns name to gpio_dev_priv->name[] array. This is done in dm_gpio_request() Before assignment there is this code which check if name is already assigned or not. uc_priv = dev_get_uclass_priv(dev); if (uc_priv->name[desc->offset]) return -EBUSY; That means that we are using name as indicator if gpio is used or not. This logic is also applied in get_function() where you can see if (skip_unused && !uc_priv->name[offset]) return GPIOF_UNUSED; Where assigned name is just indicator of if device is used or not. This doesn't sound right to me. And that's just open a question how Heiko's patch should work. Because you look for a name and you get that pin but you can't request is because this request IMHO has to failed because gpio core thinks that it is already in used and you shouldn't touch that pin. The whole code which calls dm_gpio_lookup_name for bank name should be fine because it is different entry in struct gpio_dev_priv. Definitely this patch needs to be dropped and changed because it can't work like this and the question is Heiko's patch should still stay in tree or should be reverted. Maybe we should create another entry in char **label; in struct gpio_dev_priv where these labels should be saved and look for instead of just name which is used for assignment. Thanks, Michal -- Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91 w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel - Xilinx Microblaze Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs
signature.asc
Description: OpenPGP digital signature