Annotation of kernel/bsd/dev/ppc/drvUSBCMD/USBpriv.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
                      7:  * Reserved.  This file contains Original Code and/or Modifications of
                      8:  * Original Code as defined in and that are subject to the Apple Public
                      9:  * Source License Version 1.1 (the "License").  You may not use this file
                     10:  * except in compliance with the License.  Please obtain a copy of the
                     11:  * License at http://www.apple.com/publicsource and read it before using
                     12:  * this file.
                     13:  * 
                     14:  * The Original Code and all software distributed under the License are
                     15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     19:  * License for the specific language governing rights and limitations
                     20:  * under the License.
                     21:  * 
                     22:  * @APPLE_LICENSE_HEADER_END@
                     23:  */
                     24: 
                     25: /*
                     26:        File:           USBPriv.i
                     27: 
                     28:        Contains:       Private defines & SPI for USB services
                     29: 
                     30:        Version:        
                     31: 
                     32:        Written by:     Barry Twycross
                     33: 
                     34:        Copyright:      (c) 1998 by Apple Computer, Inc., all rights reserved.
                     35: 
                     36:        File Ownership:
                     37: 
                     38:                DRI:               Craig Keithley
                     39: 
                     40:                Other Contact:     
                     41: 
                     42:                Technology:        I/O
                     43: 
                     44:        Writers:
                     45: 
                     46:                (DRF)   Dave Falkenburg
                     47:                (TC)    Tom Clark
                     48:                (GG)    Guillermo Gallegos
                     49:                (BT)    Barry Twycross
                     50:                (CJK)   Craig Keithley
                     51:                (DF)    David Ferguson  
                     52: 
                     53: 
                     54:        Change History (most recent first):
                     55: 
                     56:                <28>      9/9/98        BT              Fix size of refcon in Isoc transfers
                     57:                <27>      9/4/98        TC              Add definition for 1.0 version of DriverNotifyProc.
                     58:                <26>      9/3/98        GG              Another Interface tweak.
                     59:                <25>      9/3/98        GG              Fixed Isochronous interface.
                     60:                <24>     8/31/98        GG              Changed Isochronous interest.  Bumped version Number to 3. Added
                     61:                                                                        Isoc Callback.
                     62:                <23>     8/12/98        BT              Move root hub into UIM again.
                     63:                <22>     8/11/98        BT              Fix semi-colon
                     64:                <21>     8/11/98        BT              Add UIM dispatch table version
                     65:                <20>     7/11/98        TC              Back out <USB18>.
                     66:                <19>     6/30/98        BT              Add hub defs, the hub driver and root hub needs
                     67:                <18>     6/30/98        BT              Move RH sim to UIM
                     68:                <17>     6/15/98        DRF             Added definitions for USB ExpandMem contents.
                     69:                <16>     6/10/98        CJK             add uslGetDeviceRefByID prototype
                     70:                <15>      6/5/98        TC              Move declaration of uxBusRef to USB.i, then change it to
                     71:                                                                        USBBusRef.
                     72:                <14>      6/4/98        DRF             In UIMInitialize & UIMFinalize, add a Ptr to facilitate
                     73:                                                                        handing-off global state when performing replacement.
                     74:                <13>      6/3/98        GG              Fixed mistake with comments.
                     75:                <12>      6/3/98        GG              Add interfaces for UIMFrameCount, IsochEndpointCreate, and
                     76:                                                                        IsochTransfer
                     77:                <11>      6/2/98        DRF             Added params to UIMInitialize & UIMFinalize for replacement.
                     78:                                                                        Also made a few interfacer tweaks for typedef-ed structs.
                     79:                <10>     5/20/98        DF              add USLPolledProcessDoneQueue prototype
                     80:                 <9>     5/20/98        TC              Include definition USBRegisterExpertNotification.
                     81:                 <8>      5/5/98        CJK             Correct someone's misspelling of my last name.
                     82:                 <7>      5/5/98        GG              Change Buffersize from short to unsigned long in
                     83:                                                                        uimBulkTransferProc.
                     84:                 <6>     4/29/98        BT              Move common defines to here
                     85:                 <5>     4/23/98        BT              Add reset portsuspend change
                     86:                 <4>     4/15/98        BT              Add over current change reset
                     87:                 <3>     4/11/98        CJK             add back in OHCIPollDoneQueue dispatch table entry.
                     88:                 <2>      4/9/98        DF              Update to for changes made to Neptune 4/8
                     89:                 <1>      4/8/98        DF              first checked in
                     90: 
                     91: 
                     92: 
                     93: */
                     94: 
                     95: #pragma once
                     96: 
                     97: #include "mactypes.h"
                     98: #include "nameregistry.h"
                     99: #include "USB.h"
                    100: 
                    101: #pragma push
                    102: 
                    103: //typedef void (*USBCtlCallbackFn)(struct USBPB *pb);
                    104: //typedef void (*USBDevCtlCallbackFn)(struct USBPB *pb);
                    105: #define extern 
                    106: 
                    107: extern void USBIdleTask(void);
                    108: 
                    109: extern OSStatus USBAddBus(void *regEntry,void *UIM,USBBusRef bus);
                    110:                
                    111: extern OSStatus USBRemoveBus(USBBusRef bus);           
                    112: 
                    113: extern OSStatus USBServicesInitialise(void * exProc);
                    114: 
                    115: extern void USBServicesFinalise(void);
                    116: 
                    117: extern OSStatus USBRegisterExpertNotification (ExpertNotificationProcPtr       pExpertNotify);
                    118: 
                    119: extern OSStatus USBServicesGetVersion(UInt32 ID, VersRec *vers, UInt32 versSize);
                    120: 
                    121: extern OSStatus USLPolledProcessDoneQueue(void);
                    122: 
                    123: extern USBDeviceRef uslGetDeviceRefByID(unsigned short deviceID, USBBusRef bus);
                    124: 
                    125: 
                    126: /*
                    127:        For casting purposes when we are calling a driver compiled with 1.0 version
                    128:        of the driver dispatch table.
                    129: */     
                    130: typedef extern OSStatus        (*ONE_OH_USBDDriverNotifyProcPtr) (USBDriverNotification notification, void *pointer);
                    131: 
                    132: /* IMPORTANT NOTES!
                    133:    This file contains some OHCI specific functions & data structures, which are
                    134:    currently required because the USL performs some root hub functions.  When the
                    135:    root hub simulation in the UIM is fully functional, the OHCI or UHCI specific
                    136:    elements should be removed from this file (and placed in the OHCIUIM.H file)
                    137: */
                    138: 
                    139: // Taken out of OHCIUIM.h and uslUIMInterface.c 
                    140: enum{
                    141:        EDDeleteErr =  -14,
                    142:        bandWidthFullErr = -15,
                    143:        returnedErr = -16
                    144:        };
                    145: 
                    146: 
                    147: typedef UInt8 uslBusRef;
                    148: // Shouldn't this be in USL.H?
                    149: 
                    150: struct uslRootHubDescriptor
                    151: {
                    152: 
                    153:        short numPorts;
                    154:        Boolean powerSwitching;                 /* does it have it? */
                    155:        Boolean gangedSwitching;                /* if yes, it is ganged */
                    156: 
                    157:        Boolean compoundDevice;
                    158:        Boolean overCurrent;                    /* does it have it? */
                    159:        Boolean globalOverCurrent;              /* if yes is it global */
                    160:        UInt8   reserved;                               /* for alignment */
                    161: 
                    162:        UInt8   portFlags[32];                  /* Device removable and ganged power flags */
                    163: 
                    164: }; 
                    165: 
                    166: typedef struct uslRootHubDescriptor *uslRootHubDescriptorPtr;
                    167: 
                    168: struct uslRootHubPortStatus
                    169: {
                    170:        UInt16                                          portFlags;      /* Port status flags */
                    171:        UInt16                                          portChangeFlags;        /* Port changed flags */
                    172: };
                    173: 
                    174: typedef struct uslRootHubPortStatus *uslRootHubPortStatusPtr;
                    175: 
                    176: 
                    177: typedef extern OSStatus (*OHCIGetRootDescriptorPtr)(
                    178:        uslBusRef                                       bus,
                    179:        uslRootHubDescriptorPtr         descr);
                    180: 
                    181: typedef extern OSStatus (*OHCIGetInterruptStatusPtr)(
                    182:        uslBusRef                                       bus,
                    183:        UInt32                                          *status);
                    184: 
                    185: typedef extern OSStatus (*OHCIClearInterruptStatusPtr)(
                    186:        uslBusRef                                       bus,
                    187:        UInt32                                          status);
                    188: 
                    189: typedef extern OSStatus (*OHCIGetRhStatusPtr)(
                    190:        uslBusRef                                       bus,
                    191:        UInt32                                          *status);
                    192: 
                    193: 
                    194: typedef extern OSStatus (*OHCIRootHubResetChangeConnectionPtr)(
                    195:        uslBusRef                                       bus,
                    196:        short                                           port);
                    197: 
                    198: typedef extern OSStatus (*OHCIRootHubResetResetChangePtr)(
                    199:        uslBusRef                                       bus,
                    200:        short                                           port);
                    201: 
                    202: typedef extern OSStatus (*OHCIRootHubResetSuspendChangePtr)(
                    203:        uslBusRef                                       bus,
                    204:        short                                           port);
                    205: 
                    206: typedef extern OSStatus (*OHCIRootHubResetEnableChangePtr)(
                    207:        uslBusRef                                       bus,
                    208:        short                                           port);
                    209: 
                    210: typedef extern OSStatus (*OHCIRootHubResetOverCurrentChangePtr)(
                    211:        uslBusRef                                       bus,
                    212:        short                                           port);
                    213: 
                    214: typedef extern OSStatus (*OHCIRootHubGetPortStatusPtr)(
                    215:        uslBusRef                                       bus,
                    216:        short                                           port,
                    217:        uslRootHubPortStatusPtr         portStatus);
                    218: 
                    219: typedef extern void (*OHCIPollRootHubSimPtr)(
                    220:        uslBusRef                                       bus);
                    221: 
                    222: typedef extern OSStatus (*OHCIResetRootHubPtr)(
                    223:        uslBusRef                                       bus);
                    224: 
                    225: typedef extern OSStatus (*OHCIRootHubPortSuspendPtr)(
                    226:        uslBusRef                                       bus,
                    227:        short                                           port,
                    228:        Boolean                                         on);
                    229: 
                    230: typedef extern OSStatus (*OHCIRootHubPowerPtr)(
                    231:        uslBusRef                                       bus,
                    232:        Boolean                                         on);
                    233: 
                    234: typedef extern OSStatus(* OHCIRootHubResetPortPtr)(
                    235:        uslBusRef                                       bus,
                    236:        short                                           port);
                    237: 
                    238: typedef extern OSStatus (*OHCIRootHubPortEnablePtr)(
                    239:        uslBusRef                                       bus,
                    240:        short                                           port,
                    241:        Boolean                                         on);
                    242: 
                    243: typedef extern OSStatus (*OHCIRootHubPortPowerPtr)(
                    244:        uslBusRef                                       bus,
                    245:        short                                           port,
                    246:        Boolean                                         on);
                    247: 
                    248: 
                    249: //other Functions
                    250: typedef extern OSStatus (*OHCIProcessDoneQueuePtr)(void);
                    251: 
                    252: typedef extern UInt64 (*UIMGetCurrentFrameNumberPtr)(void);
                    253: 
                    254: 
                    255: typedef  extern void (*CallBackFuncPtr) (long lParam, OSStatus status, short s16Param);
                    256: typedef extern void (*IsocCallBackFuncPtr) (long lParam, OSStatus status, USBIsocFrame *pFrames);
                    257: //typedef CallBackFunc *CallBackFuncPtr;
                    258: 
                    259: typedef void *UIMAbortControlEndpointProcPtr;
                    260: typedef void *UIMEnableControlEndpointProcPtr;
                    261: typedef void *UIMDisableControlEndpointProcPtr;
                    262: typedef void *UIMAbortBulkEndpointProcPtr;
                    263: typedef void *UIMEnableBulkEndpointProcPtr;
                    264: typedef void *UIMDisableBulkEndpointProcPtr;
                    265: typedef void *UIMDeleteInterruptEndPointProcPtr;
                    266: typedef void *UIMAbortInterruptEndpointProcPtr;
                    267: typedef void *UIMEnableInterruptEndpointProcPtr;
                    268: typedef void *UIMDisableInterruptEndpointProcPtr;
                    269: typedef void *UIMDeleteIsochEndPointProcPtr;
                    270: typedef void *UIMAbortIsochEndpointProcPtr;
                    271: typedef void *UIMEnableIsochEndpointProcPtr;
                    272: typedef void *UIMDisableIsochEndpointProcPtr;
                    273: 
                    274: typedef extern OSStatus (*UIMInitializeProcPtr)(RegEntryIDPtr UIMregEntryID, Boolean replacingOld, Ptr savedState);
                    275: 
                    276: typedef extern OSStatus (*UIMFinalizeProcPtr)(Boolean beingReplaced,Ptr * savedStatePtr);
                    277: 
                    278: typedef extern OSStatus (*UIMCreateControlEndpointProcPtr)(
                    279:        UInt8                                           functionNumber,
                    280:        UInt8                                           endpointNumber,
                    281:        UInt16                                          maxPacketSize,
                    282:        UInt8                                           speed);
                    283: 
                    284: typedef extern OSStatus (*UIMCreateBulkEndpointProcPtr)(
                    285:        UInt8                                           functionNumber,
                    286:        UInt8                                           endpointNumber,
                    287:        UInt8                                           direction,      
                    288:        UInt8                                           maxPacketSize);
                    289: 
                    290: typedef extern OSStatus (*UIMCreateControlTransferProcPtr)(
                    291:        UInt32                                          refcon,
                    292:        CallBackFuncPtr                         handler,
                    293:        UInt32                                          CBP,
                    294:        Boolean                                         bufferRounding,
                    295:        short                                           functionNumber,
                    296:        short                                           endpointNumber,
                    297:        short                                           bufferSize,
                    298:        short                                           direction);
                    299: 
                    300: typedef extern OSStatus (*UIMDeleteControlEndPointProcPtr)(
                    301:        short                                           functionNumber,
                    302:        short                                           endpointNumber);
                    303: 
                    304: typedef extern OSStatus (*UIMDeleteBulkEndPointProcPtr)(
                    305:        short                                           functionNumber,
                    306:        short                                           endpointNumber,
                    307:        short                                           direction);
                    308: 
                    309: typedef extern OSStatus (*UIMCreateBulkTransferProcPtr)(
                    310:        UInt32                                          refcon,
                    311:        CallBackFuncPtr                         handler,
                    312:        UInt32                                          CBP,
                    313:        Boolean                                         bufferRounding,
                    314:        short                                           functionNumber,
                    315:        short                                           endpointNumber,
                    316:        UInt32                                          bufferSize,
                    317:        short                                           direction);
                    318: 
                    319: typedef extern OSStatus (*UIMClearEndPointStallProcPtr)(
                    320:        short                                           functionNumber,
                    321:        short                                           endpointNumber,
                    322:        short                                           direction);
                    323: 
                    324: typedef extern OSStatus (*UIMCreateInterruptEndpointProcPtr)(
                    325:        short                                           functionAddress,
                    326:        short                                           endpointNumber,
                    327:        short                                           speed,
                    328:        UInt16                                          maxPacketSize,
                    329:        short                                           pollingRate,
                    330:        UInt32                                          reserveBandwidth);
                    331: 
                    332: typedef extern OSStatus (*UIMCreateInterruptTransferProcPtr)(
                    333:        short                                           functionNumber,
                    334:        short                                           endpointNumber,
                    335:        UInt32                                          refcon,
                    336:        CallBackFuncPtr                         handler,
                    337:        UInt32                                          CBP,
                    338:        Boolean                                         bufferRounding,
                    339:        short                                           bufferSize);
                    340: 
                    341: typedef extern OSStatus (*UIMAbortEndpointProcPtr)(
                    342:        short                                           functionNumber,
                    343:        short                                           endpointNumber,
                    344:        short                                           direction);
                    345: 
                    346: typedef extern OSStatus (*UIMDeleteEndpointProcPtr)(
                    347:        short                                           functionNumber,
                    348:        short                                           endpointNumber,
                    349:        short                                           direction);
                    350: 
                    351: typedef extern OSStatus (*UIMCreateIsochEndpointProcPtr)(
                    352:        short                                           functionAddress,
                    353:        short                                           endpointNumber,
                    354:        UInt32                                          maxPacketSize,                                          
                    355:        UInt8                                           direction);
                    356:        
                    357: typedef extern OSStatus (*UIMCreateIsochTransferProcPtr)(
                    358:        short                                           functionAddress,                                                
                    359:        short                                           endpointNumber,
                    360:        UInt32                                          refcon,
                    361:        UInt8                                           direction,
                    362:        IsocCallBackFuncPtr                     pIsochHandler,                                                  
                    363:        UInt64                                          frameStart,                                                             
                    364:        UInt32                                          pBufferStart,                                                   
                    365:        UInt32                                          frameCount,                                                                     
                    366:        USBIsocFrame                            *pFrames);                                                              
                    367: 
                    368: enum{
                    369:        kUIMPluginTableVersion = 3      // BT 11Aug98, bump up with root hub changes
                    370:        };
                    371: 
                    372: struct UIMPluginDispatchTable
                    373: {
                    374:        UInt32                                                          pluginVersion;
                    375:        UIMInitializeProcPtr                            uimInitializeProc;
                    376:        UIMFinalizeProcPtr                                      uimFinalizeProc;
                    377:        UIMCreateControlEndpointProcPtr         uimCreateControlEndpointProc;
                    378:        UIMDeleteControlEndPointProcPtr         uimDeleteControlEndpointProc;
                    379:        UIMCreateControlTransferProcPtr         uimCreateControlTransferProc;
                    380:        UIMAbortControlEndpointProcPtr          uimAbortControlEndpointProc;
                    381:        UIMEnableControlEndpointProcPtr         uimEnableControlEndpointProc;
                    382:        UIMDisableControlEndpointProcPtr        uimDisableControlEndpointProc;
                    383:        UIMCreateBulkEndpointProcPtr            uimCreateBulkEndpointProc;
                    384:        UIMDeleteBulkEndPointProcPtr            uimDeleteBulkEndpointProc;
                    385:        UIMCreateBulkTransferProcPtr            uimCreateBulkTransferProc;
                    386:        UIMAbortBulkEndpointProcPtr                     uimAbortBulkEndpointProc;
                    387:        UIMEnableBulkEndpointProcPtr            uimEnableBulkEndpointProc;
                    388:        UIMDisableBulkEndpointProcPtr           uimDisableBulkEndpointProc;
                    389:        UIMCreateInterruptEndpointProcPtr       uimCreateInterruptEndpointProc;
                    390:        UIMDeleteInterruptEndPointProcPtr       uimDeleteInterruptEndpointProc;
                    391:        UIMCreateInterruptTransferProcPtr       uimCreateInterruptTransferProc;
                    392:        UIMAbortInterruptEndpointProcPtr        uimAbortInterruptEndpointProc;
                    393:        UIMEnableInterruptEndpointProcPtr       uimEnableInterruptEndpointProc;
                    394:        UIMDisableInterruptEndpointProcPtr      uimDisableInterruptEndpointProc;
                    395:        UIMCreateIsochEndpointProcPtr           uimCreateIsochEndpointProc;
                    396:        UIMDeleteIsochEndPointProcPtr           uimDeleteIsochEndpointProc;
                    397:        UIMCreateIsochTransferProcPtr           uimCreateIsochTransferProc;
                    398:        UIMAbortIsochEndpointProcPtr            uimAbortIsochEndpointProc;
                    399:        UIMEnableIsochEndpointProcPtr           uimEnableIsochEndpointProc;
                    400:        UIMDisableIsochEndpointProcPtr          uimDisableIsochEndpointProc;
                    401:        UIMAbortEndpointProcPtr                         uimAbortEndpointProc;
                    402:        UIMDeleteEndpointProcPtr                        uimDeleteEndpointProc;
                    403: /* Need this for error recovery */
                    404:        UIMClearEndPointStallProcPtr            uimClearEndPointStallProc;
                    405: 
                    406:        OHCIPollRootHubSimPtr                           uimPollRootHubSim;
                    407:        OHCIResetRootHubPtr                                     uimResetRootHubProc;
                    408:        OHCIProcessDoneQueuePtr                         uimProcessDoneQueueProc;
                    409:        UIMGetCurrentFrameNumberPtr                     uimGetCurrentFrameNumberProc; 
                    410: 
                    411: };
                    412: 
                    413: typedef struct UIMPluginDispatchTable *UIMPluginDispatchTablePtr;
                    414: 
                    415: // extern UIMPluginDispatchTable ThePluginDispatchTable;
                    416: 
                    417: // Hub stuff, for root hub
                    418: 
                    419: 
                    420: 
                    421: enum{
                    422: /* Byte offsets */
                    423:        bmRqType = 0,
                    424:        bUsedFlag = bmRqType,
                    425:        bRequest,
                    426: /* Word offsets */
                    427:        wValue =1,      
                    428:        wIndex,
                    429:        wLength
                    430:        };
                    431: 
                    432: union setupPacket{
                    433:        UInt8 byte[8];
                    434:        UInt16 word[4];
                    435:        };
                    436: 
                    437: typedef union setupPacket setupPacket;
                    438: 
                    439: enum{
                    440:        kUSBRqDirnShift = 7,
                    441:        kUSBRqDirnMask = 1,
                    442:        
                    443:        kUSBRqTypeShift = 5,
                    444:        kUSBRqTypeMask = 3,
                    445:        
                    446:        kUSBRqRecipientMask = 0X1F
                    447:        };
                    448: 
                    449: 
                    450: 
                    451: /***************************************************************************
                    452: 
                    453:        Proposal for Product ID in Apple USB devices.
                    454:        
                    455:        Barry Twycross  25Jan98
                    456:        
                    457:        
                    458: Background.
                    459: 
                    460: All USB devices have a device descriptor which tells the system
                    461: basic information about the device. Amoung the information contained
                    462: therein is a Vendor and a Product code. The Vendor code is assigned
                    463: by the USB implimenters forum, for Apple this is 1452 (decimal)
                    464: 0x5AC (hex).
                    465: 
                    466: The product code is left for the implimentor to use as they see fit.
                    467: The product code along with the vendor ID is the highest priority way
                    468: of matching a device to a driver. A driver can claim to be the best
                    469: driver for a particular product by specifying mathcing product/vendor
                    470: codes.
                    471: 
                    472: There appears to be no one responsible for assigning these codes, so
                    473: the USB group is making this suggestion in an attempt to impose order
                    474: before chaos reigns.
                    475: 
                    476: 
                    477: Implimentation.
                    478: 
                    479: The Product code in a USB device is a 16 bit field. It is transmitted
                    480: across the USB in Intel byte ordering (swapped from the usual Mac way 
                    481: of doing things). This spec uses the logical value of the field. That 
                    482: it has to be byte swapped to be decoded sensibly after transmission 
                    483: across the bus.
                    484: 
                    485: These proposals only apply to devices which have the Apple Vendor ID
                    486: code.
                    487: 
                    488: Proposal.
                    489: 
                    490: It is proposed that the 16bit Product ID value (expressed in hex) is 
                    491: decomposed as follows:
                    492: 
                    493:   0xRTNN
                    494:   
                    495: There is a 4 bit 'R' (range) field
                    496: There is a 4 bit 'T' (type) field
                    497: There is an 8 bit 'NN' field, which finally specifies a product within a type.
                    498: 
                    499: Range (R)
                    500: 
                    501: This field specifies the party responsible for naming this series of 
                    502: devices.
                    503: 
                    504: In general it also specifies a device as internal to a system, or an 
                    505: external, standalone, peripheral.
                    506: 
                    507:   0-7  Is reserved for external devices.
                    508:   8-F  is reserved for internal devices.
                    509:   
                    510: Each of the ranges is further farmed out to a responsible entity to
                    511: define the sub fields. Currently assigned are:
                    512: 
                    513:   0:  Input devices (Harrold Welch).
                    514:   8:  USB team (Barry Twycross)
                    515:   
                    516: 
                    517: Type (T)
                    518: 
                    519: This field specifies the type of device within a range of devices.
                    520: The values are specified by the party responsible for the range.
                    521: 
                    522: Currently assigned are:
                    523: 
                    524:    R=0, T specifies a device with this equivalent ADB ID.
                    525:      T = 2:  Keyboard
                    526:         T = 3:  Mouse
                    527: 
                    528:    R=8
                    529:      T = 0:  Root hub in a CPU.
                    530:         T = 1:  Non-root hub in a CPU
                    531: 
                    532: 
                    533: Product (NN)
                    534: 
                    535: This field finally specifies which particular device or a type the
                    536: product actually is. It is expected the first product will be numbered
                    537: 1, and further products are numbered sequentially.
                    538: 
                    539: **********************************************************************/
                    540: 
                    541: 
                    542: //Known assignments:
                    543: 
                    544: //These device IDs are currently known to be assigned:
                    545: 
                    546: enum{
                    547:          kAppleVendorID = 0x05AC,              // Assigned by USB-if
                    548: 
                    549: //                  0xRTNN             Product
                    550: // These are Harold Welch's ADB device equivalents
                    551:          kPrdKBCosmoAnsi = 0x0201,             // Ansi Cosmo keyboard
                    552:          kPrdKBCosmoIso  = 0x0202,             // Iso Cosmo keyboard
                    553:          kPrdKBCosmoJis  = 0x0203,             // Jis Cosmo keyboard
                    554:          kPrdMseRudi     = 0x0301,             // Rudi mouse
                    555: // These are the USB root hub simulations
                    556:          kPrdRootHubCMD  = 0x8001,             // CMD chip root hub
                    557:          kPrdRootHubOPTI = 0x8002,             // Opti chip root hub
                    558:          kPrdRootHubLucent = 0x8003    // Lucent chip root hub.
                    559:   };
                    560: 
                    561: 
                    562: /***************************************************************************
                    563: 
                    564: USBExpandMemGlobals: a structure that will eventually be more important,
                    565: but for now, we use this to keep track of the connection ID of the USB
                    566: FamilyExpertLib so that we can cleanly shut it down from a file-based
                    567: version of USB Expert.
                    568: 
                    569: ****************************************************************************/
                    570: 
                    571: struct USBExpandMemGlobals
                    572: {
                    573:        UInt32                          version;
                    574:        CFragConnectionID       expertConnectionID;
                    575: };
                    576: typedef struct USBExpandMemGlobals *USBExpandMemGlobalsPtr;
                    577: 
                    578: enum
                    579:        {
                    580:        kUSBExpandMemVersionOne =       0x0100,
                    581:        kUSBExpandMemCurVersion =       kUSBExpandMemVersionOne
                    582:        };
                    583:        
                    584: #pragma pop
                    585: #undef extern

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.