Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 80654a55 authored by Maulik Shah's avatar Maulik Shah
Browse files

pinctrl: qcom: Remove irq_disable callback from msmmgpio irqchip



The gpio can be marked for wakeup and drivers can invoke disable_irq()
durig suspend, in such cases non-lazy approch will also disable at HW
and such gpios will not wakeup from low power modes like suspend to RAM.

Removing irq_disable callback will allow gpio interrupts to lazy disable
from genirq.

Change-Id: I76ac0de5a5955c8490bb063cba763d391f4a0752
Signed-off-by: default avatarMaulik Shah <mkshah@codeaurora.org>
parent 2fedc6a3
Loading
Loading
Loading
Loading
+2 −29
Original line number Diff line number Diff line
@@ -778,33 +778,6 @@ static void msm_gpio_irq_unmask(struct irq_data *d)
	_msm_gpio_irq_unmask(d, false);
}

static void msm_gpio_irq_disable(struct irq_data *d)
{
	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
	struct msm_pinctrl *pctrl = gpiochip_get_data(gc);
	struct irq_data *dir_conn_data;
	irq_hw_number_t dir_conn_irq = 0;

	if (d->parent_data) {
		if (is_gpio_dual_edge(d, &dir_conn_irq)) {
			dir_conn_data = irq_get_irq_data(dir_conn_irq);
			if (!dir_conn_data)
				return;

			if (dir_conn_data->chip->irq_disable)
				dir_conn_data->chip->irq_disable(dir_conn_data);
			else
				dir_conn_data->chip->irq_mask(dir_conn_data);
		}
		irq_chip_disable_parent(d);
	}

	if (test_bit(d->hwirq, pctrl->wakeup_masked_irqs))
		return;

	_msm_gpio_irq_mask(d);
}

static void msm_gpio_irq_enable(struct irq_data *d)
{
	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
@@ -1342,7 +1315,6 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
	pctrl->irq_chip.name = "msmgpio";
	pctrl->irq_chip.irq_eoi	= irq_chip_eoi_parent;
	pctrl->irq_chip.irq_enable = msm_gpio_irq_enable;
	pctrl->irq_chip.irq_disable = msm_gpio_irq_disable;
	pctrl->irq_chip.irq_mask = msm_gpio_irq_mask;
	pctrl->irq_chip.irq_unmask = msm_gpio_irq_unmask;
	pctrl->irq_chip.irq_ack = msm_gpio_irq_ack;
@@ -1350,7 +1322,8 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
	pctrl->irq_chip.irq_set_wake = msm_gpio_irq_set_wake;
	pctrl->irq_chip.irq_set_affinity = msm_gpio_irq_set_affinity;
	pctrl->irq_chip.irq_set_vcpu_affinity = msm_gpio_irq_set_vcpu_affinity;

	pctrl->irq_chip.flags = IRQCHIP_MASK_ON_SUSPEND
				| IRQCHIP_SET_TYPE_MASKED;
	chip->irq.chip = &pctrl->irq_chip;
	chip->irq.handler = handle_edge_irq;
	chip->irq.default_type = IRQ_TYPE_NONE;