Linux v2.6.15-rc6
[pohmelfs.git] / include / asm-m68k / adb.h
blob9176b55185bb872e5837c7c885431a37f53ab445
1 /*
2 * Definitions for talking to ADB and CUDA. The CUDA is a microcontroller
3 * which controls the ADB, system power, RTC, and various other things on
4 * later Macintoshes
6 * Copyright (C) 1996 Paul Mackerras.
7 */
9 /* First byte sent to or received from CUDA */
10 #define ADB_PACKET 0
11 #define CUDA_PACKET 1
12 #define ERROR_PACKET 2
13 #define TIMER_PACKET 3
14 #define POWER_PACKET 4
15 #define MACIIC_PACKET 5
17 /* ADB commands (2nd byte) */
18 #define ADB_BUSRESET 0
19 #define ADB_FLUSH(id) (1 + ((id) << 4))
20 #define ADB_WRITEREG(id, reg) (8 + (reg) + ((id) << 4))
21 #define ADB_READREG(id, reg) (0xc + (reg) + ((id) << 4))
23 /* ADB default device IDs (upper 4 bits of 2nd byte) */
24 #define ADB_DONGLE 1 /* "software execution control" devices */
25 #define ADB_KEYBOARD 2
26 #define ADB_MOUSE 3
27 #define ADB_TABLET 4
28 #define ADB_MODEM 5
29 #define ADB_MISC 7 /* maybe a monitor */
31 /* CUDA commands (2nd byte) */
32 #define CUDA_WARM_START 0
33 #define CUDA_AUTOPOLL 1
34 #define CUDA_GET_6805_ADDR 2
35 #define CUDA_GET_TIME 3
36 #define CUDA_GET_PRAM 7
37 #define CUDA_SET_6805_ADDR 8
38 #define CUDA_SET_TIME 9
39 #define CUDA_POWERDOWN 0xa
40 #define CUDA_POWERUP_TIME 0xb
41 #define CUDA_SET_PRAM 0xc
42 #define CUDA_MS_RESET 0xd
43 #define CUDA_SEND_DFAC 0xe
44 #define CUDA_RESET_SYSTEM 0x11
45 #define CUDA_SET_IPL 0x12
46 #define CUDA_SET_AUTO_RATE 0x14
47 #define CUDA_GET_AUTO_RATE 0x16
48 #define CUDA_SET_DEVICE_LIST 0x19
49 #define CUDA_GET_DEVICE_LIST 0x1a
50 #define CUDA_GET_SET_IIC 0x22
52 #ifdef __KERNEL__
54 struct adb_request {
55 unsigned char data[16];
56 int nbytes;
57 unsigned char reply[16];
58 int reply_len;
59 unsigned char reply_expected;
60 unsigned char sent;
61 unsigned char got_reply;
62 void (*done)(struct adb_request *);
63 void *arg;
64 struct adb_request *next;
67 void via_adb_init(void);
68 int adb_request(struct adb_request *req,
69 void (*done)(struct adb_request *), int nbytes, ...);
70 int adb_send_request(struct adb_request *req);
71 void adb_poll(void);
72 int adb_register(int default_id,
73 void (*handler)(unsigned char *, int, struct pt_regs *));
75 #endif /* __KERNEL */