mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-06-22 14:41:42 +00:00
Merge branch 'master' of git://git.denx.de/u-boot-usb
This commit is contained in:
commit
b4039a5415
7 changed files with 28 additions and 22 deletions
|
@ -70,7 +70,7 @@
|
||||||
/* direction table -- this indicates the direction of the data
|
/* direction table -- this indicates the direction of the data
|
||||||
* transfer for each command code -- a 1 indicates input
|
* transfer for each command code -- a 1 indicates input
|
||||||
*/
|
*/
|
||||||
unsigned char us_direction[256/8] = {
|
static const unsigned char us_direction[256/8] = {
|
||||||
0x28, 0x81, 0x14, 0x14, 0x20, 0x01, 0x90, 0x77,
|
0x28, 0x81, 0x14, 0x14, 0x20, 0x01, 0x90, 0x77,
|
||||||
0x0C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
0x0C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
|
||||||
|
|
|
@ -205,12 +205,12 @@ static int handshake(uint32_t *ptr, uint32_t mask, uint32_t done, int usec)
|
||||||
uint32_t result;
|
uint32_t result;
|
||||||
do {
|
do {
|
||||||
result = ehci_readl(ptr);
|
result = ehci_readl(ptr);
|
||||||
|
udelay(5);
|
||||||
if (result == ~(uint32_t)0)
|
if (result == ~(uint32_t)0)
|
||||||
return -1;
|
return -1;
|
||||||
result &= mask;
|
result &= mask;
|
||||||
if (result == done)
|
if (result == done)
|
||||||
return 0;
|
return 0;
|
||||||
udelay(1);
|
|
||||||
usec--;
|
usec--;
|
||||||
} while (usec > 0);
|
} while (usec > 0);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -53,6 +53,10 @@ int ehci_hcd_init(void)
|
||||||
hcor = (struct ehci_hcor *)((uint32_t) hccr +
|
hcor = (struct ehci_hcor *)((uint32_t) hccr +
|
||||||
HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
|
HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
|
||||||
|
|
||||||
|
debug("EHCI-PCI init hccr 0x%x and hcor 0x%x hc_length %d\n",
|
||||||
|
(uint32_t)hccr, (uint32_t)hcor,
|
||||||
|
(uint32_t)HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -175,7 +175,7 @@ struct qTD {
|
||||||
uint32_t qt_buffer_hi[5]; /* Appendix B */
|
uint32_t qt_buffer_hi[5]; /* Appendix B */
|
||||||
/* pad struct for 32 byte alignment */
|
/* pad struct for 32 byte alignment */
|
||||||
uint32_t unused[3];
|
uint32_t unused[3];
|
||||||
} __attribute__ ((aligned (32)));
|
};
|
||||||
|
|
||||||
/* Queue Head (QH). */
|
/* Queue Head (QH). */
|
||||||
struct QH {
|
struct QH {
|
||||||
|
|
|
@ -76,7 +76,7 @@ void musb_start(void)
|
||||||
* epinfo - Pointer to EP configuration table
|
* epinfo - Pointer to EP configuration table
|
||||||
* cnt - Number of entries in the EP conf table.
|
* cnt - Number of entries in the EP conf table.
|
||||||
*/
|
*/
|
||||||
void musb_configure_ep(struct musb_epinfo *epinfo, u8 cnt)
|
void musb_configure_ep(const struct musb_epinfo *epinfo, u8 cnt)
|
||||||
{
|
{
|
||||||
u16 csr;
|
u16 csr;
|
||||||
u16 fifoaddr = 64; /* First 64 bytes of FIFO reserved for EP0 */
|
u16 fifoaddr = 64; /* First 64 bytes of FIFO reserved for EP0 */
|
||||||
|
|
|
@ -357,7 +357,7 @@ extern struct musb_regs *musbr;
|
||||||
|
|
||||||
/* exported functions */
|
/* exported functions */
|
||||||
extern void musb_start(void);
|
extern void musb_start(void);
|
||||||
extern void musb_configure_ep(struct musb_epinfo *epinfo, u8 cnt);
|
extern void musb_configure_ep(const struct musb_epinfo *epinfo, u8 cnt);
|
||||||
extern void write_fifo(u8 ep, u32 length, void *fifo_data);
|
extern void write_fifo(u8 ep, u32 length, void *fifo_data);
|
||||||
extern void read_fifo(u8 ep, u32 length, void *fifo_data);
|
extern void read_fifo(u8 ep, u32 length, void *fifo_data);
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#define USB_MSC_BBB_GET_MAX_LUN 0xFE
|
#define USB_MSC_BBB_GET_MAX_LUN 0xFE
|
||||||
|
|
||||||
/* Endpoint configuration information */
|
/* Endpoint configuration information */
|
||||||
static struct musb_epinfo epinfo[3] = {
|
static const struct musb_epinfo epinfo[3] = {
|
||||||
{MUSB_BULK_EP, 1, 512}, /* EP1 - Bluk Out - 512 Bytes */
|
{MUSB_BULK_EP, 1, 512}, /* EP1 - Bluk Out - 512 Bytes */
|
||||||
{MUSB_BULK_EP, 0, 512}, /* EP1 - Bluk In - 512 Bytes */
|
{MUSB_BULK_EP, 0, 512}, /* EP1 - Bluk In - 512 Bytes */
|
||||||
{MUSB_INTR_EP, 0, 64} /* EP2 - Interrupt IN - 64 Bytes */
|
{MUSB_INTR_EP, 0, 64} /* EP2 - Interrupt IN - 64 Bytes */
|
||||||
|
@ -41,7 +41,7 @@ static int rh_devnum;
|
||||||
static u32 port_status;
|
static u32 port_status;
|
||||||
|
|
||||||
/* Device descriptor */
|
/* Device descriptor */
|
||||||
static u8 root_hub_dev_des[] = {
|
static const u8 root_hub_dev_des[] = {
|
||||||
0x12, /* __u8 bLength; */
|
0x12, /* __u8 bLength; */
|
||||||
0x01, /* __u8 bDescriptorType; Device */
|
0x01, /* __u8 bDescriptorType; Device */
|
||||||
0x00, /* __u16 bcdUSB; v1.1 */
|
0x00, /* __u16 bcdUSB; v1.1 */
|
||||||
|
@ -63,7 +63,7 @@ static u8 root_hub_dev_des[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Configuration descriptor */
|
/* Configuration descriptor */
|
||||||
static u8 root_hub_config_des[] = {
|
static const u8 root_hub_config_des[] = {
|
||||||
0x09, /* __u8 bLength; */
|
0x09, /* __u8 bLength; */
|
||||||
0x02, /* __u8 bDescriptorType; Configuration */
|
0x02, /* __u8 bDescriptorType; Configuration */
|
||||||
0x19, /* __u16 wTotalLength; */
|
0x19, /* __u16 wTotalLength; */
|
||||||
|
@ -96,14 +96,14 @@ static u8 root_hub_config_des[] = {
|
||||||
0xff /* __u8 ep_bInterval; 255 ms */
|
0xff /* __u8 ep_bInterval; 255 ms */
|
||||||
};
|
};
|
||||||
|
|
||||||
static unsigned char root_hub_str_index0[] = {
|
static const unsigned char root_hub_str_index0[] = {
|
||||||
0x04, /* __u8 bLength; */
|
0x04, /* __u8 bLength; */
|
||||||
0x03, /* __u8 bDescriptorType; String-descriptor */
|
0x03, /* __u8 bDescriptorType; String-descriptor */
|
||||||
0x09, /* __u8 lang ID */
|
0x09, /* __u8 lang ID */
|
||||||
0x04, /* __u8 lang ID */
|
0x04, /* __u8 lang ID */
|
||||||
};
|
};
|
||||||
|
|
||||||
static unsigned char root_hub_str_index1[] = {
|
static const unsigned char root_hub_str_index1[] = {
|
||||||
0x1c, /* __u8 bLength; */
|
0x1c, /* __u8 bLength; */
|
||||||
0x03, /* __u8 bDescriptorType; String-descriptor */
|
0x03, /* __u8 bDescriptorType; String-descriptor */
|
||||||
'M', /* __u8 Unicode */
|
'M', /* __u8 Unicode */
|
||||||
|
@ -557,7 +557,7 @@ static int musb_submit_rh_msg(struct usb_device *dev, unsigned long pipe,
|
||||||
int len = 0;
|
int len = 0;
|
||||||
int stat = 0;
|
int stat = 0;
|
||||||
u32 datab[4];
|
u32 datab[4];
|
||||||
u8 *data_buf = (u8 *) datab;
|
const u8 *data_buf = (u8 *) datab;
|
||||||
u16 bmRType_bReq;
|
u16 bmRType_bReq;
|
||||||
u16 wValue;
|
u16 wValue;
|
||||||
u16 wIndex;
|
u16 wIndex;
|
||||||
|
@ -778,25 +778,27 @@ static int musb_submit_rh_msg(struct usb_device *dev, unsigned long pipe,
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RH_GET_DESCRIPTOR | RH_CLASS:
|
case RH_GET_DESCRIPTOR | RH_CLASS: {
|
||||||
|
u8 *_data_buf = (u8 *) datab;
|
||||||
debug("RH_GET_DESCRIPTOR | RH_CLASS\n");
|
debug("RH_GET_DESCRIPTOR | RH_CLASS\n");
|
||||||
|
|
||||||
data_buf[0] = 0x09; /* min length; */
|
_data_buf[0] = 0x09; /* min length; */
|
||||||
data_buf[1] = 0x29;
|
_data_buf[1] = 0x29;
|
||||||
data_buf[2] = 0x1; /* 1 port */
|
_data_buf[2] = 0x1; /* 1 port */
|
||||||
data_buf[3] = 0x01; /* per-port power switching */
|
_data_buf[3] = 0x01; /* per-port power switching */
|
||||||
data_buf[3] |= 0x10; /* no overcurrent reporting */
|
_data_buf[3] |= 0x10; /* no overcurrent reporting */
|
||||||
|
|
||||||
/* Corresponds to data_buf[4-7] */
|
/* Corresponds to data_buf[4-7] */
|
||||||
data_buf[4] = 0;
|
_data_buf[4] = 0;
|
||||||
data_buf[5] = 5;
|
_data_buf[5] = 5;
|
||||||
data_buf[6] = 0;
|
_data_buf[6] = 0;
|
||||||
data_buf[7] = 0x02;
|
_data_buf[7] = 0x02;
|
||||||
data_buf[8] = 0xff;
|
_data_buf[8] = 0xff;
|
||||||
|
|
||||||
len = min_t(unsigned int, leni,
|
len = min_t(unsigned int, leni,
|
||||||
min_t(unsigned int, data_buf[0], wLength));
|
min_t(unsigned int, data_buf[0], wLength));
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case RH_GET_CONFIGURATION:
|
case RH_GET_CONFIGURATION:
|
||||||
debug("RH_GET_CONFIGURATION\n");
|
debug("RH_GET_CONFIGURATION\n");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue