summaryrefslogtreecommitdiffstats
path: root/sound/pci/ctxfi
Commit message (Collapse)AuthorAgeFilesLines
* ALSA: ctxfi: Change PLL initialization codeHarry Butterworth2011-06-161-10/+7Star
| | | | | | | | This is a reworked patch from Creative to change the PLL code to address unreliable 44100Hz initialization. Signed-off-by: Harry Butterworth <heb1001@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Merge branch 'test/pci-rename' into topic/miscTakashi Iwai2011-06-143-3/+3
|\
| * ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/*Takashi Iwai2011-06-102-2/+2
| | | | | | | | | | | | | | | | | | The name argument of request_irq() appears in /proc/interrupts, and it's quite ugly when the name entry contains a space or special letters. In general, it's simpler and more readable when the module name appears there, so let's replace all entries with KBUILD_MODNAME. Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: Use KBUILD_MODNAME for pci_driver.name entriesTakashi Iwai2011-06-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | The convention for pci_driver.name entry in kernel drivers seem to be the module name or equivalent ones. But, so far, almost all PCI sound drivers use more verbose name like "ABC Xyz (12)", and these are fairly confusing when appearing as a file name. This patch converts the all pci_driver.name entries in sound/pci/* to use KBUILD_MODNAME for more unified appearance. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: ctxfi: Implement a combined capabilities query method to replace ↵Harry Butterworth2011-06-146-84/+39Star
| | | | | | | | | | | | | | multiple have_x query methods. Signed-off-by: Harry Butterworth <heb1001@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: ctxfi: Add support for Creative Titanium HDHarry Butterworth2011-06-1410-164/+487
|/ | | | | | | | | | | | | | | | Initialise model-specific DAC and ADC parts. Add controls for output and mic source selection. Rename some mixer controls according to ControlNames.txt. Remove Playback switches for Line-in and IEC958-in - these were controlling the input mute/unmute which affected capture too. Use the capture switches to control the input mute/unmute instead - it's less confusing. Initialise the WM8775 to invert the left-right clock to swap the left and right channels of the mic and aux input. Signed-off-by: Harry Butterworth <heb1001@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Fix common misspellingsLucas De Marchi2011-03-312-2/+2
| | | | | | Fixes generated by 'codespell' and manually reviewed. Signed-off-by: Lucas De Marchi <lucas.demarchi@profusion.mobi>
* ALSA: ctxfi - use list_move() instead of list_del()/list_add() combinationKirill A. Shutemov2011-03-161-2/+1Star
| | | | | Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: ctxfi - Clear input settings before initializationPrzemyslaw Bruski2011-03-141-0/+2
| | | | | | | | Clear input settings before initialization. Signed-off-by: Przemyslaw Bruski <pbruskispam@op.pl> Cc: <stable@kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: ctxfi - Fix SPDIF status retrievalPrzemyslaw Bruski2011-03-141-14/+5Star
| | | | | | | | | SDPIF status retrieval always returned the default settings instead of the actual ones. Signed-off-by: Przemyslaw Bruski <pbruskispam@op.pl> Cc: <stable@kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: ctxfi - Fix incorrect SPDIF status bit maskPrzemyslaw Bruski2011-03-141-1/+1
| | | | | | | | SPDIF status mask creation was incorrect. Signed-off-by: Przemyslaw Bruski <pbruskispam@op.pl> Cc: <stable@kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: ctxfi - Fix microphone boost codes/commentsPrzemyslaw Bruski2011-03-141-10/+18
| | | | | | | | microphone boost was set at +12dB, not +20dB (like in Windows driver and in adc_conf structure declaration), some comments added. Signed-off-by: Przemyslaw Bruski <pbruskispam@op.pl> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: sound/pci/ctxfi/ctpcm.c: Remove potential for use after freeJulia Lawall2010-11-111-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In each function, the value apcm is stored in the private_data field of runtime. At the same time the function ct_atc_pcm_free_substream is stored in the private_free field of the same structure. ct_atc_pcm_free_substream dereferences and ultimately frees the value in the private_data field. But each function can exit in an error case with apcm having been freed, in which case a subsequent call to the private_free function would perform a dereference after free. On the other hand, if the private_free field is not initialized, it is NULL, and not invoked (see snd_pcm_detach_substream in sound/core/pcm.c). To avoid the introduction of a dangling pointer, the initializations of the private_data and private_free fields are moved to the end of the function, past any possible free of apcm. This is safe because the previous calls to snd_pcm_hw_constraint_integer and snd_pcm_hw_constraint_minmax, which take runtime as an argument, do not refer to either of these fields. In each function, there is one error case where apcm needs to be freed, and a call to kfree is added. The sematic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression e,e1,e2,e3; identifier f,free1,free2; expression a; @@ *e->f = a ... when != e->f = e1 when any if (...) { ... when != free1(...,e,...) when != e->f = e2 * kfree(a) ... when != free2(...,e,...) when != e->f = e3 } // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* include cleanup: Update gfp.h and slab.h includes to prepare for breaking ↵Tejun Heo2010-03-302-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | implicit slab.h inclusion from percpu.h percpu.h is included by sched.h and module.h and thus ends up being included when building most .c files. percpu.h includes slab.h which in turn includes gfp.h making everything defined by the two files universally available and complicating inclusion dependencies. percpu.h -> slab.h dependency is about to be removed. Prepare for this change by updating users of gfp and slab facilities include those headers directly instead of assuming availability. As this conversion needs to touch large number of source files, the following script is used as the basis of conversion. http://userweb.kernel.org/~tj/misc/slabh-sweep.py The script does the followings. * Scan files for gfp and slab usages and update includes such that only the necessary includes are there. ie. if only gfp is used, gfp.h, if slab is used, slab.h. * When the script inserts a new include, it looks at the include blocks and try to put the new include such that its order conforms to its surrounding. It's put in the include block which contains core kernel includes, in the same order that the rest are ordered - alphabetical, Christmas tree, rev-Xmas-tree or at the end if there doesn't seem to be any matching order. * If the script can't find a place to put a new include (mostly because the file doesn't have fitting include block), it prints out an error message indicating which .h file needs to be added to the file. The conversion was done in the following steps. 1. The initial automatic conversion of all .c files updated slightly over 4000 files, deleting around 700 includes and adding ~480 gfp.h and ~3000 slab.h inclusions. The script emitted errors for ~400 files. 2. Each error was manually checked. Some didn't need the inclusion, some needed manual addition while adding it to implementation .h or embedding .c file was more appropriate for others. This step added inclusions to around 150 files. 3. The script was run again and the output was compared to the edits from #2 to make sure no file was left behind. 4. Several build tests were done and a couple of problems were fixed. e.g. lib/decompress_*.c used malloc/free() wrappers around slab APIs requiring slab.h to be added manually. 5. The script was run on all .h files but without automatically editing them as sprinkling gfp.h and slab.h inclusions around .h files could easily lead to inclusion dependency hell. Most gfp.h inclusion directives were ignored as stuff from gfp.h was usually wildly available and often used in preprocessor macros. Each slab.h inclusion directive was examined and added manually as necessary. 6. percpu.h was updated not to include slab.h. 7. Build test were done on the following configurations and failures were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my distributed build env didn't work with gcov compiles) and a few more options had to be turned off depending on archs to make things build (like ipr on powerpc/64 which failed due to missing writeq). * x86 and x86_64 UP and SMP allmodconfig and a custom test config. * powerpc and powerpc64 SMP allmodconfig * sparc and sparc64 SMP allmodconfig * ia64 SMP allmodconfig * s390 SMP allmodconfig * alpha SMP allmodconfig * um on x86_64 SMP allmodconfig 8. percpu.h modifications were reverted so that it could be applied as a separate patch and serve as bisection point. Given the fact that I had only a couple of failures from tests on step 6, I'm fairly confident about the coverage of this conversion patch. If there is a breakage, it's likely to be something in one of the arch headers which should be easily discoverable easily on most builds of the specific arch. Signed-off-by: Tejun Heo <tj@kernel.org> Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
* Merge branch 'topic/misc' of ↵Jaroslav Kysela2010-02-163-11/+21
|\ | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 into devel
| * sound: use DEFINE_PCI_DEVICE_TABLEAlexey Dobriyan2010-02-091-1/+1
| | | | | | | | | | | | | | | | | | Use DEFINE_PCI_DEVICE_TABLE() to make PCI device ids go to .devinit.rodata section, so they can be discarded in some cases, and make them const. Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
| * ALSA: ctxfi - Add subsystem optionTakashi Iwai2010-01-143-10/+20
| | | | | | | | | | | | | | Added a new option "subsystem" to override the PCI SSID for identifying the card type. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: ctxfi - fix PTP address initializationJaroslav Kysela2010-02-043-36/+25Star
|/ | | | | | | | | | | After hours of debugging, I finally found the reason why some source and runtime combination does not work. The PTP (page table pages) address must be aligned. I am not sure how much, but alignment to PAGE_SIZE is sufficient. Also, use ALSA's page allocation routines to ensure proper virtual -> physical address translation. Cc: <stable@kernel.org> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
* Merge branch 'fix/misc' into topic/miscTakashi Iwai2009-11-011-2/+2
|\
| * ALSA: ctxfi: Swapped SURROUND-SIDE muteSven Eckelmann2009-10-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | On Soundblaster X-FI Titenium with emu20k2 the SIDE and SURROUND mute functions are swapped. It was checked with 'speaker-test -c 8 -s 3' and (un)mute surround or 'speaker-test -c 8 -s 7' and (un)mute side. The volume seems not to be affected and works as expected. Signed-off-by: Sven Eckelmann <sven.eckelmann@gmx.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: Cleanup redundant tests on unsignedRoel Kluin2009-10-301-1/+1
|/ | | | | | | | | | | | The variables are unsigned so the test `>= 0' is always true, the `< 0' test always fails. In these cases the other part of the test catches wrapped values. In dac_audio_write() there does not occur a test for wrapped values, but the test appears redundant. Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: ctxfi - Simple code clean upTakashi Iwai2009-07-2210-101/+100Star
| | | | | | | | - replace NULL == xxx with !xxx - replace NULL != xxx with xxx - similar trivial cleanups Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Merge branch 'fix/ctxfi' into topic/ctxfiTakashi Iwai2009-07-222-12/+9Star
|\
| * ALSA: ctxfi - Fix uninitialized error checksTakashi Iwai2009-07-222-12/+9Star
| | | | | | | | | | | | | | | | | | | | | | | | | | Fix a few uninitialized error checks that were introduced recently mistakenlly during the clean-up: sound/pci/ctxfi/ctamixer.c: In function ‘get_amixer_rsc’: sound/pci/ctxfi/ctamixer.c:261: warning: ‘err’ may be used uninitialized in this function sound/pci/ctxfi/ctamixer.c: In function ‘get_sum_rsc’: sound/pci/ctxfi/ctamixer.c:415: warning: ‘err’ may be used uninitialized in this function sound/pci/ctxfi/ctsrc.c: In function ‘get_srcimp_rsc’: sound/pci/ctxfi/ctsrc.c:742: warning: ‘err’ may be used uninitialized in this function Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | Merge branch 'fix/ctxfi' into topic/ctxfiTakashi Iwai2009-07-201-2/+2
|\|
| * ALSA: ctxfi: Swapped SURROUND-SIDE channels on emu20k2Frank Roth2009-07-201-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | On Soundblaster X-FI Titanium with emu20k2 the SIDE and SURROUND channels were swapped and wrong. I double checked it with connector colors and creative soundblaster windows drivers. So I swapped them to the true order. Now "speaker-test -c6" and "speaker-test -c8" are working fine. Signed-off-by: Frank Roth <frashman@freenet.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* | ALSA: ctxfi - Native timer support for emu20k2Takashi Iwai2009-07-202-9/+55
|/ | | | | | | Added the native timer support for emu20k2, which gives much more accurate update timing than the system timer. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: ctxfi - Add PM supportWai Yew CHAY2009-06-229-107/+354
| | | | | | | | | | | | Added the suspend/resume support to ctxfi driver. The team tested on the following seems ok: AMD Athlon 64 3500+ / ASUS A8N-E / 512MB DDR ATI / Radeon X1300 20k1 & 20k2 cards 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>
* ALSA: ctxfi - Allow unknown PCI SSIDsTakashi Iwai2009-06-222-6/+22
| | | | | | | | Allow unknown PCI SSIDs for emu20k1 and emu20k2 as "unknown" model. Also, add a black-list check in case any device has to be listed as "unsupported". It has a negative value in the pci quirk entry. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: ctxfi - Fix deadlock with xfi-timerTakashi Iwai2009-06-151-8/+10
| | | | | | | | | | | The PCM x-fi native update routine can cause deadlocks when the trigger(START) is called while the stream is running. This patch fixes the deadlock by just postponing the pcm period update to the next possible wake-up. Also it adds the flip of ti->running flag (just to be sure as now). Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: ctxfi - Replace atc lock to mutexTakashi Iwai2009-06-132-15/+11Star
| | | | | | | | | | | | | | | | | | | | | | | | The spinlock in atc can cause a sleep in lock: Kernel failure message 1: BUG: sleeping function called from invalid context at mm/slub.c:1599 in_atomic(): 0, irqs_disabled(): 1, pid: 2537, name: gstreamer-prope Pid: 2537, comm: gstreamer-prope Tainted: P 2.6.29.4-167.fc11.x86_64 #1 Call Trace: [<ffffffff8103ff0f>] __might_sleep+0x10b/0x110 [<ffffffff810cd734>] __kmalloc+0x73/0x130 [<ffffffffa0b4b142>] ? daio_rsc_init+0xaa/0x125 [snd_ctxfi] [<ffffffffa0b4b212>] dao_rsc_init+0x55/0x1c0 [snd_ctxfi] [<ffffffffa0b4b3d2>] dao_rsc_reinit+0x55/0x5d [snd_ctxfi] [<ffffffff813abd6c>] ? _spin_lock_irqsave+0x32/0x3b [<ffffffffa0b454fe>] atc_spdif_out_passthru+0x92/0x136 [snd_ctxfi] ... Since the lock path is no critical path, it can be gracefully replaced with a mutex. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: ctxfi - Clear PCM resources at hw_params and hw_freeTakashi Iwai2009-06-092-3/+17
| | | | | | | | | | | | 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-091-0/+4
| | | | | | | | 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-091-0/+4
| | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: ctxfi - Add use_system_timer module optionTakashi Iwai2009-06-081-3/+6
| | | | | | | 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-082-9/+10
| | | | | | | 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-087-174/+135Star
| | | | | | | 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-081-169/+177
| | | | | | | | - 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-081-0/+4
| | | | | | | 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-0811-297/+301
| | | | | | | 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-081-6/+8
| | | | | | 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-081-17/+32
| | | | | | | 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-083-28/+55
| | | | | | | 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-051-0/+1
| | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: ctxfi - Set device 0 for mixer control elementsTakashi Iwai2009-06-051-1/+1
| | | | | | Mixer control elements are usually assigned to device 0. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ALSA: ctxfi - Clean up / optimizeTakashi Iwai2009-06-056-248/+243Star
| | | | | | | | | | - 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-051-2/+2
| | | | | | 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-059-105/+543
| | | | | | | | | | | 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-051-5/+4Star
| | | | | | 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-051-9/+9
| | | | | | | 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>