]> git.sur5r.net Git - u-boot/commitdiff
Merge branch 'master' of git://www.denx.de/git/u-boot
authorBen Warren <biggerbadderben@gmail.com>
Tue, 3 Jun 2008 05:55:42 +0000 (22:55 -0700)
committerBen Warren <biggerbadderben@gmail.com>
Tue, 3 Jun 2008 05:55:42 +0000 (22:55 -0700)
common/usb.c
common/usb_kbd.c
common/usb_storage.c
doc/README.generic_usb_ohci
drivers/usb/usb_ohci.c
include/configs/socrates.h

index 52e847253288746341720fad662cc686e0878bb7..a0107dca5373602f3172c85990925036109a754d 100644 (file)
@@ -48,6 +48,7 @@
 #include <command.h>
 #include <asm/processor.h>
 #include <linux/ctype.h>
+#include <asm/byteorder.h>
 
 #if defined(CONFIG_CMD_USB)
 
@@ -177,10 +178,10 @@ int usb_control_msg(struct usb_device *dev, unsigned int pipe,
        /* set setup command */
        setup_packet.requesttype = requesttype;
        setup_packet.request = request;
-       setup_packet.value = swap_16(value);
-       setup_packet.index = swap_16(index);
-       setup_packet.length = swap_16(size);
-       USB_PRINTF("usb_control_msg: request: 0x%X, requesttype: 0x%X\nvalue 0x%X index 0x%X length 0x%X\n",
+       setup_packet.value = cpu_to_le16(value);
+       setup_packet.index = cpu_to_le16(index);
+       setup_packet.length = cpu_to_le16(size);
+       USB_PRINTF("usb_control_msg: request: 0x%X, requesttype: 0x%Xvalue 0x%X index 0x%X length 0x%X\n",
                request,requesttype,value,index,size);
        dev->status=USB_ST_NOT_PROC; /*not yet processed */
 
@@ -300,7 +301,7 @@ int usb_parse_config(struct usb_device *dev, unsigned char *buffer, int cfgno)
                return -1;
        }
        memcpy(&dev->config, buffer, buffer[0]);
-       dev->config.wTotalLength = swap_16(dev->config.wTotalLength);
+       le16_to_cpus(&(dev->config.wTotalLength));
        dev->config.no_of_if = 0;
 
        index = dev->config.bLength;
@@ -329,8 +330,7 @@ int usb_parse_config(struct usb_device *dev, unsigned char *buffer, int cfgno)
                                dev->config.if_desc[ifno].no_of_ep++; /* found an endpoint */
                                memcpy(&dev->config.if_desc[ifno].ep_desc[epno],
                                        &buffer[index], buffer[index]);
-                               dev->config.if_desc[ifno].ep_desc[epno].wMaxPacketSize =
-                                       swap_16(dev->config.if_desc[ifno].ep_desc[epno].wMaxPacketSize);
+                               le16_to_cpus(&(dev->config.if_desc[ifno].ep_desc[epno].wMaxPacketSize));
                                USB_PRINTF("if %d, ep %d\n", ifno, epno);
                                break;
                        default:
@@ -413,7 +413,7 @@ int usb_get_configuration_no(struct usb_device *dev,unsigned char *buffer,int cf
                        printf("config descriptor too short (expected %i, got %i)\n",8,result);
                return -1;
        }
-       tmp=swap_16(config->wTotalLength);
+       tmp = le16_to_cpu(config->wTotalLength);
 
        if (tmp > USB_BUFSIZ) {
                USB_PRINTF("usb_get_configuration_no: failed to get descriptor - too long: %d\n",
@@ -816,10 +816,10 @@ int usb_new_device(struct usb_device *dev)
                return 1;
        }
        /* correct le values */
-       dev->descriptor.bcdUSB=swap_16(dev->descriptor.bcdUSB);
-       dev->descriptor.idVendor=swap_16(dev->descriptor.idVendor);
-       dev->descriptor.idProduct=swap_16(dev->descriptor.idProduct);
-       dev->descriptor.bcdDevice=swap_16(dev->descriptor.bcdDevice);
+       le16_to_cpus(&dev->descriptor.bcdUSB);
+       le16_to_cpus(&dev->descriptor.idVendor);
+       le16_to_cpus(&dev->descriptor.idProduct);
+       le16_to_cpus(&dev->descriptor.bcdDevice);
        /* only support for one config for now */
        usb_get_configuration_no(dev,&tmpbuf[0],0);
        usb_parse_config(dev,&tmpbuf[0],0);
@@ -979,8 +979,8 @@ static int hub_port_reset(struct usb_device *dev, int port,
                        USB_HUB_PRINTF("get_port_status failed status %lX\n",dev->status);
                        return -1;
                }
-               portstatus = swap_16(portsts.wPortStatus);
-               portchange = swap_16(portsts.wPortChange);
+               portstatus = le16_to_cpu(portsts.wPortStatus);
+               portchange = le16_to_cpu(portsts.wPortChange);
                USB_HUB_PRINTF("portstatus %x, change %x, %s\n", portstatus ,portchange,
                        portstatus&(1<<USB_PORT_FEAT_LOWSPEED) ? "Low Speed" : "High Speed");
                USB_HUB_PRINTF("STAT_C_CONNECTION = %d STAT_CONNECTION = %d  USB_PORT_STAT_ENABLE %d\n",
@@ -1024,8 +1024,8 @@ void usb_hub_port_connect_change(struct usb_device *dev, int port)
                return;
        }
 
-       portstatus = swap_16(portsts.wPortStatus);
-       portchange = swap_16(portsts.wPortChange);
+       portstatus = le16_to_cpu(portsts.wPortStatus);
+       portchange = le16_to_cpu(portsts.wPortChange);
        USB_HUB_PRINTF("portstatus %x, change %x, %s\n", portstatus, portchange,
                portstatus&(1<<USB_PORT_FEAT_LOWSPEED) ? "Low Speed" : "High Speed");
 
@@ -1099,7 +1099,7 @@ int usb_hub_configure(struct usb_device *dev)
        }
        memcpy((unsigned char *)&hub->desc,buffer,descriptor->bLength);
        /* adjust 16bit values */
-       hub->desc.wHubCharacteristics=swap_16(descriptor->wHubCharacteristics);
+       hub->desc.wHubCharacteristics = le16_to_cpu(descriptor->wHubCharacteristics);
        /* set the bitmap */
        bitmap=(unsigned char *)&hub->desc.DeviceRemovable[0];
        memset(bitmap,0xff,(USB_MAXCHILDREN+1+7)/8); /* devices not removable by default */
@@ -1161,11 +1161,11 @@ int usb_hub_configure(struct usb_device *dev)
        }
        hubsts = (struct usb_hub_status *)buffer;
        USB_HUB_PRINTF("get_hub_status returned status %X, change %X\n",
-               swap_16(hubsts->wHubStatus),swap_16(hubsts->wHubChange));
+               le16_to_cpu(hubsts->wHubStatus),le16_to_cpu(hubsts->wHubChange));
        USB_HUB_PRINTF("local power source is %s\n",
-               (swap_16(hubsts->wHubStatus) & HUB_STATUS_LOCAL_POWER) ? "lost (inactive)" : "good");
+               (le16_to_cpu(hubsts->wHubStatus) & HUB_STATUS_LOCAL_POWER) ? "lost (inactive)" : "good");
        USB_HUB_PRINTF("%sover-current condition exists\n",
-               (swap_16(hubsts->wHubStatus) & HUB_STATUS_OVERCURRENT) ? "" : "no ");
+               (le16_to_cpu(hubsts->wHubStatus) & HUB_STATUS_OVERCURRENT) ? "" : "no ");
        usb_hub_power_on(hub);
        for (i = 0; i < dev->maxchild; i++) {
                struct usb_port_status portsts;
@@ -1175,8 +1175,8 @@ int usb_hub_configure(struct usb_device *dev)
                        USB_HUB_PRINTF("get_port_status failed\n");
                        continue;
                }
