|
|
|
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
|
|
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
|
|
|
#
|
|
|
|
# Filename: package/.../stone/stone_mod_hardware.sh
|
|
|
|
# Copyright (C) 2008 The OpenSDE Project
|
|
|
|
# Copyright (C) 2004 - 2006 The T2 SDE Project
|
|
|
|
# Copyright (C) 1998 - 2003 Clifford Wolf
|
|
|
|
#
|
|
|
|
# More information can be found in the files COPYING and README.
|
|
|
|
#
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
# the Free Software Foundation; version 2 of the License. A copy of the
|
|
|
|
# GNU General Public License can be found in the file COPYING.
|
|
|
|
# --- SDE-COPYRIGHT-NOTE-END ---
|
|
|
|
#
|
|
|
|
# [MAIN] 20 hardware Kernel Drivers and Hardware Configuration
|
|
|
|
|
|
|
|
set_hw_setup() {
|
|
|
|
echo "HARDWARE_SETUP=$1" > /etc/conf/hardware
|
|
|
|
}
|
|
|
|
|
|
|
|
flip_hw_config() {
|
|
|
|
local tmp=`mktemp`
|
|
|
|
awk "\$0 == \"### $1 ###\", \$0 == \"\" {"'
|
|
|
|
if ( /^#[^# ]/ ) {
|
|
|
|
sub("^#", "");
|
|
|
|
system($0 " >&2");
|
|
|
|
} else {
|
|
|
|
if ( /^[^# ]/ ) $0 = "#" $0;
|
|
|
|
if (/^#modprobe /) {
|
|
|
|
cmd = $0;
|
|
|
|
sub("^#modprobe", "modprobe -r", cmd);
|
|
|
|
system(cmd " >&2");
|
|
|
|
}
|
|
|
|
if (/^#mount /) {
|
|
|
|
cmd = $0;
|
|
|
|
sub("^#mount .* ", "umount ", cmd);
|
|
|
|
system(cmd " >&2");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} { print; }' < /etc/conf/kernel > $tmp
|
|
|
|
cat $tmp > /etc/conf/kernel; rm -f $tmp
|
|
|
|
|
|
|
|
# this is needed to e.g. initialize /proc/bus/usb/devices
|
|
|
|
sleep 1
|
|
|
|
}
|
|
|
|
|
|
|
|
add_hw_config() {
|
|
|
|
case $state in
|
|
|
|
1) cmd="$cmd '[ ] $name'" ;;
|
|
|
|
2) cmd="$cmd '[*] $name'" ;;
|
|
|
|
*) cmd="$cmd '[?] $name'" ;;
|
|
|
|
esac
|
|
|
|
case $state in
|
|
|
|
1|2) cmd="$cmd 'flip_hw_config \"$id\"'" ;;
|
|
|
|
*) cmd="$cmd 'true'" ;;
|
|
|
|
esac
|
|
|
|
id=
|
|
|
|
}
|
|
|
|
|
|
|
|
store_clock() {
|
|
|
|
if [ -f /etc/conf/clock ] ; then
|
|
|
|
sed -e "s/clock_tz=.*/clock_tz=$clock_tz/" \
|
|
|
|
-e "s/clock_rtc=.*/clock_rtc=$clock_rtc/" \
|
|
|
|
< /etc/conf/clock > /etc/conf/clock.tmp
|
|
|
|
grep -q clock_tz= /etc/conf/clock.tmp || \
|
|
|
|
echo clock_tz=$clock_tz >> /etc/conf/clock.tmp
|
|
|
|
grep -q clock_rtc= /etc/conf/clock.tmp || \
|
|
|
|
echo clock_rtc=$clock_rtc >> /etc/conf/clock.tmp
|
|
|
|
mv /etc/conf/clock.tmp /etc/conf/clock
|
|
|
|
else
|
|
|
|
echo -e "clock_tz=$clock_tz\nclock_rtc=$clock_rtc\n" \
|
|
|
|
> /etc/conf/clock
|
|
|
|
fi
|
|
|
|
if [ -w /proc/sys/dev/rtc/max-user-freq -a "$clock_rtc" ] ; then
|
|
|
|
echo $clock_rtc > /proc/sys/dev/rtc/max-user-freq
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
set_zone() {
|
|
|
|
clock_tz=$1
|
|
|
|
hwclock --hctosys --$clock_tz
|
|
|
|
store_clock
|
|
|
|
}
|
|
|
|
|
|
|
|
set_rtc() {
|
|
|
|
gui_input "Set new enhanced real time clock precision" \
|
|
|
|
"$clock_rtc" "clock_rtc"
|
|
|
|
store_clock
|
|
|
|
}
|
|
|
|
|
|
|
|
main() {
|
|
|
|
while
|
|
|
|
HARDWARE_SETUP=rockplug
|
|
|
|
if [ -f /etc/conf/hardware ]; then
|
|
|
|
. /etc/conf/hardware
|
|
|
|
fi
|
|
|
|
for x in hwscan rockplug; do
|
|
|
|
if [ "$HARDWARE_SETUP" = $x ]; then
|
|
|
|
eval "hw_$x='<*>'"
|
|
|
|
else
|
|
|
|
eval "hw_$x='< >'"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
clock_tz=utc
|
|
|
|
clock_rtc="`cat /proc/sys/dev/rtc/max-user-freq 2> /dev/null`"
|
|
|
|
if [ -f /etc/conf/clock ]; then
|
|
|
|
. /etc/conf/clock
|
|
|
|
fi
|
|
|
|
|
|
|
|
cmd="gui_menu hw 'Kernel Drivers and Hardware Configuration'"
|
|
|
|
if [ "$HARDWARE_SETUP" = rockplug ]; then
|
|
|
|
cmd="$cmd \"$hw_rockplug Use ROCKPLUG to configure hardware.\""
|
|
|
|
cmd="$cmd \"set_hw_setup rockplug\"";
|
|
|
|
cmd="$cmd \"$hw_hwscan Use hwscan to configure hardware.\""
|
|
|
|
cmd="$cmd \"set_hw_setup hwscan\"";
|
|
|
|
cmd="$cmd \"\" \"\"";
|
|
|
|
cmd="$cmd 'Edit/View PCI configuration'";
|
|
|
|
cmd="$cmd \"gui_edit PCI /etc/conf/pci\""
|
|
|
|
cmd="$cmd 'Edit/View USB configuration'";
|
|
|
|
cmd="$cmd \"gui_edit USB /etc/conf/usb\""
|
|
|
|
cmd="$cmd \"\" \"\"";
|
|
|
|
|
|
|
|
#@FIXME single shot menu?
|
|
|
|
|
|
|
|
cmd="$cmd 'Re-create initrd image (mkinitrd, `uname -r`)'"
|
|
|
|
cmd="$cmd 'gui_cmd mkinitrd mkinitrd' '' ''"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$HARDWARE_SETUP" = hwscan ]; then
|
|
|
|
cmd="$cmd \"$hw_rockplug Use ROCKPLUG to configure hardware.\" \"set_hw_setup rockplug\"";
|
|
|
|
cmd="$cmd \"$hw_hwscan Use hwscan to configure hardware.\" \"set_hw_setup hwscan\"";
|
|
|
|
cmd="$cmd \"\" \"\"";
|
|
|
|
cmd="$cmd 'Edit /etc/conf/kernel (kernel drivers config file)'"
|
|
|
|
cmd="$cmd \"gui_edit 'Kernel Drivers Config File' /etc/conf/kernel\""
|
|
|
|
cmd="$cmd 'Re-create initrd image (mkinitrd, `uname -r`)'"
|
|
|
|
cmd="$cmd 'gui_cmd mkinitrd mkinitrd' '' ''"
|
|
|
|
hwscan -d -s /etc/conf/kernel
|
|
|
|
|
|
|
|
id=
|
|
|
|
while read line; do
|
|
|
|
if [ "${line#\#\#\# }" != "${line}" -a \
|
|
|
|
"${line% \#\#\#}" != "${line}" ]
|
|
|
|
then
|
|
|
|
id="${line#\#\#\# }"; id="${id% \#\#\#}"
|
|
|
|
state=0; name="Unamed Kernel Driver"
|
|
|
|
elif [ -z "$id" ]; then
|
|
|
|
continue
|
|
|
|
elif [ "${line#\# }" != "${line}" ]; then
|
|
|
|
name="${line#\# }"
|
|
|
|
elif [ "${line#\#[!\# ]}" != "${line}" ]; then
|
|
|
|
[ $state -eq 0 ] && state=1
|
|
|
|
[ $state -eq 2 ] && state=3
|
|
|
|
elif [ "${line#[!\# ]}" != "${line}" ]; then
|
|
|
|
[ $state -eq 0 ] && state=2
|
|
|
|
[ $state -eq 1 ] && state=3
|
|
|
|
elif [ -z "$line" ]; then
|
|
|
|
add_hw_config
|
|
|
|
fi
|
|
|
|
done < /etc/conf/kernel
|
|
|
|
[ -z "$id" ] || add_hw_config
|
|
|
|
cmd="$cmd '' ''"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$clock_tz" = localtime ] ; then
|
|
|
|
cmd="$cmd '[*] Use localtime instead of utc' 'set_zone utc'"
|
|
|
|
else
|
|
|
|
cmd="$cmd '[ ] Use localtime instead of utc' 'set_zone localtime'"
|
|
|
|
clock_tz=utc
|
|
|
|
fi
|
|
|
|
cmd="$cmd 'Set enhanced real time clock precision ($clock_rtc)' set_rtc"
|
|
|
|
|
|
|
|
eval "$cmd"
|
|
|
|
do : ; done
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|