xref: /illumos-gate/usr/src/cmd/gpioadm/gpioadm.h (revision fd71220ba0fafcc9cf5ea0785db206f3f31336e7)
1*fd71220bSRobert Mustacchi /*
2*fd71220bSRobert Mustacchi  * This file and its contents are supplied under the terms of the
3*fd71220bSRobert Mustacchi  * Common Development and Distribution License ("CDDL"), version 1.0.
4*fd71220bSRobert Mustacchi  * You may only use this file in accordance with the terms of version
5*fd71220bSRobert Mustacchi  * 1.0 of the CDDL.
6*fd71220bSRobert Mustacchi  *
7*fd71220bSRobert Mustacchi  * A full copy of the text of the CDDL should have accompanied this
8*fd71220bSRobert Mustacchi  * source.  A copy of the CDDL is also available via the Internet at
9*fd71220bSRobert Mustacchi  * http://www.illumos.org/license/CDDL.
10*fd71220bSRobert Mustacchi  */
11*fd71220bSRobert Mustacchi 
12*fd71220bSRobert Mustacchi /*
13*fd71220bSRobert Mustacchi  * Copyright 2022 Oxide Computer Company
14*fd71220bSRobert Mustacchi  */
15*fd71220bSRobert Mustacchi 
16*fd71220bSRobert Mustacchi #ifndef _GPIOADM_H
17*fd71220bSRobert Mustacchi #define	_GPIOADM_H
18*fd71220bSRobert Mustacchi 
19*fd71220bSRobert Mustacchi /*
20*fd71220bSRobert Mustacchi  * gpioadm(8) interfaces
21*fd71220bSRobert Mustacchi  */
22*fd71220bSRobert Mustacchi 
23*fd71220bSRobert Mustacchi #include <sys/ccompile.h>
24*fd71220bSRobert Mustacchi #include <stdio.h>
25*fd71220bSRobert Mustacchi 
26*fd71220bSRobert Mustacchi #include <libxpio.h>
27*fd71220bSRobert Mustacchi #include <sys/gpio/kgpio_attr.h>
28*fd71220bSRobert Mustacchi 
29*fd71220bSRobert Mustacchi #ifdef __cplusplus
30*fd71220bSRobert Mustacchi extern "C" {
31*fd71220bSRobert Mustacchi #endif
32*fd71220bSRobert Mustacchi 
33*fd71220bSRobert Mustacchi #define	EXIT_USAGE	2
34*fd71220bSRobert Mustacchi 
35*fd71220bSRobert Mustacchi typedef struct {
36*fd71220bSRobert Mustacchi 	const char *gpio_progname;
37*fd71220bSRobert Mustacchi 	xpio_t *gpio_xpio;
38*fd71220bSRobert Mustacchi } gpioadm_t;
39*fd71220bSRobert Mustacchi 
40*fd71220bSRobert Mustacchi typedef struct gpioadm_cmdtab {
41*fd71220bSRobert Mustacchi 	const char *gpct_name;
42*fd71220bSRobert Mustacchi 	int (*gpct_func)(int, char *[]);
43*fd71220bSRobert Mustacchi 	void (*gpct_use)(FILE *);
44*fd71220bSRobert Mustacchi } gpioadm_cmdtab_t;
45*fd71220bSRobert Mustacchi 
46*fd71220bSRobert Mustacchi extern gpioadm_t gpioadm;
47*fd71220bSRobert Mustacchi 
48*fd71220bSRobert Mustacchi extern void gpioadm_warn(const char *, ...) __PRINTFLIKE(1);
49*fd71220bSRobert Mustacchi extern void gpioadm_fatal(const char *, ...) __PRINTFLIKE(1) __NORETURN;
50*fd71220bSRobert Mustacchi extern void gpioadm_update_fatal(xpio_gpio_update_t *, const char *,
51*fd71220bSRobert Mustacchi     ...) __PRINTFLIKE(2) __NORETURN;
52*fd71220bSRobert Mustacchi extern void gpioadm_ofmt_errx(const char *, ...) __PRINTFLIKE(1) __NORETURN;
53*fd71220bSRobert Mustacchi extern void gpioadm_ctrl_gpio_init(const char *, xpio_ctrl_t **,
54*fd71220bSRobert Mustacchi     xpio_gpio_info_t **);
55*fd71220bSRobert Mustacchi 
56*fd71220bSRobert Mustacchi extern void gpioadm_walk_usage(const gpioadm_cmdtab_t *, FILE *);
57*fd71220bSRobert Mustacchi extern int gpioadm_walk_tab(const gpioadm_cmdtab_t *, int, char *[]);
58*fd71220bSRobert Mustacchi 
59*fd71220bSRobert Mustacchi extern int gpioadm_controller(int, char *[]);
60*fd71220bSRobert Mustacchi extern void gpioadm_controller_usage(FILE *);
61*fd71220bSRobert Mustacchi extern int gpioadm_dpio(int, char *[]);
62*fd71220bSRobert Mustacchi extern void gpioadm_dpio_usage(FILE *);
63*fd71220bSRobert Mustacchi extern int gpioadm_gpio(int, char *[]);
64*fd71220bSRobert Mustacchi extern void gpioadm_gpio_usage(FILE *);
65*fd71220bSRobert Mustacchi 
66*fd71220bSRobert Mustacchi #ifdef __cplusplus
67*fd71220bSRobert Mustacchi }
68*fd71220bSRobert Mustacchi #endif
69*fd71220bSRobert Mustacchi 
70*fd71220bSRobert Mustacchi #endif /* _GPIOADM_H */
71