Replace little-endian-only constants in ohci.h with
cpu-native constants, so that they can be converted
to little-endian or big-endian depending on the OHCI
controller being used.

Signed-off-by: Dale Farnsworth <[EMAIL PROTECTED]>

diff -Nru a/drivers/usb/host/ohci-dbg.c b/drivers/usb/host/ohci-dbg.c
--- a/drivers/usb/host/ohci-dbg.c       2004-08-19 18:00:06 -07:00
+++ b/drivers/usb/host/ohci-dbg.c       2004-08-19 18:00:06 -07:00
@@ -336,7 +336,7 @@
 ohci_dump_ed (const struct ohci_hcd *ohci, const char *label,
                const struct ed *ed, int verbose)
 {
-       u32     tmp = ed->hwINFO;
+       u32     tmp = le32_to_cpu (ed->hwINFO);
        char    *type = "";
 
        ohci_dbg (ohci, "%s, ed %p state 0x%x type %s; next ed %08x\n",
@@ -349,19 +349,20 @@
        /* else from TDs ... control */
        }
        ohci_dbg (ohci,
-               "  info %08x MAX=%d%s%s%s%s EP=%d%s DEV=%d\n", le32_to_cpu (tmp),
-               0x03ff & (le32_to_cpu (tmp) >> 16),
+               "  info %08x MAX=%d%s%s%s%s EP=%d%s DEV=%d\n", tmp,
+               0x03ff & (tmp >> 16),
                (tmp & ED_DEQUEUE) ? " DQ" : "",
                (tmp & ED_ISO) ? " ISO" : "",
                (tmp & ED_SKIP) ? " SKIP" : "",
                (tmp & ED_LOWSPEED) ? " LOW" : "",
-               0x000f & (le32_to_cpu (tmp) >> 7),
+               0x000f & (tmp >> 7),
                type,
-               0x007f & le32_to_cpu (tmp));
+               0x007f & tmp);
+       tmp = le32_to_cpup (&ed->hwHeadP);
        ohci_dbg (ohci, "  tds: head %08x %s%s tail %08x%s\n",
-               tmp = le32_to_cpup (&ed->hwHeadP),
-               (ed->hwHeadP & ED_C) ? data1 : data0,
-               (ed->hwHeadP & ED_H) ? " HALT" : "",
+               tmp,
+               (tmp & ED_C) ? data1 : data0,
+               (tmp & ED_H) ? " HALT" : "",
                le32_to_cpup (&ed->hwTailP),
                verbose ? "" : " (not listing)");
        if (verbose) {
@@ -415,8 +416,8 @@
 
        /* dump a snapshot of the bulk or control schedule */
        while (ed) {
-               u32                     info = ed->hwINFO;
-               u32                     scratch = cpu_to_le32p (&ed->hwINFO);
+               u32                     info = le32_to_cpu (ed->hwINFO);
+               u32                     headp = le32_to_cpu (ed->hwHeadP);
                struct list_head        *entry;
                struct td               *td;
 
@@ -424,14 +425,14 @@
                        "ed/%p %cs dev%d ep%d%s max %d %08x%s%s %s",
                        ed,
                        (info & ED_LOWSPEED) ? 'l' : 'f',
-                       scratch & 0x7f,
-                       (scratch >> 7) & 0xf,
+                       info & 0x7f,
+                       (info >> 7) & 0xf,
                        (info & ED_IN) ? "in" : "out",
-                       0x03ff & (scratch >> 16),
-                       scratch,
+                       0x03ff & (info >> 16),
+                       info,
                        (info & ED_SKIP) ? " s" : "",
-                       (ed->hwHeadP & ED_H) ? " H" : "",
-                       (ed->hwHeadP & ED_C) ? data1 : data0);
+                       (headp & ED_H) ? " H" : "",
+                       (headp & ED_C) ? data1 : data0);
                size -= temp;
                buf += temp;
 
