1*cbab9cadSchs /* $NetBSD: adbvar.h,v 1.15 2012/10/27 17:18:00 chs Exp $ */ 22be6df07Stsubai 32be6df07Stsubai /*- 42be6df07Stsubai * Copyright (C) 1994 Bradley A. Grantham 52be6df07Stsubai * All rights reserved. 62be6df07Stsubai * 72be6df07Stsubai * Redistribution and use in source and binary forms, with or without 82be6df07Stsubai * modification, are permitted provided that the following conditions 92be6df07Stsubai * are met: 102be6df07Stsubai * 1. Redistributions of source code must retain the above copyright 112be6df07Stsubai * notice, this list of conditions and the following disclaimer. 122be6df07Stsubai * 2. Redistributions in binary form must reproduce the above copyright 132be6df07Stsubai * notice, this list of conditions and the following disclaimer in the 142be6df07Stsubai * documentation and/or other materials provided with the distribution. 152be6df07Stsubai * 162be6df07Stsubai * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 172be6df07Stsubai * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 182be6df07Stsubai * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 192be6df07Stsubai * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 202be6df07Stsubai * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 212be6df07Stsubai * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 222be6df07Stsubai * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 232be6df07Stsubai * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 242be6df07Stsubai * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 252be6df07Stsubai * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 262be6df07Stsubai */ 272be6df07Stsubai 282be6df07Stsubai #include <machine/adbsys.h> 292be6df07Stsubai 307756c05cStsubai /* 317756c05cStsubai * Arguments used to attach a device to the Apple Desktop Bus 327756c05cStsubai */ 337756c05cStsubai struct adb_attach_args { 34649f6d38Stsubai int origaddr; 35649f6d38Stsubai int adbaddr; 36649f6d38Stsubai int handler_id; 377756c05cStsubai }; 387756c05cStsubai 392be6df07Stsubai typedef struct adb_trace_xlate_s { 402be6df07Stsubai int params; 412be6df07Stsubai char *string; 422be6df07Stsubai } adb_trace_xlate_t; 432be6df07Stsubai 442be6df07Stsubai extern adb_trace_xlate_t adb_trace_xlations[]; 452be6df07Stsubai 462be6df07Stsubai #ifdef DEBUG 472be6df07Stsubai #ifndef ADB_DEBUG 482be6df07Stsubai #define ADB_DEBUG 492be6df07Stsubai #endif 50649f6d38Stsubai #endif 51649f6d38Stsubai 52649f6d38Stsubai #ifdef ADB_DEBUG 532be6df07Stsubai extern int adb_debug; 542be6df07Stsubai #endif 552be6df07Stsubai 5653524e44Schristos typedef void *Ptr; 5753524e44Schristos typedef void **Handle; 582be6df07Stsubai 592be6df07Stsubai /* ADB Manager */ 602be6df07Stsubai typedef struct { 612be6df07Stsubai Ptr siServiceRtPtr; 622be6df07Stsubai Ptr siDataAreaAddr; 632be6df07Stsubai } ADBSetInfoBlock; 642be6df07Stsubai typedef struct { 652be6df07Stsubai unsigned char devType; 662be6df07Stsubai unsigned char origADBAddr; 672be6df07Stsubai Ptr dbServiceRtPtr; 682be6df07Stsubai Ptr dbDataAreaAddr; 692be6df07Stsubai } ADBDataBlock; 702be6df07Stsubai 712be6df07Stsubai struct adb_softc { 722be6df07Stsubai char *sc_regbase; 732be6df07Stsubai }; 742be6df07Stsubai 7553524e44Schristos typedef void (adbComp)(void *, volatile int *, int); 76a2c1d78aSnathanw 77b00d5fb8Sitojun /* adb_direct.c */ 78b00d5fb8Sitojun extern int adbHardware; 79b00d5fb8Sitojun 802be6df07Stsubai /* types of adb hardware that we (will eventually) support */ 812be6df07Stsubai #define ADB_HW_UNKNOWN 0x01 /* don't know */ 822be6df07Stsubai #define ADB_HW_II 0x02 /* Mac II series */ 832be6df07Stsubai #define ADB_HW_IISI 0x03 /* Mac IIsi series */ 84805b9387Sbriggs #define ADB_HW_PMU 0x04 /* PowerBook series */ 852be6df07Stsubai #define ADB_HW_CUDA 0x05 /* Machines with a Cuda chip */ 862be6df07Stsubai 87649f6d38Stsubai #define ADB_CMDADDR(cmd) ((u_int8_t)((cmd) & 0xf0) >> 4) 88649f6d38Stsubai #define ADBFLUSH(dev) ((((u_int8_t)(dev) & 0x0f) << 4) | 0x01) 89649f6d38Stsubai #define ADBLISTEN(dev, reg) ((((u_int8_t)(dev) & 0x0f) << 4) | 0x08 | (reg)) 90649f6d38Stsubai #define ADBTALK(dev, reg) ((((u_int8_t)(dev) & 0x0f) << 4) | 0x0c | (reg)) 91649f6d38Stsubai 9202cdf4d2Sdsl int adb_intr(void *); 9302cdf4d2Sdsl int adb_poweroff(void); 9402cdf4d2Sdsl void adb_restart(void); 9502cdf4d2Sdsl void adb_cuda_autopoll(void); 9602cdf4d2Sdsl int adb_intr_cuda(void *); 9702cdf4d2Sdsl int CountADBs(void); 9802cdf4d2Sdsl void ADBReInit(void); 9902cdf4d2Sdsl int GetIndADB(ADBDataBlock * info, int index); 10002cdf4d2Sdsl int GetADBInfo(ADBDataBlock * info, int adbAddr); 10102cdf4d2Sdsl int SetADBInfo(ADBSetInfoBlock * info, int adbAddr); 10202cdf4d2Sdsl int ADBOp(Ptr buffer, adbComp *compRout, Ptr data, short commandNum); 10302cdf4d2Sdsl int adb_read_date_time(unsigned long *t); 10402cdf4d2Sdsl int adb_set_date_time(unsigned long t); 1050f4768afStsubai 10602cdf4d2Sdsl int adb_op_sync(Ptr, adbComp *, Ptr, short); 10702cdf4d2Sdsl void adb_op_comprout(void *, volatile int *, int); 108