xpp: recovery firmware in xpp_fxloader
authorTzafrir Cohen <tzafrir.cohen@xorcom.com>
Tue, 29 Nov 2011 23:40:50 +0000 (23:40 +0000)
committerTzafrir Cohen <tzafrir.cohen@xorcom.com>
Tue, 29 Nov 2011 23:40:50 +0000 (23:40 +0000)
USB_RECOV.hex is an extra firmware that may be useful for recovering
from certain Astribank hardware faults in some scenarios. This adds
support for either loading it manually
('/usr/share/dahdi/xpp_fxloader recover-sb') or through udev, *if*
the required udev rules were set on the system.

Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>

git-svn-id: http://svn.astersk.org/svn/dahdi/tools/trunk@10349 17933a7a-c749-41c5-a318-cba88f637d49

xpp/xpp_fxloader

index 34248ef..49a8cd4 100644 (file)
@@ -70,6 +70,8 @@ ASTRIBANK_TOOL=${ASTRIBANK_TOOL:-/usr/sbin/astribank_tool}
 XPP_CONFIG="${XPP_CONFIG:-/etc/dahdi/xpp.conf}"
 XPP_UDEV_SLEEP_TIME="${XPP_UDEV_SLEEP_TIME:-15}"
 
+USB_RECOV="${USB_RECOV:-USB_RECOV.hex}"
+
 if [ -r "$DEFAULTS" ]; then
        . "$DEFAULTS"
 fi
@@ -469,6 +471,11 @@ xppdetect|load|usb)
        $LOGGER -- "--------- FIRMWARE IS LOADED"
        exit 0
        ;;
+recover-sb)
+       # Load a firmware that fixes a but which makes the Source Byte in the
+       # EEPROM reset and make the device appear like a Cypress dev kit:
+       load_usb_fw 04b4 8613 $USB_RECOV
+       ;;
 help)
        usage
        exit 0
@@ -522,6 +529,14 @@ udev_delayed_load() {
 
        $LOGGER "Trying to find what to do for product $PRODUCT, device $DEVICE"
        case "$PRODUCT" in
+       4b4/8613/*)
+               # This case is for a potentially-broken Astribank.
+               # In most systems you should not set udev rules for those to
+               # get here, as this is actually the ID of a Cypress dev-kit:
+               FIRM_USB="$FIRMWARE_DIR/$USB_RECOV"
+               $LOGGER "Loading recovery firmware '$FIRM_USB' into '$DEVICE'"
+               run_fxload -D "$DEVICE" -I "$FIRM_USB"
+               ;;
        e4e4/11[3456]0/*|e4e4/1163/*)
                usb_firmware_device "$PRODUCT" "$DEVICE"
                ;;