|
|
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: HubDriverShell.c ! 27: ! 28: Contains: Toms wrapper for BT's hub driver. Just the header block etc ! 29: ! 30: Version: Neptune 1.0 ! 31: ! 32: Copyright: � 1997-1998 by Apple Computer, Inc., all rights reserved. ! 33: ! 34: File Ownership: ! 35: ! 36: DRI: Barry Twycross ! 37: ! 38: Other Contact: xxx put other contact here xxx ! 39: ! 40: Technology: USB ! 41: ! 42: Writers: ! 43: ! 44: (TC) Tom Clark ! 45: (CJK) Craig Keithley ! 46: (BT) Barry Twycross ! 47: ! 48: Change History (most recent first): ! 49: ! 50: <USB9> 9/10/98 BT Add are we finished ! 51: <USB8> 9/4/98 TC Update hubDriverNotifyProc to use version 1.1 of dispatch table. ! 52: <USB7> 4/14/98 BT Do removed devices when killed ! 53: <USB6> 4/11/98 CJK remove usbpriv.h include ! 54: <USB5> 4/9/98 BT Use USB.h ! 55: <4> 3/6/98 CJK get version info from HubClassVersion.h ! 56: <3> 2/25/98 BT Add Apple Vendor cods. ! 57: <2> 2/24/98 BT Change Apple vendor ID. ! 58: <1> 2/24/98 BT first checked in ! 59: <15*> 2/19/98 BT Add debbugger ! 60: <15> 2/8/98 BT Power allocation stuff ! 61: <14> 2/6/98 BT Power allocation stuff ! 62: <13> 2/4/98 BT Clean up after TOms changes ! 63: <12> 2/3/98 TC Update to use latest DispatchTable definition. ! 64: <11> 2/2/98 TC Make vendor,product & version match root hub simulator ! 65: <10> 1/26/98 CJK Change to use USBDeviceDescriptor (instead of just ! 66: devicedescriptor) ! 67: <9> 1/26/98 BT Fix name changes ! 68: <8> 1/26/98 BT Mangle names after design review ! 69: <7> 1/15/98 CJK Change include of USL.h to USBServicesLib.h ! 70: <6> 1/14/98 BT Change to USBClassDriver.h ! 71: <5> 1/13/98 BT Making timers internal ! 72: <4> 12/18/97 BT Changes to dispatch table. Add notify and tickle ! 73: <3> 12/17/97 CJK Change to use USBDeviceDefines for Class & Subclass values. ! 74: <2> 12/17/97 BT Add file header ! 75: <1> 12/17/97 BT First time checkin ! 76: */ ! 77: ! 78: #include <Types.h> ! 79: #include <Devices.h> ! 80: #include <DriverServices.h> ! 81: ! 82: #include <USB.h> ! 83: #include "hub.h" ! 84: #include "HubClassVersion.h" ! 85: ! 86: //------------------------------------------------------ ! 87: // ! 88: // Protos ! 89: // ! 90: //------------------------------------------------------ ! 91: static OSStatus hubDriverValidateHW(USBDeviceRef device, USBDeviceDescriptorPtr pDesc); ! 92: static OSStatus hubDriverInitialize(USBDeviceRef device, USBDeviceDescriptorPtr pDesc, ! 93: UInt32 busPowerAvailable); ! 94: static OSStatus hubDriverInitInterface( ! 95: UInt32 interfaceNum, ! 96: USBInterfaceDescriptorPtr pInterface, ! 97: USBDeviceDescriptorPtr pDevice, ! 98: USBDeviceRef device); ! 99: static OSStatus hubDriverFinalize(USBDeviceRef device, USBDeviceDescriptorPtr pDesc); ! 100: static OSStatus hubDriverNotifyProc(UInt32 notification, void *pointer, UInt32 refcon); ! 101: ! 102: //------------------------------------------------------ ! 103: // ! 104: // This is the driver description structure that the expert looks for first. ! 105: // If it's here, the information within is used to match the driver ! 106: // to the device whose descriptor was passed to the expert. ! 107: // Information in this block is also used by the expert when an ! 108: // entry is created in the Name Registry. ! 109: // ! 110: //------------------------------------------------------ ! 111: USBDriverDescription TheUSBDriverDescription = ! 112: { ! 113: // Signature info ! 114: kTheUSBDriverDescriptionSignature, ! 115: kInitialUSBDriverDescriptor, ! 116: ! 117: // Device Info ! 118: 1452, // vendor = Apple (1452 decimal, swapped) ! 119: 0x8001, // product = CMD chip ! 120: 0x0001, // version of product = 1.00 (swapped) ! 121: 0, // protocol = not device specific ! 122: ! 123: // Interface Info (* I don't think this would always be required...*) ! 124: 0, // Configuration Value ! 125: 0, // Interface Number ! 126: 0, // Interface Class ! 127: 0, // Interface SubClass ! 128: 0, // Interface Protocol ! 129: ! 130: ! 131: // Driver Info ! 132: "\pUSBHub1Apple", // Driver name for Name Registry ! 133: kUSBHubClass, // Device Class (from USBDeviceDefines.h) ! 134: kUSBHubSubClass, // Device Subclass ! 135: kHUBHexMajorVers, ! 136: kHUBHexMinorVers, ! 137: kHUBCurrentRelease, ! 138: kHUBReleaseStage, // version of driver ! 139: ! 140: // Driver Loading Info ! 141: 0 //kUSBDoNotMatchGenericDevice // Flags (currently undefined) ! 142: }; ! 143: ! 144: ! 145: USBClassDriverPluginDispatchTable TheClassDriverPluginDispatchTable = ! 146: { ! 147: kClassDriverPluginVersion, // Version of this structure ! 148: hubDriverValidateHW, // Hardware Validation Procedure ! 149: hubDriverInitialize, // Initialization Procedure ! 150: hubDriverInitInterface, // Interface Initialization Procedure ! 151: hubDriverFinalize, // Finalization Procedure ! 152: hubDriverNotifyProc, // Driver Notification Procedure ! 153: }; ! 154: ! 155: // Hardware Validation ! 156: // Called upon load by Expert ! 157: OSStatus hubDriverValidateHW(USBDeviceRef device, USBDeviceDescriptor *desc) ! 158: { ! 159: device = 0; ! 160: desc = 0; ! 161: return (OSStatus)noErr; ! 162: } ! 163: ! 164: // Initialization function ! 165: // Called upon load by Expert ! 166: static OSStatus hubDriverInitialize(USBDeviceRef device, USBDeviceDescriptorPtr pDesc, ! 167: UInt32 busPowerAvailable) ! 168: { ! 169: HubDriverEntry(device, pDesc, busPowerAvailable); ! 170: return (OSStatus)noErr; ! 171: } ! 172: ! 173: ! 174: // hubDriverInitInterface function ! 175: // Called to initialize driver for an individual interface - either by expert or ! 176: // internally by driver ! 177: OSStatus hubDriverInitInterface( ! 178: UInt32 interfaceNum, ! 179: USBInterfaceDescriptor *interfaceDesc, ! 180: USBDeviceDescriptor *deviceDesc, ! 181: USBDeviceRef device) ! 182: { ! 183: interfaceNum = 0; ! 184: interfaceDesc = 0; ! 185: deviceDesc = 0; ! 186: device = 0; ! 187: ! 188: return (OSStatus)noErr; ! 189: } ! 190: ! 191: ! 192: // Termination function ! 193: // Called by Expert when driver is being shut down ! 194: OSStatus hubDriverFinalize(USBDeviceRef device, USBDeviceDescriptorPtr pDesc) ! 195: { ! 196: pDesc = 0; // Not used, saves message ! 197: return(killHub(device)); ! 198: } ! 199: ! 200: ! 201: static OSStatus hubDriverNotifyProc(UInt32 notification, void *pointer, UInt32 refcon) ! 202: { ! 203: OSStatus status = noErr; ! 204: ! 205: switch (notification) ! 206: { ! 207: case kNotifyDriverBeingRemoved: ! 208: break; ! 209: case kNotifyHubEnumQuery: ! 210: return(HubAreWeFinishedYet()); ! 211: break; ! 212: default: ! 213: break; ! 214: ! 215: ! 216: } // switch ! 217: ! 218: pointer = 0; ! 219: refcon = 0; ! 220: return(status); ! 221: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.