diff options
Diffstat (limited to 'AlsaSound/HALayer/IntelHda')
-rw-r--r-- | AlsaSound/HALayer/IntelHda/CMakeLists.txt | 2 | ||||
-rw-r--r-- | AlsaSound/HALayer/IntelHda/IntelHdaHAL.c | 60 |
2 files changed, 28 insertions, 34 deletions
diff --git a/AlsaSound/HALayer/IntelHda/CMakeLists.txt b/AlsaSound/HALayer/IntelHda/CMakeLists.txt index 77218e2..89665e4 100644 --- a/AlsaSound/HALayer/IntelHda/CMakeLists.txt +++ b/AlsaSound/HALayer/IntelHda/CMakeLists.txt @@ -22,7 +22,7 @@ INCLUDE_DIRECTORIES(${include_dirs}) ################################################## # Inte-HDA sound card Hardware Abstraction Layer ################################################## -ADD_LIBRARY(intel-hda-hal MODULE IntelHdaHAL.c ${halsharedlib}) +ADD_LIBRARY(intel-hda-hal MODULE IntelHdaHAL.c ) SET_TARGET_PROPERTIES(intel-hda-hal PROPERTIES PREFIX "" diff --git a/AlsaSound/HALayer/IntelHda/IntelHdaHAL.c b/AlsaSound/HALayer/IntelHda/IntelHdaHAL.c index b04b545..5d668ba 100644 --- a/AlsaSound/HALayer/IntelHda/IntelHdaHAL.c +++ b/AlsaSound/HALayer/IntelHda/IntelHdaHAL.c @@ -15,9 +15,20 @@ * limitations under the License. */ #define _GNU_SOURCE -#include "AlsaHalIface.h" // Include Share Interface to Alsa Sound Card HAL +#include "AudioCommonLib.h" +#include "SharedHalLib.h" // Include Share Interface to Alsa Sound Card HAL -/***************************************************************************** +// Force a hard dependency to ShareHallLib +PUBLIC char* SharedHalLibVersion; + +// Init is call after all binding are loaded +STATIC int IntelHalInit (const struct afb_binding_interface *itf, struct afb_service service) { + DEBUG (itf, "IntelHalBinding Initialised"); + + return 0; // 0=OK +} + +/****************************************************************************************** * alsaCtlsMap link hight level sound control with low level Alsa numid ctls. * * To find out which control your sound card uses @@ -25,13 +36,16 @@ * amixer -D hw:xx controls * amixer -D hw:xx contents * amixer -D "hw:3" cget numid=xx - *****************************************************************************/ -STATIC alsaHalCtlMapT alsaHalCtlsMap[]= { - { .control=Master_Playback_Volume, .numid=16, .group=OUTVOL, .values=1, .minval=0, .maxval= 87 , .step=0, .acl=RW, .info= "Master Playback Volume" }, - { .control=PCM_Playback_Volume , .numid=27, .group=PCMVOL, .values=2, .minval=0, .maxval= 255, .step=0, .acl=RW, .info= "PCM Playback Volume" }, - { .control=PCM_Playback_Switch , .numid=17, .group=SWITCH, .values=1, .minval=0, .maxval= 1 , .step=0, .acl=RW, .info= "Master Playback Switch" }, - { .control=Capture_Volume , .numid=12, .group=INVOL , .values=2, .minval=0, .maxval= 31 , .step=0, .acl=RW, .info= "Capture Volume" }, - { .numid=0 } /* marker for end of the array */ + * + * When automatic mapping to Alsa numid is not enough a custom callback might be used + * .cb={.handle=xxxx, .callback=(json_object)MyCtlFunction(struct afb_service service, int controle, int value, const struct alsaHalCtlMapS *map)}; + ********************************************************************************************/ +STATIC alsaHalMapT alsaHalMap[]= { + { .alsa={.control=Master_Playback_Volume,.numid=16,.group=OUTVOL,.values=1,.minval=0,.maxval= 87 ,.step=0,.acl=RW}, .info= "Master Playback Volume" }, + { .alsa={.control=PCM_Playback_Volume ,.numid=27,.group=PCMVOL,.values=2,.minval=0,.maxval= 255,.step=0,.acl=RW}, .info= "PCM Playback Volume" }, + { .alsa={.control=PCM_Playback_Switch ,.numid=17,.group=SWITCH,.values=1,.minval=0,.maxval= 1 ,.step=0,.acl=RW}, .info= "Master Playback Switch" }, + { .alsa={.control=Capture_Volume ,.numid=12,.group=INVOL ,.values=2,.minval=0,.maxval= 31 ,.step=0,.acl=RW}, .info= "Capture Volume" }, + { .alsa={.numid=0}, .cb={.callback=NULL, .handle=NULL}} /* marker for end of the array */ } ; /*********************************************************************************** @@ -46,29 +60,9 @@ STATIC alsaHalCtlMapT alsaHalCtlsMap[]= { * ***********************************************************************************/ PUBLIC alsaHalSndCardT alsaHalSndCard = { - .name = "HDA Intel PCH", - .info = "Hardware Abstraction Layer for IntelHDA sound card", - .ctls = alsaHalCtlsMap, -}; - -/*********************************************************************************** - * AlsaHalSndT provides - * - cardname used to map a given card to its HAL - * - ctls previously defined AlsaHalMapT control maps - * - info free text - * - * WARNING: name should fit with 'aplay -l' as it used to map from devid to HAL - * you may also retreive shortname when AudioBinder is running from a browser - * http://localhost:1234/api/alsacore/getcardid?devid=hw:xxx - * - ***********************************************************************************/ -PUBLIC struct afb_binding alsaHalBinding = { - /* description conforms to VERSION 1 */ - .type= AFB_BINDING_VERSION_1, - .v1= { - .prefix= "intel-hda", + .name = "HDA Intel PCH", .info = "Hardware Abstraction Layer for IntelHDA sound card", - } + .ctls = alsaHalMap, + .prefix="intel-hda", + .initCB=IntelHalInit, // if NULL no initcallback }; - - |