linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* dmasound split
@ 2000-03-07 20:50 Geert Uytterhoeven
  2000-03-07 21:49 ` Geert Uytterhoeven
  2000-03-24 19:16 ` Richard Zidlicky
  0 siblings, 2 replies; 18+ messages in thread
From: Geert Uytterhoeven @ 2000-03-07 20:50 UTC (permalink / raw)
  To: Linux/m68k, Linux/PPC for APUS, Linux/PPC Development


This is my first test release for splitting the DMA sound driver in different
parts:

  - dmasound_core: machine independent code
  - dmasound_atari: Atari TT and Falcon code (does it make sense to split this
		    further?)
  - dmasound_awacs: PowerMac `Awacs' code
  - dmasound_paula: Amiga `Paula' code

I also cleant up the code a lot, and made the following changes (let's hope I
don't forget to mention some):

  - Add more machine specific function pointers to the MACHINE struct.
  - Merge the duplicated code for write_sq and read_sq as much as possible.
  - I use lots of #defines to `do {} while (0)' to avoid having too many
    occurrencies of #ifdef HAS_READ_SOUND (for recording).
  - Generate the copy-and-convert routines for Amiga using #defines. As a
    result we now have different routines for ulaw and alaw, which expands the
    object code a bit, but it's less error-prone.
  - Use resource management on Amiga.

The total source code did grow a bit, though. Mainly due to duplicated comments
and include statements in the modules.

Note that this is meant for 2.3.x. I haven't done 2.2.x since a long time.


Tested parts:

  - I only tested the driver for Amiga, as a loadable module. It worked even
    better than the old driver, since it plays all frames now (don't ask me
    why). `cat file > /dev/audio' still hangs at the end, though (killable by
    CTRL-C). (cfr. my previous mail to the linux-m68k list).


Known problems:

  - You can still rmmod the dmasound_{atari,awacs,paula} module while sound is
    playing, causing a crash.


To do:

  - Test it on other platforms.
  - Test recording on PowerMac.
  - Fix the locking issues.
  - Use module_{init,exit}(), conforming to the latest fashion.
  - Clean up, inline more small functions.
  - Disable heartbeat when playing sound on Amiga (heartbeat influences the
    low-pass filter and thus causes distortion).
  - Provide a small module to play with htotal when amifb is not used on Amiga
    (The DMA controller assigns DMA slots to the audio controller per video
    scanline, hence increasing the horizontal sync rate allows higher playback
    rates. Yes, that's what we call `integrated multimedia' :-).


Download:

    http://home.tvd.be/cr26864/Patches/dmasound.readme
    http://home.tvd.be/cr26864/Patches/dmasound.tar.gz


Instructions:

  - Extract dmasound.tar.gz

  - Delete obsolete files:

      rm drivers/sound/dmasound.[ch]

  - Copy new files:

      cp dmasound.h dmasound_* drivers/sound

  - Apply the patch:

      patch -p1 < dmasound.diff

  - Remove all lines containing `DMASOUND' from .config

  - Run `make oldconfig' and compile and install the modules

  - Make sure to remove the old dmasound.o from /lib/modules/<version>/misc/
    if you intend to use `modprobe' instead of `insmod', since `modprobe' may
    decide to load the old module also!

Good luck!! Thanks for your comments and test results!

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-07 20:50 Geert Uytterhoeven
@ 2000-03-07 21:49 ` Geert Uytterhoeven
  2000-03-14  8:14   ` Geert Uytterhoeven
  2000-03-24 19:16 ` Richard Zidlicky
  1 sibling, 1 reply; 18+ messages in thread
From: Geert Uytterhoeven @ 2000-03-07 21:49 UTC (permalink / raw)
  To: Linux/m68k, Linux/PPC for APUS, Linux/PPC Development


On Tue, 7 Mar 2000, Geert Uytterhoeven wrote:
> This is my first test release for splitting the DMA sound driver in different
> parts:

And here's a first patch:

  - Fix the locking problem by adding open()/release() functions to the machine
    specific modules
  - Fix the incorrect size of the requested memory region for the Amiga driver
  - Rename HAS_READ_SOUND to HAS_RECORD

--- dmasound.h	Tue Mar  7 20:54:03 2000
+++ dmasound.h	Tue Mar  7 22:13:33 2000
@@ -74,14 +74,14 @@
 #undef HAS_8BIT_TABLES
 #undef HAS_14BIT_TABLES
 #undef HAS_16BIT_TABLES
-#undef HAS_READ_SOUND
+#undef HAS_RECORD

 #if defined(CONFIG_AMIGA) || defined(CONFIG_ATARI)
 #define HAS_8BIT_TABLES
 #endif
 #if defined(CONFIG_PPC)
 #define HAS_16BIT_TABLES
-#define HAS_READ_SOUND
+#define HAS_RECORD
 #endif


@@ -95,6 +95,8 @@
 typedef struct {
     const char *name;
     const char *name2;
+    void (*open)(void);
+    void (*release)(void);
     void *(*dma_alloc)(unsigned int, int);
     void (*dma_free)(void *, unsigned int);
     int (*irqinit)(void);
@@ -148,7 +150,7 @@
     SETTINGS soft;	/* software settings */
     SETTINGS dsp;	/* /dev/dsp default settings */
     TRANS *trans_write;	/* supported translations */
-#ifdef HAS_READ_SOUND
+#ifdef HAS_RECORD
     TRANS *trans_read;	/* supported translations */
 #endif
     int volume_left;	/* volume (range is machine dependent) */
--- dmasound_atari.c	Tue Mar  7 20:54:09 2000
+++ dmasound_atari.c	Tue Mar  7 22:14:31 2000
@@ -119,6 +119,8 @@
 /*** Low level stuff *********************************************************/


+static void AtaOpen(void);
+static void AtaRelease(void);
 static void *AtaAlloc(unsigned int size, int flags);
 static void AtaFree(void *, unsigned int size);
 static int AtaIrqInit(void);
@@ -815,6 +817,16 @@
  * Atari (TT/Falcon)
  */

+static void AtaOpen(void)
+{
+	MOD_INC_USE_COUNT;
+}
+
+static void AtaRelease(void)
+{
+	MOD_DEC_USE_COUNT;
+}
+
 static void *AtaAlloc(unsigned int size, int flags)
 {
 	return atari_stram_alloc( size, NULL, "dmasound" );
@@ -1480,6 +1492,8 @@
 static MACHINE machTT = {
 	name:		"Atari",
 	name2:		"TT",
+	open:		AtaOpen,
+	release:	AtaRelease,
 	dma_alloc:	AtaAlloc,
 	dma_free:	AtaFree,
 	irqinit:	AtaIrqInit,
--- dmasound_awacs.c	Tue Mar  7 20:54:09 2000
+++ dmasound_awacs.c	Tue Mar  7 22:14:37 2000
@@ -220,6 +220,8 @@
 /*** Low level stuff *********************************************************/


+static void PMacOpen(void);
+static void PMacRelease(void);
 static void *PMacAlloc(unsigned int size, int flags);
 static void PMacFree(void *ptr, unsigned int size);
 static int PMacIrqInit(void);
@@ -805,6 +807,16 @@
  * PCI PowerMac, with AWACS and DBDMA.
  */

+static void PMacOpen(void)
+{
+	MOD_INC_USE_COUNT;
+}
+
+static void PMacRelease(void)
+{
+	MOD_DEC_USE_COUNT;
+}
+
 static void *PMacAlloc(unsigned int size, int flags)
 {
 	return kmalloc(size, flags);
@@ -1899,6 +1911,8 @@
 static MACHINE machPMac = {
 	name:		awacs_name,
 	name2:		"AWACS",
+	open:		PMacOpen,
+	release:	PMacRelease,
 	dma_alloc:	PMacAlloc,
 	dma_free:	PMacFree,
 	irqinit:	PMacIrqInit,
--- dmasound_core.c	Tue Mar  7 20:54:09 2000
+++ dmasound_core.c	Tue Mar  7 22:23:50 2000
@@ -138,7 +138,7 @@

 int dmasound_catchRadius = 0;
 static int numWriteBufs = 4, writeBufSize = 32;
-#ifdef HAS_READ_SOUND
+#ifdef HAS_RECORD
 static int numReadBufs = 4, readBufSize = 32;
 #endif

@@ -415,7 +415,7 @@
  */

 struct sound_queue dmasound_write_sq;
-#ifdef HAS_READ_SOUND
+#ifdef HAS_RECORD
 struct sound_queue dmasound_read_sq;
 #endif

@@ -531,6 +531,7 @@
 static int mixer_open(struct inode *inode, struct file *file)
 {
 	MOD_INC_USE_COUNT;
+	dmasound.mach.open();
 	mixer.busy = 1;
 	return 0;
 }
@@ -538,6 +539,7 @@
 static int mixer_release(struct inode *inode, struct file *file)
 {
 	mixer.busy = 0;
+	dmasound.mach.release();
 	MOD_DEC_USE_COUNT;
 	return 0;
 }
@@ -742,7 +744,7 @@
 }


-#ifdef HAS_READ_SOUND
+#ifdef HAS_RECORD

 /* Here is how the values are used for reading.
  * The value 'active' simply indicates the DMA is running.  This is
@@ -807,7 +809,7 @@
 	}
 	return uRead;
 }
-#endif /* HAS_READ_SOUND */
+#endif /* HAS_RECORD */


 static inline void sq_init_waitqueue(struct sound_queue *sq)
@@ -864,18 +866,18 @@
 #define write_sq_open(file)	\
 	sq_open2(&write_sq, file, FMODE_WRITE, numWriteBufs, writeBufSize, 0)

-#ifdef HAS_READ_SOUND
+#ifdef HAS_RECORD
 #define read_sq_init_waitqueue()	sq_init_waitqueue(&read_sq)
 #define read_sq_wake_up(file)		sq_wake_up(&read_sq, file, FMODE_READ)
 #define read_sq_release_buffers()	sq_release_buffers(&read_sq, 1)
 #define read_sq_open(file)	\
 	sq_open2(&read_sq, file, FMODE_READ, numReadBufs, readBufSize, 1)
-#else /* !HAS_READ_SOUND */
+#else /* !HAS_RECORD */
 #define read_sq_init_waitqueue()	do {} while (0)
 #define read_sq_wake_up(file)		do {} while (0)
 #define read_sq_release_buffers()	do {} while (0)
 #define read_sq_open(file)		(0)
-#endif /* !HAS_READ_SOUND */
+#endif /* !HAS_RECORD */


 static int sq_open(struct inode *inode, struct file *file)
@@ -883,7 +885,9 @@
 	int rc;

 	MOD_INC_USE_COUNT;
+	dmasound.mach.open();
 	if ((rc = write_sq_open(file)) || (rc = read_sq_open(file))) {
+		dmasound.mach.release();
 		MOD_DEC_USE_COUNT;
 		return rc;
 	}
@@ -955,6 +959,7 @@

 	read_sq_release_buffers();
 	write_sq_release_buffers();
+	dmasound.mach.release();
 	MOD_DEC_USE_COUNT;

 	/* There is probably a DOS atack here. They change the mode flag. */
@@ -1075,7 +1080,7 @@
 	ioctl:		sq_ioctl,
 	open:		sq_open,
 	release:	sq_release,
-#ifdef HAS_READ_SOUND
+#ifdef HAS_RECORD
 	read:		sq_read,
 #endif
 };
@@ -1125,6 +1130,7 @@
 		return -EBUSY;

 	MOD_INC_USE_COUNT;
+	dmasound.mach.open();
 	state.ptr = 0;
 	state.busy = 1;

@@ -1181,6 +1187,7 @@
 static int state_release(struct inode *inode, struct file *file)
 {
 	state.busy = 0;
+	dmasound.mach.release();
 	MOD_DEC_USE_COUNT;
 	return 0;
 }
@@ -1276,7 +1283,6 @@
 	printk(KERN_INFO "DMA sound driver installed, using %d buffers of %dk.\n",
 	       numWriteBufs, writeBufSize);

-	MOD_INC_USE_COUNT;
 	return 0;
 }

@@ -1302,7 +1308,6 @@
 	if (sq_unit >= 0)
 		unregister_sound_dsp(sq_unit);

-	MOD_DEC_USE_COUNT;
 	dmasound_active = 0;
 }

@@ -1354,7 +1359,7 @@
 EXPORT_SYMBOL(dmasound_init);
 EXPORT_SYMBOL(dmasound_deinit);
 EXPORT_SYMBOL(dmasound_write_sq);
-#ifdef HAS_READ_SOUND
+#ifdef HAS_RECORD
 EXPORT_SYMBOL(dmasound_read_sq);
 #endif
 EXPORT_SYMBOL(dmasound_catchRadius);
--- dmasound_paula.c	Tue Mar  7 20:54:09 2000
+++ dmasound_paula.c	Tue Mar  7 22:45:09 2000
@@ -72,6 +72,8 @@
 /*** Low level stuff *********************************************************/


+static void AmiOpen(void);
+static void AmiRelease(void);
 static void *AmiAlloc(unsigned int size, int flags);
 static void AmiFree(void *obj, unsigned int size);
 static int AmiIrqInit(void);
@@ -281,6 +283,16 @@
 /*** Low level stuff *********************************************************/


+static void AmiOpen(void)
+{
+	MOD_INC_USE_COUNT;
+}
+
+static void AmiRelease(void)
+{
+	MOD_DEC_USE_COUNT;
+}
+
 static inline void StopDMA(void)
 {
 	custom.aud[0].audvol = custom.aud[1].audvol = 0;
@@ -639,6 +651,8 @@
 static MACHINE machAmiga = {
 	name:		"Amiga",
 	name2:		"AMIGA",
+	open:		AmiOpen,
+	release:	AmiRelease,
 	dma_alloc:	AmiAlloc,
 	dma_free:	AmiFree,
 	irqinit:	AmiIrqInit,
@@ -665,7 +679,7 @@
 int __init paula_dmasound_init(void)
 {
 	if (MACH_IS_AMIGA && AMIGAHW_PRESENT(AMI_AUDIO)) {
-	    if (!request_mem_region(CUSTOM_PHYSADDR+0xa0, 0x20,
+	    if (!request_mem_region(CUSTOM_PHYSADDR+0xa0, 0x40,
 				    "dmasound [Paula]"))
 		return -EBUSY;
 	    dmasound.mach = machAmiga;
@@ -685,7 +699,7 @@
 void cleanup_module(void)
 {
 	dmasound_deinit();
-	release_mem_region(CUSTOM_PHYSADDR+0xa0, 0x20);
+	release_mem_region(CUSTOM_PHYSADDR+0xa0, 0x40);
 }

 #endif /* MODULE */
Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-07 21:49 ` Geert Uytterhoeven
@ 2000-03-14  8:14   ` Geert Uytterhoeven
  2000-03-14  9:55     ` Michael Schmitz
                       ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Geert Uytterhoeven @ 2000-03-14  8:14 UTC (permalink / raw)
  To: Linux/m68k, Linux/PPC for APUS, Linux/PPC Development


On Tue, 7 Mar 2000, Geert Uytterhoeven wrote:
> On Tue, 7 Mar 2000, Geert Uytterhoeven wrote:
> > This is my first test release for splitting the DMA sound driver in different
> > parts:
>
> And here's a first patch:

No comments whether it works on PowerMac and Atari?
I'd like to let this go in 2.4.0, since a driver for the Q40 is soon to be
added.

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-14  8:14   ` Geert Uytterhoeven
@ 2000-03-14  9:55     ` Michael Schmitz
  2000-03-14 10:10       ` Geert Uytterhoeven
  2000-03-15 18:39     ` Tom Rini
  2000-03-19  9:46     ` Michel Lanners
  2 siblings, 1 reply; 18+ messages in thread
From: Michael Schmitz @ 2000-03-14  9:55 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Linux/m68k, Linux/PPC for APUS, Linux/PPC Development, linux-m68k


> > And here's a first patch:
>
> No comments whether it works on PowerMac and Atari?

No. I haven't done 2.3.x in a long time on m68k. I can try PowerMac
though. Would 2.3.48-linuxcare be a good code base?

> I'd like to let this go in 2.4.0, since a driver for the Q40 is soon to be
> added.

I figure Atari will have more serious problems with 2.4 :-(

	Michael


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-14  9:55     ` Michael Schmitz
@ 2000-03-14 10:10       ` Geert Uytterhoeven
  2000-03-14 10:17         ` Michael Schmitz
  0 siblings, 1 reply; 18+ messages in thread
From: Geert Uytterhoeven @ 2000-03-14 10:10 UTC (permalink / raw)
  To: Michael Schmitz
  Cc: Linux/m68k, Linux/PPC for APUS, Linux/PPC Development, linux-m68k


On Tue, 14 Mar 2000, Michael Schmitz wrote:
> > > And here's a first patch:
> >
> > No comments whether it works on PowerMac and Atari?
>
> No. I haven't done 2.3.x in a long time on m68k. I can try PowerMac
> though. Would 2.3.48-linuxcare be a good code base?

Yes. Any recent 2.3.x tree will do.

> > I'd like to let this go in 2.4.0, since a driver for the Q40 is soon to be
> > added.
>
> I figure Atari will have more serious problems with 2.4 :-(

Yep. Time to ship Andreas' TT to SuSE...

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven ------------- Sony Software Development Center Europe (SDCE)
Geert.Uytterhoeven@sonycom.com ------------------- Sint-Stevens-Woluwestraat 55
Voice +32-2-7248638 Fax +32-2-7262686 ---------------- B-1130 Brussels, Belgium


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-14 10:10       ` Geert Uytterhoeven
@ 2000-03-14 10:17         ` Michael Schmitz
  2000-03-14 11:37           ` Jes Sorensen
  0 siblings, 1 reply; 18+ messages in thread
From: Michael Schmitz @ 2000-03-14 10:17 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Linux/m68k, Linux/PPC for APUS, Linux/PPC Development, linux-m68k


> > > No comments whether it works on PowerMac and Atari?
> >
> > No. I haven't done 2.3.x in a long time on m68k. I can try PowerMac
> > though. Would 2.3.48-linuxcare be a good code base?
>
> Yes. Any recent 2.3.x tree will do.

Ok, I'll give it a look. I'm just backing up my LinuxPPC installation to
tape after XFree 4.0 trashed my partitions a bit yesterday.

> > > I'd like to let this go in 2.4.0, since a driver for the Q40 is soon to be
> > > added.
> >
> > I figure Atari will have more serious problems with 2.4 :-(
>
> Yep. Time to ship Andreas' TT to SuSE...

Looks like it. I never really understood what Jes wanted to change about
the serial layer, and I don't have much time for that recently.

	Michael


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-14 10:17         ` Michael Schmitz
@ 2000-03-14 11:37           ` Jes Sorensen
  0 siblings, 0 replies; 18+ messages in thread
From: Jes Sorensen @ 2000-03-14 11:37 UTC (permalink / raw)
  To: Michael Schmitz
  Cc: Geert Uytterhoeven, Linux/m68k, Linux/PPC for APUS,
	Linux/PPC Development


>>>>> "Michael" == Michael Schmitz <schmitz@opal.biophys.uni-duesseldorf.de> writes:

>> Yep. Time to ship Andreas' TT to SuSE...

Michael> Looks like it. I never really understood what Jes wanted to
Michael> change about the serial layer, and I don't have much time for
Michael> that recently.

The whole design was wrong. The old m68kserial implementation was
running as a master layer controlling the low level devices. Instead
it should be a library of routines the drivers can choose to use if
they want to. The master approach puts too many restrictions onto the
individual drivers.

Linus rejected this approach more than two years ago, and it is never
going into the official tree. I have been telling everybody this for
just as long, but most people seem tohave just gotten tired of it and
started ignoring the message.

Jes

PS: Sorry about random missing characters, the latency from Australia
o Switzerland makes typing emails somewhat interesting.

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-14  8:14   ` Geert Uytterhoeven
  2000-03-14  9:55     ` Michael Schmitz
@ 2000-03-15 18:39     ` Tom Rini
  2000-03-15 23:46       ` David A. Gatwood
  2000-03-19  9:46     ` Michel Lanners
  2 siblings, 1 reply; 18+ messages in thread
From: Tom Rini @ 2000-03-15 18:39 UTC (permalink / raw)
  To: Geert Uytterhoeven; +Cc: Linux/m68k, Linux/PPC for APUS, Linux/PPC Development


On Tue, Mar 14, 2000 at 09:14:23AM +0100, Geert Uytterhoeven wrote:

> On Tue, 7 Mar 2000, Geert Uytterhoeven wrote:
> > On Tue, 7 Mar 2000, Geert Uytterhoeven wrote:
> > > This is my first test release for splitting the DMA sound driver in different
> > > parts:
> >
> > And here's a first patch:
>
> No comments whether it works on PowerMac and Atari?

Ah, right.  I tried it out on a 9600 and it worked, and seemingly better than
before (no loud hiss when insmod'ed).  Only sugjestion I would make is to
follow the trend of drivers/XXX/bigdriver/xxx.c instead of dmasound_*.c

--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
       [not found] <Pine.LNX.4.05.10003152052130.6999-100000@callisto.of.borg>
@ 2000-03-15 20:15 ` Michael Schmitz
  0 siblings, 0 replies; 18+ messages in thread
From: Michael Schmitz @ 2000-03-15 20:15 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Tom Rini, Linux/m68k, Linux/PPC for APUS, Linux/PPC Development,
	linux-m68k


> > > No comments whether it works on PowerMac and Atari?
> >
> > Ah, right.  I tried it out on a 9600 and it worked, and seemingly better than
> > before (no loud hiss when insmod'ed).  Only sugjestion I would make is to
> > follow the trend of drivers/XXX/bigdriver/xxx.c instead of dmasound_*.c
>
> Wonderfull. Usually drivers don't work anymore when you split them in parts,
> while the split dmasound seems to work better than the old one on both PowerMac
> and Amiga :-)

Untested yet on the Lombard, but here's another small patch (to get it
cmpiled in, not as a module).

	Michael

--- drivers/sound/dmasound_core.c.org	Wed Mar 15 21:14:14 2000
+++ drivers/sound/dmasound_core.c	Wed Mar 15 21:12:34 2000
@@ -1357,7 +1357,9 @@

 EXPORT_SYMBOL(dmasound);
 EXPORT_SYMBOL(dmasound_init);
+#ifdef MODULE
 EXPORT_SYMBOL(dmasound_deinit);
+#endif
 EXPORT_SYMBOL(dmasound_write_sq);
 #ifdef HAS_RECORD
 EXPORT_SYMBOL(dmasound_read_sq);


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-15 18:39     ` Tom Rini
@ 2000-03-15 23:46       ` David A. Gatwood
  0 siblings, 0 replies; 18+ messages in thread
From: David A. Gatwood @ 2000-03-15 23:46 UTC (permalink / raw)
  To: Tom Rini
  Cc: Geert Uytterhoeven, Linux/m68k, Linux/PPC for APUS,
	Linux/PPC Development


On Wed, 15 Mar 2000, Tom Rini wrote:

>
> On Tue, Mar 14, 2000 at 09:14:23AM +0100, Geert Uytterhoeven wrote:
>
> > On Tue, 7 Mar 2000, Geert Uytterhoeven wrote:
> > > On Tue, 7 Mar 2000, Geert Uytterhoeven wrote:
> > > > This is my first test release for splitting the DMA sound driver in different
> > > > parts:
> > >
> > > And here's a first patch:
> >
> > No comments whether it works on PowerMac and Atari?
>
> Ah, right.  I tried it out on a 9600 and it worked, and seemingly better than
> before (no loud hiss when insmod'ed).  Only sugjestion I would make is to
> follow the trend of drivers/XXX/bigdriver/xxx.c instead of dmasound_*.c

I noticed that the loud hiss was gone in kernels/modules built a couple of
weeks ago, too, for whatever that's worth.


David


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-14  8:14   ` Geert Uytterhoeven
  2000-03-14  9:55     ` Michael Schmitz
  2000-03-15 18:39     ` Tom Rini
@ 2000-03-19  9:46     ` Michel Lanners
  2000-03-20  9:47       ` Michael Schmitz
  2 siblings, 1 reply; 18+ messages in thread
From: Michel Lanners @ 2000-03-19  9:46 UTC (permalink / raw)
  To: geert; +Cc: linuxppc-dev


Hi Geert,

On  14 Mar, this message from Geert Uytterhoeven echoed through cyberspace:
> No comments whether it works on PowerMac and Atari?
> I'd like to let this go in 2.4.0, since a driver for the Q40 is soon to be
> added.

With all the latest patches applied:

1. compiled-in doesn't work; it seems the low-level parts are not
initialised:

Mar 19 08:54:33 piglet kernel: kmod: failed to exec  -s -k sound-slot-0, errno = 2
Mar 19 08:54:33 piglet kernel: kmod: failed to exec  -s -k sound-service-0-6, errno = 2

2. generic sound support compiled-in, PowerMac dmasound as a module:
kernel doesn't boot (hangs somewhere very early, drops me back onto
OF's screen)

3. sound & dmasound as modules: seems to work ok AFAICT. I don't have
any real sound apps to test, except system beep and using the mixer ;-)

Sorry I've not looked in more detail what's wrong, but I'm on other
subjects at the moment...

Michel

-------------------------------------------------------------------------
Michel Lanners                 |  " Read Philosophy.  Study Art.
23, Rue Paul Henkes            |    Ask Questions.  Make Mistakes.
L-1710 Luxembourg              |
email   mlan@cpu.lu            |
http://www.cpu.lu/~mlan        |                     Learn Always. "


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-19  9:46     ` Michel Lanners
@ 2000-03-20  9:47       ` Michael Schmitz
  2000-03-20 10:09         ` Geert Uytterhoeven
  0 siblings, 1 reply; 18+ messages in thread
From: Michael Schmitz @ 2000-03-20  9:47 UTC (permalink / raw)
  To: Michel Lanners; +Cc: geert, linuxppc-dev


> > No comments whether it works on PowerMac and Atari?
> > I'd like to let this go in 2.4.0, since a driver for the Q40 is soon to be
> > added.
>
> With all the latest patches applied:
>
> 1. compiled-in doesn't work; it seems the low-level parts are not
> initialised:
>
> Mar 19 08:54:33 piglet kernel: kmod: failed to exec  -s -k sound-slot-0, errno = 2
> Mar 19 08:54:33 piglet kernel: kmod: failed to exec  -s -k sound-service-0-6, errno = 2

Funny enough, this is solved on my Lombard by modprobe dmasound_core &&
modprobe dmasound_awacs. The modules are still around from an eariler
build with modularized dmasound, and still load OK. I'd say the kernel
never tries to initialize the compiled in dmasound so the module can still
register its hooks.

The Makefile seems OK, and the following dmasound symbols appear in the
symtab:

c018788c ? __kstrtab_dmasound
c0187898 ? __kstrtab_dmasound_init
c01878a8 ? __kstrtab_dmasound_write_sq
c01878bc ? __kstrtab_dmasound_read_sq
c01878d0 ? __kstrtab_dmasound_catchRadius
c01878e8 ? __kstrtab_dmasound_ulaw2dma16
c01878fc ? __kstrtab_dmasound_alaw2dma16
c018a664 ? __ksymtab_dmasound
c018a66c ? __ksymtab_dmasound_init
c018a674 ? __ksymtab_dmasound_write_sq
c018a67c ? __ksymtab_dmasound_read_sq
c018a684 ? __ksymtab_dmasound_catchRadius
c018a68c ? __ksymtab_dmasound_ulaw2dma16
c018a694 ? __ksymtab_dmasound_alaw2dma16
c019fd24 D dmasound_ulaw2dma16
c019ff24 D dmasound_alaw2dma16
c01a9f00 D dmasound_catchRadius
c01bfabc T dmasound_init
c01bfb3c t dmasound_setup
c01bfcd8 T awacs_dmasound_init
c01c7bec d __setup_str_dmasound_setup
c01e24c8 ? __setup_dmasound_setup
c025f348 B dmasound
c025f40c B dmasound_read_sq
c025f480 B dmasound_write_sq

Anything missing, Geert?

	Michael


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-20  9:47       ` Michael Schmitz
@ 2000-03-20 10:09         ` Geert Uytterhoeven
  2000-03-20 10:16           ` Michael Schmitz
  0 siblings, 1 reply; 18+ messages in thread
From: Geert Uytterhoeven @ 2000-03-20 10:09 UTC (permalink / raw)
  To: Michael Schmitz; +Cc: Michel Lanners, linuxppc-dev


On Mon, 20 Mar 2000, Michael Schmitz wrote:
> > > No comments whether it works on PowerMac and Atari?
> > > I'd like to let this go in 2.4.0, since a driver for the Q40 is soon to be
> > > added.
> >
> > With all the latest patches applied:
> >
> > 1. compiled-in doesn't work; it seems the low-level parts are not
> > initialised:
> >
> > Mar 19 08:54:33 piglet kernel: kmod: failed to exec  -s -k sound-slot-0, errno = 2
> > Mar 19 08:54:33 piglet kernel: kmod: failed to exec  -s -k sound-service-0-6, errno = 2
>
> Funny enough, this is solved on my Lombard by modprobe dmasound_core &&
> modprobe dmasound_awacs. The modules are still around from an eariler
> build with modularized dmasound, and still load OK. I'd say the kernel
> never tries to initialize the compiled in dmasound so the module can still
> register its hooks.
>
> The Makefile seems OK, and the following dmasound symbols appear in the
> symtab:
>
> c01bfabc T dmasound_init
>
> Anything missing, Geert?

Isn't this the problem where dmasound_init() is no longer called? I forgot to
update the #ifdef CONFIG_DMASOUND since I never tried it builtin.

I received a patch to call it on #ifdef CONFIG_DMASOUND_*.

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven ------------- Sony Software Development Center Europe (SDCE)
Geert.Uytterhoeven@sonycom.com ------------------- Sint-Stevens-Woluwestraat 55
Voice +32-2-7248638 Fax +32-2-7262686 ---------------- B-1130 Brussels, Belgium


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-20 10:09         ` Geert Uytterhoeven
@ 2000-03-20 10:16           ` Michael Schmitz
  0 siblings, 0 replies; 18+ messages in thread
From: Michael Schmitz @ 2000-03-20 10:16 UTC (permalink / raw)
  To: Geert Uytterhoeven; +Cc: Michel Lanners, linuxppc-dev


> > Anything missing, Geert?
>
> Isn't this the problem where dmasound_init() is no longer called? I forgot to
> update the #ifdef CONFIG_DMASOUND since I never tried it builtin.

Sounds possible.

> I received a patch to call it on #ifdef CONFIG_DMASOUND_*.

Meaning #if defined(CONFIG_DMASOUND_AWACS) || defined(CONFIG_DMASOUND_ATARI) .. ?

I'll try that, could you forward that patch if it's something else ??

	Michael


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
@ 2000-03-21 14:24 Iain Sandoe
  0 siblings, 0 replies; 18+ messages in thread
From: Iain Sandoe @ 2000-03-21 14:24 UTC (permalink / raw)
  To: geert; +Cc: linuxppc-dev


Hi Geert,

dmasound split (update).

G3/Minitower (beige, Machine ID 510, F2 rev) OK
G3/Lombard (Machine ID 406) OK

9600/233 (Machine ID 67)  nope... :-(

/dev/sndstat appears ok
but (I *think* after the first time through which might be OK)
 cat somefile.wav >/dev/dsp breaks up to give a distorted (and apparently
buffer-repeating) mess.
<CTL-C> recovers (and no crash) - but it is broken from then on ... but I
can't be more informative as present..

Iain.

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-07 20:50 Geert Uytterhoeven
  2000-03-07 21:49 ` Geert Uytterhoeven
@ 2000-03-24 19:16 ` Richard Zidlicky
  2000-03-26 20:30   ` Geert Uytterhoeven
  1 sibling, 1 reply; 18+ messages in thread
From: Richard Zidlicky @ 2000-03-24 19:16 UTC (permalink / raw)
  To: Geert Uytterhoeven, Linux/m68k, Linux/PPC for APUS,
	Linux/PPC Development

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


Hi Geert,

found the bug that caused jerky play with the splitted driver (did you get
my PM with the bug description??).

The problem is with sq_setup() or its invocation, with the default 32K
buffer size sq_setup gets called with a bufSize argument of 32  !!
So it sets write_sq accordingly and little surprise - a buffer size of 32
bytes is not enough for smooth playing.
It appears as this bug would affect all architectures.

Right now I have added following crude hack to dmasound_core.c:sq_setup and
it works nicely:

	printk("sq_setup: bufSize is %d\n",bufSize);
	if (bufSize<129) bufSize= bufSize<<10;
	sq->block_size = bufSize;

dmasound_core.c is cluttered with quite a few 'bufSize<<10' statements at
random places which shloud be IMHO fixed properly, ie it should be done
once at driver initialisation time. The old dmasound.c wasn't much better
in this respect but at least it didn't have this bug.

Anyway here are the files I have changed (sent as bzip2 mime-attachment so
Jes won't stumble upon it ;-).

Bye
Richard




[-- Attachment #2: dmasound-new.tar.bz2 --]
[-- Type: application/octet-stream, Size: 21719 bytes --]

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

* Re: dmasound split
  2000-03-24 19:16 ` Richard Zidlicky
@ 2000-03-26 20:30   ` Geert Uytterhoeven
  2000-03-29 19:41     ` Geert Uytterhoeven
  0 siblings, 1 reply; 18+ messages in thread
From: Geert Uytterhoeven @ 2000-03-26 20:30 UTC (permalink / raw)
  To: Richard Zidlicky; +Cc: Linux/m68k, Linux/PPC for APUS, Linux/PPC Development


On Fri, 24 Mar 2000, Richard Zidlicky wrote:
> found the bug that caused jerky play with the splitted driver (did you get
> my PM with the bug description??).
>
> The problem is with sq_setup() or its invocation, with the default 32K
> buffer size sq_setup gets called with a bufSize argument of 32  !!
> So it sets write_sq accordingly and little surprise - a buffer size of 32
> bytes is not enough for smooth playing.
> It appears as this bug would affect all architectures.

Thanks a lot!

I incorporated your driver for the Q40 and made a new release.

Changes:

  - Add support for Q40 (from Richard Zidlicky). The driver now consists of 5
    pieces:

       o dmasound_core: machine-independent stuff
       o dmasound_atari: support for Atari TT and Falcon [m68k]
       o dmasound_awacs: support for PowerMac Awacs/Burgundy [ppc]
       o dmasound_paula: support for Amiga Paula [m68k/ppc]
       o dmasound_q40: support for Q40

  - Disable sound on PowerBook when dmasound is not compiled in (triggered by a
    report from Michel Lanners).
  - Use the new module_{init,exit}() scheme, so dmasound_init() no longer has
    to be called in drivers/char/mem.c (triggered by a report from Iain
    Sandoe).
  - Removed unused DMASND_* definitions.
  - All buffer sizes are in bytes now, except for {read,write}BufSize and
    {MIN,MAX}_BUFSIZE, which are in KB (fixes bug reported by Richard
    Zidlicky).
  - Declared more small static functions inline.
  - Clean up of #include lists.
  - Remove dmasound_active, since it's not necessary (was never set anyway).
  - Many small clean ups.

Caveats:

  - Only dmasound_paula was tested on Amiga under Linux/m68k, using a modular
    configuration. I did compile the other drivers (also dmasound_paula under
    Linux/PPC). Dmasound_q40 did not compile due to the lack of some Q40
    specific definitions in the current Linux/m68k tree.

  - Builtin behavior has not been tested yet! Since the rest of the sound
    system is initialized using module_init() as well, correct operation
    depends on correct link order in drivers/sound/Makefile. Please let us know
    whether it works.

  - I forgot to move everything to drivers/sound/dmasound/. Since it's already
    late (BTW, I hate switching to DST!), I prefer to send out this patch
    first. Of course patches are welcomed :-)

Patches:

  - Against Linus' 2.3.99-pre3:

    http://home.tvd.be/cr26864/Patches/dmasound-v2.diff.gz

  - Against my previous release + patch:

    http://home.tvd.be/cr26864/Patches/dmasound-v1pl1-v2.diff.gz

Thank you very much for testing it on all supported platforms[*]!
If everything works fine, I'll send it to Linus for inclusion in 2.4.0.

Enjoy!

Gr{oetje,eeting}s,

						Geert

[*] I'm aware that Linux/m68k 2.3.x is broken on Atari, so I don't insist on
    reports for dmasound_atari :-)
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

* Re: dmasound split
  2000-03-26 20:30   ` Geert Uytterhoeven
@ 2000-03-29 19:41     ` Geert Uytterhoeven
  0 siblings, 0 replies; 18+ messages in thread
From: Geert Uytterhoeven @ 2000-03-29 19:41 UTC (permalink / raw)
  To: Linux/m68k, Linux/PPC Development, Linux/PPC for APUS


On Sun, 26 Mar 2000, Geert Uytterhoeven wrote:
>   - I forgot to move everything to drivers/sound/dmasound/. Since it's already
>     late (BTW, I hate switching to DST!), I prefer to send out this patch
>     first. Of course patches are welcomed :-)

