From: Benjamin Szőke <egyszeregy@xxxxxxxxxxx> Optionally, a GPIO controller may have a "linux,gpiochip-name" property. This is a string which is defining a custom suffix name for gpiochip in /dev/gpiochip-<name> format. It helps to improve software portability between various SoCs and reduce complexities of hardware related codes in SWs. Signed-off-by: Benjamin Szőke <egyszeregy@xxxxxxxxxxx> --- drivers/gpio/gpiolib.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index ce94e37bcbee..e24d8db1d054 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -860,6 +860,7 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data, struct lock_class_key *lock_key, struct lock_class_key *request_key) { + const char *name; struct gpio_device *gdev; unsigned int desc_index; int base = 0; @@ -896,7 +897,16 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data, goto err_free_gdev; } - ret = dev_set_name(&gdev->dev, GPIOCHIP_NAME "%d", gdev->id); + /* + * If "linux,gpiochip-name" is specified in device tree, use /dev/gpiochip-<name> + * in Linux userspace, otherwise use /dev/gpiochip<id>. + */ + ret = device_property_read_string(gc->parent, "linux,gpiochip-name", &name); + if (ret < 0) + ret = dev_set_name(&gdev->dev, GPIOCHIP_NAME "%d", gdev->id); + else + ret = dev_set_name(&gdev->dev, GPIOCHIP_NAME "-%s", name); + if (ret) goto err_free_ida; -- 2.39.3