Clemens Ladisch [Wed, 2 Nov 2005 10:32:52 +0000 (11:32 +0100)]
[ALSA] usb-audio: start submitting URBs in the prepared state
Modules: USB generic driver
If we submit all our URBs when a playback stream is started, the first
hwptr_done update for each URB happens at the same time. This results
in an underrun when there isn't enough PCM data available at this
point for all URBs.
To avoid this, we begin submitting our URBs earlier (when the stream
is prepared), with empy packets. When the stream is started, the
prepare_playback_urb() call for each URB will be run only when the
respective URB has completed previously, so the first hwptr_done
updates will be done nicely staggered.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
AMD Au1x00 ALSA driver fails compilation with the alternate spinlock
implementation because it doesn't do locking/unlocking correctly in some
places (passes spinlock by value).
Signed-off-by: Konstantin Baydarov <kbaidarov@ru.mvista.com> Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Lee Revell [Tue, 25 Oct 2005 09:25:29 +0000 (11:25 +0200)]
[ALSA] emu10k1 - Use 31 bit DMA mask for Audigy
Modules: EMU10K1/EMU10K2 driver
It appears that either the Audigy DMA engine or the Linux kernel cannot
handle 32 bit DMA with this device. Problem manifests as noise when
using more than 2GB of RAM, possibly only on 64 bit machines.
The OSS driver actually uses a 29 bit DMA mask for both devices, this
seems like overkill for now.
Signed-off-by: Lee Revell <rlrevell@joe-job.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Andreas Mohr [Tue, 25 Oct 2005 09:17:45 +0000 (11:17 +0200)]
[ALSA] AZT3328 driver update
Modules: AZT3328 driver
this is now an even much more reworked patch (#3) for my azt3328.c ALSA driver.
IOW I spent another 4 evenings to get the sequencer timer to work properly
(my head is still hurting) and do lots of other cleanups.
Note that despite the extensive sequencer timer additions, the driver object
is still only 2kB bigger than the previous version, due to those many
optimizations...
Changes in version #3:
- fully working ALSA sequencer timer support for the card's 1024000Hz
DirectX timer (downscaling adjustable via seqtimer_scaling module param)
- an insane amount of code optimizations
- many, many cleanups
Changes in version #2:
- FOUND the 1us DirectX timer area (yay!), made the code respect it
properly
- renamed some 'weird' mixer control names according to ControlNames.txt
- cleanup unneeded debug messages, reformatting
- improved I/O register documentation
- constified many more structs
Changes in version #1:
- improves/fixes some fatal playback/recording interaction
- improves IRQ handler performance (and actually fixes some weird code)
- coalesces some I/O accesses
- slightly improves I/O interface documentation
- improves/fixes logging
- defines out some less important debug code
- constifies some data
Signed-off-by: Andreas Mohr <andi@lisas.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Clemens Ladisch [Mon, 24 Oct 2005 15:02:03 +0000 (17:02 +0200)]
[ALSA] clean up device types symbols
Modules: ALSA Core,ALSA Minor Numbers
Remove the unused and undefined symbols SNDRV_DEVICE_TYPE_{MIXER,
PCM_PLOOP,PCM_CLOOP}, and introduce a new symbol SNDRV_MINOR_GLOBAL
for non-card-specific devices like the sequencer or the timer.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Use schedule_timeout_{,un}interruptible() instead of
set_current_state()/schedule_timeout() to reduce kernel size. Also use
human-time conversion functions instead of hard-coded division to avoid
rounding issues.
Wei Ni [Mon, 24 Oct 2005 09:04:51 +0000 (11:04 +0200)]
[ALSA] intel8x0 - fix capture for M1563
Modules: Intel8x0 driver
1.In intel8x0_measure_ac97_clock routine, when stop DMA, there is not stop
DMA corectly, but start another PCM In2 DMA engine.
2.In do_ali_reset routine, there is only need to enable PCM IN and PCM OUT.
John W. Linville [Wed, 19 Oct 2005 14:03:10 +0000 (16:03 +0200)]
[ALSA] nm256: reset workaround for Latitude CSx
Modules: NM256 driver
The current snd-nm256 driver can cause Dell Latitude CSx laptops to
lock-up during module (un)load. I have isolated this to the writes to
the control port register at offset 0x6cc which were not already
protected by the existing reset_workaround.
I tried grouping these writes with the existing reset_workaround
clause, but that caused the driver to have (un)load problems on the
Dell Latitude LS laptops. So, I have implemented a reset_workaround_2
clause (please feel free to suggest a better name!) to cover this
situation and added a quirk entry for the CSx laptops.
Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Clemens Ladisch [Wed, 19 Oct 2005 12:39:48 +0000 (14:39 +0200)]
[ALSA] ymfpci: change timer resolution to 48 kHz
Modules: YMFPCI driver
We better pretend that the ymfpci timer runs at 48 kHz because the
interrupt frequency cannot be higher, and clients that would try to
use 96 kHz would run at half their desired speed.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Clemens Ladisch [Wed, 19 Oct 2005 12:38:30 +0000 (14:38 +0200)]
[ALSA] seq-timer: restrict timer frequencies
Modules: ALSA sequencer
When no default timer frequency has been set, initialize_timer() just
uses the maximum frequency supported by the timer, which is ridiculously
high on 96 kHz timers.
This patch introduces a default frequency of 1000 Hz for this case, and
makes sure that a frequency set by the user isn't too high.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
This patch fixes the maestro3 driver to call the snd_m3_assp_init
function to write the DSP firmware into the ASSP chip before sending the
RUN_ASSP command, thereby solving the hang after a cold boot.
Signed-off-by: Charles R. Anderson <cra@alum.wpi.edu> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Karsten Wiese [Tue, 18 Oct 2005 12:31:07 +0000 (14:31 +0200)]
[ALSA] Reduce interrupt latency in sound/pci/via82xx.c
Modules: VIA82xx driver
The change only affects the via823x kind of chips.
Here the via8233_pcm_pointer_hw() function
(named snd_via8233_pcm_pointer() before)
needed to loop until a non zero position is red from the chip.
Measurements have shown that more than 200 loops are typically needed on
an Athlon64.
As io-reads cost many cycles, those loops sum up huge.
via8233_pcm_pointer_hw() runs either in interrupt or with interrupts
disabled. So it introduces significant interrupt latency.
The patch introduces a calculated position value hwptr_done,
that is updated by the interrupt routine when a period is completed.
It is only used, if the 823x chip returns a zero position, which can't
be interpreted reliably.
Further optimisation is applied on the 8233 chip's interrupt routine:
Only the SGD_SHADOW is read, as it contains all infos needed.
We ommit ~5 more register reads that way.
Clemens Ladisch [Mon, 17 Oct 2005 15:15:46 +0000 (17:15 +0200)]
[ALSA] usb-audio: don't call usb_reset_configuration() when probing
Modules: USB generic driver
Remove the usb_reset_configuration() call from the probe callback
because it isn't needed and it may interfere with other drivers
already loaded for the device.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Honza Maly [Fri, 14 Oct 2005 16:18:01 +0000 (18:18 +0200)]
[ALSA] Enable DXS controls for VIA VT82xx
Modules: VIA82xx driver
The patch enable separate DXS controls of sound function of VIA VT82xx
controller in case DXS volume is not needed for PCM Playback volume
control emulation.
Signed-off-by: Honza Maly <hkmaly@matfyz.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Clemens Ladisch [Wed, 12 Oct 2005 15:12:31 +0000 (17:12 +0200)]
[ALSA] timers: add module refcounting for global timers
Modules: RTC timer driver,Timer Midlevel
Add a module pointer to the timer structure and use it for refcounting
instead of the card's module pointer to prevent the global timer
modules (rtctimer and hpetimer) from being removed while in use.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Rudolf Marek [Mon, 10 Oct 2005 10:11:23 +0000 (12:11 +0200)]
[ALSA] es1938 - Fix resume
Modules: ES1938 driver
This patch fixes the suspend/resume issue I'm having with ESS-Solo1
soundcard. Without this patch I might get after resume message
that kernel is disabling the IRQ5 (soundcard). If there was something
playing it wont continue after resume without this patch.
Signed-off-by: Rudolf Marek <r.marek@sh.cvut.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Dick Streefland [Fri, 7 Oct 2005 10:02:23 +0000 (12:02 +0200)]
[ALSA] intel8x0 - enable ac97_quirk hp_only for Acer Aspire 3003LCi
Modules: Intel8x0 driver
On my Acer Aspire 3003LCi laptop, the speaker volume is not controlled
by the master control, but by the headphone control. Enabling the
'hp_only' quirk corrects this. The patch below adds this device to the
list of known quirks.
Signed-off-by: Dick Streefland <dick@streefland.net> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Randy Dunlap [Fri, 30 Sep 2005 14:55:14 +0000 (16:55 +0200)]
[ALSA] sound: align device drivers menus
Modules: Sound Core,PCI drivers
AC97 Kconfig entries broke the ALSA device drivers menu,
so move them to a location where that won't happen,
enabling all device sub-menus to be presented together.
Signed-off-by: Randy Dunlap <rdunlap@xenotime.net> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This patch cleans last ac97 audio/modem codec interception in
initialization procedures (ac97_mixer_new()) and removes obsolete
SHARED_TYPE 'locking' which prevents from AMC codecs to function
correctly.
Alexandre Oliva [Mon, 31 Oct 2005 20:29:36 +0000 (18:29 -0200)]
[PATCH] x86-64: bitops fix for -Os
This fixes the x86-64 find_[first|next]_zero_bit() function for the
end-of-range case. It didn't test for a zero size, and the "rep scas"
would do entirely the wrong thing.
Nathan Scott [Thu, 3 Nov 2005 02:55:06 +0000 (13:55 +1100)]
[XFS] fix XFS quota for modular XFS builds
Cannot build XFS filesystem support as module with quota support. It
works only when the XFS filesystem support is compiled into the kernel.
Menuconfig prevents from setting CONFIG_XFS_FS=m and CONFIG_XFS_QUOTA=y.
How to reproduce: configure the XFS filesystem with quota support as
module. The resulting kernel won't have quota support compiled into
xfs.ko.
Fix: Changing the fs/xfs/Kconfig file from tristate to bool lets you
configure the quota support to be compiled into the XFS module. The
Makefile-linux-2.6 checks only for CONFIG_XFS_QUOTA=y.
Signed-off-by: Dimitri Puzin <tristan-777@ddkom-online.de> Signed-off-by: Adrian Bunk <bunk@stusta.de>
signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Nathan Scott <nathans@sgi.com>
Nathan Scott [Thu, 3 Nov 2005 02:53:34 +0000 (13:53 +1100)]
[XFS] Add a mechanism for XFS to use the generic quota sync method.
This is now used to issue a delayed allocation flush before reporting
quota, which allows the used space quota report to match reality.
Russell King [Wed, 2 Nov 2005 14:11:35 +0000 (14:11 +0000)]
[ARM] Fix mm initialisation with write buffered write allocate caches
It seems that without the extra tlb flush, we may end up faulting
during the early kernel initialisation because the TLB can't see
the updated page tables.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
John Bowler [Wed, 2 Nov 2005 11:55:12 +0000 (11:55 +0000)]
[ARM] 3083/1: include/asm-arm/arch-ixp4xx/io.h: eliminate warnings for pointer passed to integral function argument
Patch from John Bowler
Fix for a compiler warning, this wasn't apparent in 2.6.12, I
believe the compiler options have been changed (somewhere) so
that passing a (void*) to a (u32) argument is now warned.
This accounts for the majority of the warnings in my builds of
the 2.6.14 kernel for NSLU2.
The patch changes pointer parameters declared as u32 to be
declared as either, for read parameters:
const volatile void __iomem *
and for write parameters:
volatile void __iomem *
Signed-off-by: John Bowler <jbowler@acm.org> Signed-off-by: Deepak Saxena <dsaxena@plexity.net> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Tejun Heo [Tue, 1 Nov 2005 08:23:49 +0000 (17:23 +0900)]
[PATCH] blk: fix dangling pointer access in __elv_add_request
cfq's add_req_fn callback may invoke q->request_fn directly and
depending on low-level driver used and timing, a queued request may be
finished & deallocated before add_req_fn callback returns. So,
__elv_add_request must not access rq after it's passed to add_req_fn
callback.
This patch moves rq_mergeable test above add_req_fn(). This may
result in q->last_merge pointing to REQ_NOMERGE request if add_req_fn
callback sets it but as RQ_NOMERGE is checked again when blk layer
actually tries to merge requests, this does not cause any problem.
Santiago Leon [Tue, 1 Nov 2005 19:15:09 +0000 (14:15 -0500)]
[PATCH] ibmveth fix panic in initial replenish cycle
This patch fixes a panic in the current tree caused by a race condition between the initial replenish cycle and the rx processing of the first packets trying to replenish the buffers.
Signed-off-by: Santiago Leon <santil@us.ibm.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>