mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	Merge branch 'master' of git://git.denx.de/u-boot-usb
This commit is contained in:
		
						commit
						b4039a5415
					
				@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user