# # By Chih-Wei Huang # Last updated 2010/03/15 # # License: GNU Public License # We explicitely grant the right to use the scripts # with Android-x86 project. # # An auto detect function provided by kinneko auto_detect() { tmp=/tmp/dev2mod echo 'dev2mod() { while read dev; do case $dev in' > $tmp sort -r /lib/modules/`uname -r`/modules.alias | \ sed -n 's/^alias *\([^ ]*\) *\(.*\)/\1)modprobe \2;;/p' >> $tmp echo 'esac; done; }' >> $tmp source $tmp cat /sys/bus/*/devices/*/modalias | dev2mod } # FB0DEV: framebuffer driver # LANDEV: lan driver # WIFDEV: wifi driver # SNDDEV: sound driver # CAMDEV: camera driver # PREDEV: any module the drivers depend on but can't be loaded automatically # EXTMOD: any other module asus_info() { # common for all Eee PC models [ -c /dev/fb0 ] || FB0DEV=i915 EXTMOD=eeepc-laptop PREDEV=snd-hda-codec-realtek SNDDEV=snd-hda-intel CAMDEV=uvcvideo board=`cat /sys/class/dmi/id/product_name` # assume Eee PC models case "$board" in 700|701|702|900) LANDEV=atl2 WIFDEV=ath5k ;; 701SD|900SD) LANDEV=atl1e WIFDEV=rtl8187se ;; 900A|904HD|1000HD) LANDEV=atl1e WIFDEV=ath5k ;; 901|1000|1000H) LANDEV=atl1e WIFDEV=rt2860sta ;; 1005HA*) LANDEV=atl1c WIFDEV=ath9k ;; ET1602*) # i915 is buggy on 2.6.29 if uname -r | grep -q 2.6.29; then FB0DEV= UVESA_MODE=${UVESA_MODE:-1366x768} fi LANDEV=r8169 WIFDEV=rt2860sta BOARD_USES_TSLIB=true ;; ET2002*) FB0DEV= UVESA_MODE=${UVESA_MODE:-1600x900} LANDEV=r8169 WIFDEV=ath9k BOARD_USES_TSLIB=true ;; T91) FB0DEV= UVESA_MODE=${UVESA_MODE:-1024x600} LANDEV=atl1e WIFDEV=ath9k BOARD_USES_TSLIB=true ;; T101) LANDEV=atl1e WIFDEV=ath9k BOARD_USES_TSLIB=true ;; A6VM*) EXTMOD=asus-laptop LANDEV=skge WIFDEV=ipw2200 ;; *) LANDEV=atl1e WIFDEV=ath9k ;; esac } samsung_info() { [ -c /dev/fb0 ] || FB0DEV=i915 EXTMOD=hso PREDEV=snd-hda-codec-realtek mii rfkill SNDDEV=snd-hda-intel CAMDEV=gspca_vc032x WIFDEV=ath5k LANDEV=b44 } vbox_info() { LANDEV=pcnet32 SNDDEV="snd-sb16 isapnp=0 irq=5" } qemu_info() { LANDEV=8139cp SNDDEV=snd-ens1370 } vmware_info() { LANDEV=pcnet32 SNDDEV=snd-ens1371 } detect_hardware() { [ "$AUTO" = "1" ] && return case "`cat /sys/class/dmi/id/uevent`" in *ASUSTeK*) get_info=asus_info ;; *SAMSUNG*) get_info=samsung_info ;; *Acer*AO*) get_info=ao_info ;; *VirtualBox*) get_info=vbox_info ;; *QEMU*) get_info=qemu_info ;; *VMware*) get_info=vmware_info ;; *) ;; esac [ -n "$get_info" ] && $get_info && FOUND=1 } find_network_dev_name() { wififound=0 rmline=`grep -n "#REMOVE FROM HERE" init.rc|cut -d':' -f1` rmline=`expr $rmline + 1` sed -i -e "$rmline,\$d" init.rc for netdev in `ls /sys/class/net`; do if [ $netdev = "lo" -o $netdev = "wmaster0" ]; then continue fi w=/sys/class/net/$netdev if [ -d $w/wireless -o -d $w/phy80211 ]; then if [ $wififound -eq 0 ]; then sed -i "s|\(^ *service wpa_supplicant .*\)\(-i.*\)\( -c.*$\)|\1-i $netdev\3|g" init.rc wififound=1 fi fi echo "service dhcpcd$netdev /system/bin/dhcpcd $netdev" >> init.rc echo " group system dhcp" >> init.rc echo " disabled" >>init.rc echo " oneshot" >> init.rc done } load_modules() { if [ -n "$FOUND" ]; then EXTMOD="$EXTMOD cdc-acm option pppoe ppp-async ppp-deflate bsd-comp" BTDEV="bnep rfcomm sco btusb" for m in $PREDEV $EXTMOD $BTDEV; do modprobe $m done [ -n "$FB0DEV" -a -z "$UVESA_MODE" ] && modprobe $FB0DEV [ -n "$LANDEV" ] && modprobe $LANDEV [ -n "$WIFDEV" ] && modprobe $WIFDEV [ -n "$SNDDEV" ] && modprobe $SNDDEV [ -n "$CAMDEV" ] && modprobe $CAMDEV else auto_detect fi mdev -s [ -c /dev/video0 ] || modprobe vivi [ -d /proc/asound/card0 ] || modprobe snd-dummy [ -c /dev/fb0 ] || modprobe uvesafb mode_option=${UVESA_MODE:-800x600}-16 ${UVESA_OPTION:-mtrr=3 scroll=redraw} find_network_dev_name # find_wifi_dev_name }