From: "david.chosrova@libertysurf.fr" Subject: [KJ] [PATCH] sti/cli removal ep7211.c convert sti/cli... usage to accepted locking primitives. signed-off-by : David chosrova --- ep7211_ir.c | 14 +++++++++----- 1 files changed, 9 insertions(+), 5 deletions(-) Index: quilt/drivers/net/irda/ep7211_ir.c =================================================================== --- quilt.orig/drivers/net/irda/ep7211_ir.c +++ quilt/drivers/net/irda/ep7211_ir.c @@ -8,12 +8,14 @@ #include #include #include +#include #include #include #include #include + #define MIN_DELAY 25 /* 15 us, but wait a little more to be sure */ #define MAX_DELAY 10000 /* 1 ms */ @@ -22,7 +24,7 @@ static void ep7211_ir_open(dongle_t *sel static void ep7211_ir_close(dongle_t *self); static int ep7211_ir_change_speed(struct irda_task *task); static int ep7211_ir_reset(struct irda_task *task); - +static spinlock_t driver_lock; static struct dongle_reg dongle = { .type = IRDA_EP7211_IR, .open = ep7211_ir_open, @@ -36,7 +38,8 @@ static void ep7211_ir_open(dongle_t *sel { unsigned int syscon1, flags; - save_flags(flags); cli(); + + spin_lock_irqsave(&driver_lock, flags); /* Turn on the SIR encoder. */ syscon1 = clps_readl(SYSCON1); @@ -46,14 +49,14 @@ static void ep7211_ir_open(dongle_t *sel /* XXX: We should disable modem status interrupts on the first UART (interrupt #14). */ - restore_flags(flags); + spin_unlock_irqrestore(&driver_lock, flags); } static void ep7211_ir_close(dongle_t *self) { unsigned int syscon1, flags; - save_flags(flags); cli(); + spin_lock_irqsave(&driver_lock, flags); /* Turn off the SIR encoder. */ syscon1 = clps_readl(SYSCON1); @@ -63,7 +66,7 @@ static void ep7211_ir_close(dongle_t *se /* XXX: If we've disabled the modem status interrupts, we should reset them back to their original state. */ - restore_flags(flags); + spin_unlock_irqrestore(&driver_lock, flags); } /* @@ -99,6 +102,7 @@ static int ep7211_ir_reset(struct irda_t */ static int __init ep7211_ir_init(void) { + spin_lock_init(&driver_lock); return irda_device_register_dongle(&dongle); }