summaryrefslogtreecommitdiffstats
path: root/usr.sbin/usbconfig
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2009-02-14 23:20:00 +0000
committerthompsa <thompsa@FreeBSD.org>2009-02-14 23:20:00 +0000
commit8152f4da8d3bb0ffd81ff4e53b21016c0d9ba8f8 (patch)
tree622b53531275e080bd1746cbafae09eed6be649e /usr.sbin/usbconfig
parentf35949f29ca00a8a25a5ff0a6ad875c3967085e2 (diff)
downloadFreeBSD-src-8152f4da8d3bb0ffd81ff4e53b21016c0d9ba8f8.zip
FreeBSD-src-8152f4da8d3bb0ffd81ff4e53b21016c0d9ba8f8.tar.gz
MFp4 //depot/projects/usb@157699
Add two new functions to the libusb20 API and required kernel ioctls. - libusb20_dev_get_iface_desc - libusb20_dev_get_info New command to usbconfig, "show_ifdrv", which will print out the kernel driver attached to the given USB device aswell. See "man libusb20" for a detailed description. Some minor style corrections long-line wrapping. Submitted by: Hans Petter Selasky
Diffstat (limited to 'usr.sbin/usbconfig')
-rw-r--r--usr.sbin/usbconfig/dump.c22
-rw-r--r--usr.sbin/usbconfig/dump.h2
-rw-r--r--usr.sbin/usbconfig/usbconfig.c11
3 files changed, 30 insertions, 5 deletions
diff --git a/usr.sbin/usbconfig/dump.c b/usr.sbin/usbconfig/dump.c
index ffa8b2c..01c55d2 100644
--- a/usr.sbin/usbconfig/dump.c
+++ b/usr.sbin/usbconfig/dump.c
@@ -176,15 +176,30 @@ dump_iface(struct libusb20_device *pdev,
}
void
-dump_device_info(struct libusb20_device *pdev)
+dump_device_info(struct libusb20_device *pdev, uint8_t show_ifdrv)
{
+ char buf[128];
+ uint8_t n;
+
printf("%s, cfg=%u md=%s spd=%s pwr=%s\n",
libusb20_dev_get_desc(pdev),
libusb20_dev_get_config_index(pdev),
dump_mode(libusb20_dev_get_mode(pdev)),
dump_speed(libusb20_dev_get_speed(pdev)),
dump_power_mode(libusb20_dev_get_power_mode(pdev)));
- return;
+
+ if (!show_ifdrv)
+ return;
+
+ for (n = 0; n != 255; n++) {
+ if (libusb20_dev_get_iface_desc(pdev, n, buf, sizeof(buf)))
+ break;
+ if (buf[0] == 0)
+ continue;
+ printf("ugen%u.%u.%u: %s\n",
+ libusb20_dev_get_bus_number(pdev),
+ libusb20_dev_get_address(pdev), n, buf);
+ }
}
void
@@ -339,7 +354,8 @@ dump_device_iface_access(struct libusb20_device *pdev, uint8_t iface)
owner = (pw = getpwuid(uid)) ? pw->pw_name : "UNKNOWN";
group = (gr = getgrgid(gid)) ? gr->gr_name : "UNKNOWN";
- printf(" " "Interface %u Access: %s:%s 0%o\n", iface, owner, group, mode);
+ printf(" " "Interface %u Access: %s:%s 0%o\n",
+ iface, owner, group, mode);
} else {
printf(" " "Interface %u Access: <not set>\n", iface);
}
diff --git a/usr.sbin/usbconfig/dump.h b/usr.sbin/usbconfig/dump.h
index 95ef720..87e9a4d 100644
--- a/usr.sbin/usbconfig/dump.h
+++ b/usr.sbin/usbconfig/dump.h
@@ -27,7 +27,7 @@
const char *dump_mode(uint8_t value);
const char *dump_speed(uint8_t value);
const char *dump_power_mode(uint8_t value);
-void dump_device_info(struct libusb20_device *pdev);
+void dump_device_info(struct libusb20_device *pdev, uint8_t show_drv);
void dump_be_access(struct libusb20_backend *pbe);
void dump_be_quirk_names(struct libusb20_backend *pbe);
void dump_be_dev_quirks(struct libusb20_backend *pbe);
diff --git a/usr.sbin/usbconfig/usbconfig.c b/usr.sbin/usbconfig/usbconfig.c
index e0f03dd..4b69dc5 100644
--- a/usr.sbin/usbconfig/usbconfig.c
+++ b/usr.sbin/usbconfig/usbconfig.c
@@ -78,6 +78,7 @@ struct options {
uint8_t got_dump_all_config:1;
uint8_t got_dump_info:1;
uint8_t got_dump_access:1;
+ uint8_t got_show_iface_driver:1;
uint8_t got_remove_device_quirk:1;
uint8_t got_add_device_quirk:1;
uint8_t got_dump_string:1;
@@ -100,6 +101,7 @@ enum {
T_SET_PERM,
T_ADD_DEVICE_QUIRK,
T_REMOVE_DEVICE_QUIRK,
+ T_SHOW_IFACE_DRIVER,
T_DUMP_QUIRK_NAMES,
T_DUMP_DEVICE_QUIRKS,
T_DUMP_DEVICE_DESC,
@@ -138,6 +140,7 @@ static const struct token token[] = {
{"dump_string", T_DUMP_STRING, 1},
{"dump_access", T_DUMP_ACCESS, 0},
{"dump_info", T_DUMP_INFO, 0},
+ {"show_ifdrv", T_SHOW_IFACE_DRIVER, 0},
{"suspend", T_SUSPEND, 0},
{"resume", T_RESUME, 0},
{"power_off", T_POWER_OFF, 0},
@@ -290,6 +293,7 @@ usage(void)
" dump_string <index>" "\n"
" dump_access" "\n"
" dump_info" "\n"
+ " show_ifdrv" "\n"
" suspend" "\n"
" resume" "\n"
" power_off" "\n"
@@ -535,7 +539,8 @@ flush_command(struct libusb20_backend *pbe, struct options *opt)
opt->got_dump_access);
if (opt->got_list || dump_any) {
- dump_device_info(pdev);
+ dump_device_info(pdev,
+ opt->got_show_iface_driver);
}
if (opt->got_dump_access) {
printf("\n");
@@ -632,6 +637,10 @@ main(int argc, char **argv)
opt->got_any++;
break;
+ case T_SHOW_IFACE_DRIVER:
+ opt->got_show_iface_driver = 1;
+ break;
+
case T_UNIT:
if (opt->got_any) {
/* allow multiple commands on the same line */
OpenPOWER on IntegriCloud