1*abdf7c82Sjmcneill /* $NetBSD: exi.h,v 1.2 2024/02/10 11:00:15 jmcneill Exp $ */ 2c0f93ec1Sjmcneill 3c0f93ec1Sjmcneill /*- 4c0f93ec1Sjmcneill * Copyright (c) 2024 Jared McNeill <jmcneill@invisible.ca> 5c0f93ec1Sjmcneill * All rights reserved. 6c0f93ec1Sjmcneill * 7c0f93ec1Sjmcneill * Redistribution and use in source and binary forms, with or without 8c0f93ec1Sjmcneill * modification, are permitted provided that the following conditions 9c0f93ec1Sjmcneill * are met: 10c0f93ec1Sjmcneill * 1. Redistributions of source code must retain the above copyright 11c0f93ec1Sjmcneill * notice, this list of conditions and the following disclaimer. 12c0f93ec1Sjmcneill * 2. Redistributions in binary form must reproduce the above copyright 13c0f93ec1Sjmcneill * notice, this list of conditions and the following disclaimer in the 14c0f93ec1Sjmcneill * documentation and/or other materials provided with the distribution. 15c0f93ec1Sjmcneill * 16c0f93ec1Sjmcneill * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17c0f93ec1Sjmcneill * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18c0f93ec1Sjmcneill * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19c0f93ec1Sjmcneill * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20c0f93ec1Sjmcneill * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21c0f93ec1Sjmcneill * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22c0f93ec1Sjmcneill * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 23c0f93ec1Sjmcneill * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24c0f93ec1Sjmcneill * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25c0f93ec1Sjmcneill * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26c0f93ec1Sjmcneill * SUCH DAMAGE. 27c0f93ec1Sjmcneill */ 28c0f93ec1Sjmcneill 29c0f93ec1Sjmcneill #ifndef _WII_DEV_EXI_H_ 30c0f93ec1Sjmcneill #define _WII_DEV_EXI_H_ 31c0f93ec1Sjmcneill 32*abdf7c82Sjmcneill typedef enum { 33*abdf7c82Sjmcneill EXI_FREQ_1MHZ = 0, 34*abdf7c82Sjmcneill EXI_FREQ_2MHZ = 1, 35*abdf7c82Sjmcneill EXI_FREQ_4MHZ = 2, 36*abdf7c82Sjmcneill EXI_FREQ_8MHZ = 3, 37*abdf7c82Sjmcneill EXI_FREQ_16MHZ = 4, 38*abdf7c82Sjmcneill EXI_FREQ_32MHZ = 5, 39*abdf7c82Sjmcneill } exi_freq_t; 40*abdf7c82Sjmcneill 41c0f93ec1Sjmcneill struct exi_attach_args { 42c0f93ec1Sjmcneill uint32_t eaa_id; 43c0f93ec1Sjmcneill uint8_t eaa_chan; 44c0f93ec1Sjmcneill uint8_t eaa_device; 45c0f93ec1Sjmcneill }; 46c0f93ec1Sjmcneill 47*abdf7c82Sjmcneill void exi_select(uint8_t, uint8_t, exi_freq_t); 48c0f93ec1Sjmcneill void exi_unselect(uint8_t); 49c0f93ec1Sjmcneill void exi_send_imm(uint8_t, uint8_t, const void *, size_t); 50c0f93ec1Sjmcneill void exi_recv_imm(uint8_t, uint8_t, void *, size_t); 51c0f93ec1Sjmcneill void exi_recv_dma(uint8_t, uint8_t, void *, size_t); 52c0f93ec1Sjmcneill 53c0f93ec1Sjmcneill #endif /* _WII_DEV_EXI_H_ */ 54