-               portstatus = swap_16(portsts.wPortStatus);
-               portchange = swap_16(portsts.wPortChange);
+               portstatus = le16_to_cpu(portsts.wPortStatus);
+               portchange = le16_to_cpu(portsts.wPortChange);
                USB_HUB_PRINTF("Port %d Status %X Change %X\n",i+1,portstatus,portchange);
                if (portchange & USB_PORT_STAT_C_CONNECTION) {
                        USB_HUB_PRINTF("port %d connection change\n", i + 1);
index 11e861daf912d64fbc8ac0d81b1b48274d17599a..1e79208d7ce5486115c8defa016c57e8ae9c1915 100644 (file)
@@ -26,6 +26,7 @@
  */
 #include <common.h>
 #include <devices.h>
+#include <asm/byteorder.h>
 
 #ifdef CONFIG_USB_KEYBOARD
 
@@ -475,14 +476,14 @@ static int fetch_item(unsigned char *start,unsigned char *end, struct hid_item *
                                        break;
                                case 2:
                                        if ((end - start) >= 2) {
-                                               item->data.u16 = swap_16((unsigned short *)start);
+                                               item->data.u16 = le16_to_cpu((unsigned short *)start);
                                                start+=2;
                                                return item->size;
                                        }
                                case 3:
                                        item->size++;
                                        if ((end - start) >= 4) {
-                                               item->data.u32 = swap_32((unsigned long *)start);
+                                               item->data.u32 = le32_to_cpu((unsigned long *)start);
                                                start+=4;
                                                return item->size;
                                        }
@@ -705,15 +706,15 @@ static int usb_kbd_get_hid_desc(struct usb_device *dev)
        }
        index=head->bLength;
        config=(struct usb_config_descriptor *)&buffer[0];
-       len=swap_16(config->wTotalLength);
+       len=le16_to_cpu(config->wTotalLength);
        /* Ok the first entry must be a configuration entry, now process the others */
        head=(struct usb_descriptor_header *)&buffer[index];
        while(index+1 < len) {
                if(head->bDescriptorType==USB_DT_HID) {
                        printf("HID desc found\n");
                        memcpy(&usb_kbd_hid_desc,&buffer[index],buffer[index]);
-                       usb_kbd_hid_desc.bcdHID=swap_16(usb_kbd_hid_desc.bcdHID);
-                       usb_kbd_hid_desc.wDescriptorLength=swap_16(usb_kbd_hid_desc.wDescriptorLength);
+                       le16_to_cpus(&usb_kbd_hid_desc.bcdHID);
+                       le16_to_cpus(&usb_kbd_hid_desc.wDescriptorLength);
                        usb_kbd_display_hid(&usb_kbd_hid_desc);
                        len=0;
                        break;
index 7c08f957752a34e7d8a973f3a2836093439a4be1..3e113b4084ee64bb11c71a358d0b574e1ef04b74 100644 (file)
@@ -52,6 +52,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <asm/byteorder.h>
 #include <asm/processor.h>
 
 
@@ -474,9 +475,9 @@ int usb_stor_BBB_comdat(ccb *srb, struct us_data *us)
        /* always OUT to the ep */
        pipe = usb_sndbulkpipe(us->pusb_dev, us->ep_out);
 
-       cbw.dCBWSignature = swap_32(CBWSIGNATURE);
-       cbw.dCBWTag = swap_32(CBWTag++);
-       cbw.dCBWDataTransferLength = swap_32(srb->datalen);
+       cbw.dCBWSignature = cpu_to_le32(CBWSIGNATURE);
+       cbw.dCBWTag = cpu_to_le32(CBWTag++);
+       cbw.dCBWDataTransferLength = cpu_to_le32(srb->datalen);
        cbw.bCBWFlags = (dir_in? CBWFLAGS_IN : CBWFLAGS_OUT);
        cbw.bCBWLUN = srb->lun;
        cbw.bCDBLength = srb->cmdlen;
@@ -692,14 +693,14 @@ int usb_stor_BBB_transport(ccb *srb, struct us_data *us)
        printf("\n");
 #endif
        /* misuse pipe to get the residue */
-       pipe = swap_32(csw.dCSWDataResidue);
+       pipe = le32_to_cpu(csw.dCSWDataResidue);
        if (pipe == 0 && srb->datalen != 0 && srb->datalen - data_actlen != 0)
                pipe = srb->datalen - data_actlen;
-       if (CSWSIGNATURE != swap_32(csw.dCSWSignature)) {
+       if (CSWSIGNATURE != le32_to_cpu(csw.dCSWSignature)) {
                USB_STOR_PRINTF("!CSWSIGNATURE\n");
                usb_stor_BBB_reset(us);
                return USB_STOR_TRANSPORT_FAILED;
-       } else if ((CBWTag - 1) != swap_32(csw.dCSWTag)) {
+       } else if ((CBWTag - 1) != le32_to_cpu(csw.dCSWTag)) {
                USB_STOR_PRINTF("!Tag\n");
                usb_stor_BBB_reset(us);
                return USB_STOR_TRANSPORT_FAILED;
@@ -1222,18 +1223,9 @@ int usb_stor_get_info(struct usb_device *dev,struct us_data *ss,block_dev_desc_t
        if(cap[0]>(0x200000 * 10)) /* greater than 10 GByte */
                cap[0]>>=16;
 #endif
-#ifdef LITTLEENDIAN
-       cap[0] = ((unsigned long)(
-               (((unsigned long)(cap[0]) & (unsigned long)0x000000ffUL) << 24) |
-               (((unsigned long)(cap[0]) & (unsigned long)0x0000ff00UL) <<  8) |
-               (((unsigned long)(cap[0]) & (unsigned long)0x00ff0000UL) >>  8) |
-               (((unsigned long)(cap[0]) & (unsigned long)0xff000000UL) >> 24) ));
-       cap[1] = ((unsigned long)(
-               (((unsigned long)(cap[1]) & (unsigned long)0x000000ffUL) << 24) |
-               (((unsigned long)(cap[1]) & (unsigned long)0x0000ff00UL) <<  8) |
-               (((unsigned long)(cap[1]) & (unsigned long)0x00ff0000UL) >>  8) |
-               (((unsigned long)(cap[1]) & (unsigned long)0xff000000UL) >> 24) ));
-#endif
+       cap[0] = cpu_to_be32(cap[0]);
+       cap[1] = cpu_to_be32(cap[1]);
+
        /* this assumes bigendian! */
        cap[0] += 1;
        capacity = &cap[0];
index c44c5014743e614990fa280a581acbf0b757180b..147ea514ae92c26127244e323408f1540cd0d71d 100644 (file)
@@ -51,6 +51,12 @@ You'll need to define
 
        CONFIG_PCI_OHCI
 
+If you have several USB PCI controllers, define
+
+       CONFIG_PCI_OHCI_DEVNO: number of the OHCI device in PCI list
+
+If undefined, the first instance found in PCI space will be used.
+
 PCI Controllers need to do byte swapping on register accesses, so they
 should to define:
 
index ee0f2e45b196a88d7079aa1e49354fa080b73456..fd60edbb3d446f32cf6bbc3d18d23b15fcca701e 100644 (file)
@@ -53,6 +53,9 @@
 
 #if defined(CONFIG_PCI_OHCI)
 # include <pci.h>
+#if !defined(CONFIG_PCI_OHCI_DEVNO)
+#define CONFIG_PCI_OHCI_DEVNO  0
+#endif
 #endif
 
 #include <malloc.h>
@@ -1218,9 +1221,9 @@ pkt_print(NULL, dev, pipe, buffer, transfer_len, cmd, "SUB(rh)", usb_pipein(pipe
        }
 
        bmRType_bReq  = cmd->requesttype | (cmd->request << 8);
-       wValue        = cpu_to_le16 (cmd->value);
-       wIndex        = cpu_to_le16 (cmd->index);
-       wLength       = cpu_to_le16 (cmd->length);
+       wValue        = le16_to_cpu (cmd->value);
+       wIndex        = le16_to_cpu (cmd->index);
+       wLength       = le16_to_cpu (cmd->length);
 
        info("Root-Hub: adr: %2x cmd(%1x): %08x %04x %04x %04x",
                dev->devnum, 8, bmRType_bReq, wValue, wIndex, wLength);
@@ -1818,7 +1821,7 @@ int usb_lowlevel_init(void)
        gohci.sleeping = 0;
        gohci.irq = -1;
 #ifdef CONFIG_PCI_OHCI
-       pdev = pci_find_devices(ohci_pci_ids, 0);
+       pdev = pci_find_devices(ohci_pci_ids, CONFIG_PCI_OHCI_DEVNO);
 
        if (pdev != -1) {
                u16 vid, did;
index 5d37383beef6ee1b3532eb45e439ac9e14ab63e9..23ed87f33828bc0d6fd423eb50c9a5059c80cc4a 100644 (file)
 #define CONFIG_RTC_RX8025              /* Use Epson rx8025 rtc via i2c */
 #define CFG_I2C_RTC_ADDR       0x32    /* at address 0x32              */
 
+/* I2C temp sensor */
+/* Socrates uses Maxim's       DS75, which is compatible with LM75 */
+#define CONFIG_DTT_LM75                1
+#define CONFIG_DTT_SENSORS     {4}             /* Sensor addresses     */
+#define CFG_DTT_MAX_TEMP       125
+#define CFG_DTT_LOW_TEMP       -55
+#define CFG_DTT_HYSTERESIS     3
+#define CFG_EEPROM_PAGE_WRITE_ENABLE   /* necessary for the LM75 chip */
+#define CFG_EEPROM_PAGE_WRITE_BITS     4
+
 /* RapidIO MMU */
 #define CFG_RIO_MEM_BASE       0xc0000000      /* base address         */
 #define CFG_RIO_MEM_PHYS       CFG_RIO_MEM_BASE
 #define CFG_PCI1_IO_SIZE       0x01000000      /* 16M                  */
 
 #if defined(CONFIG_PCI)
-
 #define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
 
 #define CONFIG_EEPRO100
 #undef CONFIG_TULIP
 
-#undef CONFIG_PCI_SCAN_SHOW            /* show pci devices on startup  */
+#define CONFIG_PCI_SCAN_SHOW           /* show pci devices on startup  */
 #define CFG_PCI_SUBSYS_VENDORID 0x1057 /* Motorola                     */
 
 #endif /* CONFIG_PCI */
 
 #define CONFIG_CMD_DATE
 #define CONFIG_CMD_DHCP
-#undef CONFIG_CMD_DTT
+#define CONFIG_CMD_DTT
 #undef CONFIG_CMD_EEPROM
 #define CONFIG_CMD_I2C
 #define CONFIG_CMD_MII
 #define CONFIG_CMD_NFS
 #define CONFIG_CMD_PING
-#undef CONFIG_CMD_RTC
 #define CONFIG_CMD_SNTP
+#define CONFIG_CMD_USB
 
 
 #if defined(CONFIG_PCI)
 #undef CONFIG_BOOTARGS         /* the boot command will set bootargs   */
 
 #define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "bootfile=/tftpboot/socrates/uImage\0"                          \
+       "bootfile=$hostname/uImage\0"                                   \
        "netdev=eth0\0"                                                 \
        "consdev=ttyS0\0"                                               \
+       "hostname=socrates\0"                                           \
        "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
                "nfsroot=$serverip:$rootpath\0"                         \
        "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
                "tftp ${fdt_addr_r} ${fdt_file}; "                      \
                "run nfsargs addip addcons;"                            \
                "bootm ${kernel_addr_r} - ${fdt_addr_r}\0"              \
-       "fdt_file=socrates/socrates.dtb\0"                                      \
+       "fdt_file=$hostname/socrates.dtb\0"                                     \
        "fdt_addr_r=B00000\0"                                           \
        "fdt_addr=FC1E0000\0"                                           \
        "rootpath=/opt/eldk/ppc_85xx\0"                                 \
        "kernel_addr_r=200000\0"                                        \
        "ramdisk_addr=FC200000\0"                                       \
        "ramdisk_addr_r=400000\0"                                       \
-       "load=tftp 100000 /tftpboot/$hostname/u-boot.bin\0"             \
+       "load=tftp 100000 $hostname/u-boot.bin\0"               \
        "update=protect off fffc0000 ffffffff;era fffc0000 ffffffff;"   \
                "cp.b 100000 fffc0000 40000;"                           \
                "setenv filesize;saveenv\0"                             \
 #define CONFIG_OF_LIBFDT       1
 #define CONFIG_OF_BOARD_SETUP  1
 
+/* USB support */
+#define CONFIG_USB_OHCI_NEW            1
+#define CONFIG_PCI_OHCI                        1
+#define CONFIG_PCI_OHCI_DEVNO          3 /* Number in PCI list */
+#define CFG_USB_OHCI_MAX_ROOT_PORTS    15
+#define CFG_USB_OHCI_SLOT_NAME         "ohci_pci"
+#define CFG_OHCI_SWAP_REG_ACCESS       1
+#define CONFIG_DOS_PARTITION           1
+#define CONFIG_USB_STORAGE             1
+
 #endif /* __CONFIG_H */