sound sleep

Takashi Oe toe at
Mon Sep 20 12:17:07 EST 1999

On Sun, 19 Sep 1999, Joseph Garcia wrote:

> i have this problem ony my wallstreet/300 also.  I don't know of a fix yet.  A
> temporary way around it would be to make a module of dmasound, and rmmod it
> before sleeping, and insmodding it after, however it seems that this code is
> also broken.  interrupt allocation.  will panic upon a 3rd insmod, or a cat of
> /proc/interrupts while it is not installed.  If this were fixed, i'd think the
> sleeping issue would be a snap.

Try changing the last argument of request_irq() in PMacIrqInit() and
free_irq() in PMacIrqCleanup().  For example, change
	request_irq(awacs_irq, pmac_awacs_intr, 0, "AWACS", 0)
	free_irq(awacs_irq, pmac_awacs_intr)
	request_irq(awacs_irq, pmac_awacs_intr, 0, "AWACS", (void *)awacs)
	free_irq(awacs_irq, (void *)awacs).
I think that's what I did in order to get rid of the panic.

For the wake up problem, does it help if you put the code similar to the
following in awacx_sleep_notify()?

before enable_irq()'s:

	oöout_le32(&awacs_txdma->control, (RUN|WAKE|FLUSH|PAUSE) << 16

after enable_irq()'s:
	st_le16(&beep_dbdma_cmd->command, DBDMA_STOP);
	out_le32(&awacs->control, (in_le32(&awacs->control) & ~0x1f00)
		| ((awacs_revision < AWACS_BURGUNDY)? BEEP_SPEED:0) << 8);
	out_le32(&awacs_txdma->cmdptr, virt_to_bus(beep_dbdma_cmd));
	out_le32(&awacs_txdma->control, RUN | (RUN << 16));

Takashi Oe

** Sent via the linuxppc-dev mail list. See

More information about the Linuxppc-dev mailing list