Skip to content

Commit

Permalink
[Delta]: Add psuutil support for ag9032v1 (#1298)
Browse files Browse the repository at this point in the history
Fix the bug of psu module for ag9032v1

Signed-off-by: neal <neal.tai@deltaww.com>
  • Loading branch information
nealtai authored and lguohan committed Jan 11, 2018
1 parent 9669b34 commit 41cdb89
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 17 deletions.
57 changes: 57 additions & 0 deletions device/delta/x86_64-delta_ag9032v1-r0/plugins/psuutil.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import os.path

try:
from sonic_psu.psu_base import PsuBase
except ImportError as e:
raise ImportError (str(e) + "- required module not found")

class PsuUtil(PsuBase):
"""Platform-specific PSUutil class"""

def __init__(self):
PsuBase.__init__(self)

self.psu_path = "/sys/bus/i2c/devices/{}-0058/"
self.psu_oper_status = "in1_input"
self.psu_presence = "i2cget -y {} 0x50 0x00"


def get_num_psus(self):
"""
Retrieves the number of PSUs available on the device
:return: An integer, the number of PSUs available on the device
"""
return 2

def get_psu_status(self, index):
if index is None:
return False
Base_bus_number = 39
status = 0
#index from 1, psu attribute bus from 40
try:
with open(self.psu_path.format(index + Base_bus_number) + self.psu_oper_status, 'r') as power_status:
if int(power_status.read()) == 0 :
return False
else:
status = 1
except IOError:
return False
return status == 1

def get_psu_presence(self, index):
if index is None:
return False
Base_bus_number = 39
status = 0
try:
p = os.popen(self.psu_presence.format(index + Base_bus_number)+ "> /dev/null 2>&1")
if p.readline() != None:
status = 1
p.close()
except IOError:
return False
return status == 1


Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
* An hwmon driver for delta AG9032v1 PSU
* dps_800ab_16_d.c - Support for DPS-800AB-16 D Power Supply Module
*
* Copyright (C) 2017 Delta Networks, Inc.
* Copyright (C) 2016 Delta Network Technology Corporation
*
* Aries Lin <aries.lin@deltaww.com>
* DNI <DNIsales@delta.com.tw>
*
* Based on ym2651y.c
* Based on ad7414.c
Expand Down Expand Up @@ -361,6 +361,7 @@ static struct dps_800ab_16_d_data *dps_800ab_16_d_update_device( \
if (status < 0) {
dev_dbg(&client->dev, "reg %d, err %d\n",
regs_byte[i].reg, status);
*(regs_byte[i].value) = 0;
} else {
*(regs_byte[i].value) = status;
}
Expand All @@ -372,28 +373,31 @@ static struct dps_800ab_16_d_data *dps_800ab_16_d_update_device( \
if (status < 0) {
dev_dbg(&client->dev, "reg %d, err %d\n",
regs_word[i].reg, status);
*(regs_word[i].value) = 0;
} else {
*(regs_word[i].value) = status;
}
}

command = 0x9a; /* PSU mfr_model */
//data->mfr_model[1] = '\0';
status = dps_800ab_16_d_read_block(client, command,
data->mfr_model, ARRAY_SIZE(data->mfr_model) - 1);
data->mfr_model[ARRAY_SIZE(data->mfr_model) - 1] = '\0';
if (status < 0) {
dev_dbg(&client->dev, "reg %d, err %d\n", command,
status);
}

command = 0x9e; /* PSU mfr_serial */
status = dps_800ab_16_d_read_block(client, command,
data->mfr_serial, ARRAY_SIZE(data->mfr_serial) - 1);
data->mfr_serial[ARRAY_SIZE(data->mfr_serial) - 1] = '\0';
if (status < 0) {
dev_dbg(&client->dev, "reg %d, err %d\n", command,
status);
}
data->mfr_model, ARRAY_SIZE(data->mfr_model) - 1);
data->mfr_model[ARRAY_SIZE(data->mfr_model) - 1] = '\0';
if (status < 0) {
dev_dbg(&client->dev, "reg %d, err %d\n", command,status);
data->mfr_model[1] = '\0';
}

command = 0x9e; /* PSU mfr_serial */
//data->mfr_serial[1] = '\0';
status = dps_800ab_16_d_read_block(client, command,
data->mfr_serial, ARRAY_SIZE(data->mfr_serial) - 1);
data->mfr_serial[ARRAY_SIZE(data->mfr_serial) - 1] = '\0';
if (status < 0) {
dev_dbg(&client->dev, "reg %d, err %d\n", command,status);
data->mfr_serial[1] = '\0';
}

data->valid = 1;
}
Expand Down

0 comments on commit 41cdb89

Please sign in to comment.