#!/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