11368d06dSDuje Mihanović /* SPDX-License-Identifier: GPL-2.0-only */
21368d06dSDuje Mihanović /*
31368d06dSDuje Mihanović  * Shared library for Kinetic's ExpressWire protocol.
41368d06dSDuje Mihanović  * This protocol works by pulsing the ExpressWire IC's control GPIO.
51368d06dSDuje Mihanović  * ktd2692 and ktd2801 are known to use this protocol.
61368d06dSDuje Mihanović  */
71368d06dSDuje Mihanović 
81368d06dSDuje Mihanović #ifndef _LEDS_EXPRESSWIRE_H
91368d06dSDuje Mihanović #define _LEDS_EXPRESSWIRE_H
101368d06dSDuje Mihanović 
11*7774f3d1SAndy Shevchenko #include <linux/types.h>
12*7774f3d1SAndy Shevchenko 
13*7774f3d1SAndy Shevchenko struct gpio_desc;
141368d06dSDuje Mihanović 
151368d06dSDuje Mihanović struct expresswire_timing {
161368d06dSDuje Mihanović 	unsigned long poweroff_us;
171368d06dSDuje Mihanović 	unsigned long detect_delay_us;
181368d06dSDuje Mihanović 	unsigned long detect_us;
191368d06dSDuje Mihanović 	unsigned long data_start_us;
201368d06dSDuje Mihanović 	unsigned long end_of_data_low_us;
211368d06dSDuje Mihanović 	unsigned long end_of_data_high_us;
221368d06dSDuje Mihanović 	unsigned long short_bitset_us;
231368d06dSDuje Mihanović 	unsigned long long_bitset_us;
241368d06dSDuje Mihanović };
251368d06dSDuje Mihanović 
261368d06dSDuje Mihanović struct expresswire_common_props {
271368d06dSDuje Mihanović 	struct gpio_desc *ctrl_gpio;
281368d06dSDuje Mihanović 	struct expresswire_timing timing;
291368d06dSDuje Mihanović };
301368d06dSDuje Mihanović 
311368d06dSDuje Mihanović void expresswire_power_off(struct expresswire_common_props *props);
321368d06dSDuje Mihanović void expresswire_enable(struct expresswire_common_props *props);
331368d06dSDuje Mihanović void expresswire_start(struct expresswire_common_props *props);
341368d06dSDuje Mihanović void expresswire_end(struct expresswire_common_props *props);
351368d06dSDuje Mihanović void expresswire_set_bit(struct expresswire_common_props *props, bool bit);
361368d06dSDuje Mihanović void expresswire_write_u8(struct expresswire_common_props *props, u8 val);
371368d06dSDuje Mihanović 
381368d06dSDuje Mihanović #endif /* _LEDS_EXPRESSWIRE_H */
39