1*0cbe4818SRobert Mustacchi /* 2*0cbe4818SRobert Mustacchi * This file and its contents are supplied under the terms of the 3*0cbe4818SRobert Mustacchi * Common Development and Distribution License ("CDDL"), version 1.0. 4*0cbe4818SRobert Mustacchi * You may only use this file in accordance with the terms of version 5*0cbe4818SRobert Mustacchi * 1.0 of the CDDL. 6*0cbe4818SRobert Mustacchi * 7*0cbe4818SRobert Mustacchi * A full copy of the text of the CDDL should have accompanied this 8*0cbe4818SRobert Mustacchi * source. A copy of the CDDL is also available via the Internet at 9*0cbe4818SRobert Mustacchi * http://www.illumos.org/license/CDDL. 10*0cbe4818SRobert Mustacchi */ 11*0cbe4818SRobert Mustacchi 12*0cbe4818SRobert Mustacchi /* 13*0cbe4818SRobert Mustacchi * Copyright 2025 Oxide Computer Company 14*0cbe4818SRobert Mustacchi */ 15*0cbe4818SRobert Mustacchi 16*0cbe4818SRobert Mustacchi #ifndef _I2C_IOCTL_UTIL_H 17*0cbe4818SRobert Mustacchi #define _I2C_IOCTL_UTIL_H 18*0cbe4818SRobert Mustacchi 19*0cbe4818SRobert Mustacchi /* 20*0cbe4818SRobert Mustacchi * Misc. utility functions to aid our ioctl tests 21*0cbe4818SRobert Mustacchi */ 22*0cbe4818SRobert Mustacchi 23*0cbe4818SRobert Mustacchi #ifdef __cplusplus 24*0cbe4818SRobert Mustacchi extern "C" { 25*0cbe4818SRobert Mustacchi #endif 26*0cbe4818SRobert Mustacchi 27*0cbe4818SRobert Mustacchi typedef struct { 28*0cbe4818SRobert Mustacchi uint16_t ba_type; 29*0cbe4818SRobert Mustacchi uint16_t ba_addr; 30*0cbe4818SRobert Mustacchi i2c_errno_t ba_error; 31*0cbe4818SRobert Mustacchi } bad_addr_t; 32*0cbe4818SRobert Mustacchi 33*0cbe4818SRobert Mustacchi extern const bad_addr_t bad_addrs[]; 34*0cbe4818SRobert Mustacchi extern const size_t nbad_addrs; 35*0cbe4818SRobert Mustacchi 36*0cbe4818SRobert Mustacchi typedef enum { 37*0cbe4818SRobert Mustacchi I2C_D_CTRL, 38*0cbe4818SRobert Mustacchi I2C_D_PORT, 39*0cbe4818SRobert Mustacchi I2C_D_MUX, 40*0cbe4818SRobert Mustacchi I2C_D_DEVICE, 41*0cbe4818SRobert Mustacchi /* 42*0cbe4818SRobert Mustacchi * This is meant just for internal uses in the enumeration. Don't use it 43*0cbe4818SRobert Mustacchi * explicitly. 44*0cbe4818SRobert Mustacchi */ 45*0cbe4818SRobert Mustacchi I2C_D_OTHER 46*0cbe4818SRobert Mustacchi } i2c_dev_t; 47*0cbe4818SRobert Mustacchi 48*0cbe4818SRobert Mustacchi extern int i2c_ioctl_test_get_fd(i2c_dev_t, const char *, int); 49*0cbe4818SRobert Mustacchi 50*0cbe4818SRobert Mustacchi /* 51*0cbe4818SRobert Mustacchi * Path for di_init() to the i2csim driver. 52*0cbe4818SRobert Mustacchi */ 53*0cbe4818SRobert Mustacchi extern const char *i2c_sim_dipath; 54*0cbe4818SRobert Mustacchi 55*0cbe4818SRobert Mustacchi #ifdef __cplusplus 56*0cbe4818SRobert Mustacchi } 57*0cbe4818SRobert Mustacchi #endif 58*0cbe4818SRobert Mustacchi 59*0cbe4818SRobert Mustacchi #endif /* _I2C_IOCTL_UTIL_H */ 60