Annotation of kernel/bsd/dev/ppc/drvCuda/cuda.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: #import <mach/std_types.h>
                     26: #import <kernserv/ns_timer.h>
                     27: #import <driverkit/IODirectDevice.h>
                     28: 
                     29: 
                     30: #ifndef __APPLE_TYPES_DEFINED__
                     31: #define __APPLE_TYPES_DEFINED__ 1
                     32: 
                     33:     typedef unsigned int    UInt32;         // A 32-bit unsigned integer
                     34:     typedef unsigned char   UInt8;          // A "byte-sized" integer
                     35:     typedef signed char SInt8;
                     36:     typedef signed int      SInt32;         // A 32-bit signed integer
                     37:     typedef boolean_t       Boolean;        // TRUE/FALSE value (YES/NO in NeXT)
                     38:     typedef signed int  OSErr;
                     39:     typedef signed int  OSStatus;
                     40: 
                     41: #endif /* __APPLE_TYPES_DEFINED__ */
                     42: 
                     43: 
                     44: 
                     45: struct adb_packet {
                     46:     unsigned char   a_header[8];
                     47:     int     a_hcount;
                     48:     unsigned char   a_buffer[32];
                     49:     int     a_bcount;
                     50:     int     a_bsize;
                     51: };
                     52: 
                     53: typedef struct adb_packet adb_packet_t;
                     54: 
                     55: 
                     56: struct adb_request {
                     57:     simple_lock_data_t a_lock;
                     58:     int         a_result;   /* Result of ADB command */
                     59:     int         a_flags;    /* used internally */
                     60:     adb_packet_t        a_cmd;      /* Command packet */
                     61:     adb_packet_t        a_reply;    /* Reply packet */
                     62:     void            (*a_done)(struct adb_request *);
                     63:     struct adb_request  *a_next;
                     64: };
                     65: 
                     66: typedef struct adb_request adb_request_t;
                     67: 
                     68: /*
                     69:  * ADB Packet Types
                     70:  */
                     71: 
                     72: #define ADB_PACKET_ADB      0
                     73: #define ADB_PACKET_PSEUDO   1
                     74: #define ADB_PACKET_ERROR    2
                     75: #define ADB_PACKET_TIMER    3
                     76: #define ADB_PACKET_POWER    4
                     77: #define ADB_PACKET_MACIIC   5
                     78: 
                     79: /*
                     80:  * ADB Device Commands 
                     81:  */
                     82: 
                     83: #define ADB_ADBCMD_RESET_BUS    0x00
                     84: #define ADB_ADBCMD_FLUSH_ADB    0x01
                     85: #define ADB_ADBCMD_WRITE_ADB    0x08
                     86: #define ADB_ADBCMD_READ_ADB 0x0c
                     87: 
                     88: /*
                     89:  * ADB Pseudo Commands
                     90:  */
                     91: 
                     92: #define ADB_PSEUDOCMD_WARM_START        0x00
                     93: #define ADB_PSEUDOCMD_START_STOP_AUTO_POLL  0x01
                     94: #define ADB_PSEUDOCMD_GET_6805_ADDRESS      0x02
                     95: #define ADB_PSEUDOCMD_GET_REAL_TIME     0x03
                     96: #define ADB_PSEUDOCMD_GET_PRAM          0x07
                     97: #define ADB_PSEUDOCMD_SET_6805_ADDRESS      0x08
                     98: #define ADB_PSEUDOCMD_SET_REAL_TIME     0x09
                     99: #define ADB_PSEUDOCMD_POWER_DOWN        0x0a
                    100: #define ADB_PSEUDOCMD_SET_POWER_UPTIME      0x0b
                    101: #define ADB_PSEUDOCMD_SET_PRAM          0x0c
                    102: #define ADB_PSEUDOCMD_MONO_STABLE_RESET     0x0d
                    103: #define ADB_PSEUDOCMD_SEND_DFAC         0x0e
                    104: #define ADB_PSEUDOCMD_BATTERY_SWAP_SENSE    0x10
                    105: #define ADB_PSEUDOCMD_RESTART_SYSTEM        0x11
                    106: #define ADB_PSEUDOCMD_SET_IPL_LEVEL     0x12
                    107: #define ADB_PSEUDOCMD_FILE_SERVER_FLAG      0x13
                    108: #define ADB_PSEUDOCMD_SET_AUTO_RATE     0x14
                    109: #define ADB_PSEUDOCMD_GET_AUTO_RATE     0x16
                    110: #define ADB_PSEUDOCMD_SET_DEVICE_LIST       0x19
                    111: #define ADB_PSEUDOCMD_GET_DEVICE_LIST       0x1a
                    112: #define ADB_PSEUDOCMD_SET_ONE_SECOND_MODE   0x1b
                    113: #define ADB_PSEUDOCMD_SET_POWER_MESSAGES    0x21
                    114: #define ADB_PSEUDOCMD_GET_SET_IIC       0x22
                    115: #define ADB_PSEUDOCMD_ENABLE_DISABLE_WAKEUP 0x23
                    116: #define ADB_PSEUDOCMD_TIMER_TICKLE      0x24
                    117: #define ADB_PSEUDOCMD_COMBINED_FORMAT_IIC   0X25
                    118: 
                    119: 
                    120: struct CudaRequest {
                    121:        struct CudaMachMessage *        next;
                    122:        struct CudaMachMessage *        prev;
                    123:        adb_packet_t                    a_cmd;      /* Command packet */
                    124:        adb_packet_t                    a_reply;    /* Reply packet */
                    125:        pmCallback_func                 pmCallback;
                    126:        id                              pmId;
                    127:        UInt32                          pmRefNum;
                    128: };
                    129: 
                    130: typedef struct CudaRequest CudaRequest;
                    131: 
                    132: struct CudaMachMessage {
                    133:        msg_header_t    msgHeader;
                    134:        msg_type_t      msgType;
                    135:        CudaRequest     msgBody;
                    136: };
                    137: 
                    138: typedef struct CudaMachMessage CudaMachMessage;
                    139: 
                    140: 
                    141: @interface AppleCuda : IODirectDevice <ADBservice, RTCservice>
                    142: {
                    143: 
                    144: VIAAddress      VIA1_shift;     // pointers to VIA registers
                    145: VIAAddress      VIA1_auxillaryControl;
                    146: VIAAddress      VIA1_interruptFlag;
                    147: VIAAddress      VIA1_interruptEnable;
                    148: VIAAddress      VIA2_dataB;
                    149: UInt8           PMack;          // ack bit
                    150: 
                    151: pmADBinput_func                ADBclient;              // Input handler in ADB client
                    152: id                     ADBid;                  // id of ADB client
                    153: pmCallback_func                RTCclient;              // Tick handler in RTC client
                    154: id                     RTCid;                  // id of RTC client
                    155: pmCallback_func     PWRclient;      // Button handler in Power Management client
                    156: id          PWRid;          // id of Power Management client
                    157: 
                    158: CudaRequest *          clientRequest;
                    159: CudaMachMessage                localMachMessage;
                    160: UInt8                  firstChar;
                    161: UInt32                 charCountS1;
                    162: UInt8 *                dataPointer1;
                    163: 
                    164: CudaMachMessage *       queueHead;             // our command queue
                    165: CudaMachMessage *      queueTail;
                    166: port_t                 port;                   // our interrupt port
                    167: pmCallback_func                who_to_call;            // ADB client's callback for solicited input
                    168: id                     theirId;                // ADB client's id for input callback
                    169: UInt32                 theirRefNum;            // ADB client's refnum for input callback
                    170: ns_time_t              adb_read_timeout;       // timeout on read to absent adb device
                    171: UInt8          auto_power_on;
                    172: 
                    173: }
                    174: 
                    175: 
                    176: + (Boolean)probe : (IODeviceDescription *)deviceDescription;   // initialize the driver
                    177: 
                    178: - initFromDeviceDescription : (IODeviceDescription *)deviceDescription;
                    179: 
                    180: - free;                                                        // shut the driver down
                    181: 
                    182: - (void)interruptOccurred;
                    183: 
                    184: - (void)timeoutOccurred;
                    185: 
                    186: - (void)receiveMsg;
                    187: 
                    188: 
                    189: 
                    190:                                                                // ADB protocol
                    191: - (void)registerForADBAutopoll :(pmCallback_func)inputHandler
                    192:                                :(id)caller;
                    193: 
                    194: - (PMUStatus)ADBWrite  :(UInt32)DevAddr
                    195:                        :(UInt32)DevReg
                    196:                        :(UInt32)ByteCount
                    197:                        :(UInt8*)Buffer
                    198:                        :(UInt32)RefNum
                    199:                         :(id)Id
                    200:                        :(pmCallback_func)Callback;
                    201: 
                    202: - (PMUStatus)ADBRead   :(UInt32)DevAddr
                    203:                        :(UInt32)DevReg
                    204:                        :(UInt32)RefNum
                    205:                         :(id)Id
                    206:                        :(pmCallback_func)Callback;
                    207: 
                    208: - (PMUStatus)ADBReset  :(UInt32)Refnum
                    209:                         :(id)Id
                    210:                        :(pmCallback_func)Callback;
                    211: 
                    212: - (PMUStatus)ADBFlush  :(UInt32)DevAddr
                    213:                        :(UInt32)RefNum
                    214:                         :(id)Id
                    215:                        :(pmCallback_func)Callback;
                    216: 
                    217: - (PMUStatus)ADBSetPollList    :(UInt32)PollBitField
                    218:                                :(UInt32)RefNum
                    219:                                :(id)Id
                    220:                                :(pmCallback_func)Callback;
                    221: 
                    222: - (PMUStatus)ADBPollDisable    :(UInt32)RefNum
                    223:                                :(id)Id
                    224:                                :(pmCallback_func)Callback;
                    225: 
                    226: 
                    227: - (PMUStatus)ADBSetFileServerMode:(UInt32)RefNum
                    228:                                :(id)Id
                    229:                                :(pmCallback_func)Callback;
                    230: 
                    231: 
                    232: - (PMUStatus)ADBPollEnable      :(UInt32)RefNum
                    233:                                :(id)Id
                    234:                                :(pmCallback_func)Callback;
                    235: 
                    236: - (PMUStatus)ADBSetPollRate    :(UInt32)newRate
                    237:                                :(UInt32)RefNum
                    238:                                :(id)Id
                    239:                                :(pmCallback_func)Callback;
                    240: 
                    241: - (PMUStatus)ADBGetPollRate    :(UInt32 *)currentRate
                    242:                                :(UInt32)RefNum
                    243:                                :(id)Id
                    244:                                :(pmCallback_func)Callback;
                    245: 
                    246: - (PMUStatus)ADBSetAlternateKeyboard   :(UInt32)DevAddr
                    247:                                        :(UInt32)RefNum
                    248:                                        :(id)Id
                    249:                                        :(pmCallback_func)Callback;
                    250: 
                    251: 
                    252:                                                                // RTC protocol
                    253: - (void)registerForClockTicks  :(pmCallback_func)tickHandler
                    254:                                :(id)caller;
                    255: 
                    256: - (PMUStatus)setRealTimeClock  :(UInt8 *)newTime
                    257:                                :(UInt32)RefNum
                    258:                                :(id)Id
                    259:                                 :(pmCallback_func)Callback;
                    260: 
                    261: - (PMUStatus)getRealTimeClock  :(UInt8 *)currentTime
                    262:                                :(UInt32)RefNum
                    263:                                :(id)Id
                    264:                                :(pmCallback_func)Callback;
                    265: 
                    266: - (PMUStatus)setPowerupTime    :(UInt8 *)newTime
                    267:                                :(UInt32)RefNum
                    268:                    :(id)Id
                    269:                 :(pmCallback_func)Callback;
                    270: 
                    271: 
                    272: - (PMUStatus)CudaMisc          :(UInt8 *)output
                    273:                                :(UInt32)length
                    274:                                :(UInt32)RefNum
                    275:                                :(id)Id
                    276:                                :(pmCallback_func)Callback;
                    277: 
                    278:                                                                // private methods
                    279: 
                    280: // - (void)ADBinput:(UInt32)theLength:(UInt8 *)theInput;
                    281: 
                    282: - (void)StartCudaTransmission:(CudaRequest *)plugInMessage;
                    283: 
                    284: - (void)EnableCudaInterrupt;
                    285: 
                    286: - (void)CheckRequestQueue;
                    287: 
                    288: -(void) cuda_error;
                    289: -(void) cuda_idle;
                    290: -(void) cuda_collision;
                    291: -(void) cuda_receive_last_byte;
                    292: -(void) cuda_receive_data;
                    293: -(void) cuda_unexpected_attention;
                    294: -(void) cuda_expected_attention;
                    295: -(void) cuda_transmit_data;
                    296: -(void) cuda_process_response;
                    297: -(void) poll_device;
                    298: 
                    299: 
                    300: @end
                    301: 
                    302: 
                    303: 
                    304: 
                    305: 
                    306: 
                    307: 
                    308: 
                    309: 
                    310: 

unix.superglobalmegacorp.com

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