xref: /illumos-gate/usr/src/uts/common/sys/gpio/ltc4306.h (revision a3ebb524df668b0fc3a38f33d0049380f5f11ec1)
1*a3ebb524SRobert Mustacchi /*
2*a3ebb524SRobert Mustacchi  * This file and its contents are supplied under the terms of the
3*a3ebb524SRobert Mustacchi  * Common Development and Distribution License ("CDDL"), version 1.0.
4*a3ebb524SRobert Mustacchi  * You may only use this file in accordance with the terms of version
5*a3ebb524SRobert Mustacchi  * 1.0 of the CDDL.
6*a3ebb524SRobert Mustacchi  *
7*a3ebb524SRobert Mustacchi  * A full copy of the text of the CDDL should have accompanied this
8*a3ebb524SRobert Mustacchi  * source.  A copy of the CDDL is also available via the Internet at
9*a3ebb524SRobert Mustacchi  * http://www.illumos.org/license/CDDL.
10*a3ebb524SRobert Mustacchi  */
11*a3ebb524SRobert Mustacchi 
12*a3ebb524SRobert Mustacchi /*
13*a3ebb524SRobert Mustacchi  * Copyright 2025 Oxide Computer Company
14*a3ebb524SRobert Mustacchi  */
15*a3ebb524SRobert Mustacchi 
16*a3ebb524SRobert Mustacchi #ifndef _SYS_GPIO_LTC4306_H
17*a3ebb524SRobert Mustacchi #define	_SYS_GPIO_LTC4306_H
18*a3ebb524SRobert Mustacchi 
19*a3ebb524SRobert Mustacchi /*
20*a3ebb524SRobert Mustacchi  * LTC4306 driver GPIO attribute definitions.
21*a3ebb524SRobert Mustacchi  *
22*a3ebb524SRobert Mustacchi  * The LTC4306 supports two basic attributes in addition to the standard name
23*a3ebb524SRobert Mustacchi  * attribute KGPIO_ATTR_NAME.
24*a3ebb524SRobert Mustacchi  */
25*a3ebb524SRobert Mustacchi 
26*a3ebb524SRobert Mustacchi #ifdef __cplusplus
27*a3ebb524SRobert Mustacchi extern "C" {
28*a3ebb524SRobert Mustacchi #endif
29*a3ebb524SRobert Mustacchi 
30*a3ebb524SRobert Mustacchi /*
31*a3ebb524SRobert Mustacchi  * LTC4306_GPIO_ATTR_INTPUT -- ro
32*a3ebb524SRobert Mustacchi  *	uint32_t -- ltc4306_gpio_input_t
33*a3ebb524SRobert Mustacchi  */
34*a3ebb524SRobert Mustacchi #define	LTC4306_GPIO_ATTR_INPUT		"ltc4306:input"
35*a3ebb524SRobert Mustacchi typedef enum {
36*a3ebb524SRobert Mustacchi 	LTC4306_GPIO_INPUT_LOW,
37*a3ebb524SRobert Mustacchi 	LTC4306_GPIO_INPUT_HIGH
38*a3ebb524SRobert Mustacchi } ltc4306_gpio_input_t;
39*a3ebb524SRobert Mustacchi 
40*a3ebb524SRobert Mustacchi /*
41*a3ebb524SRobert Mustacchi  * LTC4306_GPIO_ATTR_OUTPUT -- rw
42*a3ebb524SRobert Mustacchi  *	uint32_t -- ltc4306_gpio_output_t
43*a3ebb524SRobert Mustacchi  *
44*a3ebb524SRobert Mustacchi  * This controls the GPIO's output value. If the GPIO is configured as an input,
45*a3ebb524SRobert Mustacchi  * modifying this will not impact anything. When the output is set to disabled,
46*a3ebb524SRobert Mustacchi  * then the pin is put into an input-only mode.
47*a3ebb524SRobert Mustacchi  */
48*a3ebb524SRobert Mustacchi #define	LTC4306_GPIO_ATTR_OUTPUT	"ltc4306:output"
49*a3ebb524SRobert Mustacchi typedef enum {
50*a3ebb524SRobert Mustacchi 	LTC4306_GPIO_OUTPUT_DISABLED,
51*a3ebb524SRobert Mustacchi 	LTC4306_GPIO_OUTPUT_LOW,
52*a3ebb524SRobert Mustacchi 	LTC4306_GPIO_OUTPUT_HIGH
53*a3ebb524SRobert Mustacchi } ltc4306_gpio_output_t;
54*a3ebb524SRobert Mustacchi 
55*a3ebb524SRobert Mustacchi /*
56*a3ebb524SRobert Mustacchi  * LTC4306_GPIO_ATTR_OUTPUT_MODE -- rw
57*a3ebb524SRobert Mustacchi  *	uint32_t -- ltc4306_gpio_output_mode_t
58*a3ebb524SRobert Mustacchi  *
59*a3ebb524SRobert Mustacchi  * This controls whether the pin is configured as an open-drain pin or a
60*a3ebb524SRobert Mustacchi  * push-pull.
61*a3ebb524SRobert Mustacchi  */
62*a3ebb524SRobert Mustacchi #define	LTC4306_GPIO_ATTR_OUTPUT_MODE	"ltc4306:output_mode"
63*a3ebb524SRobert Mustacchi typedef enum {
64*a3ebb524SRobert Mustacchi 	LTC4306_GPIO_OUTPUT_MODE_PUSH_PULL,
65*a3ebb524SRobert Mustacchi 	LTC4306_GPIO_OUTPUT_MODE_OPEN_DRAIN
66*a3ebb524SRobert Mustacchi } ltc4306_gpio_output_mode_t;
67*a3ebb524SRobert Mustacchi 
68*a3ebb524SRobert Mustacchi #ifdef __cplusplus
69*a3ebb524SRobert Mustacchi }
70*a3ebb524SRobert Mustacchi #endif
71*a3ebb524SRobert Mustacchi 
72*a3ebb524SRobert Mustacchi #endif /* _SYS_GPIO_LTC4306_H */
73