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