sonic-buildimage/platform/pddf/i2c/modules/include/pddf_led_defs.h

121 lines
2.8 KiB
C
Raw Normal View History

/*
* Copyright 2019 Broadcom.
* The term Broadcom refers to Broadcom Inc. and/or its subsidiaries.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*
* Description
* Platform LED related defines and structures
*/
/*****************************************
* kobj list
*****************************************/
struct kobject *platform_kobj=NULL;
struct kobject *led_kobj=NULL;
struct kobject *state_attr_kobj=NULL;
struct kobject *cur_state_kobj=NULL;
/*****************************************
* Static Data provided from user
* space JSON data file
*****************************************/
#define NAME_SIZE 32
typedef enum {
STATUS_LED_COLOR_GREEN,
STATUS_LED_COLOR_GREEN_BLINK,
STATUS_LED_COLOR_RED,
STATUS_LED_COLOR_RED_BLINK,
STATUS_LED_COLOR_AMBER,
STATUS_LED_COLOR_AMBER_BLINK,
STATUS_LED_COLOR_BLUE,
STATUS_LED_COLOR_BLUE_BLINK,
STATUS_LED_COLOR_OFF,
MAX_LED_STATUS
}LED_STATUS;
char* LED_STATUS_STR[] = {
"STATUS_LED_COLOR_GREEN",
"STATUS_LED_COLOR_GREEN_BLINK",
"STATUS_LED_COLOR_RED",
"STATUS_LED_COLOR_RED_BLINK",
"STATUS_LED_COLOR_AMBER",
"STATUS_LED_COLOR_AMBER_BLINK",
"STATUS_LED_COLOR_BLUE",
"STATUS_LED_COLOR_BLUE_BLINK",
"STATUS_LED_COLOR_OFF"
};
typedef struct
{
char bits[NAME_SIZE];
int pos;
int mask_bits;
}MASK_BITS;
typedef struct
{
int swpld_addr;
int swpld_addr_offset;
MASK_BITS bits;
unsigned short value;
} LED_DATA;
typedef struct
{
int state;
char color[NAME_SIZE];
} CUR_STATE_DATA;
typedef struct
{
CUR_STATE_DATA cur_state;
char device_name[NAME_SIZE];
int index;
LED_DATA data[MAX_LED_STATUS];
int swpld_addr;
int swpld_addr_offset;
} LED_OPS_DATA;
typedef enum{
LED_SYS,
LED_PSU,
LED_FAN,
LED_FANTRAY,
LED_DIAG,
LED_LOC,
LED_TYPE_MAX
} LED_TYPE;
char* LED_TYPE_STR[LED_TYPE_MAX] =
{
"LED_SYS",
"LED_PSU",
"LED_FAN",
"LED_FANTRAY",
"LED_DIAG",
"LED_LOC",
};
/*****************************************
* Data exported from kernel for
* user space plugin to get/set
*****************************************/
#define PDDF_LED_DATA_ATTR( _prefix, _name, _mode, _show, _store, _type, _len, _addr) \
struct pddf_data_attribute pddf_dev_##_prefix##_attr_##_name = { .dev_attr = __ATTR(_name, _mode, _show, _store), \
.type = _type , \
.len = _len , \
.addr = _addr }