blob: 6459fd297d3dde5e3391f413e19dc16063e8b5f4 [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef __LEDS_STATE_H
#define __LEDS_STATE_H
#include <linux/err.h>
#include <linux/mutex.h>
#include <linux/of.h>
#define DRIVER_NAME "[Led State]"
#define MESON_LEDS_SCPI_CNT 50
#define MESON_LEDS_MAX_BLINK_CNT 15
#define MESON_LEDS_BREATH_MAX_COUNT 4
/* Limit on stick mem */
//#define LED_MAX_TIMES_CNT 255
#define MESON_LEDS_MAX_TIMES_CNT 0x3F
#define MESON_LEDS_MAX_HIGH_MS (50 * MESON_LEDS_MAX_TIMES_CNT)
#define MESON_LEDS_MAX_LOW_MS (50 * MESON_LEDS_MAX_TIMES_CNT)
enum led_state_t {
LED_STATE_DEFAULT = 0,
LED_STATE_BRIGHTNESS,
LED_STATE_BREATH,
LED_STATE_BLINK_ON,
LED_STATE_BLINK_OFF,
LED_STATE_BLINK_BREATH,
LED_STATE_BLINK_ON_HANDLE,
LED_STATE_BLINK_OFF_HANDLE,
LED_STATE_BLINK_BREATH_HANDLE,
LED_STATE_INVALID,
};
enum LedBrightness {
LED_STATE_OFF = 0,
LED_STATE_HALF = 127,
LED_STATE_FULL = 255,
};
struct led_state_data {
struct led_classdev cdev;
};
/* leds state APIs */
int meson_led_state_set_brightness(u32 led_id, u32 brightness);
int meson_led_state_set_breath(u32 led_id, u32 breath_id);
int meson_led_state_set_blink_on(u32 led_id, u32 blink_times,
u32 blink_high, u32 blink_low,
u32 brightness_high,
u32 brightness_low);
int meson_led_state_set_blink_off(u32 led_id, u32 blink_times,
u32 blink_high, u32 blink_low,
u32 brightness_high,
u32 brightness_low);
#endif /* __LEDS_STATE_H */