From: Raymond <rayau@netvigator.com>
To: alsa-devel@lists.sourceforge.net
Cc: openvortex-dev@nongnu.org
Subject: Re: [ALSA - driver 0001138]: errors when installing au8820 modules
Date: Wed, 08 Jun 2005 17:06:39 +0800 [thread overview]
Message-ID: <42A6B51F.20405@netvigator.com> (raw)
In-Reply-To: <s5hwtp6w2nw.wl@alsa2.suse.de>
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 ) ?
alsa-kernel/pci/au88x0/au88x0.h
@@ -41,8 +41,8 @@
#define VORTEX_DMA_MASK 0xffffffff
-#define hwread(x,y) readl((x)+((y)>>2))
-#define hwwrite(x,y,z) writel((z),(x)+((y)>>2))
+#define hwread(x,y) readl((x)+(y))
+#define hwwrite(x,y,z) writel((z),(x)+(y))
@@ -172,7 +172,7 @@
/* PCI hardware resources */
unsigned long io;
- unsigned long __iomem *mmio;
+ void __iomem *mmio;
unsigned int irq;
spinlock_t lock;
I don't have any MPU401 device to test this change.
alsa-kernel/pci/au88x0/au88x0_mpu401.c
@@ -95,7 +95,7 @@
return temp;
}
#else
- port = (unsigned long)(vortex->mmio + (VORTEX_MIDI_DATA >> 2));
+ port = (unsigned long)(vortex->mmio + VORTEX_MIDI_DATA);
if ((temp =
snd_mpu401_uart_new(vortex->card, 0, MPU401_HW_AUREAL, port,
1, 0, 0, &rmidi)) != 0) {
@@ -105,7 +105,7 @@
return temp;
}
mpu = rmidi->private_data;
- mpu->cport = (unsigned long)(vortex->mmio + (VORTEX_MIDI_CMD >> 2));
+ mpu->cport = (unsigned long)(vortex->mmio + VORTEX_MIDI_CMD);
#endif
vortex->rmidi = rmidi;
return 0;
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);
chip = kcalloc(1, sizeof(*chip), GFP_KERNEL);
- if (chip == NULL)
+ if (chip == NULL) {
+ pci_disable_device(pci);
return -ENOMEM;
+ }
chip->card = card;
@@ -202,6 +205,8 @@
goto alloc_out;
}
+ snd_card_set_dev(card, &pci->dev);
+
*rchip = chip;
return 0;
Those changes in au88x0_eq.h and au88x0_eqdata.c seem WRONG.
- unsigned int *this00; /*CAsp4HwIO */
+ u32 ptr_this00; /*CAsp4HwIO */
2 * 10 seem related to the 10-bands stereo EQ.
- u16 this14[32]; /* SetLeftGainsTarget: Left (and right?)
+ u16 this14_array[32]; /* SetLeftGainsTarget: Left (and right?)
/* Set gains. */
- memset(eq->this14, 0, 2 * 10);
+ memset(eq->this14_array, 0, sizeof(eq->this14_array));
-static long eq_levels[32] = {
+static u16 eq_levels[64] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
http://lists.nongnu.org/archive/html/openvortex-dev/2003-12/msg00007.html
There is no kcontrol to change vortex->xt_mode for speaker wide, speaker
narrow, speaker Diamond , headphones to test the Crosstalk canceler
long -> s32
short -> s16
alsa-kernel/pci/au88x0/au88x0_xtalk.h
@@ -39,11 +39,11 @@
#define XT_SPEAKER1 3
#define XT_DIAMOND 4
-typedef long xtalk_dline_t[XTDLINE_SZ];
-typedef short xtalk_gains_t[XTGAINS_SZ];
-typedef short xtalk_instate_t[XTINST_SZ];
-typedef short xtalk_coefs_t[5][5];
-typedef short xtalk_state_t[5][4];
+typedef u32 xtalk_dline_t[XTDLINE_SZ];
+typedef u16 xtalk_gains_t[XTGAINS_SZ];
+typedef u16 xtalk_instate_t[XTINST_SZ];
+typedef u16 xtalk_coefs_t[5][5];
+typedef u16 xtalk_state_t[5][4];
Takashi Iwai wrote:
> At Tue, 7 Jun 2005 17:16:02 +0200,
> Alien wrote:
>
>>[1 <text/plain; iso-8859-1 (quoted-printable)>]
>>Op dinsdag 7 juni 2005 17:05, schreef Raymond:
>>
>>>The patch (diff11.diff) cause segmenation fault on my 32bit machine
>>>during /etc/init.d/alsasound start
>>>
>>>http://savannah.nongnu.org/patch/?func=detailitem&item_id=3948
>>>
>>>Do anyone know why readl() and writel() behave different in i386
>>>(32bits) and AMD64 (64bits) ?
>>>
>>>http://sourceforge.net/mailarchive/message.php?msg_id=10773530
>>>
>>>
>>>#ifndef CONFIG_X86_64
>>>
>>>#define hwread(x,y) readl((x)+((y)>>2))
>>>#define hwwrite(x,y,z) writel((z),(x)+((y)>>2))
>>>
>>>#else
>>>
>>>#define hwread(x,y) readl((x)+(y))
>>>#define hwwrite(x,y,z) writel((z),(x)+(y))
>>>
>>>#endif
>>
>>that doesn't look good, unless the mmio is void* in 32bit and unsigned long*
>>in x86_64...
>>
>>'unsigned long* mmio' should be preferred and together with '#define
>>hwread(x,y) readl((x)+(y))' , this works for both platforms
>
>
> I guess using "unsigned long" for both architectures is broken, too.
> Should be "u32" to be arch-independent.
>
>
-------------------------------------------------------
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
next prev parent reply other threads:[~2005-06-08 9:06 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-28 20:22 [ALSA - driver 0001138]: errors when installing au8820 modules bugtrack
2005-06-06 2:09 ` Raymond
2005-06-06 15:49 ` Takashi Iwai
2005-06-07 15:05 ` Raymond
2005-06-07 15:16 ` Alien
2005-06-07 16:29 ` Takashi Iwai
2005-06-07 17:05 ` [Openvortex-dev] " Igor Kovalenko
2005-06-07 17:17 ` Alien
2005-06-07 17:38 ` Igor Kovalenko
2005-06-07 18:02 ` Alien
2005-06-08 10:18 ` Takashi Iwai
2005-06-08 11:13 ` Alien
2005-06-08 12:12 ` Takashi Iwai
2005-06-08 13:29 ` Alien
2005-06-08 13:41 ` Takashi Iwai
2005-06-08 18:09 ` Igor Kovalenko
2005-06-08 11:40 ` Raymond
2005-06-08 12:19 ` Takashi Iwai
2005-06-08 18:12 ` Igor Kovalenko
2005-06-09 8:13 ` Raymond
2005-06-08 12:34 ` Raymond
2005-06-08 12:43 ` Takashi Iwai
2005-06-08 18:03 ` Igor Kovalenko
2005-06-09 8:54 ` Raymond
2005-06-28 7:50 ` Raymond
2005-07-01 19:03 ` Igor Kovalenko
2005-07-02 12:53 ` Raymond
2005-07-14 16:43 ` Igor Kovalenko
2005-06-08 9:06 ` Raymond [this message]
2005-06-08 10:22 ` Takashi Iwai
2005-06-09 8:34 ` Raymond
2005-06-09 10:17 ` [Openvortex-dev] " Igor Kovalenko
2005-06-12 15:18 ` Raymond
2005-06-10 7:35 ` Raymond
2005-06-10 10:33 ` Takashi Iwai
2005-06-10 11:28 ` Raymond
2005-07-29 14:43 ` Raymond
2005-07-29 15:09 ` Takashi Iwai
2005-08-05 12:46 ` Raymond
2005-08-05 14:32 ` Takashi Iwai
[not found] ` <43067D3B.5040601@netvigator.com>
2005-08-21 12:41 ` Takashi Iwai
2005-08-23 15:20 ` Raymond
2005-08-23 17:18 ` Takashi Iwai
2005-08-23 21:40 ` Alien
2005-08-24 10:35 ` Takashi Iwai
2005-08-25 17:12 ` Raymond
2005-08-25 17:43 ` Alien
2005-08-26 9:01 ` Raymond
2005-08-25 18:58 ` Manuel Jander
2005-08-25 20:04 ` Alien
2005-06-08 10:23 ` Alien
2005-06-09 8:49 ` Raymond
-- strict thread matches above, loose matches on Subject: below --
2005-06-08 2:43 bugtrack
2005-08-24 8:55 bugtrack
2005-08-24 8:58 bugtrack
2005-09-01 2:25 bugtrack
2005-09-01 3:58 bugtrack
2005-09-02 0:49 bugtrack
2005-09-02 3:49 bugtrack
2005-11-16 5:29 bugtrack
2005-11-23 12:50 bugtrack
2006-01-05 9:01 bugtrack
2006-03-01 7:14 bugtrack
2006-04-11 2:41 bugtrack
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=42A6B51F.20405@netvigator.com \
--to=rayau@netvigator.com \
--cc=alsa-devel@lists.sourceforge.net \
--cc=openvortex-dev@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox