static int pm8058_resume(struct device *dev) { struct i2c_client *client; struct pm8058_chip *chip; int i, irq; client = to_i2c_client(dev); chip = i2c_get_clientdata(client); for (i = 0; i < MAX_PM_IRQ; i++) { if (chip->config[i] && !chip->wake_enable[i]) { if (!((chip->config[i] & PM8058_IRQF_MASK_ALL) == PM8058_IRQF_MASK_ALL)) { irq = i + chip->pdata.irq_base; pm8058_irq_bus_lock(irq); pm8058_irq_unmask(irq); pm8058_irq_bus_sync_unlock(irq); } } } if (!chip->count_wakeable) enable_irq(chip->dev->irq); return 0; }
static int pm8058_resume(struct device *dev) { struct i2c_client *client; struct pm8058_chip *chip; int i; unsigned long irqsave; client = to_i2c_client(dev); chip = i2c_get_clientdata(client); for (i = 0; i < MAX_PM_IRQ; i++) { spin_lock_irqsave(&chip->pm_lock, irqsave); if (!chip->wake_enable[i] && ((chip->config[i] & PM8058_IRQF_MASK_ALL) != PM8058_IRQF_MASK_ALL)) pm8058_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; }