summaryrefslogtreecommitdiff
path: root/snd-alpx/tools/build-load-script.sh
blob: 76e01743c8750a081770684b8e53acb5252b6c50 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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