irqchip: s3c24xx: add irq_set_type callback for basic interrupt types
Enables post-init setting of the desired typehandler for the interrupt. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
This commit is contained in:
parent
1ebc7e83b1
commit
bd7c0da2c1
|
@ -123,6 +123,28 @@ static inline void s3c_irq_ack(struct irq_data *data)
|
||||||
__raw_writel(bitval, intc->reg_intpnd);
|
__raw_writel(bitval, intc->reg_intpnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int s3c_irq_type(struct irq_data *data, unsigned int type)
|
||||||
|
{
|
||||||
|
switch (type) {
|
||||||
|
case IRQ_TYPE_NONE:
|
||||||
|
break;
|
||||||
|
case IRQ_TYPE_EDGE_RISING:
|
||||||
|
case IRQ_TYPE_EDGE_FALLING:
|
||||||
|
case IRQ_TYPE_EDGE_BOTH:
|
||||||
|
irq_set_handler(data->irq, handle_edge_irq);
|
||||||
|
break;
|
||||||
|
case IRQ_TYPE_LEVEL_LOW:
|
||||||
|
case IRQ_TYPE_LEVEL_HIGH:
|
||||||
|
irq_set_handler(data->irq, handle_level_irq);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
pr_err("No such irq type %d", type);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int s3c_irqext_type_set(void __iomem *gpcon_reg,
|
static int s3c_irqext_type_set(void __iomem *gpcon_reg,
|
||||||
void __iomem *extint_reg,
|
void __iomem *extint_reg,
|
||||||
unsigned long gpcon_offset,
|
unsigned long gpcon_offset,
|
||||||
|
@ -228,6 +250,7 @@ static struct irq_chip s3c_irq_chip = {
|
||||||
.irq_ack = s3c_irq_ack,
|
.irq_ack = s3c_irq_ack,
|
||||||
.irq_mask = s3c_irq_mask,
|
.irq_mask = s3c_irq_mask,
|
||||||
.irq_unmask = s3c_irq_unmask,
|
.irq_unmask = s3c_irq_unmask,
|
||||||
|
.irq_set_type = s3c_irq_type,
|
||||||
.irq_set_wake = s3c_irq_wake
|
.irq_set_wake = s3c_irq_wake
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -236,6 +259,7 @@ static struct irq_chip s3c_irq_level_chip = {
|
||||||
.irq_mask = s3c_irq_mask,
|
.irq_mask = s3c_irq_mask,
|
||||||
.irq_unmask = s3c_irq_unmask,
|
.irq_unmask = s3c_irq_unmask,
|
||||||
.irq_ack = s3c_irq_ack,
|
.irq_ack = s3c_irq_ack,
|
||||||
|
.irq_set_type = s3c_irq_type,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct irq_chip s3c_irqext_chip = {
|
static struct irq_chip s3c_irqext_chip = {
|
||||||
|
|
Loading…
Reference in New Issue