On Tue, 2012-05-29 at 12:06 +0200, Christian Dietrich wrote:
--- a/drivers/char/ds1620.c +++ b/drivers/char/ds1620.c @@ -74,21 +74,21 @@ static inline void netwinder_ds1620_reset(void)
static inline void netwinder_lock(unsigned long *flags) {
spin_lock_irqsave(&nw_gpio_lock, *flags);
raw_spin_lock_irqsave(&nw_gpio_lock, *flags);
}
static inline void netwinder_unlock(unsigned long *flags) {
spin_unlock_irqrestore(&nw_gpio_lock, *flags);
raw_spin_unlock_irqrestore(&nw_gpio_lock, *flags);
}
If you were to make these functions public by shifting them into arch/arm/mach-footbridge/include/mach/hardware.h that would be a lot nicer, and other places wouldn't have to touch the raw spinlock directly.
Also... while we're thinking about preemption and netwinder, note that the write enable is valid for only 2ms or so. So all the functions in dc21285.c that you just touched should probably *also* be disabling preemption when they're run on a netwinder, to ensure that that time doesn't expire before they actually get to run.