diff options
author | tzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2006-05-22 16:41:06 +0000 |
---|---|---|
committer | tzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2006-05-22 16:41:06 +0000 |
commit | 117fcbf3e26236b41ec3fb932e4f73b4b34f289e (patch) | |
tree | be3e5f1e3a4e2bd70cd429f957ad1a9c30b836a7 /xpp/card_fxs.c | |
parent | f3ba7804d8358e041cf38eb84ebce9bdbc8757cb (diff) |
* Now possible to load FPGA (second stage) firmware with USB1
* fixed locking of xpd-lock
* slightly newer FPGA firmware: slight improvements.
git-svn-id: http://svn.digium.com/svn/zaptel/trunk@1078 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'xpp/card_fxs.c')
-rw-r--r-- | xpp/card_fxs.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/xpp/card_fxs.c b/xpp/card_fxs.c index e4480a3..d2413f3 100644 --- a/xpp/card_fxs.c +++ b/xpp/card_fxs.c @@ -169,7 +169,6 @@ static const int led_register_vals[] = { BIT(4), BIT(1), BIT(0) }; */ static int do_led(xpd_t *xpd, lineno_t pos, byte which, bool on) { - unsigned long flags; int ret = 0; xpacket_t *pack; slic_cmd_t *sc; @@ -180,7 +179,6 @@ static int do_led(xpd_t *xpd, lineno_t pos, byte which, bool on) xbus_t *xbus; BUG_ON(!xpd); - spin_lock_irqsave(&xpd->lock, flags); xbus = xpd->xbus; priv = xpd->priv; which = which % NUM_LEDS; @@ -211,7 +209,6 @@ static int do_led(xpd_t *xpd, lineno_t pos, byte which, bool on) packet_send(xbus, pack); out: - spin_unlock_irqrestore(&xpd->lock, flags); return ret; } @@ -350,6 +347,7 @@ static int FXS_card_zaptel_registration(xpd_t *xpd, bool on) { xbus_t *xbus; struct FXS_priv_data *priv; + unsigned long flags; int i; BUG_ON(!xpd); @@ -358,7 +356,9 @@ static int FXS_card_zaptel_registration(xpd_t *xpd, bool on) BUG_ON(!xbus); DBG("%s/%s: %s\n", xbus->busname, xpd->xpdname, (on)?"on":"off"); if(on) { + spin_lock_irqsave(&xpd->lock, flags); do_led(xpd, ALL_LINES, LED_GREEN, LED_OFF); + spin_unlock_irqrestore(&xpd->lock, flags); for_each_enabled_line(xpd, i) { DO_LED(priv,i,LED_GREEN,LED_ON); mdelay(50); @@ -368,7 +368,9 @@ static int FXS_card_zaptel_registration(xpd_t *xpd, bool on) mdelay(50); } } else { + spin_lock_irqsave(&xpd->lock, flags); do_led(xpd, ALL_LINES, LED_RED, LED_OFF); + spin_unlock_irqrestore(&xpd->lock, flags); for_each_enabled_line(xpd, i) { DO_LED(priv,i,LED_RED,LED_ON); mdelay(50); @@ -492,6 +494,7 @@ static /* 0x0F */ HOSTCMD(FXS, CHAN_ENABLE, xpp_line_t lines, bool on) slic_cmd_t *sc; int len; enum fxs_state value = (on) ? 0x01 : 0x00; + unsigned long flags; int i; BUG_ON(!xbus); @@ -509,11 +512,13 @@ static /* 0x0F */ HOSTCMD(FXS, CHAN_ENABLE, xpp_line_t lines, bool on) xpd->lasttxhook[i] = value; packet_send(xbus, pack); + spin_lock_irqsave(&xpd->lock, flags); if(on) { do_led(xpd, ALL_LINES, LED_GREEN, LED_ON); } else { do_led(xpd, ALL_LINES, LED_GREEN, LED_OFF); } + spin_unlock_irqrestore(&xpd->lock, flags); return ret; } |