164 lines
4.1 KiB
Plaintext
164 lines
4.1 KiB
Plaintext
#compdef 0xFFFF
|
|
|
|
flaglist=(
|
|
'no-omap-wd[disable auto reboot by OMAP watchdog]'
|
|
'no-ext-wd[disable auto reboot by external watchdog]'
|
|
'no-lifeguard-reset[disable auto reboot by software lifeguard]'
|
|
'serial-console[enable serial console]'
|
|
'no-usb-timeout[disable usb timeout for flashing]'
|
|
'sti-console[enable sti console]'
|
|
'no-charging[disable battery charging]'
|
|
'force-power-key[force omap boot reason to power key]'
|
|
)
|
|
|
|
typelist=(
|
|
'xloader'
|
|
'2nd'
|
|
'secondary'
|
|
'kernel'
|
|
'initfs'
|
|
'rootfs'
|
|
'mmc'
|
|
'cmt-2nd'
|
|
'cmt-algo'
|
|
'cmt-mcusw'
|
|
)
|
|
|
|
devlist=(
|
|
'SU-18'
|
|
'RX-34'
|
|
'RX-44'
|
|
'RX-48'
|
|
'RX-51'
|
|
)
|
|
|
|
_dev() {
|
|
_wanted devices expl 'device' \
|
|
compadd -S: "$@" $devlist
|
|
}
|
|
|
|
_hw() {
|
|
# cannot auto-complete hardware
|
|
}
|
|
|
|
_ver() {
|
|
# cannot auto-complete version
|
|
}
|
|
|
|
_type() {
|
|
compset -P "*:"
|
|
compset -P "*,"
|
|
_wanted types expl 'types' \
|
|
compadd -q -S: "$@" $typelist
|
|
}
|
|
|
|
_img() {
|
|
compset -P "*:"
|
|
compset -P "*%"
|
|
_files -q -S%
|
|
}
|
|
|
|
_0xFFFF() {
|
|
local context curcontext="$curcontext" state line state_descr val_args opt_args
|
|
typeset -A flags types
|
|
|
|
_arguments -C \
|
|
'-b[boot default or loaded kernel (default: no cmdline)]::' \
|
|
'-r[reboot device]' \
|
|
'-l[load kernel and initfs images to RAM]' \
|
|
'-f[flash all specified images]' \
|
|
'-c[cold flash 2nd and secondary image]' \
|
|
'-x[check for bad blocks on mtd device (default: all)]::' \
|
|
'-E[dump all device images to one fiasco image, see -t]:' \
|
|
'-e[dump all device images to directory, see -t (default: current)]:directory:' \
|
|
'-I[identify, show all information about device]' \
|
|
'-D[change root device]:device:((0\:flash 1\:mmc 2\:usb))' \
|
|
'-U[enable/disable USB host mode]:bool:((0\:disable 1\:enable))' \
|
|
'-R[enable/disable R&D mode]:bool:((0\:disable 1\:enable))' \
|
|
'-F[change R&D flags, flags are comma separated list]::flags:->flags' \
|
|
'-H[change HW revision]:revision' \
|
|
'-N[change NOLO version string]:version' \
|
|
'-K[change kernel version string]:version' \
|
|
'-T[change initfs version string]:version' \
|
|
'-S[change SW release version string]:version' \
|
|
'-C[change content eMMC version string]:version' \
|
|
'-M[specify fiasco image]:file' \
|
|
'*-m[specify normal image]:argument:->image' \
|
|
'-t[filter images by type]:types:->types' \
|
|
'-d[filter images by device]:device' \
|
|
'-w[filter images by HW revision]:hardware' \
|
|
'-u[unpack fiasco image to directory (default: current)]::directory:_files -/' \
|
|
'-g[generate fiasco image with SW rel version (default: no version)]:file:_files' \
|
|
'-i[identify images]' \
|
|
'-s[simulate, do not flash or write on disk]' \
|
|
'-n[disable hash, checksum and image type checking]' \
|
|
'-v[be verbose and noisy]' \
|
|
'-h[show this help message]'
|
|
|
|
case "$state" in
|
|
flags)
|
|
_values -s , "R&D flags" ${flaglist}
|
|
;;
|
|
types)
|
|
_values -s , "Types" ${typelist}
|
|
;;
|
|
image)
|
|
#arg is [[[dev:[hw:]]ver:]type:]file[%lay]
|
|
local hasdev=false hastype=false
|
|
|
|
PARTS=`echo $PREFIX | grep -o : | wc -l`
|
|
if [[ "$PARTS" != "0" ]] ; then
|
|
for p in `seq $PARTS` ; do
|
|
part=`echo $PREFIX | cut -d : -f $p`
|
|
IFS=" "
|
|
for d in $devlist ; do
|
|
if [[ "$part" == "$d" ]] ; then
|
|
hasdev=true;
|
|
fi
|
|
done
|
|
for t in $typelist ; do
|
|
# comma separated list
|
|
echo "$part" | grep -q "$t"
|
|
if [ $? -eq 0 ] ; then
|
|
hastype=true;
|
|
fi
|
|
done
|
|
done
|
|
fi
|
|
|
|
if [[ "$PARTS" == "0" ]] ; then
|
|
_alternative \
|
|
'devices:device:_dev' \
|
|
'version:ver:_ver' \
|
|
'types:type:_type' \
|
|
'files:file:_img'
|
|
elif [[ "$hastype" == "true" ]] ; then
|
|
_alternative \
|
|
'files:file:_img'
|
|
elif [[ "$PARTS" == "1" && "$hasdev" == "true" ]] ; then
|
|
_alternative \
|
|
'hardware:hw:_hw' \
|
|
'version:ver:_ver' \
|
|
'types:type:_type' \
|
|
'files:file:_img'
|
|
elif [[ "$PARTS" == "1" ]] ; then
|
|
_alternative \
|
|
'types:type:_type' \
|
|
'files:file:_img'
|
|
elif [[ "$PARTS" == "2" && "$hasdev" == "true" ]] ; then
|
|
_alternative \
|
|
'version:ver:_ver' \
|
|
'types:type:_type' \
|
|
'files:file:_img'
|
|
elif [[ "$PARTS" == "3" ]] ; then
|
|
_alternative \
|
|
'types:type:_type' \
|
|
'files:file:_img'
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
}
|
|
|
|
_0xFFFF "$@"
|