You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
179 lines
5.0 KiB
179 lines
5.0 KiB
# --- T2-COPYRIGHT-NOTE-BEGIN --- |
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|
# |
|
# T2 SDE: package/.../stone/stone_mod_hardware.sh |
|
# 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. |
|
# --- T2-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 |
|
} |
|
|
|
|