|
@@ -353,12 +353,28 @@ static int asic3_gpio_irq_type(struct irq_data *data, unsigned int type)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int asic3_gpio_irq_set_wake(struct irq_data *data, unsigned int on)
|
|
|
+{
|
|
|
+ struct asic3 *asic = irq_data_get_irq_chip_data(data);
|
|
|
+ u32 bank, index;
|
|
|
+ u16 bit;
|
|
|
+
|
|
|
+ bank = asic3_irq_to_bank(asic, data->irq);
|
|
|
+ index = asic3_irq_to_index(asic, data->irq);
|
|
|
+ bit = 1<<index;
|
|
|
+
|
|
|
+ asic3_set_register(asic, bank + ASIC3_GPIO_SLEEP_MASK, bit, !on);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static struct irq_chip asic3_gpio_irq_chip = {
|
|
|
.name = "ASIC3-GPIO",
|
|
|
.irq_ack = asic3_mask_gpio_irq,
|
|
|
.irq_mask = asic3_mask_gpio_irq,
|
|
|
.irq_unmask = asic3_unmask_gpio_irq,
|
|
|
.irq_set_type = asic3_gpio_irq_type,
|
|
|
+ .irq_set_wake = asic3_gpio_irq_set_wake,
|
|
|
};
|
|
|
|
|
|
static struct irq_chip asic3_irq_chip = {
|