Commit 8323f3a6 authored by Guixin Liu's avatar Guixin Liu Committed by Bartosz Golaszewski
Browse files

gpio: tegra186: fix resource handling in ACPI probe path



When the Tegra186 GPIO controller is probed through ACPI matching,
the driver emits two error messages during probing:
  "tegra186-gpio NVDA0508:00: invalid resource (null)"
  "tegra186-gpio NVDA0508:00: invalid resource (null)"

Fix this by getting resource first and then do the ioremap.

Fixes: 2606e7c9 ("gpio: tegra186: Add ACPI support")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarGuixin Liu <kanie@linux.alibaba.com>
Link: https://lore.kernel.org/r/20250327032349.78809-1-kanie@linux.alibaba.com


Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
parent 0af2f6be
Loading
Loading
Loading
Loading
+14 −13
Original line number Diff line number Diff line
@@ -823,6 +823,7 @@ static int tegra186_gpio_probe(struct platform_device *pdev)
	struct gpio_irq_chip *irq;
	struct tegra_gpio *gpio;
	struct device_node *np;
	struct resource *res;
	char **names;
	int err;

@@ -842,19 +843,19 @@ static int tegra186_gpio_probe(struct platform_device *pdev)
	gpio->num_banks++;

	/* get register apertures */
	gpio->secure = devm_platform_ioremap_resource_byname(pdev, "security");
	if (IS_ERR(gpio->secure)) {
		gpio->secure = devm_platform_ioremap_resource(pdev, 0);
	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "security");
	if (!res)
		res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	gpio->secure = devm_ioremap_resource(&pdev->dev, res);
	if (IS_ERR(gpio->secure))
		return PTR_ERR(gpio->secure);
	}

	gpio->base = devm_platform_ioremap_resource_byname(pdev, "gpio");
	if (IS_ERR(gpio->base)) {
		gpio->base = devm_platform_ioremap_resource(pdev, 1);
	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "gpio");
	if (!res)
		res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
	gpio->base = devm_ioremap_resource(&pdev->dev, res);
	if (IS_ERR(gpio->base))
		return PTR_ERR(gpio->base);
	}

	err = platform_irq_count(pdev);
	if (err < 0)