mirror of https://gitee.com/openkylin/linux.git
gpio: Move irqdomain into struct gpio_irq_chip
In order to consolidate the multiple ways to associate an IRQ chip with a GPIO chip, move more fields into the new struct gpio_irq_chip. Signed-off-by: Thierry Reding <treding@nvidia.com> Acked-by: Grygorii Strashko <grygorii.strashko@ti.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
da80ff81a8
commit
f0fbe7bce7
|
@ -254,7 +254,7 @@ GPIO irqchips usually fall in one of two categories:
|
|||
static irqreturn_t omap_gpio_irq_handler(int irq, void *gpiobank)
|
||||
unsigned long wa_lock_flags;
|
||||
raw_spin_lock_irqsave(&bank->wa_lock, wa_lock_flags);
|
||||
generic_handle_irq(irq_find_mapping(bank->chip.irqdomain, bit));
|
||||
generic_handle_irq(irq_find_mapping(bank->chip.irq.domain, bit));
|
||||
raw_spin_unlock_irqrestore(&bank->wa_lock, wa_lock_flags);
|
||||
|
||||
* GENERIC CHAINED GPIO irqchips: these are the same as "CHAINED GPIO irqchips",
|
||||
|
|
|
@ -113,7 +113,7 @@ static irqreturn_t bcma_gpio_irq_handler(int irq, void *dev_id)
|
|||
return IRQ_NONE;
|
||||
|
||||
for_each_set_bit(gpio, &irqs, gc->ngpio)
|
||||
generic_handle_irq(irq_find_mapping(gc->irqdomain, gpio));
|
||||
generic_handle_irq(irq_find_mapping(gc->irq.domain, gpio));
|
||||
bcma_chipco_gpio_polarity(cc, irqs, val & irqs);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
|
|
|
@ -326,7 +326,7 @@ static irqreturn_t dio48e_irq_handler(int irq, void *dev_id)
|
|||
unsigned long gpio;
|
||||
|
||||
for_each_set_bit(gpio, &irq_mask, 2)
|
||||
generic_handle_irq(irq_find_mapping(chip->irqdomain,
|
||||
generic_handle_irq(irq_find_mapping(chip->irq.domain,
|
||||
19 + gpio*24));
|
||||
|
||||
raw_spin_lock(&dio48egpio->lock);
|
||||
|
|
|
@ -209,7 +209,7 @@ static irqreturn_t idi_48_irq_handler(int irq, void *dev_id)
|
|||
for_each_set_bit(bit_num, &irq_mask, 8) {
|
||||
gpio = bit_num + boundary * 8;
|
||||
|
||||
generic_handle_irq(irq_find_mapping(chip->irqdomain,
|
||||
generic_handle_irq(irq_find_mapping(chip->irq.domain,
|
||||
gpio));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -199,7 +199,7 @@ static irqreturn_t idio_16_irq_handler(int irq, void *dev_id)
|
|||
int gpio;
|
||||
|
||||
for_each_set_bit(gpio, &idio16gpio->irq_mask, chip->ngpio)
|
||||
generic_handle_irq(irq_find_mapping(chip->irqdomain, gpio));
|
||||
generic_handle_irq(irq_find_mapping(chip->irq.domain, gpio));
|
||||
|
||||
raw_spin_lock(&idio16gpio->lock);
|
||||
|
||||
|
|
|
@ -320,7 +320,7 @@ static irqreturn_t adnp_irq(int irq, void *data)
|
|||
|
||||
for_each_set_bit(bit, &pending, 8) {
|
||||
unsigned int child_irq;
|
||||
child_irq = irq_find_mapping(adnp->gpio.irqdomain,
|
||||
child_irq = irq_find_mapping(adnp->gpio.irq.domain,
|
||||
base + bit);
|
||||
handle_nested_irq(child_irq);
|
||||
}
|
||||
|
|
|
@ -211,7 +211,7 @@ static void altera_gpio_irq_edge_handler(struct irq_desc *desc)
|
|||
altera_gc = gpiochip_get_data(irq_desc_get_handler_data(desc));
|
||||
chip = irq_desc_get_chip(desc);
|
||||
mm_gc = &altera_gc->mmchip;
|
||||
irqdomain = altera_gc->mmchip.gc.irqdomain;
|
||||
irqdomain = altera_gc->mmchip.gc.irq.domain;
|
||||
|
||||
chained_irq_enter(chip, desc);
|
||||
|
||||
|
@ -239,7 +239,7 @@ static void altera_gpio_irq_leveL_high_handler(struct irq_desc *desc)
|
|||
altera_gc = gpiochip_get_data(irq_desc_get_handler_data(desc));
|
||||
chip = irq_desc_get_chip(desc);
|
||||
mm_gc = &altera_gc->mmchip;
|
||||
irqdomain = altera_gc->mmchip.gc.irqdomain;
|
||||
irqdomain = altera_gc->mmchip.gc.irq.domain;
|
||||
|
||||
chained_irq_enter(chip, desc);
|
||||
|
||||
|
|
|
@ -469,7 +469,7 @@ static void aspeed_gpio_irq_handler(struct irq_desc *desc)
|
|||
reg = ioread32(bank_irq_reg(data, bank, GPIO_IRQ_STATUS));
|
||||
|
||||
for_each_set_bit(p, ®, 32) {
|
||||
girq = irq_find_mapping(gc->irqdomain, i * 32 + p);
|
||||
girq = irq_find_mapping(gc->irq.domain, i * 32 + p);
|
||||
generic_handle_irq(girq);
|
||||
}
|
||||
|
||||
|
|
|
@ -209,7 +209,7 @@ static void ath79_gpio_irq_handler(struct irq_desc *desc)
|
|||
if (pending) {
|
||||
for_each_set_bit(irq, &pending, gc->ngpio)
|
||||
generic_handle_irq(
|
||||
irq_linear_revmap(gc->irqdomain, irq));
|
||||
irq_linear_revmap(gc->irq.domain, irq));
|
||||
}
|
||||
|
||||
chained_irq_exit(irqchip, desc);
|
||||
|
|
|
@ -295,7 +295,7 @@ static irqreturn_t crystalcove_gpio_irq_handler(int irq, void *data)
|
|||
|
||||
for (gpio = 0; gpio < CRYSTALCOVE_GPIO_NUM; gpio++) {
|
||||
if (pending & BIT(gpio)) {
|
||||
virq = irq_find_mapping(cg->chip.irqdomain, gpio);
|
||||
virq = irq_find_mapping(cg->chip.irq.domain, gpio);
|
||||
handle_nested_irq(virq);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -420,7 +420,7 @@ static void dln2_gpio_event(struct platform_device *pdev, u16 echo,
|
|||
return;
|
||||
}
|
||||
|
||||
irq = irq_find_mapping(dln2->gpio.irqdomain, pin);
|
||||
irq = irq_find_mapping(dln2->gpio.irq.domain, pin);
|
||||
if (!irq) {
|
||||
dev_err(dln2->gpio.parent, "pin %d not mapped to IRQ\n", pin);
|
||||
return;
|
||||
|
|
|
@ -149,7 +149,7 @@ static void ftgpio_gpio_irq_handler(struct irq_desc *desc)
|
|||
stat = readl(g->base + GPIO_INT_STAT);
|
||||
if (stat)
|
||||
for_each_set_bit(offset, &stat, gc->ngpio)
|
||||
generic_handle_irq(irq_find_mapping(gc->irqdomain,
|
||||
generic_handle_irq(irq_find_mapping(gc->irq.domain,
|
||||
offset));
|
||||
|
||||
chained_irq_exit(irqchip, desc);
|
||||
|
|
|
@ -242,7 +242,7 @@ static void ingenic_gpio_irq_handler(struct irq_desc *desc)
|
|||
flag = gpio_ingenic_read_reg(jzgc, JZ4740_GPIO_FLAG);
|
||||
|
||||
for_each_set_bit(i, &flag, 32)
|
||||
generic_handle_irq(irq_linear_revmap(gc->irqdomain, i));
|
||||
generic_handle_irq(irq_linear_revmap(gc->irq.domain, i));
|
||||
chained_irq_exit(irq_chip, desc);
|
||||
}
|
||||
|
||||
|
|
|
@ -295,7 +295,7 @@ static void intel_mid_irq_handler(struct irq_desc *desc)
|
|||
mask = BIT(gpio);
|
||||
/* Clear before handling so we can't lose an edge */
|
||||
writel(mask, gedr);
|
||||
generic_handle_irq(irq_find_mapping(gc->irqdomain,
|
||||
generic_handle_irq(irq_find_mapping(gc->irq.domain,
|
||||
base + gpio));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -255,7 +255,7 @@ static void lp_gpio_irq_handler(struct irq_desc *desc)
|
|||
mask = BIT(pin);
|
||||
/* Clear before handling so we don't lose an edge */
|
||||
outl(mask, reg);
|
||||
irq = irq_find_mapping(lg->chip.irqdomain, base + pin);
|
||||
irq = irq_find_mapping(lg->chip.irq.domain, base + pin);
|
||||
generic_handle_irq(irq);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -486,7 +486,7 @@ static irqreturn_t max732x_irq_handler(int irq, void *devid)
|
|||
|
||||
do {
|
||||
level = __ffs(pending);
|
||||
handle_nested_irq(irq_find_mapping(chip->gpio_chip.irqdomain,
|
||||
handle_nested_irq(irq_find_mapping(chip->gpio_chip.irq.domain,
|
||||
level));
|
||||
|
||||
pending &= ~(1 << level);
|
||||
|
|
|
@ -357,7 +357,7 @@ static void mrfld_irq_handler(struct irq_desc *desc)
|
|||
for_each_set_bit(gpio, &pending, 32) {
|
||||
unsigned int irq;
|
||||
|
||||
irq = irq_find_mapping(gc->irqdomain, base + gpio);
|
||||
irq = irq_find_mapping(gc->irq.domain, base + gpio);
|
||||
generic_handle_irq(irq);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -733,7 +733,7 @@ static irqreturn_t omap_gpio_irq_handler(int irq, void *gpiobank)
|
|||
|
||||
raw_spin_lock_irqsave(&bank->wa_lock, wa_lock_flags);
|
||||
|
||||
generic_handle_irq(irq_find_mapping(bank->chip.irqdomain,
|
||||
generic_handle_irq(irq_find_mapping(bank->chip.irq.domain,
|
||||
bit));
|
||||
|
||||
raw_spin_unlock_irqrestore(&bank->wa_lock,
|
||||
|
|
|
@ -608,7 +608,7 @@ static irqreturn_t pca953x_irq_handler(int irq, void *devid)
|
|||
for (i = 0; i < NBANK(chip); i++) {
|
||||
while (pending[i]) {
|
||||
level = __ffs(pending[i]);
|
||||
handle_nested_irq(irq_find_mapping(chip->gpio_chip.irqdomain,
|
||||
handle_nested_irq(irq_find_mapping(chip->gpio_chip.irq.domain,
|
||||
level + (BANK_SZ * i)));
|
||||
pending[i] &= ~(1 << level);
|
||||
nhandled++;
|
||||
|
|
|
@ -196,7 +196,7 @@ static irqreturn_t pcf857x_irq(int irq, void *data)
|
|||
mutex_unlock(&gpio->lock);
|
||||
|
||||
for_each_set_bit(i, &change, gpio->chip.ngpio)
|
||||
handle_nested_irq(irq_find_mapping(gpio->chip.irqdomain, i));
|
||||
handle_nested_irq(irq_find_mapping(gpio->chip.irq.domain, i));
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
|
|
@ -240,7 +240,7 @@ static irqreturn_t idio_16_irq_handler(int irq, void *dev_id)
|
|||
return IRQ_NONE;
|
||||
|
||||
for_each_set_bit(gpio, &idio16gpio->irq_mask, chip->ngpio)
|
||||
generic_handle_irq(irq_find_mapping(chip->irqdomain, gpio));
|
||||
generic_handle_irq(irq_find_mapping(chip->irq.domain, gpio));
|
||||
|
||||
raw_spin_lock(&idio16gpio->lock);
|
||||
|
||||
|
|
|
@ -221,7 +221,7 @@ static void pl061_irq_handler(struct irq_desc *desc)
|
|||
pending = readb(pl061->base + GPIOMIS);
|
||||
if (pending) {
|
||||
for_each_set_bit(offset, &pending, PL061_GPIO_NR)
|
||||
generic_handle_irq(irq_find_mapping(gc->irqdomain,
|
||||
generic_handle_irq(irq_find_mapping(gc->irq.domain,
|
||||
offset));
|
||||
}
|
||||
|
||||
|
|
|
@ -207,7 +207,7 @@ static irqreturn_t gpio_rcar_irq_handler(int irq, void *dev_id)
|
|||
gpio_rcar_read(p, INTMSK))) {
|
||||
offset = __ffs(pending);
|
||||
gpio_rcar_write(p, INTCLR, BIT(offset));
|
||||
generic_handle_irq(irq_find_mapping(p->gpio_chip.irqdomain,
|
||||
generic_handle_irq(irq_find_mapping(p->gpio_chip.irq.domain,
|
||||
offset));
|
||||
irqs_handled++;
|
||||
}
|
||||
|
|
|
@ -103,8 +103,8 @@ static int gpio_reg_to_irq(struct gpio_chip *gc, unsigned offset)
|
|||
struct gpio_reg *r = to_gpio_reg(gc);
|
||||
int irq = r->irqs[offset];
|
||||
|
||||
if (irq >= 0 && r->irqdomain)
|
||||
irq = irq_find_mapping(r->irqdomain, irq);
|
||||
if (irq >= 0 && r->irq.domain)
|
||||
irq = irq_find_mapping(r->irq.domain, irq);
|
||||
|
||||
return irq;
|
||||
}
|
||||
|
|
|
@ -397,7 +397,7 @@ static irqreturn_t stmpe_gpio_irq(int irq, void *dev)
|
|||
while (stat) {
|
||||
int bit = __ffs(stat);
|
||||
int line = bank * 8 + bit;
|
||||
int child_irq = irq_find_mapping(stmpe_gpio->chip.irqdomain,
|
||||
int child_irq = irq_find_mapping(stmpe_gpio->chip.irq.domain,
|
||||
line);
|
||||
|
||||
handle_nested_irq(child_irq);
|
||||
|
|
|
@ -268,7 +268,7 @@ static irqreturn_t tc3589x_gpio_irq(int irq, void *dev)
|
|||
while (stat) {
|
||||
int bit = __ffs(stat);
|
||||
int line = i * 8 + bit;
|
||||
int irq = irq_find_mapping(tc3589x_gpio->chip.irqdomain,
|
||||
int irq = irq_find_mapping(tc3589x_gpio->chip.irq.domain,
|
||||
line);
|
||||
|
||||
handle_nested_irq(irq);
|
||||
|
|
|
@ -160,7 +160,7 @@ static void vf610_gpio_irq_handler(struct irq_desc *desc)
|
|||
for_each_set_bit(pin, &irq_isfr, VF610_GPIO_PER_PORT) {
|
||||
vf610_gpio_writel(BIT(pin), port->base + PORT_ISFR);
|
||||
|
||||
generic_handle_irq(irq_find_mapping(port->gc.irqdomain, pin));
|
||||
generic_handle_irq(irq_find_mapping(port->gc.irq.domain, pin));
|
||||
}
|
||||
|
||||
chained_irq_exit(chip, desc);
|
||||
|
|
|
@ -350,7 +350,7 @@ static irqreturn_t wcove_gpio_irq_handler(int irq, void *data)
|
|||
offset = (gpio > GROUP0_NR_IRQS) ? 1 : 0;
|
||||
mask = (offset == 1) ? BIT(gpio - GROUP0_NR_IRQS) :
|
||||
BIT(gpio);
|
||||
virq = irq_find_mapping(wg->chip.irqdomain, gpio);
|
||||
virq = irq_find_mapping(wg->chip.irq.domain, gpio);
|
||||
handle_nested_irq(virq);
|
||||
regmap_update_bits(wg->regmap, IRQ_STATUS_BASE + offset,
|
||||
mask, mask);
|
||||
|
|
|
@ -332,7 +332,7 @@ static irqreturn_t ws16c48_irq_handler(int irq, void *dev_id)
|
|||
int_id = inb(ws16c48gpio->base + 8 + port);
|
||||
for_each_set_bit(gpio, &int_id, 8)
|
||||
generic_handle_irq(irq_find_mapping(
|
||||
chip->irqdomain, gpio + 8*port));
|
||||
chip->irq.domain, gpio + 8*port));
|
||||
}
|
||||
|
||||
int_pending = inb(ws16c48gpio->base + 6) & 0x7;
|
||||
|
|
|
@ -287,7 +287,7 @@ static int xgene_gpio_sb_probe(struct platform_device *pdev)
|
|||
if (!priv->irq_domain)
|
||||
return -ENODEV;
|
||||
|
||||
priv->gc.irqdomain = priv->irq_domain;
|
||||
priv->gc.irq.domain = priv->irq_domain;
|
||||
|
||||
ret = devm_gpiochip_add_data(&pdev->dev, &priv->gc, priv);
|
||||
if (ret) {
|
||||
|
|
|
@ -225,7 +225,7 @@ static void xlp_gpio_generic_handler(struct irq_desc *desc)
|
|||
|
||||
if (gpio_stat & BIT(gpio % XLP_GPIO_REGSZ))
|
||||
generic_handle_irq(irq_find_mapping(
|
||||
priv->chip.irqdomain, gpio));
|
||||
priv->chip.irq.domain, gpio));
|
||||
}
|
||||
chained_irq_exit(irqchip, desc);
|
||||
}
|
||||
|
|
|
@ -170,7 +170,7 @@ static void zx_irq_handler(struct irq_desc *desc)
|
|||
writew_relaxed(pending, chip->base + ZX_GPIO_IC);
|
||||
if (pending) {
|
||||
for_each_set_bit(offset, &pending, ZX_GPIO_NR)
|
||||
generic_handle_irq(irq_find_mapping(gc->irqdomain,
|
||||
generic_handle_irq(irq_find_mapping(gc->irq.domain,
|
||||
offset));
|
||||
}
|
||||
|
||||
|
|
|
@ -562,7 +562,7 @@ static void zynq_gpio_handle_bank_irq(struct zynq_gpio *gpio,
|
|||
unsigned long pending)
|
||||
{
|
||||
unsigned int bank_offset = gpio->p_data->bank_min[bank_num];
|
||||
struct irq_domain *irqdomain = gpio->chip.irqdomain;
|
||||
struct irq_domain *irqdomain = gpio->chip.irq.domain;
|
||||
int offset;
|
||||
|
||||
if (!pending)
|
||||
|
|
|
@ -1550,7 +1550,7 @@ static void gpiochip_set_cascaded_irqchip(struct gpio_chip *gpiochip,
|
|||
{
|
||||
unsigned int offset;
|
||||
|
||||
if (!gpiochip->irqdomain) {
|
||||
if (!gpiochip->irq.domain) {
|
||||
chip_err(gpiochip, "called %s before setting up irqchip\n",
|
||||
__func__);
|
||||
return;
|
||||
|
@ -1577,7 +1577,7 @@ static void gpiochip_set_cascaded_irqchip(struct gpio_chip *gpiochip,
|
|||
for (offset = 0; offset < gpiochip->ngpio; offset++) {
|
||||
if (!gpiochip_irqchip_irq_valid(gpiochip, offset))
|
||||
continue;
|
||||
irq_set_parent(irq_find_mapping(gpiochip->irqdomain, offset),
|
||||
irq_set_parent(irq_find_mapping(gpiochip->irq.domain, offset),
|
||||
parent_irq);
|
||||
}
|
||||
}
|
||||
|
@ -1708,7 +1708,7 @@ static int gpiochip_to_irq(struct gpio_chip *chip, unsigned offset)
|
|||
{
|
||||
if (!gpiochip_irqchip_irq_valid(chip, offset))
|
||||
return -ENXIO;
|
||||
return irq_create_mapping(chip->irqdomain, offset);
|
||||
return irq_create_mapping(chip->irq.domain, offset);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1719,7 +1719,7 @@ static int gpiochip_to_irq(struct gpio_chip *chip, unsigned offset)
|
|||
*/
|
||||
static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip)
|
||||
{
|
||||
unsigned int offset;
|
||||
unsigned int offset, irq;
|
||||
|
||||
acpi_gpiochip_free_interrupts(gpiochip);
|
||||
|
||||
|
@ -1729,14 +1729,16 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip)
|
|||
}
|
||||
|
||||
/* Remove all IRQ mappings and delete the domain */
|
||||
if (gpiochip->irqdomain) {
|
||||
if (gpiochip->irq.domain) {
|
||||
for (offset = 0; offset < gpiochip->ngpio; offset++) {
|
||||
if (!gpiochip_irqchip_irq_valid(gpiochip, offset))
|
||||
continue;
|
||||
irq_dispose_mapping(
|
||||
irq_find_mapping(gpiochip->irqdomain, offset));
|
||||
|
||||
irq = irq_find_mapping(gpiochip->irq.domain, offset);
|
||||
irq_dispose_mapping(irq);
|
||||
}
|
||||
irq_domain_remove(gpiochip->irqdomain);
|
||||
|
||||
irq_domain_remove(gpiochip->irq.domain);
|
||||
}
|
||||
|
||||
if (gpiochip->irq.chip) {
|
||||
|
@ -1822,10 +1824,10 @@ int gpiochip_irqchip_add_key(struct gpio_chip *gpiochip,
|
|||
gpiochip->irq_default_type = type;
|
||||
gpiochip->to_irq = gpiochip_to_irq;
|
||||
gpiochip->lock_key = lock_key;
|
||||
gpiochip->irqdomain = irq_domain_add_simple(of_node,
|
||||
gpiochip->irq.domain = irq_domain_add_simple(of_node,
|
||||
gpiochip->ngpio, first_irq,
|
||||
&gpiochip_domain_ops, gpiochip);
|
||||
if (!gpiochip->irqdomain) {
|
||||
if (!gpiochip->irq.domain) {
|
||||
gpiochip->irq.chip = NULL;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
@ -383,7 +383,7 @@ static void bcm2835_gpio_irq_handle_bank(struct bcm2835_pinctrl *pc,
|
|||
/* FIXME: no clue why the code looks up the type here */
|
||||
type = pc->irq_type[gpio];
|
||||
|
||||
generic_handle_irq(irq_linear_revmap(pc->gpio_chip.irqdomain,
|
||||
generic_handle_irq(irq_linear_revmap(pc->gpio_chip.irq.irqdomain,
|
||||
gpio));
|
||||
}
|
||||
}
|
||||
|
@ -665,7 +665,7 @@ static void bcm2835_pctl_pin_dbg_show(struct pinctrl_dev *pctldev,
|
|||
enum bcm2835_fsel fsel = bcm2835_pinctrl_fsel_get(pc, offset);
|
||||
const char *fname = bcm2835_functions[fsel];
|
||||
int value = bcm2835_gpio_get_bit(pc, GPLEV0, offset);
|
||||
int irq = irq_find_mapping(chip->irqdomain, offset);
|
||||
int irq = irq_find_mapping(chip->irq.domain, offset);
|
||||
|
||||
seq_printf(s, "function %s in %s; irq %d (%s)",
|
||||
fname, value ? "hi" : "lo",
|
||||
|
|
|
@ -172,7 +172,7 @@ static void iproc_gpio_irq_handler(struct irq_desc *desc)
|
|||
|
||||
for_each_set_bit(bit, &val, NGPIOS_PER_BANK) {
|
||||
unsigned pin = NGPIOS_PER_BANK * i + bit;
|
||||
int child_irq = irq_find_mapping(gc->irqdomain, pin);
|
||||
int child_irq = irq_find_mapping(gc->irq.domain, pin);
|
||||
|
||||
/*
|
||||
* Clear the interrupt before invoking the
|
||||
|
|
|
@ -1627,7 +1627,7 @@ static void byt_gpio_irq_handler(struct irq_desc *desc)
|
|||
pending = readl(reg);
|
||||
raw_spin_unlock(&vg->lock);
|
||||
for_each_set_bit(pin, &pending, 32) {
|
||||
virq = irq_find_mapping(vg->chip.irqdomain, base + pin);
|
||||
virq = irq_find_mapping(vg->chip.irq.domain, base + pin);
|
||||
generic_handle_irq(virq);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1523,7 +1523,7 @@ static void chv_gpio_irq_handler(struct irq_desc *desc)
|
|||
unsigned irq, offset;
|
||||
|
||||
offset = pctrl->intr_lines[intr_line];
|
||||
irq = irq_find_mapping(gc->irqdomain, offset);
|
||||
irq = irq_find_mapping(gc->irq.domain, offset);
|
||||
generic_handle_irq(irq);
|
||||
}
|
||||
|
||||
|
|
|
@ -1005,7 +1005,7 @@ static irqreturn_t intel_gpio_community_irq_handler(struct intel_pinctrl *pctrl,
|
|||
if (padno >= community->npins)
|
||||
break;
|
||||
|
||||
irq = irq_find_mapping(gc->irqdomain,
|
||||
irq = irq_find_mapping(gc->irq.domain,
|
||||
community->pin_base + padno);
|
||||
generic_handle_irq(irq);
|
||||
|
||||
|
|
|
@ -592,7 +592,7 @@ static void armada_37xx_irq_handler(struct irq_desc *desc)
|
|||
struct gpio_chip *gc = irq_desc_get_handler_data(desc);
|
||||
struct irq_chip *chip = irq_desc_get_chip(desc);
|
||||
struct armada_37xx_pinctrl *info = gpiochip_get_data(gc);
|
||||
struct irq_domain *d = gc->irqdomain;
|
||||
struct irq_domain *d = gc->irq.domain;
|
||||
int i;
|
||||
|
||||
chained_irq_enter(chip, desc);
|
||||
|
|
|
@ -413,7 +413,7 @@ nmk_gpio_disable_lazy_irq(struct nmk_gpio_chip *nmk_chip, unsigned offset)
|
|||
u32 falling = nmk_chip->fimsc & BIT(offset);
|
||||
u32 rising = nmk_chip->rimsc & BIT(offset);
|
||||
int gpio = nmk_chip->chip.base + offset;
|
||||
int irq = irq_find_mapping(nmk_chip->chip.irqdomain, offset);
|
||||
int irq = irq_find_mapping(nmk_chip->chip.irq.domain, offset);
|
||||
struct irq_data *d = irq_get_irq_data(irq);
|
||||
|
||||
if (!rising && !falling)
|
||||
|
@ -815,7 +815,7 @@ static void __nmk_gpio_irq_handler(struct irq_desc *desc, u32 status)
|
|||
while (status) {
|
||||
int bit = __ffs(status);
|
||||
|
||||
generic_handle_irq(irq_find_mapping(chip->irqdomain, bit));
|
||||
generic_handle_irq(irq_find_mapping(chip->irq.domain, bit));
|
||||
status &= ~BIT(bit);
|
||||
}
|
||||
|
||||
|
|
|
@ -532,7 +532,7 @@ static irqreturn_t amd_gpio_irq_handler(int irq, void *dev_id)
|
|||
regval = readl(regs + i);
|
||||
if (!(regval & PIN_IRQ_PENDING))
|
||||
continue;
|
||||
irq = irq_find_mapping(gc->irqdomain, irqnr + i);
|
||||
irq = irq_find_mapping(gc->irq.domain, irqnr + i);
|
||||
generic_handle_irq(irq);
|
||||
/* Clear interrupt */
|
||||
writel(regval, regs + i);
|
||||
|
|
|
@ -1603,7 +1603,7 @@ static void gpio_irq_handler(struct irq_desc *desc)
|
|||
|
||||
for_each_set_bit(n, &isr, BITS_PER_LONG) {
|
||||
generic_handle_irq(irq_find_mapping(
|
||||
gpio_chip->irqdomain, n));
|
||||
gpio_chip->irq.domain, n));
|
||||
}
|
||||
}
|
||||
chained_irq_exit(chip, desc);
|
||||
|
|
|
@ -517,7 +517,7 @@ static void u300_gpio_irq_handler(struct irq_desc *desc)
|
|||
|
||||
for_each_set_bit(irqoffset, &val, U300_GPIO_PINS_PER_PORT) {
|
||||
int offset = pinoffset + irqoffset;
|
||||
int pin_irq = irq_find_mapping(chip->irqdomain, offset);
|
||||
int pin_irq = irq_find_mapping(chip->irq.domain, offset);
|
||||
|
||||
dev_dbg(gpio->dev, "GPIO IRQ %d on pin %d\n",
|
||||
pin_irq, offset);
|
||||
|
|
|
@ -537,7 +537,7 @@ static irqreturn_t mcp23s08_irq(int irq, void *data)
|
|||
((gpio_bit_changed || intcap_changed) &&
|
||||
(BIT(i) & mcp->irq_fall) && !gpio_set) ||
|
||||
defval_changed) {
|
||||
child_irq = irq_find_mapping(mcp->chip.irqdomain, i);
|
||||
child_irq = irq_find_mapping(mcp->chip.irq.domain, i);
|
||||
handle_nested_irq(child_irq);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1064,7 +1064,7 @@ static void oxnas_gpio_irq_handler(struct irq_desc *desc)
|
|||
stat = readl(bank->reg_base + IRQ_PENDING);
|
||||
|
||||
for_each_set_bit(pin, &stat, BITS_PER_LONG)
|
||||
generic_handle_irq(irq_linear_revmap(gc->irqdomain, pin));
|
||||
generic_handle_irq(irq_linear_revmap(gc->irq.domain, pin));
|
||||
|
||||
chained_irq_exit(chip, desc);
|
||||
}
|
||||
|
|
|
@ -2106,7 +2106,7 @@ static void pic32_gpio_irq_handler(struct irq_desc *desc)
|
|||
pending = pic32_gpio_get_pending(gc, stat);
|
||||
|
||||
for_each_set_bit(pin, &pending, BITS_PER_LONG)
|
||||
generic_handle_irq(irq_linear_revmap(gc->irqdomain, pin));
|
||||
generic_handle_irq(irq_linear_revmap(gc->irq.domain, pin));
|
||||
|
||||
chained_irq_exit(chip, desc);
|
||||
}
|
||||
|
|
|
@ -1307,7 +1307,7 @@ static void pistachio_gpio_irq_handler(struct irq_desc *desc)
|
|||
pending = gpio_readl(bank, GPIO_INTERRUPT_STATUS) &
|
||||
gpio_readl(bank, GPIO_INTERRUPT_EN);
|
||||
for_each_set_bit(pin, &pending, 16)
|
||||
generic_handle_irq(irq_linear_revmap(gc->irqdomain, pin));
|
||||
generic_handle_irq(irq_linear_revmap(gc->irq.domain, pin));
|
||||
chained_irq_exit(chip, desc);
|
||||
}
|
||||
|
||||
|
|
|
@ -1408,7 +1408,7 @@ static void __gpio_irq_handler(struct st_gpio_bank *bank)
|
|||
continue;
|
||||
}
|
||||
|
||||
generic_handle_irq(irq_find_mapping(bank->gpio_chip.irqdomain, n));
|
||||
generic_handle_irq(irq_find_mapping(bank->gpio_chip.irq.domain, n));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -561,7 +561,7 @@ static irqreturn_t sx150x_irq_thread_fn(int irq, void *dev_id)
|
|||
|
||||
status = val;
|
||||
for_each_set_bit(n, &status, pctl->data->ngpios)
|
||||
handle_nested_irq(irq_find_mapping(pctl->gpio.irqdomain, n));
|
||||
handle_nested_irq(irq_find_mapping(pctl->gpio.irq.domain, n));
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
|
|
@ -795,7 +795,7 @@ static void msm_gpio_irq_handler(struct irq_desc *desc)
|
|||
g = &pctrl->soc->groups[i];
|
||||
val = readl(pctrl->regs + g->intr_status_reg);
|
||||
if (val & BIT(g->intr_status_bit)) {
|
||||
irq_pin = irq_find_mapping(gc->irqdomain, i);
|
||||
irq_pin = irq_find_mapping(gc->irq.domain, i);
|
||||
generic_handle_irq(irq_pin);
|
||||
handled++;
|
||||
}
|
||||
|
|
|
@ -5820,7 +5820,7 @@ static void atlas7_gpio_handle_irq(struct irq_desc *desc)
|
|||
__func__, gc->label,
|
||||
bank->gpio_offset + pin_in_bank);
|
||||
generic_handle_irq(
|
||||
irq_find_mapping(gc->irqdomain,
|
||||
irq_find_mapping(gc->irq.domain,
|
||||
bank->gpio_offset + pin_in_bank));
|
||||
}
|
||||
|
||||
|
|
|
@ -587,7 +587,7 @@ static void sirfsoc_gpio_handle_irq(struct irq_desc *desc)
|
|||
if ((status & 0x1) && (ctrl & SIRFSOC_GPIO_CTL_INTR_EN_MASK)) {
|
||||
pr_debug("%s: gpio id %d idx %d happens\n",
|
||||
__func__, bank->id, idx);
|
||||
generic_handle_irq(irq_find_mapping(gc->irqdomain, idx +
|
||||
generic_handle_irq(irq_find_mapping(gc->irq.domain, idx +
|
||||
bank->id * SIRFSOC_GPIO_BANK_SIZE));
|
||||
}
|
||||
|
||||
|
|
|
@ -401,7 +401,7 @@ static void plgpio_irq_handler(struct irq_desc *desc)
|
|||
/* get correct irq line number */
|
||||
pin = i * MAX_GPIO_PER_REG + pin;
|
||||
generic_handle_irq(
|
||||
irq_find_mapping(gc->irqdomain, pin));
|
||||
irq_find_mapping(gc->irq.domain, pin));
|
||||
}
|
||||
}
|
||||
chained_irq_exit(irqchip, desc);
|
||||
|
|
|
@ -119,7 +119,7 @@ static irqreturn_t int0002_irq(int irq, void *data)
|
|||
if (!(gpe_sts_reg & GPE0A_PME_B0_STS_BIT))
|
||||
return IRQ_NONE;
|
||||
|
||||
generic_handle_irq(irq_find_mapping(chip->irqdomain,
|
||||
generic_handle_irq(irq_find_mapping(chip->irq.domain,
|
||||
GPE0A_PME_B0_VIRT_GPIO_PIN));
|
||||
|
||||
pm_system_wakeup();
|
||||
|
|
|
@ -31,6 +31,14 @@ struct gpio_irq_chip {
|
|||
*/
|
||||
struct irq_chip *chip;
|
||||
|
||||
/**
|
||||
* @domain:
|
||||
*
|
||||
* Interrupt translation domain; responsible for mapping between GPIO
|
||||
* hwirq number and Linux IRQ number.
|
||||
*/
|
||||
struct irq_domain *domain;
|
||||
|
||||
/**
|
||||
* @domain_ops:
|
||||
*
|
||||
|
@ -124,8 +132,6 @@ static inline struct gpio_irq_chip *to_gpio_irq_chip(struct irq_chip *chip)
|
|||
* safely.
|
||||
* @bgpio_dir: shadowed direction register for generic GPIO to clear/set
|
||||
* direction safely.
|
||||
* @irqdomain: Interrupt translation domain; responsible for mapping
|
||||
* between GPIO hwirq number and linux irq number
|
||||
* @irq_handler: the irq handler to use (often a predefined irq core function)
|
||||
* for GPIO IRQs, provided by GPIO driver
|
||||
* @irq_default_type: default IRQ triggering type applied during GPIO driver
|
||||
|
@ -208,7 +214,6 @@ struct gpio_chip {
|
|||
* With CONFIG_GPIOLIB_IRQCHIP we get an irqchip inside the gpiolib
|
||||
* to handle IRQs for most practical cases.
|
||||
*/
|
||||
struct irq_domain *irqdomain;
|
||||
irq_flow_handler_t irq_handler;
|
||||
unsigned int irq_default_type;
|
||||
unsigned int irq_chained_parent;
|
||||
|
|
Loading…
Reference in New Issue