Annotation of kernel/bsd/dev/ppc/drvUSBCMD/Library/uslExpert.c, revision 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:           uslExpert.c
        !            27: 
        !            28:        Contains:       xxx put contents here xxx
        !            29: 
        !            30:        Version:        xxx put version here xxx
        !            31: 
        !            32:        Copyright:      � 1998 by Apple Computer, Inc., all rights reserved.
        !            33: 
        !            34:        File Ownership:
        !            35: 
        !            36:                DRI:                            xxx put dri here xxx
        !            37: 
        !            38:                Other Contact:          xxx put other contact here xxx
        !            39: 
        !            40:                Technology:                     xxx put technology here xxx
        !            41: 
        !            42:        Writers:
        !            43: 
        !            44:                (CJK)   Craig Keithley
        !            45:                (DF)    David Ferguson
        !            46:                (BT)    Barry Twycross
        !            47: 
        !            48:        Change History (most recent first):
        !            49: 
        !            50:          <USB7>         9/28/98        BT              Add device reset function
        !            51:          <USB6>         6/11/98        CJK             add reserved params to USBExpertSetDevicePowerStatus. Wanted to
        !            52:                                                                        get it into the USB.i before freezing C1
        !            53:          <USB5>         6/11/98        BT              Add power state notification message
        !            54:          <USB4>          6/8/98        CJK             add USBExpertSetDevicePowerStatus
        !            55:          <USB3>          6/6/98        DF              Change parameter for USBExpertInstallInterfaceDriver from hubRef
        !            56:                                                                        to deviceRef
        !            57:          <USB2>         5/12/98        BT              New interface handling
        !            58:          <USB1>         4/26/98        BT              first checked in
        !            59: */
        !            60: 
        !            61: //#include <errors.h>
        !            62: #include "../USB.h"
        !            63: #include "../USBpriv.h"
        !            64: #include "../driverservices.h"
        !            65: #include "uslpriv.h"
        !            66: #include "../uimpriv.h"
        !            67: 
        !            68: //two globals needed to support international keyboards for Rhapsody
        !            69: unsigned int usb_kbd_vendor_id = 0, usb_kbd_product_id = 0;
        !            70: 
        !            71: 
        !            72: static ExpertNotificationProcPtr expert;
        !            73: 
        !            74: void SetExpertFunction(void *exProc)
        !            75: {
        !            76:        expert = exProc;
        !            77: }
        !            78: 
        !            79: OSStatus USBExpertNotify(void *note)
        !            80: {
        !            81:        if(expert == nil)
        !            82:        {
        !            83:                return(kUSBInternalErr);        // make up a not inited err
        !            84:        }
        !            85:        return(*expert)(note);
        !            86: }
        !            87: 
        !            88: OSStatus USBExpertStatus(USBDeviceRef ref, void *pointer, UInt32 value)
        !            89: {
        !            90: ExpertNotificationData note;
        !            91:        note.notification = kNotifyStatus;
        !            92:        note.deviceRef = &ref;
        !            93:        note.data = pointer;
        !            94:        note.info2 = value;
        !            95: kprintf("USBExpertStatus:%s: value=%d,ref=%d\n",pointer,value,ref);
        !            96:        return(USBExpertNotify(&note));
        !            97: }
        !            98: 
        !            99: OSStatus USBExpertStatusLevel(UInt32 level, USBDeviceRef ref, char *status, UInt32 value)
        !           100: {       
        !           101: ExpertNotificationData note;
        !           102:         note.notification = kNotifyStatus;
        !           103:         note.deviceRef = &ref;
        !           104:         note.data = status;
        !           105:         note.info1 = level;
        !           106:         note.info2 = value;
        !           107:         return(USBExpertNotify(&note));
        !           108: }
        !           109: 
        !           110: 
        !           111: OSStatus USBExpertFatalError(USBDeviceRef ref, OSStatus status, void *pointer, UInt32 value)
        !           112: {
        !           113: ExpertNotificationData note;
        !           114:        note.notification = kNotifyFatalError;
        !           115:        note.deviceRef = &ref;
        !           116:        note.data = pointer;
        !           117:        note.info1 = status;
        !           118:        note.info2 = value;
        !           119: kprintf("USBFatalError:%s:   Status=%d value=%d,ref=%d\n",pointer,status,value,ref);
        !           120:        return(USBExpertNotify(&note));
        !           121: }
        !           122: 
        !           123: 
        !           124: OSStatus USBExpertInstallInterfaceDriver(USBDeviceRef ref, USBDeviceDescriptor *desc, 
        !           125:                                                        USBInterfaceDescriptor *interface,
        !           126:                                                        USBReference deviceRef, UInt32 busPowerAvailable)
        !           127: {
        !           128: ExpertNotificationData note;
        !           129: 
        !           130: 
        !           131: kprintf("USB: in USBExpertInstallInterfaceDriver interface class=%d  subclass=%d protocol = %d device vendor = %d product=%d \n", interface->interfaceClass, 
        !           132:        interface->interfaceSubClass, interface->interfaceProtocol, EndianSwap16Bit(desc->vendor), EndianSwap16Bit(desc->product));
        !           133: 
        !           134:        //A.W. 11/30/98
        !           135:        if (interface->interfaceProtocol == 2)
        !           136:        {
        !           137:                //Call mouse now... mouse uses InterfaceEntry(), keyboard uses kbd_InterfaceEntry()
        !           138:                // NOTE: the "2" is interfacenum, which is unused in InterfaceEntry()
        !           139:                InterfaceEntry(2, interface, desc, deviceRef);
        !           140:        }
        !           141:     else if(interface->interfaceProtocol == 1 )
        !           142:        {
        !           143:          kbd_InterfaceEntry(2, interface, desc, deviceRef);  //naga
        !           144:             //A.W. I need two global variables to support international keyboards in Rhapsody
        !           145:             usb_kbd_vendor_id = EndianSwap16Bit(desc->vendor);
        !           146:             usb_kbd_product_id = EndianSwap16Bit(desc->product);
        !           147:        }
        !           148: 
        !           149: 
        !           150: 
        !           151:        note.notification = kNotifyAddInterface;
        !           152:        note.deviceRef = &ref;
        !           153:        note.data = interface;
        !           154:        note.info1 = deviceRef;
        !           155:        note.info2 = (UInt32) desc;
        !           156:        note.busPowerAvailable = busPowerAvailable;
        !           157:        return(USBExpertNotify(&note));
        !           158: }
        !           159: 
        !           160: OSStatus USBExpertInstallDeviceDriver(USBDeviceRef ref, USBDeviceDescriptor *desc, 
        !           161:                                                        USBReference hubRef, UInt32 port,
        !           162:                                                        UInt32 busPowerAvailable)
        !           163: {
        !           164: ExpertNotificationData note;
        !           165: kprintf("USB Install Driver:ref=0x%x,class=%d,subclass=%d,protocol=%d,vendor=0x%x,product=0x%x\n",ref,desc->deviceClass,desc->deviceSubClass,desc->protocol,EndianSwap16Bit(desc->vendor),EndianSwap16Bit(desc->product));
        !           166: 
        !           167:        note.notification = kNotifyAddDevice;
        !           168:        note.deviceRef = &ref;
        !           169:        note.data = desc;
        !           170:        note.info1 = hubRef;
        !           171:        note.info2 = port;
        !           172:        note.busPowerAvailable = busPowerAvailable;
        !           173:        if(desc->deviceClass == 0) 
        !           174:              DeviceInitialize(ref,desc,busPowerAvailable);
        !           175:        if(desc->deviceClass == 9) 
        !           176:                {
        !           177:                        
        !           178:                        if (desc->deviceSubClass == 0)
        !           179:                        {
        !           180:                        HubDriverEntry(ref,desc,busPowerAvailable);
        !           181:                        }
        !           182:                        else if (desc->deviceSubClass == 1)
        !           183:                        {
        !           184:                        Hub2DriverEntry(ref,desc,busPowerAvailable);
        !           185:                        }
        !           186:                        else kprintf("USB: Hub SubClass error in uslExpert.c\n");
        !           187: 
        !           188:                }
        !           189: //     return(USBExpertNotify(&note));
        !           190: }
        !           191: 
        !           192: OSStatus USBExpertRemoveDeviceDriver(USBDeviceRef ref)
        !           193: {
        !           194: ExpertNotificationData note;
        !           195:        note.notification = kNotifyRemoveDevice;
        !           196:        note.deviceRef = &ref;
        !           197:        return(USBExpertNotify(&note));
        !           198: }
        !           199: 
        !           200: OSStatus USBExpertRemoveInterfaceDriver(USBDeviceRef ref)
        !           201: {
        !           202: ExpertNotificationData note;
        !           203:        note.notification = kNotifyRemoveInterface;
        !           204:        note.deviceRef = &ref;
        !           205:        return(USBExpertNotify(&note));
        !           206: }
        !           207: 
        !           208: OSStatus USBExpertSetDevicePowerStatus(USBDeviceRef ref, UInt32 reserved1, UInt32 reserved2, UInt32 powerStatus, UInt32 busPowerAvailable, UInt32 busPowerNeeded )
        !           209: {
        !           210: #pragma unused (reserved1)
        !           211: #pragma unused (reserved2)
        !           212: 
        !           213: ExpertNotificationData note;
        !           214:        note.notification = kNotifyPowerState;
        !           215:        note.deviceRef = &ref;
        !           216:        note.info1 = powerStatus;
        !           217:        note.busPowerAvailable = busPowerAvailable;
        !           218:        note.info2 = busPowerNeeded;
        !           219:        USBExpertStatus(0,"USL - sending power note to expert", powerStatus);
        !           220: 
        !           221:        return(USBExpertNotify(&note));
        !           222: }
        !           223: 
        !           224: OSStatus USBExpertNotifyParentMsg(USBReference reference, void *pointer)
        !           225: {
        !           226: ExpertNotificationData note;
        !           227: 
        !           228:        note.notification = kNotifyParentNotify;
        !           229:        note.deviceRef = &reference;
        !           230:        note.data = pointer;
        !           231:        return(USBExpertNotify(&note));
        !           232: }
        !           233: 

unix.superglobalmegacorp.com

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