@@ -439,21 +440,21 @@
                        u32             cbp, be;
 
                        td = list_entry (entry, struct td, td_list);
-                       scratch = cpu_to_le32p (&td->hwINFO);
+                       info = le32_to_cpup (&td->hwINFO);
                        cbp = le32_to_cpup (&td->hwCBP);
                        be = le32_to_cpup (&td->hwBE);
                        temp = scnprintf (buf, size,
                                        "\n\ttd %p %s %d cc=%x urb %p (%08x)",
                                        td,
                                        ({ char *pid;
-                                       switch (scratch & TD_DP) {
+                                       switch (info & TD_DP) {
                                        case TD_DP_SETUP: pid = "setup"; break;
                                        case TD_DP_IN: pid = "in"; break;
                                        case TD_DP_OUT: pid = "out"; break;
                                        default: pid = "(?)"; break;
                                         } pid;}),
                                        cbp ? (be + 1 - cbp) : 0,
-                                       TD_CC_GET (scratch), td->urb, scratch);
+                                       TD_CC_GET (info), td->urb, info);
                        size -= temp;
                        buf += temp;
                }
@@ -541,8 +542,7 @@
 
                        /* show more info the first time around */
                        if (temp == seen_count) {
-                               u32     info = ed->hwINFO;
-                               u32     scratch = cpu_to_le32p (&ed->hwINFO);
+                               u32     info = le32_to_cpu(ed->hwINFO);
                                struct list_head        *entry;
                                unsigned                qlen = 0;
 
@@ -554,15 +554,16 @@
                                        " (%cs dev%d ep%d%s-%s qlen %u"
                                        " max %d %08x%s%s)",
                                        (info & ED_LOWSPEED) ? 'l' : 'f',
-                                       scratch & 0x7f,
-                                       (scratch >> 7) & 0xf,
+                                       info & 0x7f,
+                                       (info >> 7) & 0xf,
                                        (info & ED_IN) ? "in" : "out",
                                        (info & ED_ISO) ? "iso" : "int",
                                        qlen,
-                                       0x03ff & (scratch >> 16),
-                                       scratch,
+                                       0x03ff & (info >> 16),
+                                       info,
                                        (info & ED_SKIP) ? " K" : "",
-                                       (ed->hwHeadP & ED_H) ? " H" : "");
+                                       (ed->hwHeadP & cpu_to_le32(ED_H)) ?
+                                               " H" : "");
                                size -= temp;
                                next += temp;
 
diff -Nru a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
--- a/drivers/usb/host/ohci-hcd.c       2004-08-19 18:00:06 -07:00
+++ b/drivers/usb/host/ohci-hcd.c       2004-08-19 18:00:06 -07:00
@@ -730,7 +730,7 @@
                switch (ed->state) {
                case ED_OPER:
                        ed->state = ED_UNLINK;
-                       ed->hwINFO |= ED_DEQUEUE;
+                       ed->hwINFO |= cpu_to_le32(ED_DEQUEUE);
                        ed_deschedule (ohci, ed);
 
                        ed->ed_next = ohci->ed_rm_list;
diff -Nru a/drivers/usb/host/ohci-mem.c b/drivers/usb/host/ohci-mem.c
--- a/drivers/usb/host/ohci-mem.c       2004-08-19 18:00:06 -07:00
+++ b/drivers/usb/host/ohci-mem.c       2004-08-19 18:00:06 -07:00
@@ -120,7 +120,7 @@
                prev = &(*prev)->td_hash;
        if (*prev)
                *prev = td->td_hash;
-       else if ((td->hwINFO & TD_DONE) != 0)
+       else if ((td->hwINFO & cpu_to_le32(TD_DONE)) != 0)
                ohci_dbg (hc, "no hash for td %p\n", td);
        dma_pool_free (hc->td_cache, td, td->td_dma);
 }
