Annotation of kernel/bsd/dev/ppc/adb.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:  * Copyright 1996 1995 by Open Software Foundation, Inc. 1997 1996 1995 1994 1993 1992 1991  
                     27:  *              All Rights Reserved 
                     28:  *  
                     29:  * Permission to use, copy, modify, and distribute this software and 
                     30:  * its documentation for any purpose and without fee is hereby granted, 
                     31:  * provided that the above copyright notice appears in all copies and 
                     32:  * that both the copyright notice and this permission notice appear in 
                     33:  * supporting documentation. 
                     34:  *  
                     35:  * OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE 
                     36:  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
                     37:  * FOR A PARTICULAR PURPOSE. 
                     38:  *  
                     39:  * IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR 
                     40:  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 
                     41:  * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT, 
                     42:  * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 
                     43:  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 
                     44:  * 
                     45:  */
                     46: /*
                     47:  * Copyright 1996 1995 by Apple Computer, Inc. 1997 1996 1995 1994 1993 1992 1991  
                     48:  *              All Rights Reserved 
                     49:  *  
                     50:  * Permission to use, copy, modify, and distribute this software and 
                     51:  * its documentation for any purpose and without fee is hereby granted, 
                     52:  * provided that the above copyright notice appears in all copies and 
                     53:  * that both the copyright notice and this permission notice appear in 
                     54:  * supporting documentation. 
                     55:  *  
                     56:  * APPLE COMPUTER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE 
                     57:  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
                     58:  * FOR A PARTICULAR PURPOSE. 
                     59:  *  
                     60:  * IN NO EVENT SHALL APPLE COMPUTER BE LIABLE FOR ANY SPECIAL, INDIRECT, OR 
                     61:  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 
                     62:  * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT, 
                     63:  * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 
                     64:  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 
                     65:  */
                     66: /*
                     67:  * MKLINUX-1.0DR2
                     68:  */
                     69: 
                     70: 
                     71: //#include    <device/device_types.h>
                     72: #include    "adb_io.h"
                     73: 
                     74: #define ADB_FLAGS_PRESENT   0x00000001  /* Device is present */
                     75: #define ADB_FLAGS_REGISTERED    0x00000002  /* Device has a handler */
                     76: #define ADB_FLAGS_UNRESOLVED    0x00000004  /* Device has not been fully probed */
                     77: 
                     78: struct adb_packet {
                     79:     unsigned char   a_header[8];
                     80:     int     a_hcount;
                     81:     unsigned char   a_buffer[32];
                     82:     int     a_bcount;
                     83:     int     a_bsize;
                     84: };
                     85: 
                     86: typedef struct adb_packet adb_packet_t;
                     87: 
                     88: /*
                     89:  * a_flags - used internal by ADB
                     90:  */
                     91: 
                     92: #define ADB_IS_ASYNC    0x00001
                     93: #define ADB_DONE    0x00002
                     94: 
                     95: struct adb_request {
                     96:     simple_lock_data_t a_lock;
                     97:     int         a_result;   /* Result of ADB command */
                     98:     int         a_flags;    /* used internally */
                     99:     adb_packet_t        a_cmd;      /* Command packet */
                    100:     adb_packet_t        a_reply;    /* Reply packet */
                    101:     void            (*a_done)(struct adb_request *);
                    102:     struct adb_request  *a_next;
                    103: };
                    104: 
                    105: typedef struct adb_request adb_request_t;
                    106: 
                    107: struct adb_ops {
                    108:     void    (*ao_send)(adb_request_t *);
                    109:     void    (*ao_poll)(void);
                    110: };
                    111: 
                    112: typedef struct adb_ops adb_ops_t;
                    113: 
                    114: struct adb_device {
                    115:     unsigned short  a_dev_type; /* Device Type (default id) */
                    116:     unsigned short  a_dev_handler;  /* Device handler ID */
                    117:     unsigned short  a_dev_orighandler;/* Original handler ID */
                    118:     unsigned short  a_dev_addr; /* Device Reg 3 Address */
                    119:     int a_addr;         /* Device Address */
                    120:     int a_flags;
                    121:     int a_type;
                    122:     void    (*a_handler)(int number, unsigned char *buffer, int bytes, void * ssp);
                    123: };
                    124: 
                    125: typedef struct adb_device adb_device_t;
                    126: 
                    127: extern struct adb_device    adb_devices[ADB_DEVICE_COUNT];
                    128: 
                    129: /*
                    130:  * ADB Commands
                    131:  */
                    132: 
                    133: #define ADB_DEVCMD_SELF_TEST        0xff
                    134: #define ADB_DEVCMD_CHANGE_ID        0xfe
                    135: #define ADB_DEVCMD_CHANGE_ID_AND_ACT    0xfd
                    136: #define ADB_DEVCMD_CHANGE_ID_AND_ENABLE 0x00
                    137: 
                    138: /*
                    139:  * Results for a_result
                    140:  */
                    141: 
                    142: #define ADB_RET_OK          0   /* Successful */
                    143: #define ADB_RET_INUSE           1   /* ADB Device in use */
                    144: #define ADB_RET_NOTPRESENT      2   /* ADB Device not present */
                    145: #define ADB_RET_TIMEOUT         3   /* ADB Timeout  */
                    146: #define ADB_RET_UNEXPECTED_RESULT   4   /* Unknown result */
                    147: #define ADB_RET_REQUEST_ERROR       5   /* Packet Request Error */
                    148: #define ADB_RET_BUS_ERROR       6   /* ADB Bus Error */
                    149: 
                    150: 
                    151: /*
                    152:  * ADB Packet Types
                    153:  */
                    154: 
                    155: #define ADB_PACKET_ADB      0
                    156: #define ADB_PACKET_PSEUDO   1
                    157: #define ADB_PACKET_ERROR    2
                    158: #define ADB_PACKET_TIMER    3
                    159: #define ADB_PACKET_POWER    4
                    160: #define ADB_PACKET_MACIIC   5
                    161: 
                    162: /*
                    163:  * ADB Device Commands 
                    164:  */
                    165: 
                    166: #define ADB_ADBCMD_RESET_BUS    0x00
                    167: #define ADB_ADBCMD_FLUSH_ADB    0x01
                    168: #define ADB_ADBCMD_WRITE_ADB    0x08
                    169: #define ADB_ADBCMD_READ_ADB 0x0c
                    170: 
                    171: /*
                    172:  * ADB Pseudo Commands
                    173:  */
                    174: 
                    175: #define ADB_PSEUDOCMD_WARM_START        0x00
                    176: #define ADB_PSEUDOCMD_START_STOP_AUTO_POLL  0x01
                    177: #define ADB_PSEUDOCMD_GET_6805_ADDRESS      0x02
                    178: #define ADB_PSEUDOCMD_GET_REAL_TIME     0x03
                    179: #define ADB_PSEUDOCMD_GET_PRAM          0x07
                    180: #define ADB_PSEUDOCMD_SET_6805_ADDRESS      0x08
                    181: #define ADB_PSEUDOCMD_SET_REAL_TIME     0x09
                    182: #define ADB_PSEUDOCMD_POWER_DOWN        0x0a
                    183: #define ADB_PSEUDOCMD_SET_POWER_UPTIME      0x0b
                    184: #define ADB_PSEUDOCMD_SET_PRAM          0x0c
                    185: #define ADB_PSEUDOCMD_MONO_STABLE_RESET     0x0d
                    186: #define ADB_PSEUDOCMD_SEND_DFAC         0x0e
                    187: #define ADB_PSEUDOCMD_BATTERY_SWAP_SENSE    0x10
                    188: #define ADB_PSEUDOCMD_RESTART_SYSTEM        0x11
                    189: #define ADB_PSEUDOCMD_SET_IPL_LEVEL     0x12
                    190: #define ADB_PSEUDOCMD_FILE_SERVER_FLAG      0x13
                    191: #define ADB_PSEUDOCMD_SET_AUTO_RATE     0x14
                    192: #define ADB_PSEUDOCMD_GET_AUTO_RATE     0x16
                    193: #define ADB_PSEUDOCMD_SET_DEVICE_LIST       0x19
                    194: #define ADB_PSEUDOCMD_GET_DEVICE_LIST       0x1a
                    195: #define ADB_PSEUDOCMD_SET_ONE_SECOND_MODE   0x1b
                    196: #define ADB_PSEUDOCMD_SET_POWER_MESSAGES    0x21
                    197: #define ADB_PSEUDOCMD_GET_SET_IIC       0x22
                    198: #define ADB_PSEUDOCMD_ENABLE_DISABLE_WAKEUP 0x23
                    199: #define ADB_PSEUDOCMD_TIMER_TICKLE      0x24
                    200: #define ADB_PSEUDOCMD_COMBINED_FORMAT_IIC   0X25
                    201: 
                    202: /*
                    203:  * Macros to help build commands up
                    204:  */
                    205: 
                    206: #define ADB_BUILD_CMD1(c, p1) {(c)->a_cmd.a_header[0] = p1; (c)->a_cmd.a_hcount = 1; }
                    207: #define ADB_BUILD_CMD2(c, p1, p2) {(c)->a_cmd.a_header[0] = p1; (c)->a_cmd.a_header[1] = p2; (c)->a_cmd.a_hcount = 2; }
                    208: #define ADB_BUILD_CMD3(c, p1, p2, p3) {(c)->a_cmd.a_header[0] = p1; (c)->a_cmd.a_header[1] = p2; (c)->a_cmd.a_header[2] = p3; (c)->a_cmd.a_hcount = 3; }
                    209: #define ADB_BUILD_CMD4(c, p1, p2, p3, p4) {(c)->a_cmd.a_header[0] = p1; (c)->a_cmd.a_header[1] = p2; \
                    210:                      (c)->a_cmd.a_header[2] = p3; (c)->a_cmd.a_header[3] = p4; (c)->a_cmd.a_hcount = 4; }
                    211: #define ADB_BUILD_CMD2_BUFFER(c, p1, p2, len, buf) {(c)->a_cmd.a_header[0] = p1; (c)->a_cmd.a_header[1] = p2; (c)->a_cmd.a_hcount = 2;\
                    212:         (c)->a_cmd.a_bcount = len;\
                    213:         memcpy(&(c)->a_cmd.a_buffer, buf, len); }
                    214: 
                    215: /*
                    216:  * Prototypes
                    217:  */
                    218: 
                    219: void        adb_register_handler(int id,
                    220:             void (*handler)(int number, unsigned char *packet, int count, void * ssp));
                    221: void        adb_register_dev(int id,
                    222:             void (*handler)(int number, unsigned char *packet, int count, void * ssp));
                    223: int     adb_readreg(int devnum, int regnum, unsigned short *value);
                    224: int     adb_writereg(int devnum, int regnum, unsigned short value);
                    225: void        adb_writereg_async(int devnum, int regnum, unsigned short value);
                    226: void        adb_send(adb_request_t *req, boolean_t wait);
                    227: void        adb_done(adb_request_t *req);
                    228: void        adb_unsolicited_done(adb_packet_t *response, void * ssp);
                    229: adb_request_t   *adb_next_request(void);
                    230: void        adb_poll(void);
                    231: 
                    232: int        adb_set_handler(struct adb_device *devp, int handler);
                    233: 
                    234: void   borrow_adb( void (*handler)(int number, unsigned char *packet, int count,void * ssp));
                    235: void   return_adb( void );
                    236: 
                    237: /*
                    238:  * For configuration
                    239:  */
                    240: 
                    241: io_return_t adbopen(dev_t dev, dev_mode_t flag, io_req_t ior);
                    242: void        adbclose(dev_t dev);
                    243: io_return_t adbread(dev_t dev, io_req_t ior);
                    244: io_return_t adbwrite(dev_t dev, io_req_t ior);
                    245: //boolean_t   adbportdeath(dev_t dev, ipc_port_t port);
                    246: io_return_t adbgetstatus(dev_t dev, dev_flavor_t flavor,
                    247:         dev_status_t data, mach_msg_type_number_t *status_count);
                    248: io_return_t     adbsetstatus(dev_t dev, dev_flavor_t flavor, dev_status_t data,
                    249:                 mach_msg_type_number_t status_count);
                    250: 
                    251: 

unix.superglobalmegacorp.com

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