mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 23:51:33 +00:00
Merge branch 'master' of git://git.denx.de/u-boot-usb
This commit is contained in:
commit
02f173ca15
4 changed files with 29 additions and 48 deletions
18
cmd/usb.c
18
cmd/usb.c
|
@ -316,26 +316,18 @@ static struct usb_device *usb_find_device(int devnum)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline char *portspeed(int speed)
|
static inline const char *portspeed(int speed)
|
||||||
{
|
{
|
||||||
char *speed_str;
|
|
||||||
|
|
||||||
switch (speed) {
|
switch (speed) {
|
||||||
case USB_SPEED_SUPER:
|
case USB_SPEED_SUPER:
|
||||||
speed_str = "5 Gb/s";
|
return "5 Gb/s";
|
||||||
break;
|
|
||||||
case USB_SPEED_HIGH:
|
case USB_SPEED_HIGH:
|
||||||
speed_str = "480 Mb/s";
|
return "480 Mb/s";
|
||||||
break;
|
|
||||||
case USB_SPEED_LOW:
|
case USB_SPEED_LOW:
|
||||||
speed_str = "1.5 Mb/s";
|
return "1.5 Mb/s";
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
speed_str = "12 Mb/s";
|
return "12 Mb/s";
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return speed_str;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* shows the device tree recursively */
|
/* shows the device tree recursively */
|
||||||
|
|
|
@ -233,26 +233,18 @@ static struct usb_hub_device *usb_hub_allocate(void)
|
||||||
|
|
||||||
#define MAX_TRIES 5
|
#define MAX_TRIES 5
|
||||||
|
|
||||||
static inline char *portspeed(int portstatus)
|
static inline const char *portspeed(int portstatus)
|
||||||
{
|
{
|
||||||
char *speed_str;
|
|
||||||
|
|
||||||
switch (portstatus & USB_PORT_STAT_SPEED_MASK) {
|
switch (portstatus & USB_PORT_STAT_SPEED_MASK) {
|
||||||
case USB_PORT_STAT_SUPER_SPEED:
|
case USB_PORT_STAT_SUPER_SPEED:
|
||||||
speed_str = "5 Gb/s";
|
return "5 Gb/s";
|
||||||
break;
|
|
||||||
case USB_PORT_STAT_HIGH_SPEED:
|
case USB_PORT_STAT_HIGH_SPEED:
|
||||||
speed_str = "480 Mb/s";
|
return "480 Mb/s";
|
||||||
break;
|
|
||||||
case USB_PORT_STAT_LOW_SPEED:
|
case USB_PORT_STAT_LOW_SPEED:
|
||||||
speed_str = "1.5 Mb/s";
|
return "1.5 Mb/s";
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
speed_str = "12 Mb/s";
|
return "12 Mb/s";
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return speed_str;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
#include <power/regulator.h>
|
#include <power/regulator.h>
|
||||||
|
#include <linux/usb/otg.h>
|
||||||
|
|
||||||
#include "ehci.h"
|
#include "ehci.h"
|
||||||
|
|
||||||
|
@ -483,23 +484,23 @@ static int ehci_usb_phy_mode(struct udevice *dev)
|
||||||
static int ehci_usb_ofdata_to_platdata(struct udevice *dev)
|
static int ehci_usb_ofdata_to_platdata(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct usb_platdata *plat = dev_get_platdata(dev);
|
struct usb_platdata *plat = dev_get_platdata(dev);
|
||||||
const char *mode;
|
enum usb_dr_mode dr_mode;
|
||||||
|
|
||||||
mode = fdt_getprop(gd->fdt_blob, dev_of_offset(dev), "dr_mode", NULL);
|
dr_mode = usb_get_dr_mode(dev_of_offset(dev));
|
||||||
if (mode) {
|
|
||||||
if (strcmp(mode, "peripheral") == 0)
|
switch (dr_mode) {
|
||||||
plat->init_type = USB_INIT_DEVICE;
|
case USB_DR_MODE_HOST:
|
||||||
else if (strcmp(mode, "host") == 0)
|
|
||||||
plat->init_type = USB_INIT_HOST;
|
plat->init_type = USB_INIT_HOST;
|
||||||
else if (strcmp(mode, "otg") == 0)
|
break;
|
||||||
|
case USB_DR_MODE_PERIPHERAL:
|
||||||
|
plat->init_type = USB_INIT_DEVICE;
|
||||||
|
break;
|
||||||
|
case USB_DR_MODE_OTG:
|
||||||
|
case USB_DR_MODE_UNKNOWN:
|
||||||
return ehci_usb_phy_mode(dev);
|
return ehci_usb_phy_mode(dev);
|
||||||
else
|
};
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
|
|
||||||
return ehci_usb_phy_mode(dev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ehci_usb_probe(struct udevice *dev)
|
static int ehci_usb_probe(struct udevice *dev)
|
||||||
|
|
|
@ -210,7 +210,7 @@ static void usb_scan_bus(struct udevice *bus, bool recurse)
|
||||||
|
|
||||||
assert(recurse); /* TODO: Support non-recusive */
|
assert(recurse); /* TODO: Support non-recusive */
|
||||||
|
|
||||||
printf("scanning bus %d for devices... ", bus->seq);
|
printf("scanning bus %s for devices... ", bus->name);
|
||||||
debug("\n");
|
debug("\n");
|
||||||
ret = usb_scan_device(bus, 0, USB_SPEED_FULL, &dev);
|
ret = usb_scan_device(bus, 0, USB_SPEED_FULL, &dev);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -242,7 +242,6 @@ int usb_init(void)
|
||||||
struct usb_bus_priv *priv;
|
struct usb_bus_priv *priv;
|
||||||
struct udevice *bus;
|
struct udevice *bus;
|
||||||
struct uclass *uc;
|
struct uclass *uc;
|
||||||
int count = 0;
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
asynch_allowed = 1;
|
asynch_allowed = 1;
|
||||||
|
@ -255,8 +254,7 @@ int usb_init(void)
|
||||||
|
|
||||||
uclass_foreach_dev(bus, uc) {
|
uclass_foreach_dev(bus, uc) {
|
||||||
/* init low_level USB */
|
/* init low_level USB */
|
||||||
printf("USB%d: ", count);
|
printf("Bus %s: ", bus->name);
|
||||||
count++;
|
|
||||||
|
|
||||||
#ifdef CONFIG_SANDBOX
|
#ifdef CONFIG_SANDBOX
|
||||||
/*
|
/*
|
||||||
|
@ -327,10 +325,8 @@ int usb_init(void)
|
||||||
remove_inactive_children(uc, bus);
|
remove_inactive_children(uc, bus);
|
||||||
|
|
||||||
/* if we were not able to find at least one working bus, bail out */
|
/* if we were not able to find at least one working bus, bail out */
|
||||||
if (!count)
|
if (controllers_initialized == 0)
|
||||||
printf("No controllers found\n");
|
printf("No working controllers found\n");
|
||||||
else if (controllers_initialized == 0)
|
|
||||||
printf("USB error: all controllers failed lowlevel init\n");
|
|
||||||
|
|
||||||
return usb_started ? 0 : -1;
|
return usb_started ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue