#include <common.h>
#include <asm/processor.h>
-#ifdef CONFIG_440_EP
+#if (defined(CONFIG_440EP) || defined(CONFIG_440EPX)) && defined(CONFIG_CMD_USB)
#include <usb.h>
#include "usbdev.h"
#define USB_DT_INTERFACE 0x04
#define USB_DT_ENDPOINT 0x05
-unsigned char set_value = -1;
+int set_value = -1;
void process_endpoints(unsigned short usb2d0_intrin)
{
struct usb_string_descriptor usb_string_packet;
struct devrequest setup_packet;
unsigned int *setup_packet_pt;
- unsigned char *packet_pt;
+ unsigned char *packet_pt = NULL;
int temp, temp1;
int i;
/*set usb address, seems to not work unless it is done in the next
interrupt, so that is why it is done this way */
if (set_value != -1)
- *(unsigned char *)USB2D0_FADDR_8 = set_value;
+ *(unsigned char *)USB2D0_FADDR_8 = (unsigned char)set_value;
/*endpoint 1 */
if (usb2d0_intrin & 0x01) {
return 0;
}
+#if defined(CONFIG_440EPX)
+void usb_dev_init()
+{
+ printf("USB 2.0 Device init\n");
+
+ /*usb dev init */
+ *(unsigned char *)USB2D0_POWER_8 = 0xa1; /* 2.0 */
+
+ /*enable interrupts */
+ *(unsigned char *)USB2D0_INTRUSBE_8 = 0x0f;
+
+ irq_install_handler(VECNUM_HSB2D, (interrupt_handler_t *) usbInt,
+ NULL);
+}
+#else
void usb_dev_init()
{
#ifdef USB_2_0_DEVICE
irq_install_handler(VECNUM_USBDEV, (interrupt_handler_t *) usbInt,
NULL);
}
+#endif
-#endif /*CONFIG_440_EP */
+#endif /* CONFIG_440EP || CONFIG_440EPX */