/*
 * Copyright (c) 2019,2020, The Linux Foundation. All rights reserved.
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
 * above copyright notice and this permission notice appear in all copies.
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef _SSDK_LED_H_
#define _SSDK_LED_H_

#ifdef __cplusplus
extern "C" {
#endif                          /* __cplusplus */

#define SRC_SELECTION_0           0x0
#define SRC_SELECTION_1           0x1
#define SRC_SELECTION_2           0x2
#define LED_SRC_ID_1              0x1
#define LED_SRC_ID_2              0x2
#define LED_SRC_ID_3              0x3
#define LED_SRC_ID_4              0x4
#define LED_SRC_ID_5              0x5
#define LED_SRC_ID_6              0x6
#define LED_SRC_ID_7              0x7
#define LED_SRC_ID_8              0x8
#define LED_SRC_ID_9              0x9
#define LED_SRC_ID_10             0xa
#define LED_SRC_ID_11             0xb
#define LED_SRC_ID_12             0xc
#define LED_SRC_ID_13             0xd
#define LED_SRC_ID_14             0xe
#define LED_SRC_ID_15             0xf


#ifdef DESS
int ssdk_dess_led_init(ssdk_init_cfg *cfg);
#endif

#ifdef IN_LED
sw_error_t ssdk_led_init(a_uint32_t dev_id, ssdk_init_cfg *cfg);
#endif
#ifdef __cplusplus
}
#endif                          /* __cplusplus */
#endif                          /* _SSDK_LED_H */

