diff options
Diffstat (limited to 'sound/oss/swarm_cs4297a.c')
| -rw-r--r-- | sound/oss/swarm_cs4297a.c | 18 | 
1 files changed, 8 insertions, 10 deletions
diff --git a/sound/oss/swarm_cs4297a.c b/sound/oss/swarm_cs4297a.c index 7d8803a00b7..a33e8ce8085 100644 --- a/sound/oss/swarm_cs4297a.c +++ b/sound/oss/swarm_cs4297a.c @@ -90,6 +90,8 @@  #include <asm/sibyte/sb1250_mac.h>  #include <asm/sibyte/sb1250.h> +#include "sleep.h" +  struct cs4297a_state;  static DEFINE_MUTEX(swarm_cs4297a_mutex); @@ -748,7 +750,7 @@ static int serdma_reg_access(struct cs4297a_state *s, u64 data)                  /* Since a writer has the DSP open, we have to mux the                     request in */                  s->reg_request = data; -                interruptible_sleep_on(&s->dma_dac.reg_wait); +		oss_broken_sleep_on(&s->dma_dac.reg_wait, MAX_SCHEDULE_TIMEOUT);                  /* XXXKW how can I deal with the starvation case where                     the opener isn't writing? */          } else { @@ -790,7 +792,7 @@ static int cs4297a_read_ac97(struct cs4297a_state *s, u32 offset,          if (serdma_reg_access(s, (0xCLL << 60) | (1LL << 47) | ((u64)(offset & 0x7F) << 40)))                  return -1; -        interruptible_sleep_on(&s->dma_adc.reg_wait); +	oss_broken_sleep_on(&s->dma_adc.reg_wait, MAX_SCHEDULE_TIMEOUT);          *value = s->read_value;          CS_DBGOUT(CS_AC97, 2,                    printk(KERN_INFO "cs4297a: rdr reg %x -> %x\n", s->read_reg, s->read_value)); @@ -1740,7 +1742,7 @@ static ssize_t cs4297a_read(struct file *file, char *buffer, size_t count,  			start_adc(s);  			if (file->f_flags & O_NONBLOCK)  				return ret ? ret : -EAGAIN; -			interruptible_sleep_on(&s->dma_adc.wait); +			oss_broken_sleep_on(&s->dma_adc.wait, MAX_SCHEDULE_TIMEOUT);  			if (signal_pending(current))  				return ret ? ret : -ERESTARTSYS;  			continue; @@ -1836,7 +1838,7 @@ static ssize_t cs4297a_write(struct file *file, const char *buffer,  			start_dac(s);  			if (file->f_flags & O_NONBLOCK)  				return ret ? ret : -EAGAIN; -			interruptible_sleep_on(&d->wait); +			oss_broken_sleep_on(&d->wait, MAX_SCHEDULE_TIMEOUT);  			if (signal_pending(current))  				return ret ? ret : -ERESTARTSYS;  			continue; @@ -2452,7 +2454,7 @@ static int cs4297a_locked_open(struct inode *inode, struct file *file)  				return -EBUSY;  			}  			mutex_unlock(&s->open_sem_dac); -			interruptible_sleep_on(&s->open_wait_dac); +			oss_broken_sleep_on(&s->open_wait_dac, MAX_SCHEDULE_TIMEOUT);  			if (signal_pending(current)) {                                  printk("open - sig pending\n"); @@ -2469,7 +2471,7 @@ static int cs4297a_locked_open(struct inode *inode, struct file *file)  				return -EBUSY;  			}  			mutex_unlock(&s->open_sem_adc); -			interruptible_sleep_on(&s->open_wait_adc); +			oss_broken_sleep_on(&s->open_wait_adc, MAX_SCHEDULE_TIMEOUT);  			if (signal_pending(current)) {                                  printk("open - sig pending\n"); @@ -2623,15 +2625,12 @@ static int __init cs4297a_init(void)  	u32 pwr, id;  	mm_segment_t fs;  	int rval; -#ifndef CONFIG_BCM_CS4297A_CSWARM  	u64 cfg;  	int mdio_val; -#endif  	CS_DBGOUT(CS_INIT | CS_FUNCTION, 2, printk(KERN_INFO   		"cs4297a: cs4297a_init_module()+ \n")); -#ifndef CONFIG_BCM_CS4297A_CSWARM          mdio_val = __raw_readq(KSEG1 + A_MAC_REGISTER(2, R_MAC_MDIO)) &                  (M_MAC_MDIO_DIR|M_MAC_MDIO_OUT); @@ -2657,7 +2656,6 @@ static int __init cs4297a_init(void)          __raw_writeq(mdio_val | M_MAC_GENC, KSEG1+A_MAC_REGISTER(2, R_MAC_MDIO));          /* Give the codec some time to finish resetting (start the bit clock) */          udelay(100); -#endif  	if (!(s = kzalloc(sizeof(struct cs4297a_state), GFP_KERNEL))) {  		CS_DBGOUT(CS_ERROR, 1, printk(KERN_ERR  | 
