static int pm8901_resume(struct i2c_client *client) { struct pm8901_chip *chip; int i; unsigned long irqsave; chip = i2c_get_clientdata(client); for (i = 0; i < MAX_PM_IRQ; i++) { spin_lock_irqsave(&chip->pm_lock, irqsave); if (chip->config[i] && !chip->wake_enable[i]) { if (!((chip->config[i] & PM8901_IRQF_MASK_ALL) == PM8901_IRQF_MASK_ALL)) pm8901_irq_unmask(i + chip->pdata.irq_base); } spin_unlock_irqrestore(&chip->pm_lock, irqsave); } if (!chip->count_wakeable) enable_irq(chip->dev->irq); return 0; }
static int pm8901_resume(struct platform_device *pdev) { struct pm8901_chip *chip; int i; unsigned long irqsave; chip = platform_get_drvdata(pdev); for (i = 0; i < MAX_PM_IRQ; i++) { spin_lock_irqsave(&chip->pm_lock, irqsave); if (chip->config[i] && !chip->wake_enable[i]) { if (!((chip->config[i] & PM8901_IRQF_MASK_ALL) == PM8901_IRQF_MASK_ALL)) pm8901_irq_unmask(irq_get_irq_data(i + chip->pdata.irq_base)); } spin_unlock_irqrestore(&chip->pm_lock, irqsave); } if (!chip->count_wakeable) enable_irq(chip->pdata.irq); return 0; }