mirror of
https://github.com/Telecominfraproject/OpenNetworkLinux.git
synced 2025-11-02 11:18:18 +00:00
Merge pull request #551 from jostar-yang/as9716_0419
Add onlp to support 3y power(yesm1300am). Fix LED.
This commit is contained in:
@@ -365,6 +365,7 @@ static int accton_i2c_psu_remove(struct i2c_client *client)
|
||||
*/
|
||||
static const struct i2c_device_id accton_i2c_psu_id[] = {
|
||||
{ "acbel_fsh082", 0 },
|
||||
{ "yesm1300am", 1 },
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, accton_i2c_psu_id);
|
||||
|
||||
@@ -40,7 +40,7 @@ struct accton_as9716_32d_led_data {
|
||||
struct mutex update_lock;
|
||||
char valid; /* != 0 if registers are valid */
|
||||
unsigned long last_updated; /* In jiffies */
|
||||
u8 reg_val[1]; /* only 1 register*/
|
||||
u8 reg_val[2]; /* only 1 register*/
|
||||
};
|
||||
|
||||
static struct accton_as9716_32d_led_data *ledctl = NULL;
|
||||
@@ -296,7 +296,7 @@ static void accton_as9716_32d_led_loc_set(struct led_classdev *led_cdev,
|
||||
static enum led_brightness accton_as9716_32d_led_loc_get(struct led_classdev *cdev)
|
||||
{
|
||||
accton_as9716_32d_led_update();
|
||||
return led_reg_val_to_light_mode(LED_TYPE_LOC, ledctl->reg_val[0]);
|
||||
return led_reg_val_to_light_mode(LED_TYPE_LOC, ledctl->reg_val[1]);
|
||||
}
|
||||
|
||||
static void accton_as9716_32d_led_fan_set(struct led_classdev *led_cdev,
|
||||
@@ -308,7 +308,7 @@ static void accton_as9716_32d_led_fan_set(struct led_classdev *led_cdev,
|
||||
static enum led_brightness accton_as9716_32d_led_fan_get(struct led_classdev *cdev)
|
||||
{
|
||||
accton_as9716_32d_led_update();
|
||||
return led_reg_val_to_light_mode(LED_TYPE_FAN, ledctl->reg_val[0]);
|
||||
return led_reg_val_to_light_mode(LED_TYPE_FAN, ledctl->reg_val[1]);
|
||||
}
|
||||
|
||||
static void accton_as9716_32d_led_psu1_set(struct led_classdev *led_cdev,
|
||||
@@ -320,7 +320,7 @@ static void accton_as9716_32d_led_psu1_set(struct led_classdev *led_cdev,
|
||||
static enum led_brightness accton_as9716_32d_led_psu1_get(struct led_classdev *cdev)
|
||||
{
|
||||
accton_as9716_32d_led_update();
|
||||
return led_reg_val_to_light_mode(LED_TYPE_PSU1, ledctl->reg_val[0]);
|
||||
return led_reg_val_to_light_mode(LED_TYPE_PSU1, ledctl->reg_val[1]);
|
||||
}
|
||||
|
||||
static void accton_as9716_32d_led_psu2_set(struct led_classdev *led_cdev,
|
||||
@@ -332,7 +332,7 @@ static void accton_as9716_32d_led_psu2_set(struct led_classdev *led_cdev,
|
||||
static enum led_brightness accton_as9716_32d_led_psu2_get(struct led_classdev *cdev)
|
||||
{
|
||||
accton_as9716_32d_led_update();
|
||||
return led_reg_val_to_light_mode(LED_TYPE_PSU2, ledctl->reg_val[0]);
|
||||
return led_reg_val_to_light_mode(LED_TYPE_PSU2, ledctl->reg_val[1]);
|
||||
}
|
||||
|
||||
static struct led_classdev accton_as9716_32d_leds[] = {
|
||||
|
||||
@@ -177,8 +177,6 @@ static int onlp_to_driver_led_mode(enum onlp_led_id id, onlp_led_mode_t onlp_led
|
||||
int
|
||||
onlp_ledi_init(void)
|
||||
{
|
||||
onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_DIAG), ONLP_LED_MODE_OFF);
|
||||
onlp_ledi_mode_set(ONLP_LED_ID_CREATE(LED_LOC), ONLP_LED_MODE_OFF);
|
||||
|
||||
return ONLP_STATUS_OK;
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ int onlp_file_read_string(char *filename, char *buffer, int buf_size, int data_l
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define I2C_PSU_MODEL_NAME_LEN 9
|
||||
#define I2C_PSU_MODEL_NAME_LEN 10
|
||||
#define I2C_PSU_FAN_DIR_LEN 3
|
||||
|
||||
psu_type_t get_psu_type(int id, char* modelname, int modelname_len)
|
||||
@@ -107,13 +107,21 @@ psu_type_t get_psu_type(int id, char* modelname, int modelname_len)
|
||||
return PSU_TYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
if (!strncmp(model_name, "FSH082", strlen("FSH082")))
|
||||
{
|
||||
if (modelname)
|
||||
if (!strncmp(model_name, "FSH082", strlen("FSH082")))
|
||||
{
|
||||
if (modelname)
|
||||
strncpy(modelname, model_name, strlen("FSH082")<(modelname_len-1)?strlen("FSH082"):(modelname_len-1));
|
||||
|
||||
return PSU_TYPE_ACBEL;
|
||||
}
|
||||
|
||||
if (!strncmp(model_name, "YESM1300AM", strlen("YESM1300AM")))
|
||||
{
|
||||
if (modelname)
|
||||
strncpy(modelname, model_name, strlen("YESM1300AM")<(modelname_len-1)?strlen("YESM1300AM"):(modelname_len-1));
|
||||
|
||||
return PSU_TYPE_YESM1300;
|
||||
}
|
||||
if (!strncmp(model_name, "YM-2651Y", strlen("YM-2651Y")))
|
||||
{
|
||||
if (modelname)
|
||||
|
||||
@@ -71,6 +71,7 @@ int psu_ym2651y_pmbus_info_set(int id, char *node, int value);
|
||||
typedef enum psu_type {
|
||||
PSU_TYPE_UNKNOWN,
|
||||
PSU_TYPE_ACBEL,
|
||||
PSU_TYPE_YESM1300,
|
||||
PSU_TYPE_YM2651Y,
|
||||
PSU_TYPE_AC_F2B,
|
||||
PSU_TYPE_AC_B2F
|
||||
|
||||
@@ -219,6 +219,7 @@ onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info)
|
||||
|
||||
switch (psu_type) {
|
||||
case PSU_TYPE_ACBEL:
|
||||
case PSU_TYPE_YESM1300:
|
||||
ret = psu_data_info_get(info);
|
||||
break;
|
||||
case PSU_TYPE_YM2651Y:
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <limits.h>
|
||||
|
||||
#include <onlplib/i2c.h>
|
||||
#include <onlp/platformi/sysi.h>
|
||||
#include <onlp/platformi/ledi.h>
|
||||
#include <onlp/platformi/thermali.h>
|
||||
@@ -69,18 +70,26 @@ onlp_sysi_platform_get(void)
|
||||
int
|
||||
onlp_sysi_onie_data_get(uint8_t** data, int* size)
|
||||
{
|
||||
int ret = ONLP_STATUS_OK;
|
||||
int i = 0;
|
||||
uint8_t* rdata = aim_zmalloc(256);
|
||||
|
||||
if(onlp_file_read(rdata, 256, size, IDPROM_PATH) == ONLP_STATUS_OK) {
|
||||
if(*size == 256) {
|
||||
*data = rdata;
|
||||
return ONLP_STATUS_OK;
|
||||
|
||||
for (i = 0; i < 128; i++) {
|
||||
ret = onlp_i2c_readw(0, 0x56, i*2, ONLP_I2C_F_FORCE);
|
||||
if (ret < 0) {
|
||||
aim_free(rdata);
|
||||
*size = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
rdata[i*2] = ret & 0xff;
|
||||
rdata[i*2+1] = (ret >> 8) & 0xff;
|
||||
}
|
||||
|
||||
aim_free(rdata);
|
||||
*size = 0;
|
||||
return ONLP_STATUS_E_INTERNAL;
|
||||
*size = 256;
|
||||
*data = rdata;
|
||||
|
||||
return ONLP_STATUS_OK;
|
||||
}
|
||||
|
||||
int
|
||||
|
||||
@@ -74,5 +74,4 @@ class OnlPlatform_x86_64_accton_as9716_32d_r0(OnlPlatformAccton,
|
||||
subprocess.call('echo port%d > /sys/bus/i2c/devices/%d-0050/port_name' % (port, port+24), shell=True)
|
||||
|
||||
|
||||
self.new_i2c_device('24c02', 0x56, 0)
|
||||
return True
|
||||
|
||||
Reference in New Issue
Block a user