1. 10 8月, 2011 1 次提交
  2. 10 6月, 2011 2 次提交
    • T
      ALSA: use KBUILD_MODNAME for request_irq argument in sound/pci/* · 934c2b6d
      Takashi Iwai 提交于
      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: NTakashi Iwai <tiwai@suse.de>
      934c2b6d
    • T
      ALSA: Use KBUILD_MODNAME for pci_driver.name entries · 3733e424
      Takashi Iwai 提交于
      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: NTakashi Iwai <tiwai@suse.de>
      3733e424
  3. 31 3月, 2011 1 次提交
  4. 19 2月, 2011 1 次提交
    • A
      ALSA: azt3328: add custom AC97 semi-emulation use standard ALSA AC97 layer · b5dc20cd
      Andreas Mohr 提交于
      Make use of the very flexible ALSA ac97 layer (hooks for custom I/O!)
      on this weird AC97 copycat hardware,
      via semi-extended I/O translation/emulation.
      
      Some 5kB binary/loaded size saved (well... additional huge AC97 module
      penalty not factored in, of course ;-P).
      Given that the driver previously had 20kB that's not bad,
      but the much more important thing is to have AC97 layer stress-tested
      with a thoroughly weird AC97 copycat (or, simply put, if it were not for
      this AC97 test aspect, this effort would merely have been a nut job ;).
      Signed-off-by: NAndreas Mohr <andi@lisas.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      b5dc20cd
  5. 25 1月, 2011 1 次提交
    • A
      ALSA: azt3328 - fix broken AZF_FMT_XLATE macro · c9ba374d
      Andreas Mohr 提交于
      Cleanly revert to non-macro implementation of
      snd_azf3328_codec_setfmt(), to fix last-minute functionality breakage
      induced by following checkpatch.pl recommendations without giving them
      their due full share of thought ("revolting computer, ensuing PEBKAC").
      
      I would like to thank Jiri Slaby for his very timely (in -rc1 even)
      and unexpected (uncommon hardware) "recognition of the dangerous situation"
      due to his very commendable static parser use. :)
      Reported-by: NJiri Slaby <jslaby@suse.cz>
      Signed-off-by: NAndreas Mohr <andi@lisas.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      c9ba374d
  6. 02 1月, 2011 6 次提交
  7. 22 11月, 2010 2 次提交
    • A
      ALSA: azt3328: period bug fix (for PA), add missing ACK on stop timer · 78ac07b0
      Andreas Mohr 提交于
      . Fix PulseAudio "ALSA driver bug" issue
        (if we have two alternated areas within a 64k DMA buffer, then max
        period size should obviously be 32k only).
        Back references:
         http://pulseaudio.org/wiki/AlsaIssues
         http://fedoraproject.org/wiki/Features/GlitchFreeAudio
      . In stop timer function, need to supply ACK in the timer control byte.
      . Minor log output correction
      
      When I did my first PA testing recently, the period size bug resulted
      in quite precisely observeable half-period-based playback distortion.
      
      PA-based operation is quite a bit more underrun-prone (despite its
      zero-copy optimizations etc.) than raw ALSA with this rather spartan
      sound hardware implementation on my puny Athlon.
      
      Note that even with this patch, azt3328 still doesn't work for both
      cases yet, PA tsched=0 and tsched
      (on tsched=0 it will playback tiny fragments of periods, leading to tiny
      stuttering sounds with some pauses in between, whereas with
      timer-scheduled operation playback works fine - minus some quite increased
      underrun trouble on PA vs. ALSA, that is).
      Signed-off-by: NAndreas Mohr <andi@lisas.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      78ac07b0
    • A
      ALSA: azt3328: period bug fix (for PA), add missing ACK on stop timer · 7974150c
      Andreas Mohr 提交于
      . Fix PulseAudio "ALSA driver bug" issue
        (if we have two alternated areas within a 64k DMA buffer, then max
        period size should obviously be 32k only).
        Back references:
         http://pulseaudio.org/wiki/AlsaIssues
         http://fedoraproject.org/wiki/Features/GlitchFreeAudio
      . In stop timer function, need to supply ACK in the timer control byte.
      . Minor log output correction
      
      When I did my first PA testing recently, the period size bug resulted
      in quite precisely observeable half-period-based playback distortion.
      
      PA-based operation is quite a bit more underrun-prone (despite its
      zero-copy optimizations etc.) than raw ALSA with this rather spartan
      sound hardware implementation on my puny Athlon.
      
      Note that even with this patch, azt3328 still doesn't work for both
      cases yet, PA tsched=0 and tsched
      (on tsched=0 it will playback tiny fragments of periods, leading to tiny
      stuttering sounds with some pauses in between, whereas with
      timer-scheduled operation playback works fine - minus some quite increased
      underrun trouble on PA vs. ALSA, that is).
      Signed-off-by: NAndreas Mohr <andi@lisas.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      7974150c
  8. 09 2月, 2010 1 次提交
  9. 05 11月, 2009 1 次提交
  10. 15 7月, 2009 1 次提交
    • A
      ALSA: azt3328: fix previous breakage, improve suspend, cleanups · 78df617a
      Andreas Mohr 提交于
      - fix my previous codec activity breakage (_non-warned_ variable assignment
        issue)
      - convert suspend/resume to 32bit I/O access (I/O is painful; to improve
        suspend/resume performance)
      - change DEBUG_PLAY_REC to DEBUG_CODEC for consistency
      - printk cleanup
      - some logging improvements
      - minor cleanup/improvements
      
      The variable assignment issue above was a conditional assignment to the
      call_function variable (this ended with the non-preinitialized variable
      not getting assigned in some cases, thus a dangling stack value, yet gcc 4.3.3
      unbelievably did _NOT_ warn about it in this case!!),
      needed to change this into _always_ assigning the check result.
      Practical result of this bug was that when shutting down
      _either_ playback or capture, _both_ streams dropped dead :P
      
      Tested, working (plus resume) and checkpatch.pl:ed on 2.6.30-rc5,
      applies cleanly to 2.6.30 proper with my previous (committed)
      patches applied.
      Signed-off-by: NAndreas Mohr <andi@lisas.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      78df617a
  11. 06 7月, 2009 1 次提交
    • A
      ALSA: azt3328: large codec cleanup, add I2S port etc. · dfbf9511
      Andreas Mohr 提交于
      - fully separate codec I/O port handling, enabling the use of a single
        function each for all codecs (playback, capture, I2S out)
      - add a new separate pcm for I2S out port (UNTESTED, no I2S DAC
        available yet)
      - switch gameport to low frequency while idle, to try to reduce noise/power
      - improve snd_azf3328_codec_setdmaa() calculation
      - minor variable type cleanup (u16, bool etc.)
      - add some doc updates (help those lost Windows users, debug help, ...)
      
      Note that due to the large cleanup aspect of the codec I/O change,
      I was able to fit everything including all improvements into the
      same binary size!! (a measly 10 bytes more or so)
      
      This should now be the almost last patch to this driver
      (minus some possible kernel clocksource patch and x86_64 fixes or so).
      I just felt like taking a break from the usual stuff and wanted to
      get this driver's structure finished, and it's rather clean now...
      
      Tested, working and checkpatch.pl:ed on 2.6.30-rc5,
      applies cleanly to 2.6.30 proper.
      Signed-off-by: NAndreas Mohr <andi@lisas.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      dfbf9511
  12. 07 4月, 2009 1 次提交
  13. 05 2月, 2009 1 次提交
  14. 12 1月, 2009 1 次提交
  15. 13 8月, 2008 1 次提交
  16. 26 6月, 2008 1 次提交
    • A
      ALSA: PCI168 snd-azt3328: some more fixups · 627d3e7a
      Andreas Mohr 提交于
      - fix problem with codec register 0x6a being write-only
        by adding a software shadow register
        (caused annoying noise after module loading due to _toggling_
        between gameport and audio bits instead of configuring them properly)
      - rename several "Wave" mixer controls to "PCM", since this is
        what Wine and several other apps are looking for (IOW, _requiring_)
        and this is what AC97 specs use as naming, too,
        thus I'd guess it's what these controls are
      - cleanup, small optimizations
      Signed-off-by: NAndreas Mohr <andi@lisas.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      Signed-off-by: NJaroslav Kysela <perex@perex.cz>
      627d3e7a
  17. 19 5月, 2008 1 次提交
    • A
      [ALSA] PCI168 snd-azt3328 Linux driver: another huge update · 02330fba
      Andreas Mohr 提交于
      - figured out 'Digital(ly) Enhanced Game Port' functionality,
        implemented support for it (eliminating gameport polling overhead)
      - removed optional joystick activation, gameport now enabled unconditionally,
        since we now support it via the PCI I/O space, not via conflict-prone
        legacy I/O (which I was thus able to DISABLE now)!
      - fix playback bug (a muted wave output would get unmuted upon start of
        playback, of course this is not what we want, thus remember mute state)
      - implement partial power management: when idle, lower clock rate and disable
        codec (reduced noise!), and disable gameport circuit when unused
      - instantiate OPL3 timer, too
      - much better implementation of snd_azf3328_mixer_write_volume_gradually()
      - slightly optimized interrupt handling
      - lots of cleanup
      
      This time, I also found a way to verify proper OPL3 operation
      via MIDI file playback (emulation via synth hardware).
      Signed-off-by: NAndreas Mohr <andi@lisas.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      Signed-off-by: NJaroslav Kysela <perex@perex.cz>
      02330fba
  18. 24 4月, 2008 2 次提交
  19. 01 2月, 2008 1 次提交
    • T
      [ALSA] Remove sound/driver.h · 9004acc7
      Takashi Iwai 提交于
      This header file exists only for some hacks to adapt alsa-driver
      tree.  It's useless for building in the kernel.  Let's move a few
      lines in it to sound/core.h and remove it.
      With this patch, sound/driver.h isn't removed but has just a single
      compile warning to include it.  This should be really killed in
      future.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      Signed-off-by: NJaroslav Kysela <perex@perex.cz>
      9004acc7
  20. 11 5月, 2007 2 次提交
  21. 20 12月, 2006 1 次提交
  22. 22 10月, 2006 1 次提交
  23. 05 10月, 2006 1 次提交
    • D
      IRQ: Maintain regs pointer globally rather than passing to IRQ handlers · 7d12e780
      David Howells 提交于
      Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
      of passing regs around manually through all ~1800 interrupt handlers in the
      Linux kernel.
      
      The regs pointer is used in few places, but it potentially costs both stack
      space and code to pass it around.  On the FRV arch, removing the regs parameter
      from all the genirq function results in a 20% speed up of the IRQ exit path
      (ie: from leaving timer_interrupt() to leaving do_IRQ()).
      
      Where appropriate, an arch may override the generic storage facility and do
      something different with the variable.  On FRV, for instance, the address is
      maintained in GR28 at all times inside the kernel as part of general exception
      handling.
      
      Having looked over the code, it appears that the parameter may be handed down
      through up to twenty or so layers of functions.  Consider a USB character
      device attached to a USB hub, attached to a USB controller that posts its
      interrupts through a cascaded auxiliary interrupt controller.  A character
      device driver may want to pass regs to the sysrq handler through the input
      layer which adds another few layers of parameter passing.
      
      I've build this code with allyesconfig for x86_64 and i386.  I've runtested the
      main part of the code on FRV and i386, though I can't test most of the drivers.
      I've also done partial conversion for powerpc and MIPS - these at least compile
      with minimal configurations.
      
      This will affect all archs.  Mostly the changes should be relatively easy.
      Take do_IRQ(), store the regs pointer at the beginning, saving the old one:
      
      	struct pt_regs *old_regs = set_irq_regs(regs);
      
      And put the old one back at the end:
      
      	set_irq_regs(old_regs);
      
      Don't pass regs through to generic_handle_irq() or __do_IRQ().
      
      In timer_interrupt(), this sort of change will be necessary:
      
      	-	update_process_times(user_mode(regs));
      	-	profile_tick(CPU_PROFILING, regs);
      	+	update_process_times(user_mode(get_irq_regs()));
      	+	profile_tick(CPU_PROFILING);
      
      I'd like to move update_process_times()'s use of get_irq_regs() into itself,
      except that i386, alone of the archs, uses something other than user_mode().
      
      Some notes on the interrupt handling in the drivers:
      
       (*) input_dev() is now gone entirely.  The regs pointer is no longer stored in
           the input_dev struct.
      
       (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking.  It does
           something different depending on whether it's been supplied with a regs
           pointer or not.
      
       (*) Various IRQ handler function pointers have been moved to type
           irq_handler_t.
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
      7d12e780
  24. 13 7月, 2006 1 次提交
  25. 03 7月, 2006 1 次提交
  26. 23 6月, 2006 4 次提交
  27. 28 4月, 2006 1 次提交
  28. 29 3月, 2006 1 次提交