openvortex-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Openvortex-dev] Re: Re: [ALSA - driver 0001138]: errors when inst


From: Raymond
Subject: Re: [Openvortex-dev] Re: Re: [ALSA - driver 0001138]: errors when installing au8820 modules
Date: Wed, 08 Jun 2005 20:34:06 +0800
User-agent: Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.4.3) Gecko/20041005

Is there any way to remove this warning for the change from "0x%08lx" to
"0x%08x" in 32-bits compiler ?

 warning: unsigned int format, long unsigned int arg (arg 2)

There is no warning before this change.


alsa-kernel/pci/au88x0/au88x0_core.c

@@ -1054,7 +1054,7 @@
                hwwrite(vortex->mmio, addr, FIFO_U0);
                if (hwread(vortex->mmio, addr) != FIFO_U0)
                        printk(KERN_ERR
-                              "bad wt fifo reset (0x%08lx, 0x%08x)!\n",
+                              "bad wt fifo reset (0x%08x, 0x%08x)!\n",
                               addr, hwread(vortex->mmio, addr));
                vortex_fifo_clearwtdata(vortex, x, FIFO_SIZE);
                addr -= 4;



Well, I've not stated the problem clearly enough.
Once set, volume stays as it should. The problem is that
PCM volume is:
1% - at lowest audible level
25% - at about 50% audible level
49% - at about max audible level
51% - at lowest audible level
75% - at about 50% audible level
99% - at about max audible level
- that is what I described as low-high-low-high.
On the other hand, Master volume behaves as expected.


What is the value of comment.range of 'PCM Playback Volume' in
/etc/asound.state for your STAC9704 (au8820) ?


According to 9704SPEC.pdf, it should be '0-31' ( 5 bits ) for STAC9704 PCM Out volume.

or check the values *low_max and *high_max return by check_volume_resolution()

http://cvs.sourceforge.net/viewcvs.py/alsa/alsa-kernel/pci/ac97/ac97_codec.c?r1=1.163&r2=1.164


Igor Kovalenko wrote:
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.



I strongly believe readl() and writel() on x86_64 does 32 bit reads/writes.
(checked linux-2.6.12-rc5). Therefore reads/writes are of correct size with
that patch - should be something different.








reply via email to

[Prev in Thread] Current Thread [Next in Thread]