/* Copyright 2018 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef __CROS_EC_KEYBOARD_BACKLIGHT_H #define __CROS_EC_KEYBOARD_BACKLIGHT_H /** * If GPIO_EN_KEYBOARD_BACKLIGHT is defined, this GPIO will be set when * the the keyboard backlight is enabled or disabled. This GPIO is used * to enable or disable the power to the keyboard backlight circuitry. * GPIO_EN_KEYBOARD_BACKLIGHT must be active high. */ struct kblight_conf { const struct kblight_drv *drv; }; struct kblight_drv { /** * Initialize the keyboard backlight controller * @return EC_SUCCESS or EC_ERROR_* */ int (*init)(void); /** * Set the brightness * @param percent * @return EC_SUCCESS or EC_ERROR_* */ int (*set)(int percent); /** * Enable or disable keyboard backlight * @param enable: 1=Enable, 0=Disable. * @return EC_SUCCESS or EC_ERROR_* */ int (*enable)(int enable); /** * Get the enabled state. * @return 1=Enable, 0=Disable, -1=Failed to read enabled state. */ int (*get_enabled)(void); }; /** * Initialize keyboard backlight per board */ __override_proto void board_kblight_init(void); /** * Shutdown keyboard backlight */ __override_proto void board_kblight_shutdown(void); /** * Set keyboard backlight brightness * * @param percent Brightness in percentage * @return EC_SUCCESS or EC_ERROR_* */ int kblight_set(int percent); /** * Get keyboard backlight brightness * * @return Brightness in percentage */ int kblight_get(void); /** * Enable or disable keyboard backlight * * @param enable: 1=Enable, 0=Disable. * @return EC_SUCCESS or EC_ERROR_* */ int kblight_enable(int enable); /** * Register keyboard backlight controller * * @param drv: Driver of keyboard backlight controller * @return EC_SUCCESS or EC_ERROR_* */ int kblight_register(const struct kblight_drv *drv); extern const struct kblight_drv kblight_pwm; #ifdef TEST_BUILD /** * @brief Get internal backlight enabled state. The value reported by * kblight_get_enabled() can be outdated due to a deferred function call * being required to update it. Using this function in tests improves * reliability and reduces the need to sleep. * * @return uint8_t 0 if disabled, 1 otherwise. */ uint8_t kblight_get_current_enable(void); #endif /* TEST_BUILD */ #endif /* __CROS_EC_KEYBOARD_BACKLIGHT_H */