Latest working kernel version: 2.6.25.6 Earliest failing kernel version: 2.6.26 Distribution: Slackware 12 Hardware Environment: AMD K8 on Asus M2NPV-VM Software Environment: Using GNU Make 3.81 Problem Description: During kernel config, selecting CONFIG_RTC_CLASS (rtc-core) excludes CONFIG_SND_RTCTIMER (snd-rtctimer) Both options were independently available in 2.6.25.6, the changed behaviour described below first appeared in 2.6.26 and is repeated in 2.6.26.1 and 2.6.26.3 If the intention was that the two options should be exclusive then could a note be provided in the help text/documentaion to that effect, OR if the that was not the intention is it possible to revert to the previous behaviour? Steps to reproduce: Untar kernel 2.6.26.3 source. Start off without any ".config" file. make menuconfig First confirm that "Device Drivers -> Sound -> ALSA -> RTC Timer support" option is available. Next select "Device Drivers -> Real Time Clock". This results in the option "Device Drivers -> Sound ALSA -> RTC Timer support" no longer being shown. The area of interest on the menu :- Linux Kernel v2.6.26.3 Configuration Device Drivers ---> Sound ---> Advanced Linux Sound Architecture ---> < > RTC Timer support (NEW) <---- | Exclusive | in 2.6.26.x < > Real Time Clock ---> <----
Let me find what happened. I believe ALSA still doesn't support the new kernel interface for rtc based interrupts. So either this will be added to ALSA or we'll have to describe it in the Kconfig.
IMO it's overdue for ALSA to support the more portable timer calls; it should not be depending on the legacy (== avoid using it) RTC driver for that functionality. Although there's also something to be said for a more general interface to hardware timers, which doesn't depend on any flavor of RTC. Such timers are more common than RTCs which can issue periodic IRQs at frequencies that can help audio playback.
ALSA timer code itself is written to be generic, but it requires a backend. CONFIG_SND_RTCTIMER is the legacy backend using the old RTC interface. So, if we have any good generic timer API, then the best would be to switch to that, indeed. Do we have such? Anyway, I think this is no real bug (but a feature :) I'll add a description to sound/core/Kconfig mentioning that the option is exclusive with new RTC drivers.
We have no generic timer interface as yet. Which is too bad; it seems like ALSA could happily use one (a clear use case!) on *lots* of platforms which don't have an RTC capable of issuing, say, 1024 Hz interrupts.
It does appear that an HR Timer based backend for the ALSA timers has been merged into v2.6.29-rc1. See commit: commit bbaf5e97337287479eb78dbc3822d9560bbfd2e2 Author: Takashi Iwai <tiwai@suse.de> Date: Fri Oct 24 18:16:50 2008 +0200 ALSA: Add hrtimer backend for ALSA timer interface Added the hrtimer backend for ALSA timer interface. It can be used for the sequencer timer source. Signed-off-by: Takashi Iwai <tiwai@suse.de>