mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
Merge branch 'master' of git://git.denx.de/u-boot-usb
This commit is contained in:
@@ -264,6 +264,16 @@ void usb_display_config(struct usb_device *dev)
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
static inline char *portspeed(int speed)
|
||||
{
|
||||
if (speed == USB_SPEED_HIGH)
|
||||
return "480 Mb/s";
|
||||
else if (speed == USB_SPEED_LOW)
|
||||
return "1.5 Mb/s";
|
||||
else
|
||||
return "12 Mb/s";
|
||||
}
|
||||
|
||||
/* shows the device tree recursively */
|
||||
void usb_show_tree_graph(struct usb_device *dev, char *pre)
|
||||
{
|
||||
@@ -310,7 +320,7 @@ void usb_show_tree_graph(struct usb_device *dev, char *pre)
|
||||
pre[index] = 0;
|
||||
printf(" %s (%s, %dmA)\n", usb_get_class_desc(
|
||||
dev->config.if_desc[0].bInterfaceClass),
|
||||
dev->slow ? "1.5MBit/s" : "12MBit/s",
|
||||
portspeed(dev->speed),
|
||||
dev->config.MaxPower * 2);
|
||||
if (strlen(dev->mf) || strlen(dev->prod) || strlen(dev->serial))
|
||||
printf(" %s %s %s %s\n", pre, dev->mf, dev->prod, dev->serial);
|
||||
|
||||
35
common/usb.c
35
common/usb.c
@@ -681,7 +681,7 @@ int usb_string(struct usb_device *dev, int index, char *buf, size_t size)
|
||||
err = usb_string_sub(dev, 0, 0, tbuf);
|
||||
if (err < 0) {
|
||||
USB_PRINTF("error getting string descriptor 0 " \
|
||||
"(error=%x)\n", dev->status);
|
||||
"(error=%lx)\n", dev->status);
|
||||
return -1;
|
||||
} else if (tbuf[0] < 4) {
|
||||
USB_PRINTF("string descriptor 0 too short\n");
|
||||
@@ -939,8 +939,10 @@ void usb_scan_devices(void)
|
||||
dev_index = 0;
|
||||
/* device 0 is always present (root hub, so let it analyze) */
|
||||
dev = usb_alloc_new_device();
|
||||
usb_new_device(dev);
|
||||
printf("%d USB Device(s) found\n", dev_index);
|
||||
if (usb_new_device(dev))
|
||||
printf("No USB Device found\n");
|
||||
else
|
||||
printf("%d USB Device(s) found\n", dev_index);
|
||||
/* insert "driver" if possible */
|
||||
#ifdef CONFIG_USB_KEYBOARD
|
||||
drv_usb_kbd_init();
|
||||
@@ -1041,6 +1043,16 @@ struct usb_hub_device *usb_hub_allocate(void)
|
||||
|
||||
#define MAX_TRIES 5
|
||||
|
||||
static inline char *portspeed(int portstatus)
|
||||
{
|
||||
if (portstatus & (1 << USB_PORT_FEAT_HIGHSPEED))
|
||||
return "480 Mb/s";
|
||||
else if (portstatus & (1 << USB_PORT_FEAT_LOWSPEED))
|
||||
return "1.5 Mb/s";
|
||||
else
|
||||
return "12 Mb/s";
|
||||
}
|
||||
|
||||
static int hub_port_reset(struct usb_device *dev, int port,
|
||||
unsigned short *portstat)
|
||||
{
|
||||
@@ -1061,10 +1073,11 @@ static int hub_port_reset(struct usb_device *dev, int port,
|
||||
}
|
||||
portstatus = le16_to_cpu(portsts.wPortStatus);
|
||||
portchange = le16_to_cpu(portsts.wPortChange);
|
||||
|
||||
USB_HUB_PRINTF("portstatus %x, change %x, %s\n",
|
||||
portstatus, portchange,
|
||||
portstatus&(1<<USB_PORT_FEAT_LOWSPEED) ? \
|
||||
"Low Speed" : "High Speed");
|
||||
portspeed(portstatus));
|
||||
|
||||
USB_HUB_PRINTF("STAT_C_CONNECTION = %d STAT_CONNECTION = %d" \
|
||||
" USB_PORT_STAT_ENABLE %d\n",
|
||||
(portchange & USB_PORT_STAT_C_CONNECTION) ? 1 : 0,
|
||||
@@ -1109,9 +1122,7 @@ void usb_hub_port_connect_change(struct usb_device *dev, int port)
|
||||
portstatus = le16_to_cpu(portsts.wPortStatus);
|
||||
portchange = le16_to_cpu(portsts.wPortChange);
|
||||
USB_HUB_PRINTF("portstatus %x, change %x, %s\n",
|
||||
portstatus, portchange,
|
||||
portstatus&(1 << USB_PORT_FEAT_LOWSPEED) ? \
|
||||
"Low Speed" : "High Speed");
|
||||
portstatus, portchange, portspeed(portstatus));
|
||||
|
||||
/* Clear the connection change status */
|
||||
usb_clear_port_feature(dev, port + 1, USB_PORT_FEAT_C_CONNECTION);
|
||||
@@ -1136,7 +1147,13 @@ void usb_hub_port_connect_change(struct usb_device *dev, int port)
|
||||
|
||||
/* Allocate a new device struct for it */
|
||||
usb = usb_alloc_new_device();
|
||||
usb->slow = (portstatus & USB_PORT_STAT_LOW_SPEED) ? 1 : 0;
|
||||
|
||||
if (portstatus & USB_PORT_STAT_HIGH_SPEED)
|
||||
usb->speed = USB_SPEED_HIGH;
|
||||
else if (portstatus & USB_PORT_STAT_LOW_SPEED)
|
||||
usb->speed = USB_SPEED_LOW;
|
||||
else
|
||||
usb->speed = USB_SPEED_FULL;
|
||||
|
||||
dev->children[port] = usb;
|
||||
usb->parent = dev;
|
||||
|
||||
@@ -183,6 +183,7 @@ int drv_usb_kbd_init(void)
|
||||
usb_kbd_dev.puts = NULL;
|
||||
usb_kbd_dev.getc = usb_kbd_getc;
|
||||
usb_kbd_dev.tstc = usb_kbd_testc;
|
||||
usb_kbd_dev.priv = (void *)dev;
|
||||
error = device_register (&usb_kbd_dev);
|
||||
if(error==0) {
|
||||
/* check if this is the standard input device */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user