Nah, it didn't turn out to be that difficult. Here's the script-'n-patch
(relative to `dmasound-v2'). I did some dry runs with various combinations of
config options and it seemed to look fine.

Note that I created the global switch CONFIG_DMASOUND, set in arch-specific
config code, to avoid having to clutter drivers/sound/Makefile too much. Anyone
with a better solution?

Thanks for testing and reporting back to the list!

mkdir drivers/sound/dmasound
mv drivers/sound/dmasound.h drivers/sound/dmasound_*.c drivers/sound/dmasound

diff -urN dmasound-v2/arch/m68k/config.in dmasound-v3-beta/arch/m68k/config.in
--- dmasound-v2/arch/m68k/config.in	Sun Mar 26 20:30:21 2000
+++ dmasound-v3-beta/arch/m68k/config.in	Wed Mar 29 21:01:29 2000
@@ -492,6 +492,17 @@
    if [ "$CONFIG_Q40" = "y" ]; then
       dep_tristate '  Q40 sound support' CONFIG_DMASOUND_Q40 $CONFIG_SOUND
    fi
+   if [ "$CONFIG_DMASOUND_PAULA" = "y" -o \
+        "$CONFIG_DMASOUND_ATARI" = "y" -o \
+	"$CONFIG_DMASOUND_Q40" = "y" ]; then
+      define_tristate CONFIG_DMASOUND y
+   else
+      if [ "$CONFIG_DMASOUND_PAULA" = "m" -o \
+	   "$CONFIG_DMASOUND_ATARI" = "m" -o \
+	   "$CONFIG_DMASOUND_Q40" = "m" ]; then
+	 define_tristate CONFIG_DMASOUND m
+      fi
+   fi
 fi
 endmenu

diff -urN dmasound-v2/arch/ppc/config.in dmasound-v3-beta/arch/ppc/config.in
--- dmasound-v2/arch/ppc/config.in	Sun Mar 26 20:30:11 2000
+++ dmasound-v3-beta/arch/ppc/config.in	Wed Mar 29 21:02:56 2000
@@ -260,6 +260,15 @@
   if [ "$CONFIG_ALL_PPC" = "y" ]; then
     dep_tristate 'PowerMac DMA sound support' CONFIG_DMASOUND_AWACS $CONFIG_SOUND
   fi
+  if [ "$CONFIG_DMASOUND_PAULA" = "y" -o \
+       "$CONFIG_DMASOUND_AWACS" = "y" ]; then
+    define_tristate CONFIG_DMASOUND y
+  else
+    if [ "$CONFIG_DMASOUND_PAULA" = "m" -o \
+	 "$CONFIG_DMASOUND_AWACS" = "m" ]; then
+       define_tristate CONFIG_DMASOUND m
+    fi
+  fi
   source drivers/sound/Config.in
 fi

diff -urN dmasound-v2/drivers/sound/Makefile dmasound-v3-beta/drivers/sound/Makefile
--- dmasound-v2/drivers/sound/Makefile	Sun Mar 26 20:30:21 2000
+++ dmasound-v3-beta/drivers/sound/Makefile	Wed Mar 29 21:23:50 2000
@@ -19,7 +19,7 @@
 export-objs	:=  ad1848.o audio_syms.o midi_syms.o mpu401.o \
 		    msnd.o opl3.o sb_common.o sequencer_syms.o \
 		    sound_core.o sound_syms.o uart401.o	\
-		    nm256_audio.o ac97.o ac97_codec.o dmasound_core.o
+		    nm256_audio.o ac97.o ac97_codec.o



@@ -80,13 +80,15 @@
 obj-$(CONFIG_SOUND_MAESTRO)	+= maestro.o
 obj-$(CONFIG_SOUND_TRIDENT)	+= trident.o ac97_codec.o

-
-# Dmasound drivers
-
-obj-$(CONFIG_DMASOUND_ATARI)  += dmasound_core.o dmasound_atari.o
-obj-$(CONFIG_DMASOUND_AWACS)  += dmasound_core.o dmasound_awacs.o
-obj-$(CONFIG_DMASOUND_PAULA)  += dmasound_core.o dmasound_paula.o
-obj-$(CONFIG_DMASOUND_Q40)    += dmasound_core.o dmasound_q40.o
+ifeq ($(CONFIG_DMASOUND),y)
+  SUB_DIRS += dmasound
+  MOD_SUB_DIRS += dmasound
+  obj-y += dmasound/dmasound.o
+else
+  ifeq ($(CONFIG_DMASOUND),m)
+    MOD_SUB_DIRS += dmasound
+  endif
+endif


 # Declare multi-part drivers.
diff -urN dmasound-v2/drivers/sound/dmasound/Makefile dmasound-v3-beta/drivers/sound/dmasound/Makefile
--- dmasound-v2/drivers/sound/dmasound/Makefile	Thu Jan  1 01:00:00 1970
+++ dmasound-v3-beta/drivers/sound/dmasound/Makefile	Wed Mar 29 21:29:50 2000
@@ -0,0 +1,38 @@
+#
+# Makefile for the DMA sound driver
+#
+# Note! Dependencies are done automagically by 'make dep', which also
+# removes any old dependencies. DON'T put your own dependencies here
+# unless it's something special (ie not a .c file).
+#
+# Note 2! The CFLAGS definitions are now in the main makefile...
+
+O_TARGET    :=
+O_OBJS      :=
+OX_OBJS     :=
+M_OBJS      :=
+MX_OBJS     :=
+
+export-objs := dmasound_core.o
+
+obj-$(CONFIG_DMASOUND_ATARI)  += dmasound_core.o dmasound_atari.o
+obj-$(CONFIG_DMASOUND_AWACS)  += dmasound_core.o dmasound_awacs.o
+obj-$(CONFIG_DMASOUND_PAULA)  += dmasound_core.o dmasound_paula.o
+obj-$(CONFIG_DMASOUND_Q40)    += dmasound_core.o dmasound_q40.o
+
+# Files that are both resident and modular: remove from modular.
+
+obj-m       := $(filter-out $(obj-y), $(obj-m))
+
+# Translate to Rules.make lists.
+
+O_OBJS      := $(filter-out $(export-objs), $(obj-y))
+OX_OBJS     := $(filter     $(export-objs), $(obj-y))
+M_OBJS      := $(sort $(filter-out $(export-objs), $(obj-m)))
+MX_OBJS     := $(sort $(filter     $(export-objs), $(obj-m)))
+
+ifeq ($(CONFIG_DMASOUND),y)
+  O_TARGET = dmasound.o
+endif
+
+include $(TOPDIR)/Rules.make


Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

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

end of thread, other threads:[~2000-03-29 19:41 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2000-03-21 14:24 dmasound split Iain Sandoe
     [not found] <Pine.LNX.4.05.10003152052130.6999-100000@callisto.of.borg>
2000-03-15 20:15 ` Michael Schmitz
  -- strict thread matches above, loose matches on Subject: below --
2000-03-07 20:50 Geert Uytterhoeven
2000-03-07 21:49 ` Geert Uytterhoeven
2000-03-14  8:14   ` Geert Uytterhoeven
2000-03-14  9:55     ` Michael Schmitz
2000-03-14 10:10       ` Geert Uytterhoeven
2000-03-14 10:17         ` Michael Schmitz
2000-03-14 11:37           ` Jes Sorensen
2000-03-15 18:39     ` Tom Rini
2000-03-15 23:46       ` David A. Gatwood
2000-03-19  9:46     ` Michel Lanners
2000-03-20  9:47       ` Michael Schmitz
2000-03-20 10:09         ` Geert Uytterhoeven
2000-03-20 10:16           ` Michael Schmitz
2000-03-24 19:16 ` Richard Zidlicky
2000-03-26 20:30   ` Geert Uytterhoeven
2000-03-29 19:41     ` Geert Uytterhoeven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).