Annotation of kernel/bsd/dev/ppc/adb.h, 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:  * 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.