| /* SPDX-License-Identifier: GPL-2.0-only */ | |
| /* | |
| * Shared library for Kinetic's ExpressWire protocol. | |
| * This protocol works by pulsing the ExpressWire IC's control GPIO. | |
| * ktd2692 and ktd2801 are known to use this protocol. | |
| */ | |
| #ifndef _LEDS_EXPRESSWIRE_H | |
| #define _LEDS_EXPRESSWIRE_H | |
| #include <linux/types.h> | |
| struct gpio_desc; | |
| struct expresswire_timing { | |
| unsigned long poweroff_us; | |
| unsigned long detect_delay_us; | |
| unsigned long detect_us; | |
| unsigned long data_start_us; | |
| unsigned long end_of_data_low_us; | |
| unsigned long end_of_data_high_us; | |
| unsigned long short_bitset_us; | |
| unsigned long long_bitset_us; | |
| }; | |
| struct expresswire_common_props { | |
| struct gpio_desc *ctrl_gpio; | |
| struct expresswire_timing timing; | |
| }; | |
| void expresswire_power_off(struct expresswire_common_props *props); | |
| void expresswire_enable(struct expresswire_common_props *props); | |
| void expresswire_start(struct expresswire_common_props *props); | |
| void expresswire_end(struct expresswire_common_props *props); | |
| void expresswire_set_bit(struct expresswire_common_props *props, bool bit); | |
| void expresswire_write_u8(struct expresswire_common_props *props, u8 val); | |
| #endif /* _LEDS_EXPRESSWIRE_H */ |