git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
drivers
/
net
/
irda
/
ep7211_ir.c
diff --git
a/drivers/net/irda/ep7211_ir.c
b/drivers/net/irda/ep7211_ir.c
index
3189626
..
4cba38f
100644
(file)
--- a/
drivers/net/irda/ep7211_ir.c
+++ b/
drivers/net/irda/ep7211_ir.c
@@
-8,6
+8,7
@@
#include <linux/delay.h>
#include <linux/tty.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/tty.h>
#include <linux/init.h>
+#include <linux/spinlock.h>
#include <net/irda/irda.h>
#include <net/irda/irda_device.h>
#include <net/irda/irda.h>
#include <net/irda/irda_device.h>
@@
-23,6
+24,8
@@
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 int ep7211_ir_change_speed(struct irda_task *task);
static int ep7211_ir_reset(struct irda_task *task);
+static DEFINE_SPINLOCK(ep7211_lock);
+
static struct dongle_reg dongle = {
.type = IRDA_EP7211_IR,
.open = ep7211_ir_open,
static struct dongle_reg dongle = {
.type = IRDA_EP7211_IR,
.open = ep7211_ir_open,
@@
-36,7
+39,7
@@
static void ep7211_ir_open(dongle_t *self, struct qos_info *qos)
{
unsigned int syscon1, flags;
{
unsigned int syscon1, flags;
- s
ave_flags(flags); cli(
);
+ s
pin_lock_irqsave(&ep7211_lock, flags
);
/* Turn on the SIR encoder. */
syscon1 = clps_readl(SYSCON1);
/* Turn on the SIR encoder. */
syscon1 = clps_readl(SYSCON1);
@@
-46,14
+49,14
@@
static void ep7211_ir_open(dongle_t *self, struct qos_info *qos)
/* XXX: We should disable modem status interrupts on the first
UART (interrupt #14). */
/* XXX: We should disable modem status interrupts on the first
UART (interrupt #14). */
-
restore_flags(
flags);
+
spin_unlock_irqrestore(&ep7211_lock,
flags);
}
static void ep7211_ir_close(dongle_t *self)
{
unsigned int syscon1, flags;
}
static void ep7211_ir_close(dongle_t *self)
{
unsigned int syscon1, flags;
- s
ave_flags(flags); cli(
);
+ s
pin_lock_irqsave(&ep7211_lock, flags
);
/* Turn off the SIR encoder. */
syscon1 = clps_readl(SYSCON1);
/* Turn off the SIR encoder. */
syscon1 = clps_readl(SYSCON1);
@@
-63,7
+66,7
@@
static void ep7211_ir_close(dongle_t *self)
/* XXX: If we've disabled the modem status interrupts, we should
reset them back to their original state. */
/* XXX: If we've disabled the modem status interrupts, we should
reset them back to their original state. */
-
restore_flags(
flags);
+
spin_unlock_irqrestore(&ep7211_lock,
flags);
}
/*
}
/*