diff -Nru a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c
--- a/drivers/usb/host/ohci-q.c 2004-08-19 18:00:06 -07:00
+++ b/drivers/usb/host/ohci-q.c 2004-08-19 18:00:06 -07:00
@@ -131,7 +131,7 @@
        unsigned        i;
 
        ohci_vdbg (ohci, "link %sed %p branch %d [%dus.], interval %d\n",
-               (ed->hwINFO & ED_ISO) ? "iso " : "",
+               (ed->hwINFO & cpu_to_le32 (ED_ISO)) ? "iso " : "",
                ed, ed->branch, ed->load, ed->interval);
 
        for (i = ed->branch; i < NUM_INTS; i += ed->interval) {
@@ -272,7 +272,7 @@
        hcd_to_bus (&ohci->hcd)->bandwidth_allocated -= ed->load / ed->interval;
 
        ohci_vdbg (ohci, "unlink %sed %p branch %d [%dus.], interval %d\n",
-               (ed->hwINFO & ED_ISO) ? "iso " : "",
+               (ed->hwINFO & cpu_to_le32 (ED_ISO)) ? "iso " : "",
                ed, ed->branch, ed->load, ed->interval);
 }
 
@@ -300,7 +300,7 @@
  */
 static void ed_deschedule (struct ohci_hcd *ohci, struct ed *ed) 
 {
-       ed->hwINFO |= ED_SKIP;
+       ed->hwINFO |= cpu_to_le32 (ED_SKIP);
        wmb ();
        ed->state = ED_UNLINK;
 
@@ -431,7 +431,6 @@
                info = usb_pipedevice (pipe);
                info |= (ep >> 1) << 7;
                info |= usb_maxpacket (udev, pipe, is_out) << 16;
-               info = cpu_to_le32 (info);
                if (udev->speed == USB_SPEED_LOW)
                        info |= ED_LOWSPEED;
                /* only control transfers store pids in tds */
@@ -451,7 +450,7 @@
                                                / 1000;
                        }
                }
-               ed->hwINFO = info;
+               ed->hwINFO = cpu_to_le32(info);
        }
 
 done:
