xref: /illumos-gate/usr/src/test/i2c-tests/tests/ioctl/i2c_ioctl_util.h (revision 0cbe48189888d02563dba9c90132ac391ba233b6)
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