Re: device support on indy WS !?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 5 Mar 2002, Andrea Venturi wrote:

[snip]
> 1. audio hal2: i saw in the cvs.sgi.com kernel the OSS hal2.* files; 
> what about the guenther alsa0.9 port? is it finished? what about iec958 
> spdif support?

I can't say anything about ALSA 0.9 port. I decided for OSS driver,
because I wanded to listen music and there was no driver. OSS is much
better documented interface than ALSA.

Sometimes you get HAL2 timeout when closing /dev/dsp. It is my fault and
I'm sorry for it. Following patch solves it.

Index: linux/drivers/sound/hal2.c
===================================================================
RCS file: /cvs/linux/drivers/sound/hal2.c,v
retrieving revision 1.3.2.5
diff -u -r1.3.2.5 hal2.c
--- linux/drivers/sound/hal2.c	2002/02/15 02:14:40	1.3.2.5
+++ linux/drivers/sound/hal2.c	2002/03/04 12:33:53
@@ -691,32 +691,25 @@
 	DECLARE_WAITQUEUE(wait, current);
 	hal2_codec_t *dac = &hal2->dac;
 	int ret = 0;
-	signed long timeout = 1 + 1000 * H2_BUFFER_SIZE * 2 * dac->voices *
+	signed long timeout = 1000 * H2_BUFFER_SIZE * 2 * dac->voices *
 			      HZ / dac->sample_rate / 900;
 
 	down(&dac->sem);
 	
-	while (dac->tail->info.cnt > 0 && ret == 0) {
+	while (dac->pbus.pbus->pbdma_ctrl & HPC3_PDMACTRL_ISACT) {
 		add_wait_queue(&dac->dma_wait, &wait);
-		set_current_state(TASK_INTERRUPTIBLE);
+		set_current_state(TASK_UNINTERRUPTIBLE);
 		if (!schedule_timeout(timeout))
 			/* We may get bogus timeout when system is 
 			 * heavily loaded */
 			if (dac->tail->info.cnt) {
 				printk("HAL2: timeout...\n");
-				ret = -ETIME;
+				hal2_stop_dac(hal2);
+				hal2_reset_dac_pointer(hal2);
 			}
-		if (signal_pending(current))
-			ret = -ERESTARTSYS;
 		remove_wait_queue(&dac->dma_wait, &wait);
 	}
 
-	/* Make sure that DMA is stopped */
-	if (dac->pbus.pbus->pbdma_ctrl & HPC3_PDMACTRL_ISACT) {
-		hal2_stop_dac(hal2);
-		hal2_reset_dac_pointer(hal2);
-	}
-	
 	up(&dac->sem);
 	
 	return ret;
@@ -1108,7 +1101,7 @@
 	} else {
 		do {
 			/* ~10% longer */
-			signed long timeout = 1 + 1000 * H2_BUFFER_SIZE *
+			signed long timeout = 1000 * H2_BUFFER_SIZE *
 				2 * adc->voices * HZ / adc->sample_rate / 900;
 			DECLARE_WAITQUEUE(wait, current);
 			ssize_t cnt = 0;
@@ -1169,7 +1162,7 @@
 	} else {
 		do {
 			/* ~10% longer */
-			signed long timeout = 1 + 1000 * H2_BUFFER_SIZE *
+			signed long timeout = 1000 * H2_BUFFER_SIZE *
 				2 * dac->voices * HZ / dac->sample_rate / 900;
 			DECLARE_WAITQUEUE(wait, current);
 			ssize_t cnt = 0;

recording doesn't work and will not work until someone provide better
documentation.

btw, what is iec958 spdig?

> 2. isdn: there is a siemens isac-s chip (BTW i didn't see the hscx 
> twin): is it supported now? it should be not to difficult to leverage 
> the ia32-isdn hisax (passive) isac driver _if_ the hpc3 delivers the 
> irq? what do you think about it?

there is currenty no support. any documentation available?



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux