wii_ipcreg.h revision 296373
1/*- 2 * Copyright (C) 2012 Margarida Gouveia 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 19 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 21 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 22 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * 26 * $FreeBSD: releng/10.3/sys/powerpc/wii/wii_ipcreg.h 252500 2013-07-02 07:17:56Z rpaulo $ 27 */ 28 29#ifndef _POWERPC_WII_WII_IPCREG_H 30#define _POWERPC_WII_WII_IPCREG_H 31 32#define WIIIPC_REG_ADDR 0x0d000000 33#define WIIIPC_REG_LEN 0x40 34#define WIIIPC_IOH_ADDR 0x133e0000 35#define WIIIPC_IOH_LEN 0xc20000 36 37#define WIIIPC_TXBUF 0x00 38#define WIIIPC_CSR 0x04 39#define WIIIPC_CSR_TXSTART 0x01 40#define WIIIPC_CSR_TBEI 0x02 41#define WIIIPC_CSR_RBFI 0x04 42#define WIIIPC_CSR_RXREADY 0x08 43#define WIIIPC_CSR_RBFIMASK 0x10 44#define WIIIPC_CSR_TBEIMASK 0x20 45#define WIIIPC_RXBUF 0x08 46#define WIIIPC_ISR 0x30 47#define WIIIPC_ISR_MAGIC 0x40000000 48 49enum wiiipc_cmd { 50 WIIIPC_CMD_OPEN = 1, 51 WIIIPC_CMD_CLOSE = 2, 52 WIIIPC_CMD_READ = 3, 53 WIIIPC_CMD_WRITE = 4, 54 WIIIPC_CMD_SEEK = 5, 55 WIIIPC_CMD_IOCTL = 6, 56 WIIIPC_CMD_IOCTLV = 7, 57 WIIIPC_CMD_ASYNCRESP = 8 58}; 59 60struct wiiipc_ipc_msg { 61 uint32_t ipc_cmd; 62 int32_t ipc_result; 63 int32_t ipc_fd; /* WIIIPC_CMD_ASYNCRESP - the original cmd */ 64 union { 65 struct { 66 intptr_t pathname; 67 uint32_t mode; 68 } _ipc_open; 69 struct { 70 intptr_t data; 71 uint32_t len; 72 } _ipc_read, _ipc_write; 73 struct { 74 int32_t offset; 75 int32_t whence; 76 } _ipc_seek; 77 struct { 78 uint32_t request; 79 intptr_t ibuf; 80 uint32_t ilen; 81 intptr_t obuf; 82 uint32_t olen; 83 } _ipc_ioctl; 84 struct { 85 uint32_t request; 86 uint32_t argin; 87 uint32_t argout; 88 intptr_t iovec; 89 } _ipc_ioctlv; 90 uint32_t _ipc_argv[5]; 91 } args; 92} __attribute__((packed)); 93 94CTASSERT(sizeof(struct wiiipc_ipc_msg) == 32); 95 96#define ipc_open args._ipc_open 97#define ipc_read args._ipc_read 98#define ipc_write args._ipc_write 99#define ipc_ioctl args._ipc_ioctl 100#define ipc_ioctlv args._ipc_ioctlv 101 102#endif /* _POWERPC_WII_WII_IPCREG_H */ 103