added more diagnostic printouts and fixed debug() routines to ease debugging
This commit is contained in:
@@ -170,7 +170,7 @@ struct ohci_hcca {
|
|||||||
uint16_t pad1; /* set to 0 on each frame_no change */
|
uint16_t pad1; /* set to 0 on each frame_no change */
|
||||||
#endif
|
#endif
|
||||||
uint32_t done_head; /* info returned for an interrupt */
|
uint32_t done_head; /* info returned for an interrupt */
|
||||||
u8 reserved_for_hc[116];
|
uint8_t reserved_for_hc[116];
|
||||||
} __attribute__((aligned(256)));
|
} __attribute__((aligned(256)));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ typedef struct
|
|||||||
* this is how the lowlevel part communicate with the outer world
|
* this is how the lowlevel part communicate with the outer world
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int ohci_usb_lowlevel_init(uint16_t handle, const struct pci_device_id *ent, void **priv);
|
int ohci_usb_lowlevel_init(int32_t handle, const struct pci_device_id *ent, void **priv);
|
||||||
int ohci_usb_lowlevel_stop(void *priv);
|
int ohci_usb_lowlevel_stop(void *priv);
|
||||||
int ohci_submit_bulk_msg(struct usb_device *dev, uint32_t pipe, void *buffer, int transfer_len);
|
int ohci_submit_bulk_msg(struct usb_device *dev, uint32_t pipe, void *buffer, int transfer_len);
|
||||||
int ohci_submit_control_msg(struct usb_device *dev, uint32_t pipe, void *buffer, int transfer_len, struct devrequest *setup);
|
int ohci_submit_control_msg(struct usb_device *dev, uint32_t pipe, void *buffer, int transfer_len, struct devrequest *setup);
|
||||||
@@ -270,7 +270,7 @@ void usb_mem_stop(void);
|
|||||||
/* routines */
|
/* routines */
|
||||||
USB_COOKIE *usb_get_cookie(long id);
|
USB_COOKIE *usb_get_cookie(long id);
|
||||||
void usb_error_msg(const char *const fmt, ... );
|
void usb_error_msg(const char *const fmt, ... );
|
||||||
int usb_init(uint16_t handle, const struct pci_device_id *ent); /* initialize the USB Controller */
|
int usb_init(int32_t handle, const struct pci_device_id *ent); /* initialize the USB Controller */
|
||||||
int usb_stop(void); /* stop the USB Controller */
|
int usb_stop(void); /* stop the USB Controller */
|
||||||
|
|
||||||
int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol);
|
int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol);
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ static struct ehci {
|
|||||||
#define SHOW_INFO
|
#define SHOW_INFO
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#define debug(format, arg...) xprintf("DEBUG: " format, ## arg)
|
#define debug(format, arg...) xprintf("DEBUG: " format "\r\n", ## arg)
|
||||||
#else
|
#else
|
||||||
#define debug(format, arg...) do {} while (0)
|
#define debug(format, arg...) do {} while (0)
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
@@ -276,6 +276,7 @@ static int ehci_reset(void)
|
|||||||
pci_write_config_longword(gehci.handle, 0xE4, 0x20); // oscillator
|
pci_write_config_longword(gehci.handle, 0xE4, 0x20); // oscillator
|
||||||
}
|
}
|
||||||
cmd = ehci_readl(&gehci.hcor->or_usbcmd);
|
cmd = ehci_readl(&gehci.hcor->or_usbcmd);
|
||||||
|
debug("cmd: 0x%08x\r\n", cmd);
|
||||||
cmd |= CMD_RESET;
|
cmd |= CMD_RESET;
|
||||||
ehci_writel(&gehci.hcor->or_usbcmd, cmd);
|
ehci_writel(&gehci.hcor->or_usbcmd, cmd);
|
||||||
ret = handshake((uint32_t *)&gehci.hcor->or_usbcmd, CMD_RESET, 0, 250 * 1000);
|
ret = handshake((uint32_t *)&gehci.hcor->or_usbcmd, CMD_RESET, 0, 250 * 1000);
|
||||||
|
|||||||
@@ -69,7 +69,6 @@
|
|||||||
/*
|
/*
|
||||||
* e.g. PCI controllers need this
|
* e.g. PCI controllers need this
|
||||||
*/
|
*/
|
||||||
#define CONFIG_SYS_OHCI_SWAP_REG_ACCES
|
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_OHCI_SWAP_REG_ACCESS
|
#ifdef CONFIG_SYS_OHCI_SWAP_REG_ACCESS
|
||||||
#define readl(a) swpl(*((volatile uint32_t *)(a)))
|
#define readl(a) swpl(*((volatile uint32_t *)(a)))
|
||||||
@@ -1925,7 +1924,7 @@ static void hc_free_buffers(ohci_t *ohci)
|
|||||||
/*
|
/*
|
||||||
* low level initalisation routine, called from usb.c
|
* low level initalisation routine, called from usb.c
|
||||||
*/
|
*/
|
||||||
int ohci_usb_lowlevel_init(uint16_t handle, const struct pci_device_id *ent, void **priv)
|
int ohci_usb_lowlevel_init(int32_t handle, const struct pci_device_id *ent, void **priv)
|
||||||
{
|
{
|
||||||
uint32_t usb_base_addr = 0xFFFFFFFF;
|
uint32_t usb_base_addr = 0xFFFFFFFF;
|
||||||
ohci_t *ohci = &gohci[PCI_FUNCTION_FROM_HANDLE(handle) & 1];
|
ohci_t *ohci = &gohci[PCI_FUNCTION_FROM_HANDLE(handle) & 1];
|
||||||
@@ -1990,7 +1989,7 @@ int ohci_usb_lowlevel_init(uint16_t handle, const struct pci_device_id *ent, voi
|
|||||||
unsigned short flags;
|
unsigned short flags;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
xprintf("PCI USB descriptors: flags 0x%04x start 0x%08lx \r\n offset 0x%08lx dmaoffset 0x%08lx length 0x%08lx",
|
xprintf("\r\nPCI USB descriptors: flags 0x%04x start 0x%08lx \r\n offset 0x%08lx dmaoffset 0x%08lx length 0x%08lx\r\n",
|
||||||
pci_rsc_desc->flags, pci_rsc_desc->start, pci_rsc_desc->offset, pci_rsc_desc->dmaoffset, pci_rsc_desc->length);
|
pci_rsc_desc->flags, pci_rsc_desc->start, pci_rsc_desc->offset, pci_rsc_desc->dmaoffset, pci_rsc_desc->length);
|
||||||
if (!(pci_rsc_desc->flags & FLG_IO))
|
if (!(pci_rsc_desc->flags & FLG_IO))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -513,7 +513,7 @@ void init_usb(void)
|
|||||||
uint16_t usb_found;
|
uint16_t usb_found;
|
||||||
int index = 0;
|
int index = 0;
|
||||||
|
|
||||||
xprintf("USB controller initialization: ");
|
xprintf("USB controller initialization:\r\n");
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@@ -528,7 +528,11 @@ void init_usb(void)
|
|||||||
|
|
||||||
if (PCI_CLASS_CODE(class) == PCI_CLASS_SERIAL_USB)
|
if (PCI_CLASS_CODE(class) == PCI_CLASS_SERIAL_USB)
|
||||||
{
|
{
|
||||||
xprintf("serial USB found at #%x\r\n", handle);
|
xprintf("serial USB found at bus=0x%x, dev=0x%x, fnc=0x%x (0x%x)\r\n",
|
||||||
|
PCI_BUS_FROM_HANDLE(handle),
|
||||||
|
PCI_DEVICE_FROM_HANDLE(handle),
|
||||||
|
PCI_FUNCTION_FROM_HANDLE(handle),
|
||||||
|
handle);
|
||||||
if (PCI_SUBCLASS(class) == PCI_CLASS_SERIAL_USB_EHCI)
|
if (PCI_SUBCLASS(class) == PCI_CLASS_SERIAL_USB_EHCI)
|
||||||
{
|
{
|
||||||
board = ehci_usb_pci_table;
|
board = ehci_usb_pci_table;
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ extern int printk(PRINTK_INFO *info, const char *fmt, va_list ap);
|
|||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Init USB Device
|
* Init USB Device
|
||||||
*/
|
*/
|
||||||
int usb_init(uint16_t handle, const struct pci_device_id *ent)
|
int usb_init(int32_t handle, const struct pci_device_id *ent)
|
||||||
{
|
{
|
||||||
void *priv;
|
void *priv;
|
||||||
int res = 0;
|
int res = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user