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