1 /* $NetBSD: maple.h,v 1.4 2002/03/25 18:59:40 uch Exp $ */ 2 3 /*- 4 * Copyright (c) 2001 Marcus Comstedt 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 3. All advertising materials mentioning features or use of this software 16 * must display the following acknowledgement: 17 * This product includes software developed by Marcus Comstedt. 18 * 4. Neither the name of The NetBSD Foundation nor the names of its 19 * contributors may be used to endorse or promote products derived 20 * from this software without specific prior written permission. 21 * 22 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 23 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 24 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 25 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 26 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 * POSSIBILITY OF SUCH DAMAGE. 33 */ 34 35 #ifndef _DREAMCAST_DEV_MAPLE_MAPLE_H_ 36 #define _DREAMCAST_DEV_MAPLE_MAPLE_H_ 37 38 #include <sys/device.h> 39 40 #define MAPLE_PORTS 4 41 #define MAPLE_SUBUNITS 6 42 43 /* Maple Bus command and response codes */ 44 45 #define MAPLE_RESPONSE_FILEERR -5 46 #define MAPLE_RESPONSE_AGAIN -4 /* request should be retransmitted */ 47 #define MAPLE_RESPONSE_BADCMD -3 48 #define MAPLE_RESPONSE_BADFUNC -2 49 #define MAPLE_RESPONSE_NONE -1 /* unit didn't respond at all */ 50 #define MAPLE_COMMAND_DEVINFO 1 51 #define MAPLE_COMMAND_ALLINFO 2 52 #define MAPLE_COMMAND_RESET 3 53 #define MAPLE_COMMAND_KILL 4 54 #define MAPLE_RESPONSE_DEVINFO 5 55 #define MAPLE_RESPONSE_ALLINFO 6 56 #define MAPLE_RESPONSE_OK 7 57 #define MAPLE_RESPONSE_DATATRF 8 58 #define MAPLE_COMMAND_GETCOND 9 59 #define MAPLE_COMMAND_GETMINFO 10 60 #define MAPLE_COMMAND_BREAD 11 61 #define MAPLE_COMMAND_BWRITE 12 62 #define MAPLE_COMMAND_SETCOND 14 63 64 65 /* Function codes */ 66 67 #define MAPLE_FUNC_CONTROLLER 0x001 68 #define MAPLE_FUNC_MEMCARD 0x002 69 #define MAPLE_FUNC_LCD 0x004 70 #define MAPLE_FUNC_CLOCK 0x008 71 #define MAPLE_FUNC_MICROPHONE 0x010 72 #define MAPLE_FUNC_ARGUN 0x020 73 #define MAPLE_FUNC_KEYBOARD 0x040 74 #define MAPLE_FUNC_LIGHTGUN 0x080 75 #define MAPLE_FUNC_PURUPURU 0x100 76 #define MAPLE_FUNC_MOUSE 0x200 77 78 struct maple_devinfo { 79 u_int32_t di_func; /* function code */ 80 u_int32_t di_function_data[3]; /* function data */ 81 u_int8_t di_area_code; /* region settings */ 82 u_int8_t di_connector_direction; /* ? */ 83 char di_product_name[30]; /* name of the device */ 84 char di_product_license[60]; /* manufacturer info */ 85 u_int16_t di_standby_power; /* standby power consumption */ 86 u_int16_t di_max_power; /* maximum power consumption */ 87 }; 88 89 struct maple_unit { 90 int port, subunit; 91 int status; 92 u_int32_t getcond_func; 93 void (*getcond_callback)(void *, void *, int); 94 void *getcond_data; 95 struct maple_devinfo devinfo; 96 }; 97 98 extern void maple_set_condition_callback(struct device *, int, int, 99 u_int32_t, void (*)(void *, void *, int), void *); 100 extern u_int32_t maple_get_function_data(struct maple_devinfo *, u_int32_t); 101 extern void maple_run_polling(struct device *); 102 103 #endif /* _DREAMCAST_DEV_MAPLE_MAPLE_H_ */ 104 105