In case anyone else runs into this before 2.5.22 ...
I accidentally relied on something gcc 2.95.3 doesn't
support.

-------- Original Message --------
Subject: [PATCH] Fix 2.5.x recent OHCI updates
Date: Sat, 08 Jun 2002 17:02:28 -0700
From: "David S. Miller" <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]


Using anonymous union/struct like this ups the compiler requirements
further than specified in init/main.c, so we can't use them
just yet.

Please apply, thanks.

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# 
            ChangeSet   1.465   -> 1.466
# 
drivers/usb/host/ohci-hcd.c 
1.12    -> 1.13
# 
drivers/usb/host/ohci-q.c 
1.8     -> 1.9
# 
drivers/usb/host/ohci.h 
1.5     -> 1.6
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/06/06      [EMAIL PROTECTED]    1.466
# OHCI build fix: Do not use nameless struct/union.
# --------------------------------------------
#
diff -Nru a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
--- a/drivers/usb/host/ohci-hcd.c       Sat Jun  8 17:00:58 2002
+++ b/drivers/usb/host/ohci-hcd.c       Sat Jun  8 17:00:58 2002
@@ -226,7 +226,7 @@
                case PIPE_ISOCHRONOUS:
         
        if (urb->transfer_flags & USB_ISO_ASAP) {
         
                urb->start_frame = ( (ed->state == ED_OPER)
- 
                                ? (ed->last_iso + 1)
+ 
                                ? (ed->u.last_iso + 1)
         
                        : (le16_to_cpu (ohci->hcca->frame_no)
         
                                + 10)) & 0xffff;
         
        }       
diff -Nru a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c
--- a/drivers/usb/host/ohci-q.c Sat Jun  8 17:00:58 2002
+++ b/drivers/usb/host/ohci-q.c Sat Jun  8 17:00:58 2002
@@ -236,11 +236,11 @@
                break;

        case PIPE_INTERRUPT:
- 
        load = ed->int_load;
- 
        interval = ep_2_n_interval (ed->int_period);
+ 
        load = ed->u.i.int_load;
+ 
        interval = ep_2_n_interval (ed->u.i.int_period);
                ed->interval = interval;
                int_branch = ep_int_balance (ohci, interval, load);
- 
        ed->int_branch = int_branch;
+ 
        ed->u.i.int_branch = int_branch;

                for (i = 0; i < ep_rev (6, interval); i += inter) {
         
        inter = 1;
@@ -355,9 +355,9 @@
                break;

        case PIPE_INTERRUPT:
- 
        periodic_unlink (ohci, ed, ed->int_branch, ed->interval);
- 
        for (i = ed->int_branch; i < NUM_INTS; i += ed->interval)
- 
                ohci->ohci_int_load [i] -= ed->int_load;
+ 
        periodic_unlink (ohci, ed, ed->u.i.int_branch, ed->interval);
+ 
        for (i = ed->u.i.int_branch; i < NUM_INTS; i += ed->interval)
+ 
                ohci->ohci_int_load [i] -= ed->u.i.int_load;
  #ifdef OHCI_VERBOSE_DEBUG
                ohci_dump_periodic (ohci, "UNLINK_INT");
  #endif
@@ -466,8 +466,8 @@
         
                << 16);

        if (ed->type == PIPE_INTERRUPT && ed->state == ED_UNLINK) {
-               ed->int_period = interval;
-               ed->int_load = load;
+               ed->u.i.int_period = interval;
+               ed->u.i.int_load = load;
        }

        spin_unlock_irqrestore (&ohci->lock, flags);
@@ -563,7 +563,7 @@
        td->hwINFO = cpu_to_le32 (info);
        if ((td->ed->type) == PIPE_ISOCHRONOUS) {
                td->hwCBP = cpu_to_le32 (data & 0xFFFFF000);
- 
        td->ed->last_iso = info & 0xffff;
+ 
        td->ed->u.last_iso = info & 0xffff;
        } else {
                td->hwCBP = cpu_to_le32 (data);
        } 
                
diff -Nru a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h
--- a/drivers/usb/host/ohci.h   Sat Jun  8 17:00:58 2002
+++ b/drivers/usb/host/ohci.h   Sat Jun  8 17:00:58 2002
@@ -37,9 +37,9 @@
         
        u8      int_period;
         
        u8      int_branch;
         
        u8      int_load;
- 
        };
+ 
        } i;
                u16 
        last_iso;       /* isochronous */
- 
};
+ 
} u;

        u8 
                state;          /* ED_{NEW,UNLINK,OPER} */
  #define ED_NEW                0x00            /* unused, no dummy td */



_______________________________________________________________

Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas - 
http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to