R3G's LEDs fail to initialize because one of them uses GPIO8 Hence, release the GPIO resources after PCIe initialization and properly release also in driver error path. Signed-off-by: Sergio Paracuellos <sergio.paracuellos@xxxxxxxxx> --- drivers/staging/mt7621-pci/pci-mt7621.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/drivers/staging/mt7621-pci/pci-mt7621.c b/drivers/staging/mt7621-pci/pci-mt7621.c index 5306a0dd769f..6ea284942b6f 100644 --- a/drivers/staging/mt7621-pci/pci-mt7621.c +++ b/drivers/staging/mt7621-pci/pci-mt7621.c @@ -482,6 +482,15 @@ static void mt7621_pcie_reset_ep_deassert(struct mt7621_pcie *pcie) mdelay(PERST_DELAY_US); } +static void mt7621_pcie_release_gpios(struct mt7621_pcie *pcie) +{ + struct mt7621_pcie_port *port; + + list_for_each_entry(port, &pcie->ports, list) + if (port->gpio_rst) + gpiod_put(port->gpio_rst); +} + static void mt7621_pcie_init_ports(struct mt7621_pcie *pcie) { struct device *dev = pcie->dev; @@ -681,7 +690,8 @@ static int mt7621_pci_probe(struct platform_device *pdev) err = mt7621_pcie_init_virtual_bridges(pcie); if (err) { dev_err(dev, "Nothing is connected in virtual bridges. Exiting..."); - return 0; + err = 0; + goto out_release_gpios; } mt7621_pcie_enable_ports(pcie); @@ -689,7 +699,7 @@ static int mt7621_pci_probe(struct platform_device *pdev) err = mt7621_pci_parse_request_of_pci_ranges(pcie); if (err) { dev_err(dev, "Error requesting pci resources from ranges"); - return err; + goto out_release_gpios; } setup_cm_memory_region(pcie); @@ -697,16 +707,19 @@ static int mt7621_pci_probe(struct platform_device *pdev) err = mt7621_pcie_request_resources(pcie, &res); if (err) { dev_err(dev, "Error requesting resources\n"); - return err; + goto out_release_gpios; } err = mt7621_pcie_register_host(bridge, &res); if (err) { dev_err(dev, "Error registering host\n"); - return err; + goto out_release_gpios; } - return 0; +out_release_gpios: + mt7621_pcie_release_gpios(pcie); + + return err; } static const struct of_device_id mt7621_pci_ids[] = { -- 2.25.1 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel