All of lore.kernel.org
 help / color / mirror / Atom feed
* ALSA Driver for Sparc DBRI chips
@ 2004-11-21  9:50 Martin Habets
  2004-11-25 14:01 ` Takashi Iwai
  0 siblings, 1 reply; 5+ messages in thread
From: Martin Habets @ 2004-11-21  9:50 UTC (permalink / raw)
  To: alsa-devel; +Cc: baccala, rfkoenig

Hi,

I have been working on an ALSA driver for the DBRI/CS4215 chip
combo found in Sparc machines. It is a port of the 2.5 OSS driver.

Things are starting to work, but since this is my first major
undertaking I'm looking for your comments. Ask early, ask often...
At this point I expect playback to work to all possible outputs (there
is some clipping on 16 bit formats). I have not been able to get recording
output in a file, though it does seem to catch data.

So I look for anything from coding style to design issues to spelling to
'it worked' to 'I get an error' to the-meaning-of-the-universe.
Just keep the phasers on stun, please :)

At: http://www.mph.eclipse.co.uk/pub/linux/dbri
you'll find these files:
- dbri.c		Source code of the driver
- Alsa.patch		Patch against Alsa-driver 1.0.7rc1, without the driver
			code itself (pick up dbri.c and put it in
			alsa-kernel/sparc).
- Alsa-build.patch	Patched to make Alsa build for sparc drivers. This
			code is already in the current Alsa version, so you
			may not need it.
- Linux-2.6.8.patch	Patch against the Linux kernel (including the driver
			code). Will apply against other 2.6 kernels too.

Thanks for your time,
-- 
Martin
---------------------------------------------------------------------------
30 years from now GNU/Linux will be as redundant a term as UNIX/MERT is 
today. - Martin Habets
---------------------------------------------------------------------------


-------------------------------------------------------
This SF.Net email is sponsored by: InterSystems CACHE
FREE OODBMS DOWNLOAD - A multidimensional database that combines
robust object and relational technologies, making it a perfect match
for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ALSA Driver for Sparc DBRI chips
  2004-11-21  9:50 ALSA Driver for Sparc DBRI chips Martin Habets
@ 2004-11-25 14:01 ` Takashi Iwai
  2004-11-25 15:55   ` Takashi Iwai
                     ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Takashi Iwai @ 2004-11-25 14:01 UTC (permalink / raw)
  To: Martin Habets; +Cc: alsa-devel, baccala, rfkoenig

[-- Attachment #1: Type: text/plain, Size: 1337 bytes --]

At Sun, 21 Nov 2004 09:50:08 +0000,
Martin Habets wrote:
> 
> Hi,
> 
> I have been working on an ALSA driver for the DBRI/CS4215 chip
> combo found in Sparc machines. It is a port of the 2.5 OSS driver.
> 
> Things are starting to work, but since this is my first major
> undertaking I'm looking for your comments. Ask early, ask often...
> At this point I expect playback to work to all possible outputs (there
> is some clipping on 16 bit formats). I have not been able to get recording
> output in a file, though it does seem to catch data.
> 
> So I look for anything from coding style to design issues to spelling to
> 'it worked' to 'I get an error' to the-meaning-of-the-universe.
> Just keep the phasers on stun, please :)

Thanks for the patch.

I modified some codes to adapt to the latest 2.6.10-rc2, and reduced
compile warnings (just checked with the cross-compile environment.)
ALso, the spin_lock() is changed to spin_lock_irq() in the prepare
callback since the recent version is it became non-atomic.
The patch is below.

If you think your driver is mature to merge to Linux kernel, let me
know.   Otherwise I'll merge it to alsa-driver tree which is regarded
as the experimental tree and not submitted to mainstream kernel.

BTW, the build environment of alsa-driver for sparc has been fixed
recently on CVS.


Takashi

[-- Attachment #2: Type: text/plain, Size: 3855 bytes --]

--- ../../dbri/dbri.c	2004-11-21 10:35:22.000000000 +0100
+++ dbri.c	2004-11-25 14:54:28.799223411 +0100
@@ -72,13 +72,12 @@
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;	/* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;	/* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;	/* Enable this card */
-static int boot_devs;
 
-module_param_array(index, int, boot_devs, 0444);
+module_param_array(index, int, NULL, 0444);
 MODULE_PARM_DESC(index, "Index value for Sun DBRI soundcard.");
-module_param_array(id, charp, boot_devs, 0444);
+module_param_array(id, charp, NULL, 0444);
 MODULE_PARM_DESC(id, "ID string for Sun DBRI soundcard.");
-module_param_array(enable, bool, boot_devs, 0444);
+module_param_array(enable, bool, NULL, 0444);
 MODULE_PARM_DESC(enable, "Enable Sun DBRI soundcard.");
 
 #define DBRI_DEBUG
@@ -94,13 +93,13 @@
 module_param(dbri_debug, int, 0444);
 MODULE_PARM_DESC(dbri_debug, "Debug value for Sun DBRI soundcard.");
 
+#ifdef DBRI_DEBUG
 static char *cmds[] = {
 	"WAIT", "PAUSE", "JUMP", "IIQ", "REX", "SDP", "CDP", "DTS",
 	"SSP", "CHI", "NT", "TE", "CDEC", "TEST", "CDM", "RESRV"
 };
 
-#ifdef DBRI_DEBUG
-#define dprintk(a, x...) if(dbri_debug & a) snd_printd(KERN_DEBUG ## x)
+#define dprintk(a, x...) if(dbri_debug & a) printk(KERN_DEBUG x)
 
 #define DBRI_CMD(cmd, intr, value) ((cmd << 28) |			\
 				    (1 << 27) | \
@@ -321,7 +320,7 @@
 	volatile struct dbri_dma *dma;	/* Pointer to our DMA block */
 	u32 dma_dvma;		/* DBRI visible DMA address */
 
-	unsigned long regs;	/* dbri HW regs */
+	void __iomem *regs;	/* dbri HW regs */
 	int dbri_version;	/* 'e' and up is OK */
 	int dbri_irqp;		/* intr queue pointer */
 	int wait_seen;
@@ -1876,7 +1875,9 @@
 	int channel = D_INTR_GETCHAN(x);
 	int command = D_INTR_GETCMD(x);
 	int code = D_INTR_GETCODE(x);
+#ifdef DBRI_DEBUG
 	int rval = D_INTR_GETRVAL(x);
+#endif
 
 	if (channel == D_INTR_CMD) {
 		dprintk(D_CMD, "INTR: Command: %-5s  Value:%d\n",
@@ -2159,7 +2160,7 @@
 		info->left = info->size;	/* To trigger submittal */
 	}
 
-	spin_lock(&dbri->lock);
+	spin_lock_irq(&dbri->lock);
 
 	/* Setup the all the transmit/receive desciptors to cover the
 	 * whole DMA buffer.
@@ -2169,7 +2170,7 @@
 
 	runtime->stop_threshold = DBRI_TD_MAXCNT / runtime->channels;
 
-	spin_unlock(&dbri->lock);
+	spin_unlock_irq(&dbri->lock);
 
 	dprintk(D_USR, "prepare audio output. %d bytes\n", info->size);
 	return ret;
@@ -2184,7 +2185,7 @@
 	switch (cmd) {
 	case SNDRV_PCM_TRIGGER_START:
 		dprintk(D_USR, "start audio, period is %d bytes\n",
-			snd_pcm_lib_period_bytes(substream));
+			(int)snd_pcm_lib_period_bytes(substream));
 		/* Enable & schedule the tasklet that re-submits the TDs. */
 		xmit_descs_task.data = (unsigned long)dbri;
 		tasklet_schedule(&xmit_descs_task);
@@ -2484,6 +2485,7 @@
 	snd_iprintf(buffer, "REG9: 0x%x\n", sbus_readl(dbri->regs + REG9));
 }
 
+#ifdef DBRI_DEBUG
 static void dbri_debug_read(snd_info_entry_t * entry,
 			    snd_info_buffer_t * buffer)
 {
@@ -2519,6 +2521,7 @@
 		dbri_debug = i & 0x3f;
 	}
 }
+#endif
 
 void snd_dbri_proc(snd_dbri_t * dbri)
 {
@@ -2528,11 +2531,13 @@
 	err = snd_card_proc_new(dbri->card, "regs", &entry);
 	snd_info_set_text_ops(entry, dbri, 1024, dbri_regs_read);
 
+#ifdef DBRI_DEBUG
 	err = snd_card_proc_new(dbri->card, "debug", &entry);
 	snd_info_set_text_ops(entry, dbri, 4096, dbri_debug_read);
 	entry->mode = S_IFREG | S_IRUGO | S_IWUSR; /* Writable for root */
 	entry->c.text.write_size = 256;
 	entry->c.text.write = dbri_debug_write;
+#endif
 }
 
 /*
@@ -2676,7 +2681,7 @@
 		return err;
 	}
 
-	printk(KERN_INFO "audio%d at 0x%lx (irq %d) is DBRI(%c)+CS4215(%d)\n",
+	printk(KERN_INFO "audio%d at %p (irq %d) is DBRI(%c)+CS4215(%d)\n",
 	       dev, dbri->regs,
 	       dbri->irq, dbri->dbri_version, dbri->mm.version);
 	dev++;

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ALSA Driver for Sparc DBRI chips
  2004-11-25 14:01 ` Takashi Iwai
@ 2004-11-25 15:55   ` Takashi Iwai
  2004-12-01 13:58   ` Takashi Iwai
  2004-12-18 15:15   ` Martin Habets
  2 siblings, 0 replies; 5+ messages in thread
From: Takashi Iwai @ 2004-11-25 15:55 UTC (permalink / raw)
  To: Martin Habets; +Cc: alsa-devel, baccala, rfkoenig

At Thu, 25 Nov 2004 15:01:56 +0100,
I wrote:
> 
> [1  <text/plain; US-ASCII (7bit)>]
> At Sun, 21 Nov 2004 09:50:08 +0000,
> Martin Habets wrote:
> > 
> > Hi,
> > 
> > I have been working on an ALSA driver for the DBRI/CS4215 chip
> > combo found in Sparc machines. It is a port of the 2.5 OSS driver.
> > 
> > Things are starting to work, but since this is my first major
> > undertaking I'm looking for your comments. Ask early, ask often...
> > At this point I expect playback to work to all possible outputs (there
> > is some clipping on 16 bit formats). I have not been able to get recording
> > output in a file, though it does seem to catch data.
> > 
> > So I look for anything from coding style to design issues to spelling to
> > 'it worked' to 'I get an error' to the-meaning-of-the-universe.
> > Just keep the phasers on stun, please :)
> 
> Thanks for the patch.
> 
> I modified some codes to adapt to the latest 2.6.10-rc2, and reduced
> compile warnings (just checked with the cross-compile environment.)
> ALso, the spin_lock() is changed to spin_lock_irq() in the prepare
> callback since the recent version is it became non-atomic.
> The patch is below.

One thing forgot:  the proc write for debug option isn't necessary.
You can do the same via sysfs when you set the write permission to the
option.


Takashi


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ALSA Driver for Sparc DBRI chips
  2004-11-25 14:01 ` Takashi Iwai
  2004-11-25 15:55   ` Takashi Iwai
@ 2004-12-01 13:58   ` Takashi Iwai
  2004-12-18 15:15   ` Martin Habets
  2 siblings, 0 replies; 5+ messages in thread
From: Takashi Iwai @ 2004-12-01 13:58 UTC (permalink / raw)
  To: Martin Habets; +Cc: alsa-devel, baccala, rfkoenig

At Thu, 25 Nov 2004 15:01:56 +0100,
I wrote:
> 
> [1  <text/plain; US-ASCII (7bit)>]
> At Sun, 21 Nov 2004 09:50:08 +0000,
> Martin Habets wrote:
> > 
> > Hi,
> > 
> > I have been working on an ALSA driver for the DBRI/CS4215 chip
> > combo found in Sparc machines. It is a port of the 2.5 OSS driver.
> > 
> > Things are starting to work, but since this is my first major
> > undertaking I'm looking for your comments. Ask early, ask often...
> > At this point I expect playback to work to all possible outputs (there
> > is some clipping on 16 bit formats). I have not been able to get recording
> > output in a file, though it does seem to catch data.
> > 
> > So I look for anything from coding style to design issues to spelling to
> > 'it worked' to 'I get an error' to the-meaning-of-the-universe.
> > Just keep the phasers on stun, please :)
> 
> Thanks for the patch.
> 
> I modified some codes to adapt to the latest 2.6.10-rc2, and reduced
> compile warnings (just checked with the cross-compile environment.)
> ALso, the spin_lock() is changed to spin_lock_irq() in the prepare
> callback since the recent version is it became non-atomic.
> The patch is below.
> 
> If you think your driver is mature to merge to Linux kernel, let me
> know.   Otherwise I'll merge it to alsa-driver tree which is regarded
> as the experimental tree and not submitted to mainstream kernel.

Well, no response yet, so I checked it into alsa-driver tree for the
time being.


Takashi


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ALSA Driver for Sparc DBRI chips
  2004-11-25 14:01 ` Takashi Iwai
  2004-11-25 15:55   ` Takashi Iwai
  2004-12-01 13:58   ` Takashi Iwai
@ 2004-12-18 15:15   ` Martin Habets
  2 siblings, 0 replies; 5+ messages in thread
From: Martin Habets @ 2004-12-18 15:15 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

Takashi,

Sorry for the late reply. I was travelling and forgot to check alsa-devel
(shame on me!). Besides, it seems quite hard to get hold of a sparc32 to
test on while on the road.

On Thu, Nov 25, 2004 at 03:01:56PM +0100, Takashi Iwai wrote:
> I modified some codes to adapt to the latest 2.6.10-rc2, and reduced
> compile warnings (just checked with the cross-compile environment.)
> ALso, the spin_lock() is changed to spin_lock_irq() in the prepare
> callback since the recent version is it became non-atomic.
> The patch is below.
> 
> If you think your driver is mature to merge to Linux kernel, let me
> know.   Otherwise I'll merge it to alsa-driver tree which is regarded
> as the experimental tree and not submitted to mainstream kernel.

I consider the code still expermental, so alsa-driver is okay. I'd like some
other sparc folks to try it before it gets submitted to mainstream, even if
it works okay for me.

> BTW, the build environment of alsa-driver for sparc has been fixed
> recently on CVS.

Thanks for the tip. I'll check it out.

Martin


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2004-12-18 15:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-11-21  9:50 ALSA Driver for Sparc DBRI chips Martin Habets
2004-11-25 14:01 ` Takashi Iwai
2004-11-25 15:55   ` Takashi Iwai
2004-12-01 13:58   ` Takashi Iwai
2004-12-18 15:15   ` Martin Habets

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.