xref: /netbsd-src/sys/arch/macppc/dev/adbvar.h (revision cbab9cadce21ae72fac13910001079fff214cc29)
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