Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'gpio-fixes-for-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux

Pull gpio fixes from Bartosz Golaszewski:

- allow looking up GPIOs by the secondary firmware node too

- fix memory leak in gpio-regmap

* tag 'gpio-fixes-for-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
gpio: regmap: fix memory leak of gpio_regmap structure
gpiolib: Extend software-node support to support secondary software-nodes

+20 -3
+1 -1
drivers/gpio/gpio-regmap.c
··· 274 274 if (!chip->ngpio) { 275 275 ret = gpiochip_get_ngpios(chip, chip->parent); 276 276 if (ret) 277 - return ERR_PTR(ret); 277 + goto err_free_gpio; 278 278 } 279 279 280 280 /* if not set, assume there is only one register */
+19 -2
drivers/gpio/gpiolib.c
··· 4604 4604 return desc; 4605 4605 } 4606 4606 4607 + static struct gpio_desc *gpiod_fwnode_lookup(struct fwnode_handle *fwnode, 4608 + struct device *consumer, 4609 + const char *con_id, 4610 + unsigned int idx, 4611 + enum gpiod_flags *flags, 4612 + unsigned long *lookupflags) 4613 + { 4614 + struct gpio_desc *desc; 4615 + 4616 + desc = gpiod_find_by_fwnode(fwnode, consumer, con_id, idx, flags, lookupflags); 4617 + if (gpiod_not_found(desc) && !IS_ERR_OR_NULL(fwnode)) 4618 + desc = gpiod_find_by_fwnode(fwnode->secondary, consumer, con_id, 4619 + idx, flags, lookupflags); 4620 + 4621 + return desc; 4622 + } 4623 + 4607 4624 struct gpio_desc *gpiod_find_and_request(struct device *consumer, 4608 4625 struct fwnode_handle *fwnode, 4609 4626 const char *con_id, ··· 4639 4622 int ret = 0; 4640 4623 4641 4624 scoped_guard(srcu, &gpio_devices_srcu) { 4642 - desc = gpiod_find_by_fwnode(fwnode, consumer, con_id, idx, 4643 - &flags, &lookupflags); 4625 + desc = gpiod_fwnode_lookup(fwnode, consumer, con_id, idx, 4626 + &flags, &lookupflags); 4644 4627 if (gpiod_not_found(desc) && platform_lookup_allowed) { 4645 4628 /* 4646 4629 * Either we are not using DT or ACPI, or their lookup