Re: Re: [ALSA - driver 0001138]: errors when installing au8820 modules

Takashi Iwai
2005-06-08T10:22:23Z

At Wed, 08 Jun 2005 17:06:39 +0800,
Raymond wrote:
>
> au8830 can be loaded after I change "unsigned long __iomem *mmio" to
> "void __iomem *mmio" on my 32 bits machine.
>
> How can I obtain the disassembly of snd-au8830.o to prove that it run
> faster than before ( without bitshift ) ?

Faster? Not measurable at all :)

> Is there any reason to make this change ?
>
> alsa-kernel/pci/au88x0/au88x0.c
> @@ -144,15 +144,18 @@
> // check PCI availability (DMA).
> if ((err = pci_enable_device(pci)) < 0)
> return err;
> - if (!pci_dma_supported(pci, VORTEX_DMA_MASK)) {
> + if (pci_set_dma_mask(pci, VORTEX_DMA_MASK) < 0 ||
> + pci_set_consistent_dma_mask(pci, VORTEX_DMA_MASK) < 0) {
> printk(KERN_ERR "error to set DMA mask\n");
> + pci_disable_device(pci);
> return -ENXIO;
> }
> - pci_set_dma_mask(pci, VORTEX_DMA_MASK);

This is clean up.

> chip = kcalloc(1, sizeof(*chip), GFP_KERNEL);
> - if (chip == NULL)
> + if (chip == NULL) {
> + pci_disable_device(pci);
> return -ENOMEM;
> + }

This fixes the PCI state in the error path.

>
> chip->card = card;
>
> @@ -202,6 +205,8 @@
> goto alloc_out;
> }
>
> + snd_card_set_dev(card, &pci->dev);
> +
> *rchip = chip;

And this sets up the missing sysfs stuff.

Takashi

-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games. How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20