|
@@ -225,21 +225,21 @@ struct msm_gpio_chip msm_gpio_chips[] = {
|
|
#endif
|
|
#endif
|
|
};
|
|
};
|
|
|
|
|
|
-static void msm_gpio_irq_ack(unsigned int irq)
|
|
|
|
|
|
+static void msm_gpio_irq_ack(struct irq_data *d)
|
|
{
|
|
{
|
|
unsigned long irq_flags;
|
|
unsigned long irq_flags;
|
|
- struct msm_gpio_chip *msm_chip = get_irq_chip_data(irq);
|
|
|
|
|
|
+ struct msm_gpio_chip *msm_chip = irq_data_get_irq_chip_data(d);
|
|
spin_lock_irqsave(&msm_chip->lock, irq_flags);
|
|
spin_lock_irqsave(&msm_chip->lock, irq_flags);
|
|
msm_gpio_clear_detect_status(msm_chip,
|
|
msm_gpio_clear_detect_status(msm_chip,
|
|
- irq - gpio_to_irq(msm_chip->chip.base));
|
|
|
|
|
|
+ d->irq - gpio_to_irq(msm_chip->chip.base));
|
|
spin_unlock_irqrestore(&msm_chip->lock, irq_flags);
|
|
spin_unlock_irqrestore(&msm_chip->lock, irq_flags);
|
|
}
|
|
}
|
|
|
|
|
|
-static void msm_gpio_irq_mask(unsigned int irq)
|
|
|
|
|
|
+static void msm_gpio_irq_mask(struct irq_data *d)
|
|
{
|
|
{
|
|
unsigned long irq_flags;
|
|
unsigned long irq_flags;
|
|
- struct msm_gpio_chip *msm_chip = get_irq_chip_data(irq);
|
|
|
|
- unsigned offset = irq - gpio_to_irq(msm_chip->chip.base);
|
|
|
|
|
|
+ struct msm_gpio_chip *msm_chip = irq_data_get_irq_chip_data(d);
|
|
|
|
+ unsigned offset = d->irq - gpio_to_irq(msm_chip->chip.base);
|
|
|
|
|
|
spin_lock_irqsave(&msm_chip->lock, irq_flags);
|
|
spin_lock_irqsave(&msm_chip->lock, irq_flags);
|
|
/* level triggered interrupts are also latched */
|
|
/* level triggered interrupts are also latched */
|
|
@@ -250,11 +250,11 @@ static void msm_gpio_irq_mask(unsigned int irq)
|
|
spin_unlock_irqrestore(&msm_chip->lock, irq_flags);
|
|
spin_unlock_irqrestore(&msm_chip->lock, irq_flags);
|
|
}
|
|
}
|
|
|
|
|
|
-static void msm_gpio_irq_unmask(unsigned int irq)
|
|
|
|
|
|
+static void msm_gpio_irq_unmask(struct irq_data *d)
|
|
{
|
|
{
|
|
unsigned long irq_flags;
|
|
unsigned long irq_flags;
|
|
- struct msm_gpio_chip *msm_chip = get_irq_chip_data(irq);
|
|
|
|
- unsigned offset = irq - gpio_to_irq(msm_chip->chip.base);
|
|
|
|
|
|
+ struct msm_gpio_chip *msm_chip = irq_data_get_irq_chip_data(d);
|
|
|
|
+ unsigned offset = d->irq - gpio_to_irq(msm_chip->chip.base);
|
|
|
|
|
|
spin_lock_irqsave(&msm_chip->lock, irq_flags);
|
|
spin_lock_irqsave(&msm_chip->lock, irq_flags);
|
|
/* level triggered interrupts are also latched */
|
|
/* level triggered interrupts are also latched */
|
|
@@ -265,11 +265,11 @@ static void msm_gpio_irq_unmask(unsigned int irq)
|
|
spin_unlock_irqrestore(&msm_chip->lock, irq_flags);
|
|
spin_unlock_irqrestore(&msm_chip->lock, irq_flags);
|
|
}
|
|
}
|
|
|
|
|
|
-static int msm_gpio_irq_set_wake(unsigned int irq, unsigned int on)
|
|
|
|
|
|
+static int msm_gpio_irq_set_wake(struct irq_data *d, unsigned int on)
|
|
{
|
|
{
|
|
unsigned long irq_flags;
|
|
unsigned long irq_flags;
|
|
- struct msm_gpio_chip *msm_chip = get_irq_chip_data(irq);
|
|
|
|
- unsigned offset = irq - gpio_to_irq(msm_chip->chip.base);
|
|
|
|
|
|
+ struct msm_gpio_chip *msm_chip = irq_data_get_irq_chip_data(d);
|
|
|
|
+ unsigned offset = d->irq - gpio_to_irq(msm_chip->chip.base);
|
|
|
|
|
|
spin_lock_irqsave(&msm_chip->lock, irq_flags);
|
|
spin_lock_irqsave(&msm_chip->lock, irq_flags);
|
|
|
|
|
|
@@ -282,21 +282,21 @@ static int msm_gpio_irq_set_wake(unsigned int irq, unsigned int on)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int msm_gpio_irq_set_type(unsigned int irq, unsigned int flow_type)
|
|
|
|
|
|
+static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type)
|
|
{
|
|
{
|
|
unsigned long irq_flags;
|
|
unsigned long irq_flags;
|
|
- struct msm_gpio_chip *msm_chip = get_irq_chip_data(irq);
|
|
|
|
- unsigned offset = irq - gpio_to_irq(msm_chip->chip.base);
|
|
|
|
|
|
+ struct msm_gpio_chip *msm_chip = irq_data_get_irq_chip_data(d);
|
|
|
|
+ unsigned offset = d->irq - gpio_to_irq(msm_chip->chip.base);
|
|
unsigned val, mask = BIT(offset);
|
|
unsigned val, mask = BIT(offset);
|
|
|
|
|
|
spin_lock_irqsave(&msm_chip->lock, irq_flags);
|
|
spin_lock_irqsave(&msm_chip->lock, irq_flags);
|
|
val = readl(msm_chip->regs.int_edge);
|
|
val = readl(msm_chip->regs.int_edge);
|
|
if (flow_type & IRQ_TYPE_EDGE_BOTH) {
|
|
if (flow_type & IRQ_TYPE_EDGE_BOTH) {
|
|
writel(val | mask, msm_chip->regs.int_edge);
|
|
writel(val | mask, msm_chip->regs.int_edge);
|
|
- irq_desc[irq].handle_irq = handle_edge_irq;
|
|
|
|
|
|
+ irq_desc[d->irq].handle_irq = handle_edge_irq;
|
|
} else {
|
|
} else {
|
|
writel(val & ~mask, msm_chip->regs.int_edge);
|
|
writel(val & ~mask, msm_chip->regs.int_edge);
|
|
- irq_desc[irq].handle_irq = handle_level_irq;
|
|
|
|
|
|
+ irq_desc[d->irq].handle_irq = handle_level_irq;
|
|
}
|
|
}
|
|
if ((flow_type & IRQ_TYPE_EDGE_BOTH) == IRQ_TYPE_EDGE_BOTH) {
|
|
if ((flow_type & IRQ_TYPE_EDGE_BOTH) == IRQ_TYPE_EDGE_BOTH) {
|
|
msm_chip->both_edge_detect |= mask;
|
|
msm_chip->both_edge_detect |= mask;
|
|
@@ -333,16 +333,16 @@ static void msm_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
|
|
msm_chip->chip.base + j);
|
|
msm_chip->chip.base + j);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- desc->chip->ack(irq);
|
|
|
|
|
|
+ desc->irq_data.chip->irq_ack(&desc->irq_data);
|
|
}
|
|
}
|
|
|
|
|
|
static struct irq_chip msm_gpio_irq_chip = {
|
|
static struct irq_chip msm_gpio_irq_chip = {
|
|
- .name = "msmgpio",
|
|
|
|
- .ack = msm_gpio_irq_ack,
|
|
|
|
- .mask = msm_gpio_irq_mask,
|
|
|
|
- .unmask = msm_gpio_irq_unmask,
|
|
|
|
- .set_wake = msm_gpio_irq_set_wake,
|
|
|
|
- .set_type = msm_gpio_irq_set_type,
|
|
|
|
|
|
+ .name = "msmgpio",
|
|
|
|
+ .irq_ack = msm_gpio_irq_ack,
|
|
|
|
+ .irq_mask = msm_gpio_irq_mask,
|
|
|
|
+ .irq_unmask = msm_gpio_irq_unmask,
|
|
|
|
+ .irq_set_wake = msm_gpio_irq_set_wake,
|
|
|
|
+ .irq_set_type = msm_gpio_irq_set_type,
|
|
};
|
|
};
|
|
|
|
|
|
static int __init msm_init_gpio(void)
|
|
static int __init msm_init_gpio(void)
|