aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn/mISDN
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.cz>2013-01-29 04:48:30 -0500
committerJiri Kosina <jkosina@suse.cz>2013-01-29 04:48:30 -0500
commit617677295b53a40d0e54aac4cbbc216ffbc755dd (patch)
tree51b9e87213243ed5efff252c8e8d8fec4eebc588 /drivers/isdn/mISDN
parent5c8d1b68e01a144813e38795fe6dbe7ebb506131 (diff)
parent6abb7c25775b7fb2225ad0508236d63ca710e65f (diff)
Merge branch 'master' into for-next
Conflicts: drivers/devfreq/exynos4_bus.c Sync with Linus' tree to be able to apply patches that are against newer code (mvneta).
Diffstat (limited to 'drivers/isdn/mISDN')
-rw-r--r--drivers/isdn/mISDN/core.c4
-rw-r--r--drivers/isdn/mISDN/dsp_core.c3
-rw-r--r--drivers/isdn/mISDN/l1oip_core.c5
-rw-r--r--drivers/isdn/mISDN/tei.c20
4 files changed, 12 insertions, 20 deletions
diff --git a/drivers/isdn/mISDN/core.c b/drivers/isdn/mISDN/core.c
index c401634c00ec..3e245712bba7 100644
--- a/drivers/isdn/mISDN/core.c
+++ b/drivers/isdn/mISDN/core.c
@@ -140,7 +140,6 @@ static struct device_attribute mISDN_dev_attrs[] = {
140 {} 140 {}
141}; 141};
142 142
143#ifdef CONFIG_HOTPLUG
144static int mISDN_uevent(struct device *dev, struct kobj_uevent_env *env) 143static int mISDN_uevent(struct device *dev, struct kobj_uevent_env *env)
145{ 144{
146 struct mISDNdevice *mdev = dev_to_mISDN(dev); 145 struct mISDNdevice *mdev = dev_to_mISDN(dev);
@@ -153,7 +152,6 @@ static int mISDN_uevent(struct device *dev, struct kobj_uevent_env *env)
153 152
154 return 0; 153 return 0;
155} 154}
156#endif
157 155
158static void mISDN_class_release(struct class *cls) 156static void mISDN_class_release(struct class *cls)
159{ 157{
@@ -163,9 +161,7 @@ static void mISDN_class_release(struct class *cls)
163static struct class mISDN_class = { 161static struct class mISDN_class = {
164 .name = "mISDN", 162 .name = "mISDN",
165 .owner = THIS_MODULE, 163 .owner = THIS_MODULE,
166#ifdef CONFIG_HOTPLUG
167 .dev_uevent = mISDN_uevent, 164 .dev_uevent = mISDN_uevent,
168#endif
169 .dev_attrs = mISDN_dev_attrs, 165 .dev_attrs = mISDN_dev_attrs,
170 .dev_release = mISDN_dev_release, 166 .dev_release = mISDN_dev_release,
171 .class_release = mISDN_class_release, 167 .class_release = mISDN_class_release,
diff --git a/drivers/isdn/mISDN/dsp_core.c b/drivers/isdn/mISDN/dsp_core.c
index 28c99c623bcd..22b720ec80cb 100644
--- a/drivers/isdn/mISDN/dsp_core.c
+++ b/drivers/isdn/mISDN/dsp_core.c
@@ -1217,8 +1217,7 @@ static void __exit dsp_cleanup(void)
1217{ 1217{
1218 mISDN_unregister_Bprotocol(&DSP); 1218 mISDN_unregister_Bprotocol(&DSP);
1219 1219
1220 if (timer_pending(&dsp_spl_tl)) 1220 del_timer_sync(&dsp_spl_tl);
1221 del_timer(&dsp_spl_tl);
1222 1221
1223 if (!list_empty(&dsp_ilist)) { 1222 if (!list_empty(&dsp_ilist)) {
1224 printk(KERN_ERR "mISDN_dsp: Audio DSP object inst list not " 1223 printk(KERN_ERR "mISDN_dsp: Audio DSP object inst list not "
diff --git a/drivers/isdn/mISDN/l1oip_core.c b/drivers/isdn/mISDN/l1oip_core.c
index d67126dbbb04..2c0d2c2bf946 100644
--- a/drivers/isdn/mISDN/l1oip_core.c
+++ b/drivers/isdn/mISDN/l1oip_core.c
@@ -277,7 +277,6 @@ l1oip_socket_send(struct l1oip *hc, u8 localcodec, u8 channel, u32 chanmask,
277 u16 timebase, u8 *buf, int len) 277 u16 timebase, u8 *buf, int len)
278{ 278{
279 u8 *p; 279 u8 *p;
280 int multi = 0;
281 u8 frame[len + 32]; 280 u8 frame[len + 32];
282 struct socket *socket = NULL; 281 struct socket *socket = NULL;
283 282
@@ -317,9 +316,7 @@ l1oip_socket_send(struct l1oip *hc, u8 localcodec, u8 channel, u32 chanmask,
317 *p++ = hc->id >> 8; 316 *p++ = hc->id >> 8;
318 *p++ = hc->id; 317 *p++ = hc->id;
319 } 318 }
320 *p++ = (multi == 1) ? 0x80 : 0x00 + channel; /* m-flag, channel */ 319 *p++ = 0x00 + channel; /* m-flag, channel */
321 if (multi == 1)
322 *p++ = len; /* length */
323 *p++ = timebase >> 8; /* time base */ 320 *p++ = timebase >> 8; /* time base */
324 *p++ = timebase; 321 *p++ = timebase;
325 322
diff --git a/drivers/isdn/mISDN/tei.c b/drivers/isdn/mISDN/tei.c
index be88728f1106..592f597d8951 100644
--- a/drivers/isdn/mISDN/tei.c
+++ b/drivers/isdn/mISDN/tei.c
@@ -250,7 +250,7 @@ tei_debug(struct FsmInst *fi, char *fmt, ...)
250static int 250static int
251get_free_id(struct manager *mgr) 251get_free_id(struct manager *mgr)
252{ 252{
253 u64 ids = 0; 253 DECLARE_BITMAP(ids, 64) = { [0 ... BITS_TO_LONGS(64) - 1] = 0 };
254 int i; 254 int i;
255 struct layer2 *l2; 255 struct layer2 *l2;
256 256
@@ -261,11 +261,11 @@ get_free_id(struct manager *mgr)
261 __func__); 261 __func__);
262 return -EBUSY; 262 return -EBUSY;
263 } 263 }
264 test_and_set_bit(l2->ch.nr, (u_long *)&ids); 264 __set_bit(l2->ch.nr, ids);
265 } 265 }
266 for (i = 1; i < 64; i++) 266 i = find_next_zero_bit(ids, 64, 1);
267 if (!test_bit(i, (u_long *)&ids)) 267 if (i < 64)
268 return i; 268 return i;
269 printk(KERN_WARNING "%s: more as 63 layer2 for one device\n", 269 printk(KERN_WARNING "%s: more as 63 layer2 for one device\n",
270 __func__); 270 __func__);
271 return -EBUSY; 271 return -EBUSY;
@@ -274,7 +274,7 @@ get_free_id(struct manager *mgr)
274static int 274static int
275get_free_tei(struct manager *mgr) 275get_free_tei(struct manager *mgr)
276{ 276{
277 u64 ids = 0; 277 DECLARE_BITMAP(ids, 64) = { [0 ... BITS_TO_LONGS(64) - 1] = 0 };
278 int i; 278 int i;
279 struct layer2 *l2; 279 struct layer2 *l2;
280 280
@@ -288,11 +288,11 @@ get_free_tei(struct manager *mgr)
288 continue; 288 continue;
289 i -= 64; 289 i -= 64;
290 290
291 test_and_set_bit(i, (u_long *)&ids); 291 __set_bit(i, ids);
292 } 292 }
293 for (i = 0; i < 64; i++) 293 i = find_first_zero_bit(ids, 64);
294 if (!test_bit(i, (u_long *)&ids)) 294 if (i < 64)
295 return i + 64; 295 return i + 64;
296 printk(KERN_WARNING "%s: more as 63 dynamic tei for one device\n", 296 printk(KERN_WARNING "%s: more as 63 dynamic tei for one device\n",
297 __func__); 297 __func__);
298 return -1; 298 return -1;