Messages in this thread | | | From | Ashish Jangam <> | Date | Mon, 9 May 2011 16:03:41 +0530 | Subject | RE: [PATCHv2 -next] MFD: MFD module of DA9052 PMIC driver |
| |
> -----Original Message----- > From: Mark Brown [mailto:broonie@opensource.wolfsonmicro.com] > Sent: Tuesday, May 03, 2011 8:15 PM > To: Ashish Jangam > Cc: sameo@openedhand.com; linux-kernel@vger.kernel.org; Dajun Chen > Subject: Re: [PATCHv2 -next] MFD: MFD module of DA9052 PMIC driver > > On Tue, May 03, 2011 at 07:30:54PM +0530, Ashish Jangam wrote: > > > +int da9052_unmask_events(struct da9052 *da9052, unsigned int events) > > +{ > > + uint8_t v[4]; > > + > > + da9052->events_mask &= ~events; > > + > > + v[0] = (da9052->events_mask & 0xff); > > + v[1] = (da9052->events_mask >> 8) & 0xff; > > + v[2] = (da9052->events_mask >> 16) & 0xff; > > + v[3] = (da9052->events_mask >> 24) & 0xff; > > + > > + return da9052_group_write(da9052, DA9052_IRQ_MASK_A_REG, 4, v); > > +} > > + > > +int da9052_mask_events(struct da9052 *da9052, unsigned int events) > > +{ > > + uint8_t v[4]; > > + > > + da9052->events_mask |= events; > > + > > + v[0] = (da9052->events_mask & 0xff); > > + v[1] = (da9052->events_mask >> 8) & 0xff; > > + v[2] = (da9052->events_mask >> 16) & 0xff; > > + v[3] = (da9052->events_mask >> 24) & 0xff; > > + > > + return da9052_group_write(da9052, DA9052_IRQ_MASK_A_REG, 4, v); > > +} > > My previous queries about why this is here and not in the IRQ code still > stand. > > > +static void da9052_irq_sync_unlock(struct irq_data *data) > > +{ > > + struct da9052 *da9052 = irq_data_get_irq_chip_data(data); > > + struct da9052_irq_data *irq_data = irq_to_da9052_irq(da9052, > > + data->irq); > > + > > + da9052_mask_events(da9052, irq_data->event); > > + mutex_unlock(&da9052->irq_lock); > > What happens if an event was enabled while the bus was locked? Event stays in the hardware till it's not explicitly cleared. Hence there won't be any event loss.
| |