summaryrefslogtreecommitdiffstats
path: root/scripts/loadDriver.sh
blob: 2993614a67757f9e073bc749553f3faa1804379b (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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#!/bin/bash

if [ ! "$(whoami)" = "root" ]
then
	echo Warning you are not root, expect problems!
fi

if [ -d /home/pi/appsteam/trunk/LinuxDriver ]
then
	cd /home/pi/appsteam/trunk/LinuxDriver
	echo Switched to folder:$(pwd)
else
	echo Searching driver in folder:$(pwd)
fi

#unload MOST Kernel modules
lsmod | grep "^mxc_mlb\>" > /dev/null &&
	rmmod mxc_mlb && echo "unloaded mxc_mlb"

lsmod | grep "^hdm_dim2_mx6q\>" > /dev/null &&
	rmmod hdm_dim2_mx6q && echo "unloaded hdm_dim2_mx6q"

lsmod | grep "^hdm_dim2\>" > /dev/null &&
	rmmod hdm_dim2 && echo "unloaded hdm_dim2"

lsmod | grep "^hdm_usb\>" > /dev/null &&
	rmmod hdm_usb && echo "unloaded hdm_usb"

lsmod | grep "^aim_sound\>" > /dev/null &&
	rmmod aim_sound && echo "unloaded aim_sound"

lsmod | grep "^aim_v4l2\>" > /dev/null &&
	rmmod aim_v4l2 && echo "unloaded aim_v4l2"

lsmod | grep "^aim_cdev\>" > /dev/null &&
	rmmod aim_cdev && echo "unloaded aim_cdev"

lsmod | grep "^aim_network\>" > /dev/null &&
	rmmod aim_network && echo "unloaded aim_network"

lsmod | grep "^mostcore\>" > /dev/null &&
	rmmod mostcore && echo "unloaded mostcore"

echo
#load V4L support
lsmod | grep "^media\>" ||
  insmod /lib/modules/$(uname -r)/kernel/drivers/media/media.ko

lsmod | grep "^videodev\>" ||
  insmod /lib/modules/$(uname -r)/kernel/drivers/media/v4l2-core/videodev.ko

#load MOST Kernel modules
insmod mostcore.ko && echo "loaded mostcore"
insmod aim_cdev.ko && echo "loaded aim_cdev"

[ -e aim_network.ko ] &&
	insmod aim_network.ko && echo "loaded aim_network"

[ -e aim_sound.ko ] &&
	insmod aim_sound.ko && echo "loaded sound"	

[ -e aim_v4l2.ko ] &&
	insmod aim_v4l2.ko && echo "loaded v4l2"

[ -e hdm_usb.ko ] &&
	insmod hdm_usb.ko && echo "loaded hdm_usb"

[ -e hdm_dim2.ko ] &&
	insmod hdm_dim2.ko clock_speed=4096fs fcnt=3 && echo "loaded hdm_dim2"

[ -e hdm_dim2_mx6q.ko ] &&
	insmod hdm_dim2_mx6q.ko && echo "loaded hdm_dim2_mx6q"

DEVS=/sys/devices/virtual/most/mostcore/devices
AIMS=/sys/devices/virtual/most/mostcore/aims

xset()
{
	VAL=$1
	FILE=$2

	#echo "$VAL > $FILE"
	echo "$VAL" > $FILE
}

SetAsyncChannel()
{
	MDEV=mdev$1
	CH_NAME=$2
	DIR=dir_$3
	BUFSIZE=$4
	
	CHANNEL=$DEVS/$MDEV/$CH_NAME

	[ -e $CHANNEL/set_buffer_size ] || return 1

	[ "$(cat $CHANNEL/set_buffer_size)" = "0" ] || return 2

	echo "Set Ethernet $MDEV channel: $CH_NAME"

	xset async    $CHANNEL/set_datatype
	xset $DIR     $CHANNEL/set_direction
	xset 32       $CHANNEL/set_number_of_buffers
	xset $BUFSIZE $CHANNEL/set_buffer_size

	xset $MDEV:$CH_NAME: $AIMS/networking/add_link
	return 0
}

StartupEth()
{
	METH=meth$1
	IFC_ALL=$2
	IFC_UP=$3
	
	#if device not exist return
	echo "$IFC_ALL" | grep -q $METH || return 1
	
	#if the interface is down, start it
	if [ -z "`echo "$IFC_UP" | grep $METH`" ]
	then
		echo Starting up $METH
		ifconfig $METH up
		return 2
	fi

	#if the IP is already set, we have nothing to do anymore
	ifconfig $METH |grep -q "inet addr:" && return 3

	MAC=`ifconfig -a $METH | awk '/HWaddr/{ print $5}'`
	#if MAC address has not been set yet return	
	[ -z "$MAC" ] && return 4
	[ $MAC = "FF:FF:FF:FF:FF:FF" ] && return 5
	[ $MAC = "ff:ff:ff:ff:ff:ff" ] && return 5
	[ $MAC = "00:00:00:00:00:00" ] && return 6

	m0=$(echo $((16#${MAC:0:2})))
	m1=$(echo $((16#${MAC:3:2})))
	m2=$(echo $((16#${MAC:6:2})))
	m3=$(echo $((16#${MAC:9:2})))
	m4=$(echo $((16#${MAC:12:2})))
	m5=$(echo $((16#${MAC:15:2})))

	IP=10.0.$m2.$((1+$m5))
	echo Setting IP address $IP for device $METH MAC:$m0-$m1-$m2-$m3-$m4-$m5
	ifconfig $METH $IP netmask 255.255.255.0
	return 0
}

##########################
## USER ADJUSTABLE AREA ##
##########################
while :
do
	for i in 0 1 2 3 4 5 6 7 8 9
	do
#USB attached INICs:
#MEP
		SetAsyncChannel $i ep8e rx 1548 &&
		SetAsyncChannel $i ep0e tx 1548
#MLB attached INICs:
#MEP
		SetAsyncChannel $i ca6 rx 1548 &&
		SetAsyncChannel $i ca8 tx 1548
	done
	IFC_ALL="$(ifconfig -a)"
	IFC_UP="$(ifconfig)"
	for i in 0 1 2 3 4 5 6 7 8 9
	do
		StartupEth $i "$IFC_ALL" "$IFC_UP"
	done
	sleep 3
done