--- /dev/null
+From c9481d30bbc84905f449b8c1bfc2c8f3eaefd9c3 Mon Sep 17 00:00:00 2001
+From: Shaun Ruffell <sruffell@digium.com>
+Date: Sun, 18 May 2014 02:49:30 -0500
+Subject: [PATCH] pciradio: interruptible_sleep_on_timeout() ->
+ msleep_interruptible()
+
+interruptible_sleep_on_timeout() has been deprecated for awhile and was finally
+removed in Linux 3.15. Since interruptible_sleep_on_timeout() uses jiffies for
+the delay, I assumed that each jiffy equated to 10ms given the age of the
+driver.
+
+Signed-off-by: Shaun Ruffell <sruffell@digium.com>
+Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
+---
+ drivers/dahdi/pciradio.c | 27 +++++++++++++--------------
+ 1 file changed, 13 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/dahdi/pciradio.c b/drivers/dahdi/pciradio.c
+index 9231593..07b85b3 100644
+--- a/drivers/dahdi/pciradio.c
++++ b/drivers/dahdi/pciradio.c
+@@ -52,6 +52,7 @@ With driver: 303826 (1.5 %)
+ #include <linux/interrupt.h>
+ #include <linux/moduleparam.h>
+ #include <linux/sched.h>
++#include <linux/delay.h>
+ #include <asm/io.h>
+ #include <asm/delay.h>
+
+@@ -481,8 +482,6 @@ static void rbi_out(struct pciradio *rad, int n, unsigned char *rbicmd)
+ {
+ unsigned long flags;
+ int x;
+-DECLARE_WAIT_QUEUE_HEAD(mywait);
+-
+
+ for(;;)
+ {
+@@ -490,7 +489,8 @@ DECLARE_WAIT_QUEUE_HEAD(mywait);
+ x = rad->remote_locked || (__pciradio_getcreg(rad,0xc) & 2);
+ if (!x) rad->remote_locked = 1;
+ spin_unlock_irqrestore(&rad->lock,flags);
+- if (x) interruptible_sleep_on_timeout(&mywait,2);
++ if (x)
++ msleep_interruptible(20);
+ else break;
+ }
+ spin_lock_irqsave(&rad->lock,flags);
+@@ -527,7 +527,6 @@ static void mx828_command(struct pciradio *rad,int channel, unsigned char comman
+
+ static void mx828_command_wait(struct pciradio *rad,int channel, unsigned char command, unsigned char *byte1, unsigned char *byte2)
+ {
+-DECLARE_WAIT_QUEUE_HEAD(mywait);
+ unsigned long flags;
+
+
+@@ -535,7 +534,7 @@ unsigned long flags;
+ while(rad->encdec.state)
+ {
+ spin_unlock_irqrestore(&rad->lock,flags);
+- interruptible_sleep_on_timeout(&mywait,2);
++ msleep_interruptible(20);
+ spin_lock_irqsave(&rad->lock,flags);
+ }
+ rad->encdec.lastcmd = jiffies + 1000;
+@@ -967,7 +966,6 @@ static int pciradio_ioctl(struct dahdi_chan *chan, unsigned int cmd, unsigned lo
+ } stack;
+
+ struct pciradio *rad = chan->pvt;
+- DECLARE_WAIT_QUEUE_HEAD(mywait);
+
+ switch (cmd) {
+ case DAHDI_RADIO_GETPARAM:
+@@ -1255,7 +1253,7 @@ static int pciradio_ioctl(struct dahdi_chan *chan, unsigned int cmd, unsigned lo
+ __pciradio_setcreg(rad,8,byte2);
+ spin_unlock_irqrestore(&rad->lock,flags);
+ if (i || (jiffies < rad->lastremcmd + 10))
+- interruptible_sleep_on_timeout(&mywait,10);
++ msleep_interruptible(100);
+ rad->lastremcmd = jiffies;
+ rbi_out(rad,chan->chanpos - 1,(unsigned char *)&stack.p.data);
+ spin_lock_irqsave(&rad->lock,flags);
+@@ -1270,7 +1268,8 @@ static int pciradio_ioctl(struct dahdi_chan *chan, unsigned int cmd, unsigned lo
+ x = rad->remote_locked || (__pciradio_getcreg(rad,0xc) & 2);
+ if (!x) rad->remote_locked = 1;
+ spin_unlock_irqrestore(&rad->lock,flags);
+- if (x) interruptible_sleep_on_timeout(&mywait,2);
++ if (x)
++ msleep_interruptible(20);
+ else break;
+ }
+ spin_lock_irqsave(&rad->lock,flags);
+@@ -1287,14 +1286,14 @@ static int pciradio_ioctl(struct dahdi_chan *chan, unsigned int cmd, unsigned lo
+ __pciradio_setcreg(rad,8,byte2);
+ spin_unlock_irqrestore(&rad->lock,flags);
+ if (byte1 != byte2)
+- interruptible_sleep_on_timeout(&mywait,3);
++ msleep_interruptible(30);
+ while (jiffies < rad->lastremcmd + 10)
+- interruptible_sleep_on_timeout(&mywait,10);
++ msleep_interruptible(100);
+ rad->lastremcmd = jiffies;
+ for(;;)
+ {
+ if (!(__pciradio_getcreg(rad,0xc) & 2)) break;
+- interruptible_sleep_on_timeout(&mywait,2);
++ msleep_interruptible(20);
+ }
+ spin_lock_irqsave(&rad->lock,flags);
+ /* enable and address async serializer */
+@@ -1316,7 +1315,7 @@ static int pciradio_ioctl(struct dahdi_chan *chan, unsigned int cmd, unsigned lo
+ (!strchr((char *)rad->rxbuf,'\r'))))
+ {
+ spin_unlock_irqrestore(&rad->lock,flags);
+- interruptible_sleep_on_timeout(&mywait,2);
++ msleep_interruptible(20);
+ spin_lock_irqsave(&rad->lock,flags);
+ continue;
+ }
+@@ -1336,7 +1335,7 @@ static int pciradio_ioctl(struct dahdi_chan *chan, unsigned int cmd, unsigned lo
+ while(rad->txlen && (rad->txindex < rad->txlen))
+ {
+ spin_unlock_irqrestore(&rad->lock,flags);
+- interruptible_sleep_on_timeout(&mywait,2);
++ msleep_interruptible(20);
+ spin_lock_irqsave(&rad->lock,flags);
+ }
+ /* disable and un-address async serializer */
+@@ -1345,7 +1344,7 @@ static int pciradio_ioctl(struct dahdi_chan *chan, unsigned int cmd, unsigned lo
+ rad->remote_locked = 0;
+ spin_unlock_irqrestore(&rad->lock,flags);
+ if (rad->remmode[chan->chanpos - 1] == DAHDI_RADPAR_REM_SERIAL_ASCII)
+- interruptible_sleep_on_timeout(&mywait,100);
++ msleep_interruptible(1000);
+ if (copy_to_user((__user void *) data, &stack.p, sizeof(stack.p))) return -EFAULT;
+ return 0;
+ default:
+--
+1.9.3
+