summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2011-06-25 15:22:44 +0000
committerhselasky <hselasky@FreeBSD.org>2011-06-25 15:22:44 +0000
commit9a21b2d946d3dfde68d1c0d44c0e676b2b2fd166 (patch)
treefd82d141b48b418eb51f597e53b8f382b46b232b /tools
parent0407380ca2f3a97fa613b6e84c1f802a283cd467 (diff)
downloadFreeBSD-src-9a21b2d946d3dfde68d1c0d44c0e676b2b2fd166.zip
FreeBSD-src-9a21b2d946d3dfde68d1c0d44c0e676b2b2fd166.tar.gz
- Need to respect the module name and the USB mode when accumulating device ID's.
- Be more verbose on file seek failures. Allow a file size of zero. - Improve the wrapper shell. MFC after: 14 days
Diffstat (limited to 'tools')
-rw-r--r--tools/tools/bus_autoconf/bus_autoconf.sh18
-rw-r--r--tools/tools/bus_autoconf/bus_load_file.c12
-rw-r--r--tools/tools/bus_autoconf/bus_usb.c4
3 files changed, 24 insertions, 10 deletions
diff --git a/tools/tools/bus_autoconf/bus_autoconf.sh b/tools/tools/bus_autoconf/bus_autoconf.sh
index 1d1d038..c99df91 100644
--- a/tools/tools/bus_autoconf/bus_autoconf.sh
+++ b/tools/tools/bus_autoconf/bus_autoconf.sh
@@ -28,6 +28,7 @@
OS=FreeBSD
DOLLAR=$
+OBJCOPY=objcopy
cat <<EOF
#
@@ -41,6 +42,7 @@ EOF
rm -f bus_autoconf_format.bin
rm -f bus_autoconf_args.txt
+rm -f bus_autoconf.ids
for F in $*
do
@@ -48,19 +50,19 @@ do
G=$(basename ${F})
# Format information
-objcopy -j bus_autoconf_format -O binary ${F} temp.ids 2> /dev/null
-[ -f temp.ids ] && cat temp.ids >> bus_autoconf_format.bin
+${OBJCOPY} -j bus_autoconf_format -O binary ${F} bus_autoconf.ids 2> /dev/null
+[ -f bus_autoconf.ids ] && cat bus_autoconf.ids >> bus_autoconf_format.bin
# USB Host mode
-objcopy -j usb_host_id -O binary ${F} "usb_host_id,${G}" 2> /dev/null
+${OBJCOPY} -j usb_host_id -O binary ${F} "usb_host_id,${G}" 2> /dev/null
[ -f "usb_host_id,${G}" ] && (echo -n " -i usb_host_id,${G}" >> bus_autoconf_args.txt)
# USB Device mode
-objcopy -j usb_device_id -O binary ${F} "usb_device_id,${G}" 2> /dev/null
+${OBJCOPY} -j usb_device_id -O binary ${F} "usb_device_id,${G}" 2> /dev/null
[ -f "usb_device_id,${G}" ] && (echo -n " -i usb_device_id,${G}" >> bus_autoconf_args.txt)
# USB Dual mode
-objcopy -j usb_dual_id -O binary ${F} "usb_dual_id,${G}" 2> /dev/null
+${OBJCOPY} -j usb_dual_id -O binary ${F} "usb_dual_id,${G}" 2> /dev/null
[ -f "usb_dual_id,${G}" ] && (echo -n " -i usb_dual_id,${G}" >> bus_autoconf_args.txt)
done
@@ -69,4 +71,8 @@ done
bus_autoconf -F bus_autoconf_format.bin $(cat bus_autoconf_args.txt)
# Cleanup
-rm -f -- bus_autoconf_format.bin $(cat bus_autoconf_args.txt)
+rm -f -- \
+ $(cat bus_autoconf_args.txt) \
+ bus_autoconf_args.txt \
+ bus_autoconf_format.bin \
+ bus_autoconf.ids
diff --git a/tools/tools/bus_autoconf/bus_load_file.c b/tools/tools/bus_autoconf/bus_load_file.c
index 88f806a..527e5bc 100644
--- a/tools/tools/bus_autoconf/bus_load_file.c
+++ b/tools/tools/bus_autoconf/bus_load_file.c
@@ -48,11 +48,15 @@ load_file(const char *fname, uint8_t **pptr, uint32_t *plen)
err(EX_NOINPUT, "Cannot open file '%s'", fname);
off = lseek(f, 0, SEEK_END);
- if (off <= 0)
- err(EX_NOINPUT, "Cannot seek to end of file");
+ if (off < 0) {
+ err(EX_NOINPUT, "Cannot seek to "
+ "end of file '%s'", fname);
+ }
- if (lseek(f, 0, SEEK_SET) < 0)
- err(EX_NOINPUT, "Cannot seek to beginning of file");
+ if (lseek(f, 0, SEEK_SET) < 0) {
+ err(EX_NOINPUT, "Cannot seek to "
+ "beginning of file '%s'", fname);
+ }
len = off;
if (len != off)
diff --git a/tools/tools/bus_autoconf/bus_usb.c b/tools/tools/bus_autoconf/bus_usb.c
index e3d60e8..ab794c1 100644
--- a/tools/tools/bus_autoconf/bus_usb.c
+++ b/tools/tools/bus_autoconf/bus_usb.c
@@ -276,6 +276,10 @@ usb_dump(struct usb_device_id *id, uint32_t nid)
break;
if (id[n].idVendor != id[0].idVendor)
break;
+ if (strcmp(id[n].module_name, id[0].module_name))
+ break;
+ if (strcmp(id[n].module_mode, id[0].module_mode))
+ break;
n++;
}
}
OpenPOWER on IntegriCloud