diff options
Diffstat (limited to 'snd-alpx-dkms/snd-alpx/tools/build-load-script.sh')
-rwxr-xr-x | snd-alpx-dkms/snd-alpx/tools/build-load-script.sh | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/snd-alpx-dkms/snd-alpx/tools/build-load-script.sh b/snd-alpx-dkms/snd-alpx/tools/build-load-script.sh new file mode 100755 index 0000000..76e0174 --- /dev/null +++ b/snd-alpx-dkms/snd-alpx/tools/build-load-script.sh @@ -0,0 +1,111 @@ +#!/bin/bash +#This script will build the manual launch script for the Alpx cards' driver. + +TEXT_BOLD="\e[1m" +TEXT_BLUE="\e[34m" +TEXT_RED="\e[31m" +TEXT_RESET="\e[0m" + +manual_load_script_name="$1" +ALPX_SOUND_DRIVER_NAME="snd-alpx.ko" +ALPX_DMA_DRIVER_NAME="snd-alpx-xdma.ko" + +OPTIONS_REQUIRED=("CONFIG_MTD" "CONFIG_DMA_VIRTUAL_CHANNELS" "CONFIG_SND_PCM") +OPTIONS_OPTIONAL=("CONFIG_SND_DMAENGINE_PCM") + +module_for_option() +{ + option=$1 + + case $option in + "CONFIG_MTD") + echo "mtd" + ;; + "CONFIG_DMA_VIRTUAL_CHANNELS") + echo "virt-dma" + ;; + "CONFIG_SND_DMAENGINE_PCM") + echo "snd-pcm-dmaengine" + ;; + "CONFIG_SND_PCM") + echo "snd-pcm" + ;; + esac +} + +required_module_entry() +{ + option=$1 + module_name=$( module_for_option "$option" ) + + echo -e $TEXT_BOLD$TEXT_BLUE"Option $option was built as a module and will be loaded" + echo -e "echo 'loading required module : $module_name'" >> $manual_load_script_name + echo -e "modprobe $module_name" >> $manual_load_script_name +} + +build_launch_script() +{ + list=$( cat - ) + + if [ -f "$manual_load_script_name" ] + then + rm "$manual_load_script_name" + echo -e "#!/bin/bash" >> $manual_load_script_name + fi + + for option in ${OPTIONS_REQUIRED[@]} + do + match_y=$( echo "$list" | grep -P "^$option=y" ) + match_m=$( echo "$list" | grep -P "^$option=m" ) + + if [ -z "$match_y" ] && [ -z "$match_m" ] + then + echo -e $TEXT_BOLD$TEXT_RED"Missing required option $option!"$TEXT_RESET + return 1 + fi + + if [ -n "$match_m" ] + then + required_module_entry "$option" + fi + done + + for option in ${OPTIONS_OPTIONAL[@]} + do + match_m=$( echo "$list" | grep -P "^$option=m" ) + + if [ -n "$match_m" ] + then + required_module_entry "$option" + fi + done + + + + if [ -f "$manual_load_script_name" ] + then + chmod u+x "$manual_load_script_name" + fi + + #NO> add the drivers entries themselves + echo -e "echo 'loading the dma driver : $ALPX_DMA_DRIVER_NAME '" >> $manual_load_script_name + echo -e "insmod $ALPX_DMA_DRIVER_NAME" >> $manual_load_script_name + echo -e "echo 'loading the sound driver : $ALPX_SOUND_DRIVER_NAME '" >> $manual_load_script_name + echo -e "insmod $ALPX_SOUND_DRIVER_NAME" >> $manual_load_script_name + + + echo -e $TEXT_RESET +} + +config_path="/boot/config"-$( uname -r ) + +if [ -f "/proc/config.gz" ] +then + cat /proc/config.gz | gunzip | build_launch_script +elif [ -f "$config_path" ] +then + cat "$config_path" | build_launch_script +else + echo "No config path found, unable to check!" >&2 + exit 1 +fi |