@@ -469,7 +468,7 @@
  */
 static void start_ed_unlink (struct ohci_hcd *ohci, struct ed *ed)
 {    
-       ed->hwINFO |= ED_DEQUEUE;
+       ed->hwINFO |= cpu_to_le32 (ED_DEQUEUE);
        ed_deschedule (ohci, ed);
 
        /* rm_list is just singly linked, for simplicity */
@@ -593,7 +592,7 @@
        if (!usb_gettoggle (urb->dev, usb_pipeendpoint (urb->pipe), is_out)) {
                usb_settoggle (urb->dev, usb_pipeendpoint (urb->pipe),
                        is_out, 1);
-               urb_priv->ed->hwHeadP &= ~ED_C;
+               urb_priv->ed->hwHeadP &= ~cpu_to_le32 (ED_C);
        }
 
        urb_priv->td_cnt = 0;
@@ -795,14 +794,14 @@
        struct urb              *urb = td->urb;
        struct ed               *ed = td->ed;
        struct list_head        *tmp = td->td_list.next;
-       u32                     toggle = ed->hwHeadP & ED_C;
+       u32                     toggle = ed->hwHeadP & cpu_to_le32 (ED_C);
 
        /* clear ed halt; this is the td that caused it, but keep it inactive
         * until its urb->complete() has a chance to clean up.
         */
-       ed->hwINFO |= ED_SKIP;
+       ed->hwINFO |= cpu_to_le32 (ED_SKIP);
        wmb ();
-       ed->hwHeadP &= ~ED_H; 
+       ed->hwHeadP &= ~cpu_to_le32 (ED_H); 
 
        /* put any later tds from this urb onto the donelist, after 'td',
         * order won't matter here: no errors, and nothing was transferred.
@@ -894,7 +893,8 @@
                 * and dequeue any other TDs from this urb.
                 * No other TD could have caused the halt.
                 */
-               if (cc != TD_CC_NOERROR && (td->ed->hwHeadP & ED_H))
+               if (cc != TD_CC_NOERROR &&
+                               (td->ed->hwHeadP & cpu_to_le32 (ED_H)))
                        td_rev = ed_halted (ohci, td, cc, td_rev);
 
                td->next_dl_td = td_rev;        
@@ -998,10 +998,10 @@
 
                /* ED's now officially unlinked, hc doesn't see */
                ed->state = ED_IDLE;
-               ed->hwHeadP &= ~ED_H;
+               ed->hwHeadP &= ~cpu_to_le32(ED_H);
                ed->hwNextED = 0;
                wmb ();
-               ed->hwINFO &= ~(ED_SKIP | ED_DEQUEUE);
+               ed->hwINFO &= ~cpu_to_le32 (ED_SKIP | ED_DEQUEUE);
 
                /* but if there's work queued, reschedule */
                if (!list_empty (&ed->td_list)) {
@@ -1080,10 +1080,10 @@
                                start_ed_unlink (ohci, ed);
 
                /* ... reenabling halted EDs only after fault cleanup */
-               } else if ((ed->hwINFO & (ED_SKIP | ED_DEQUEUE)) == ED_SKIP) {
+               } else if ((ed->hwINFO & cpu_to_le32 (ED_SKIP | ED_DEQUEUE)) == 
cpu_to_le32 (ED_SKIP)) {
                        td = list_entry (ed->td_list.next, struct td, td_list);
-                       if (!(td->hwINFO & TD_DONE)) {
-                               ed->hwINFO &= ~ED_SKIP;
+                       if (!(td->hwINFO & cpu_to_le32 (TD_DONE))) {
+                               ed->hwINFO &= ~cpu_to_le32 (ED_SKIP);
                                /* ... hc may need waking-up */
                                switch (ed->type) {
                                case PIPE_CONTROL:
diff -Nru a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h
--- a/drivers/usb/host/ohci.h   2004-08-19 18:00:06 -07:00
+++ b/drivers/usb/host/ohci.h   2004-08-19 18:00:06 -07:00
@@ -15,20 +15,20 @@
  * both EHCI and UHCI call similar structures a "QH".
  */
 struct ed {
-       /* first fields are hardware-specified, le32 */
+       /* first fields are hardware-specified */
        __u32                   hwINFO;         /* endpoint config bitmap */
        /* info bits defined by hcd */
-#define ED_DEQUEUE     __constant_cpu_to_le32(1 << 27)
+#define ED_DEQUEUE     (1 << 27)
        /* info bits defined by the hardware */
-#define ED_ISO         __constant_cpu_to_le32(1 << 15)
-#define ED_SKIP                __constant_cpu_to_le32(1 << 14)
-#define ED_LOWSPEED    __constant_cpu_to_le32(1 << 13)
-#define ED_OUT         __constant_cpu_to_le32(0x01 << 11)
-#define ED_IN          __constant_cpu_to_le32(0x02 << 11)
+#define ED_ISO         (1 << 15)
+#define ED_SKIP                (1 << 14)
+#define ED_LOWSPEED    (1 << 13)
+#define ED_OUT         (0x01 << 11)
+#define ED_IN          (0x02 << 11)
        __u32                   hwTailP;        /* tail of TD list */
        __u32                   hwHeadP;        /* head of TD list (hc r/w) */
-#define ED_C           __constant_cpu_to_le32(0x02)    /* toggle carry */
-#define ED_H           __constant_cpu_to_le32(0x01)    /* halted */
+#define ED_C           0x02                    /* toggle carry */
+#define ED_H           0x01                    /* halted */
        __u32                   hwNextED;       /* next ED in list */
 
        /* rest are purely for the driver's use */
@@ -70,7 +70,7 @@
  * and 4.3.2 (iso)
  */
 struct td {
-       /* first fields are hardware-specified, le32 */
+       /* first fields are hardware-specified */
        __u32           hwINFO;         /* transfer info bitmask */
 
        /* hwINFO bits for both general and iso tds: */


-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to