|
|
|
@ -54,18 +54,19 @@ static int x3proto_gpio_to_irq(struct gpio_chip *chip, unsigned gpio) |
|
|
|
|
|
|
|
|
|
static void x3proto_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) |
|
|
|
|
{ |
|
|
|
|
struct irq_chip *chip = get_irq_desc_chip(desc); |
|
|
|
|
struct irq_data *data = irq_get_irq_data(irq); |
|
|
|
|
struct irq_chip *chip = irq_data_get_irq_chip(data); |
|
|
|
|
unsigned long mask; |
|
|
|
|
int pin; |
|
|
|
|
|
|
|
|
|
chip->mask_ack(irq); |
|
|
|
|
chip->irq_mask_ack(data); |
|
|
|
|
|
|
|
|
|
mask = __raw_readw(KEYDETR); |
|
|
|
|
|
|
|
|
|
for_each_set_bit(pin, &mask, NR_BASEBOARD_GPIOS) |
|
|
|
|
generic_handle_irq(x3proto_gpio_to_irq(NULL, pin)); |
|
|
|
|
|
|
|
|
|
chip->unmask(irq); |
|
|
|
|
chip->irq_unmask(data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
struct gpio_chip x3proto_gpio_chip = { |
|
|
|
|