Commit 551cb86c authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Linus Walleij
Browse files

gpio: dwapb: Remove unneeded has_irq member in struct dwapb_port_property



has_irq member of struct dwapb_port_property is used only in one place,
so, make it local test instead and remove from the structure.
This local test is using memchr_inv() which is quite efficient in comparison
to the original loop and possible little overhead can be neglected.

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tested-by: default avatarSerge Semin <fancer.lancer@gmail.com>
Acked-by: default avatarLee Jones <lee.jones@linaro.org>
Acked-by: default avatarSerge Semin <fancer.lancer@gmail.com>
Link: https://lore.kernel.org/r/20200519131233.59032-4-andriy.shevchenko@linux.intel.com


Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent aa90939d
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -366,6 +366,11 @@ static void dwapb_configure_irqs(struct dwapb_gpio *gpio,
	irq_hw_number_t hwirq;
	int err, i;

	if (memchr_inv(pp->irq, 0, sizeof(pp->irq)) == NULL) {
		dev_warn(gpio->dev, "no IRQ for port%d\n", pp->idx);
		return;
	}

	gpio->domain = irq_domain_create_linear(fwnode, ngpio,
						 &irq_generic_chip_ops, gpio);
	if (!gpio->domain)
@@ -501,7 +506,8 @@ static int dwapb_gpio_add_port(struct dwapb_gpio *gpio,
	if (pp->idx == 0)
		port->gc.set_config = dwapb_gpio_set_config;

	if (pp->has_irq)
	/* Only port A can provide interrupts in all configurations of the IP */
	if (pp->idx == 0)
		dwapb_configure_irqs(gpio, port, pp);

	err = gpiochip_add_data(&port->gc, port);
@@ -550,13 +556,7 @@ static void dwapb_get_irq(struct device *dev, struct fwnode_handle *fwnode,
			irq = platform_get_irq_optional(to_platform_device(dev), j);
		if (irq > 0)
			pp->irq[j] = irq;

		if (pp->irq[j])
			pp->has_irq = true;
	}

	if (!pp->has_irq)
		dev_warn(dev, "no irq for port%d\n", pp->idx);
}

static struct dwapb_platform_data *dwapb_gpio_get_pdata(struct device *dev)
+0 −1
Original line number Diff line number Diff line
@@ -216,7 +216,6 @@ static int intel_quark_gpio_setup(struct pci_dev *pdev, struct mfd_cell *cell)
	pdata->properties->ngpio	= INTEL_QUARK_MFD_NGPIO;
	pdata->properties->gpio_base	= INTEL_QUARK_MFD_GPIO_BASE;
	pdata->properties->irq[0]	= pdev->irq;
	pdata->properties->has_irq	= true;
	pdata->properties->irq_shared	= true;

	cell->platform_data = pdata;
+0 −1
Original line number Diff line number Diff line
@@ -12,7 +12,6 @@ struct dwapb_port_property {
	unsigned int	ngpio;
	unsigned int	gpio_base;
	int		irq[32];
	bool		has_irq;
	bool		irq_shared;
};