summaryrefslogtreecommitdiff
path: root/snd-alpx/tools/build-load-script.sh
diff options
context:
space:
mode:
authorChristian Pointner <equinox@helsinki.at>2024-05-10 18:26:46 (GMT)
committerChristian Pointner <equinox@helsinki.at>2024-05-10 18:26:46 (GMT)
commit627f7d488817e308d6f3a92fd9a877723ac7ae1d (patch)
tree554a3c53c90b20da5bd0da0c8da67a9b169bd10f /snd-alpx/tools/build-load-script.sh
import snd-alpx V3.4.3
Diffstat (limited to 'snd-alpx/tools/build-load-script.sh')
-rwxr-xr-xsnd-alpx/tools/build-load-script.sh111
1 files changed, 111 insertions, 0 deletions
diff --git a/snd-alpx/tools/build-load-script.sh b/snd-alpx/tools/build-load-script.sh
new file mode 100755
index 0000000..76e0174
--- /dev/null
+++ b/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