Annotation of kernel/bsd/dev/ppc/drvUSBCMD/Library/uslExpert.c, 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:           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.