aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* Merge branch 'topic/ctxfi' into for-linusTakashi Iwai2009-06-10
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * topic/ctxfi: (35 commits) ALSA: ctxfi - Clear PCM resources at hw_params and hw_free ALSA: ctxfi - Check the presence of SRC instance in PCM pointer callbacks ALSA: ctxfi - Add missing start check in atc_pcm_playback_start() ALSA: ctxfi - Add use_system_timer module option ALSA: ctxfi - Fix wrong model id for UAA ALSA: ctxfi - Clean up probe routines ALSA: ctxfi - Fix / clean up hw20k2 chip code ALSA: ctxfi - Fix possible buffer pointer overrun ALSA: ctxfi - Remove useless initializations and cast ALSA: ctxfi - Fix DMA mask for emu20k2 chip ALSA: ctxfi - Make volume controls more intuitive ALSA: ctxfi - Optimize the native timer handling using wc counter ALSA: ctxfi - Add missing inclusion of linux/math64.h ALSA: ctxfi - Set device 0 for mixer control elements ALSA: ctxfi - Clean up / optimize ALSA: ctxfi - Set periods_min to 2 ALSA: ctxfi - Use native timer interrupt on emu20k1 ALSA: ctxfi - Fix previous fix for 64bit DMA ALSA: ctxfi - Fix endian-dependent codes ALSA: ctxfi - Allow 64bit DMA ...
| * ALSA: ctxfi - Clear PCM resources at hw_params and hw_freeTakashi Iwai2009-06-09
| | | | | | | | | | | | | | | | | | | | | | | | Currently the PCM resources are allocated only once and ever in prepare callback, assuming that the PCM parameters are never changed. But it's not true. This patch adds the call of atc->pcm_release_resources() at hw_params and hw_free callbacks to assure that the PCM setup is done correctly for each h/w parameter changes. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Check the presence of SRC instance in PCM pointer callbacksTakashi Iwai2009-06-09
| | | | | | | | | | | | | | | | The SRC instances may not exist when PCM pointer callback is called at the state before initialization is finished. Add the NULL check just to be sure. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Add missing start check in atc_pcm_playback_start()Takashi Iwai2009-06-09
| | | | | | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Add use_system_timer module optionTakashi Iwai2009-06-08
| | | | | | | | | | | | | | Added use_system_timer module option to force to use the system timer instead of emu20k1 timer irq for debugging. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Fix wrong model id for UAATakashi Iwai2009-06-08
| | | | | | | | | | | | | | CTUAA should be checked instead of CTHENDRIX. The latter is for 20k2 chip. Also, fixed the detection of UAA/HENDRIX models by fixing the mask bits. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Clean up probe routinesTakashi Iwai2009-06-08
| | | | | | | | | | | | | | Clean up probe routines and model detection routines so that the driver won't call and check the PCI subsystem id at each time. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Fix / clean up hw20k2 chip codeTakashi Iwai2009-06-08
| | | | | | | | | | | | | | | | - Clean up Hungarian coding style - Don't use static variables for I2C information; this unables to use multiple instances. Now they are stored in struct hw20k2 fields. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Fix possible buffer pointer overrunTakashi Iwai2009-06-08
| | | | | | | | | | | | | | Fix possible buffer pointer overruns. Back to zero when it's equal or over the buffer size. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Remove useless initializations and castTakashi Iwai2009-06-08
| | | | | | | | | | | | | | Remove useless variable initializations and cast at the beginning of functions. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Fix DMA mask for emu20k2 chipTakashi Iwai2009-06-08
| | | | | | | | | | | | Allow 64bit DMA mask for emu20k2 chip, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Make volume controls more intuitiveTakashi Iwai2009-06-08
| | | | | | | | | | | | | | Change the volume control to dB scale (as the raw data seems so). Also added the TLV dB-scale information. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Optimize the native timer handling using wc counterTakashi Iwai2009-06-08
| | | | | | | | | | | | | | Optimize the timer update routine to look up wall clock once instead of checking the position of each stream at each timer update. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Add missing inclusion of linux/math64.hTakashi Iwai2009-06-05
| | | | | | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Set device 0 for mixer control elementsTakashi Iwai2009-06-05
| | | | | | | | | | | | Mixer control elements are usually assigned to device 0. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Clean up / optimizeTakashi Iwai2009-06-05
| | | | | | | | | | | | | | | | | | | | - Use static tables instead of assigining each funciton pointer - Add __devinit* to appropriate places; pcm, mixer and timer cannot be marked because they are kept in the function table that lives long - Move create_alsa_devs function out of struct ct_atc to mark it __devinit Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Set periods_min to 2Takashi Iwai2009-06-05
| | | | | | | | | | | | Set 2 to minimal periods of playback pcm setups, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Use native timer interrupt on emu20k1Takashi Iwai2009-06-05
| | | | | | | | | | | | | | | | | | | | | | emu20k1 has a native timer interrupt based on the audio clock, which is more accurate than the system timer (from the synchronization POV). This patch adds the code to handle this with multiple streams. The system timer is still used on emu20k2, and can be used also for emu20k1 easily by changing USE_SYSTEM_TIMER to 1 in cttimer.c. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Fix previous fix for 64bit DMATakashi Iwai2009-06-05
| | | | | | | | | | | | Remove unneeded substitution to 32bit int to make it really working. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Fix endian-dependent codesTakashi Iwai2009-06-05
| | | | | | | | | | | | | | The UAA-mode check in hwct20k1.c is implemented with the endian-dependent codes. Fix to be more portable (and readable). Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Allow 64bit DMATakashi Iwai2009-06-05
| | | | | | | | | | | | | | emu20kx chips support 64bit address PTE. Allow the DMA bit mask to accept 64bit address, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * Merge branch 'topic/ctxfi-fix' into topic/ctxfiTakashi Iwai2009-06-02
| |\
| | * ALSA: ctxfi - Support SG-buffersTakashi Iwai2009-06-02
| | | | | | | | | | | | | | | | | | Use SG-buffers instead of contiguous pages. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| | * ALSA: ctxfi - Remove PAGE_SIZE limitationTakashi Iwai2009-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove the limitation of PAGE_SIZE to be 4k by defining the own page size and macros for 4k. 8kb page size could be natively supported, but it's disabled right now for simplicity. Also, clean up using upper_32_bits() macro. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| | * ALSA: ctxfi - Fix supported PCM formatsTakashi Iwai2009-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The device seems supporting only U8, S16, S24_3LE, S32. Other linear formats result in bad outputs. Also, added the support for 32bit float format, which wasn't listed in the original code. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| | * ALSA: ctxfi - Fix PCM device namingTakashi Iwai2009-06-02
| | | | | | | | | | | | | | | | | | | | | PCM names for surround streams should be also fixed as well as the mixer element names. Also, a bit clean up for PCM name setup. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| | * ALSA: ctxfi - Fix surround mixer namesTakashi Iwai2009-06-02
| | | | | | | | | | | | | | | | | | | | | We usually pick up "Surround" mixer for the rear output, and "Side" for the extra surround. Fix the channel mapping to follow it. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| | * ALSA: ALSA: ctxfi - Release PCM resources at each prepare callTakashi Iwai2009-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The prepare callback can be called multiple times, thus it needs to release and acquire the resource again by itself at the second or later call. Simply add pcm_release_resources() at the beginning of each prepare callback in ctatc.c. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| | * ALSA: ctxfi - Fix Oops at mmappingTakashi Iwai2009-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace a spinlock with a mutex protecting the vm block list at mmap / munmap calls, which caused Oops like below: BUG: sleeping function called from invalid context at mm/slub.c:1599 in_atomic(): 0, irqs_disabled(): 1, pid: 32065, name: xine Pid: 32065, comm: xine Tainted: P 2.6.29.4-75.fc10.x86_64 #1 Call Trace: [<ffffffff81040685>] __might_sleep+0x105/0x10a [<ffffffff810c9fae>] kmem_cache_alloc+0x32/0xe2 [<ffffffffa08e3110>] ct_vm_map+0xfa/0x19e [snd_ctxfi] [<ffffffffa08e1a07>] ct_map_audio_buffer+0x4c/0x76 [snd_ctxfi] [<ffffffffa08e2aa5>] atc_pcm_playback_prepare+0x1d7/0x2a8 [snd_ctxfi] [<ffffffff8105ef3f>] ? up_read+0x9/0xb [<ffffffff81186b61>] ? __up_read+0x7c/0x87 [<ffffffffa08e36a6>] ct_pcm_playback_prepare+0x39/0x60 [snd_ctxfi] [<ffffffffa0886bcb>] snd_pcm_do_prepare+0x16/0x28 [snd_pcm] [<ffffffffa08867c7>] snd_pcm_action_single+0x2d/0x5b [snd_pcm] [<ffffffffa08881f3>] snd_pcm_action_nonatomic+0x52/0x6a [snd_pcm] [<ffffffffa088a723>] snd_pcm_common_ioctl1+0x404/0xc79 [snd_pcm] [<ffffffff810c52c8>] ? alloc_pages_current+0xb9/0xc2 [<ffffffff810c9402>] ? new_slab+0x1a5/0x1cb [<ffffffff810ab9ea>] ? vma_prio_tree_insert+0x23/0xc1 [<ffffffffa088b411>] snd_pcm_playback_ioctl1+0x213/0x230 [snd_pcm] [<ffffffff810b6c20>] ? mmap_region+0x397/0x4c9 [<ffffffffa088bd9b>] snd_pcm_playback_ioctl+0x2e/0x36 [snd_pcm] [<ffffffff810ddc64>] vfs_ioctl+0x2a/0x78 [<ffffffff810de130>] do_vfs_ioctl+0x462/0x4a2 [<ffffffff81029cef>] ? default_spin_lock_flags+0x9/0xe [<ffffffff81374647>] ? trace_hardirqs_off_thunk+0x3a/0x6c [<ffffffff810de1c5>] sys_ioctl+0x55/0x77 [<ffffffff8101133a>] system_call_fastpath+0x16/0x1b Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * | ALSA: ctxfi - Fix a typo in MODULE_LICENSETakashi Iwai2009-06-02
| |/ | | | | | | | | | | A space has to be put between GPL and v2. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Add missing module parameter definitionsTakashi Iwai2009-05-26
| | | | | | | | | | | | Added missing module_param*() and MODULE_PARM*(). Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Add depends on X86Takashi Iwai2009-05-20
| | | | | | | | | | | | | | | | | | The ctxfi driver requires explicitly the 4k page size, and gives a build error on architectures with non-4k pages. As a workaround, just add the kconfig dependency on X86, which is the only architecture ever tested. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Add prefix to debug printsTakashi Iwai2009-05-14
| | | | | | | | | | | | Added ctxfi: prefix to each debug print. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Avoid unneeded pci_read_config_*() callsTakashi Iwai2009-05-14
| | | | | | | | | | | | | | Use struct pci subsystem_device and revision fields instead of unneeded calls of pci_read_config_*(). Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Move PCI ID definitions to linux/pci_ids.hTakashi Iwai2009-05-14
| | | | | | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Add missing inclusion of linux/delay.hTakashi Iwai2009-05-14
| | | | | | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: SB X-Fi driver mergeWai Yew CHAY2009-05-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Sound Blaster X-Fi driver supports Creative solutions based on 20K1 and 20K2 chipsets. Supported hardware : Creative Sound Blaster X-Fi Titanium Fatal1ty® Champion Series Creative Sound Blaster X-Fi Titanium Fatal1ty Professional Series Creative Sound Blaster X-Fi Titanium Professional Audio Creative Sound Blaster X-Fi Titanium Creative Sound Blaster X-Fi Elite Pro Creative Sound Blaster X-Fi Platinum Creative Sound Blaster X-Fi Fatal1ty Creative Sound Blaster X-Fi XtremeGamer Creative Sound Blaster X-Fi XtremeMusic Current release features: * ALSA PCM Playback * ALSA Record * ALSA Mixer Note: * External I/O modules detection not included. Signed-off-by: Wai Yew CHAY <wychay@ctl.creative.com> Singed-off-by: Ryan RICHARDS <ryan_richards@creativelabs.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'topic/core-id-check' into for-linusTakashi Iwai2009-06-10
|\ \ | | | | | | | | | | | | | | | * topic/core-id-check: ALSA: Core - clean up snd_card_set_id* calls and remove possible id collision ALSA: Fix double locking of card list in snd_card_register()
| * | ALSA: Core - clean up snd_card_set_id* calls and remove possible id collisionJaroslav Kysela2009-06-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move locking outside snd_card_set_id_internal() function and rename it to snd_card_set_id_no_lock() for better function description. User defined id is just copied to card structure at allocation time. The real unique id procedure is called in snd_card_register() to ensure real atomicity. Signed-off-by: Jaroslav Kysela <perex@perex.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * | ALSA: Fix double locking of card list in snd_card_register()Mark Brown2009-06-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The introduction of snd_card_set_id() added a lock on the card list to the old choose_default_id() function when using it to implement the new API call. This lock is needed to allow us to walk the list and check to see if our new name is a duplicate. Unfortunately this causes a lockup when called from snd_card_register() (in cases where no ID is supplied for the card) since the card list is already locked there. Fix this fairly hideously by factoring out the implementation and using a flag to indicate if the lock should be held. A better fix would probably be to refactor snd_card_register() to move the _set_id() outside the locking region but I can't immediately see anything I can convince myself is safe. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | | Merge branch 'topic/cleanup' into for-linusTakashi Iwai2009-06-10
|\ \ \ | | | | | | | | | | | | | | | | | | | | * topic/cleanup: ALSA: Remove deprecated include/sound/driver.h ALSA: Remove deprecated snd_card_new()
| * | | ALSA: Remove deprecated include/sound/driver.hTakashi Iwai2009-04-21
| | | | | | | | | | | | | | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * | | ALSA: Remove deprecated snd_card_new()Takashi Iwai2009-04-21
| | | | | | | | | | | | | | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | | | Merge branch 'topic/caiaq' into for-linusTakashi Iwai2009-06-10
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * topic/caiaq: ALSA: snd_usb_caiaq: bump version number ALSA: snd_usb_caiaq: give better shortname ALSA: Core - add snd_card_set_id() function ALSA: snd_usb_caiaq: give better longname ALSA: snd_usb_caiaq: use strlcpy ALSA: snd_usb_caiaq: clean whitespaces
| * | | | ALSA: snd_usb_caiaq: bump version numberDaniel Mack2009-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Daniel Mack <daniel@caiaq.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * | | | ALSA: snd_usb_caiaq: give better shortnameDaniel Mack2009-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If not passed as module option, provide an own card ID with the newly introduced snd_set_card_id() call. This will prevent ALSA from calling choose_default_name() which only takes the last part of a name containing whitespaces. This for example caused 'Audio 4 DJ' to be shortened to 'DJ', which was not very descriptive. The implementation now takes the short name and removes all whitespaces from it which is much nicer. Signed-off-by: Daniel Mack <daniel@caiaq.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * | | | Merge branch 'topic/core-id-check' into topic/caiaqTakashi Iwai2009-06-02
| |\ \ \ \ | | | |/ / | | |/| |
| | * | | ALSA: Core - add snd_card_set_id() functionJaroslav Kysela2009-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce snd_card_set_id() function to allow lowlevel drivers to set default identification name for card slot. The function checks also for identification name collisions and tries to create unique name. Also, the snd_card_create() function is simplified, because this new function is used. As bonus, proper name collision checks are evaluated at the card create time. Signed-off-by: Jaroslav Kysela <perex@perex.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * | | | ALSA: snd_usb_caiaq: give better longnameDaniel Mack2009-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The serial number is of no interest in the longname, remove it. This gives space for the usb path information which is more informative. Signed-off-by: Daniel Mack <daniel@caiaq.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * | | | ALSA: snd_usb_caiaq: use strlcpyDaniel Mack2009-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Daniel Mack <daniel@caiaq.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>