summaryrefslogtreecommitdiffstats
path: root/meta-facebook/meta-yosemite/recipes-yosemite/ipmid/files/sensor.c
diff options
context:
space:
mode:
Diffstat (limited to 'meta-facebook/meta-yosemite/recipes-yosemite/ipmid/files/sensor.c')
-rw-r--r--meta-facebook/meta-yosemite/recipes-yosemite/ipmid/files/sensor.c371
1 files changed, 0 insertions, 371 deletions
diff --git a/meta-facebook/meta-yosemite/recipes-yosemite/ipmid/files/sensor.c b/meta-facebook/meta-yosemite/recipes-yosemite/ipmid/files/sensor.c
deleted file mode 100644
index 57ab5ec..0000000
--- a/meta-facebook/meta-yosemite/recipes-yosemite/ipmid/files/sensor.c
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- *
- * Copyright 2014-present Facebook. All Rights Reserved.
- *
- * This file provides platform specific implementation of sensor information
- *
- *
- * 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.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#include "sensor.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <syslog.h>
-#include <string.h>
-
-#define SENSOR_MGMT_MAX 1
-#define SENSOR_DISC_MAX 8
-#define SENSOR_THRESH_MAX 1
-#define SENSOR_OEM_MAX 1
-
-#define BMC_SLAVE_ADDR 0x20
-
-typedef struct {
- unsigned char num;
- sensor_mgmt_t sensor[SENSOR_MGMT_MAX];
-} sensor_mgmt_info_t;
-
-typedef struct {
- unsigned char num;
- sensor_disc_t sensor[SENSOR_DISC_MAX];
-} sensor_disc_info_t;
-
-typedef struct {
- unsigned char num;
- sensor_thresh_t sensor[SENSOR_THRESH_MAX];
-} sensor_thresh_info_t;
-
-typedef struct {
- unsigned char num;
- sensor_oem_t sensor[SENSOR_OEM_MAX];
-} sensor_oem_info_t;
-
-// Global structures
-static sensor_mgmt_info_t g_sensor_mgmt = {0};
-static sensor_disc_info_t g_sensor_disc = {0};
-static sensor_thresh_info_t g_sensor_thresh = {0};
-static sensor_oem_info_t g_sensor_oem = {0};
-
-static void
-populate_mgmt_sensors(void) {
- sensor_mgmt_t sensor = {0};
-
- // Add record for the AST2100 BMC
- sensor.slave_addr = BMC_SLAVE_ADDR;
- sensor.chan_no = 0x0; // Primary BMC controller
-
- // Init Agent = false
- sensor.pwr_state_init = 0x00;
-
- // FRUID = true, SEL = true, SDR = true, Sensor = true
- sensor.dev_caps = 0x0F;
-
- // Device ID string
- // Type - 0xC0: ASCII, Length - 0x09
- sensor.str_type_len = 0xC0 + 0x09;
- strncpy(sensor.str, "Yosemite-BMC", 0x09);
-
- // Add this sensor to the global table
- if (g_sensor_mgmt.num >= SENSOR_MGMT_MAX) {
- syslog(LOG_WARNING, "populate_mgmt_sensors: num exceeded\n");
- return;
- }
-
- memcpy(&g_sensor_mgmt.sensor[g_sensor_mgmt.num], &sensor, sizeof(sensor_mgmt_t));
-
- g_sensor_mgmt.num++;
-
- return;
-}
-
-static void
-populate_disc_sensors(void) {
-
- sensor_disc_t sensor = {0};
-
- // Sensor uS Status
- // Sensor# 0x10
- // EntitiyId# 0xD0, EntityInst# 0x00
- // Sensor Type# Chassis 0x18
- // Event Read/Type# OEM 0x70
- sensor.owner= BMC_SLAVE_ADDR;
- sensor.lun = 0x00;
- sensor.sensor_num = 0x10;
-
- sensor.ent_id = 0xD0;
- sensor.ent_inst = 0x00;
- // Enable Scanning, Enable Events
- sensor.sensor_init = 0x63;
- // Supports Auto Re-Arm
- sensor.sensor_caps = 0x40;
- sensor.sensor_type = 0x18;
- sensor.evt_read_type = 0x70;
- // 1-bit for CPU0 Thermal Trip
- sensor.assert_evt_mask[0] = 0x04;
- sensor.deassert_evt_mask[0] = 0x00;
- sensor.read_evt_mask[0] = 0x04;
-
- // Device ID string
- // Type - 0xC0: ASCII, Length - 12
- sensor.str_type_len = 0xC0 + 9;
- strncpy(sensor.str, "uS-Status", 9);
-
- // Add this sensor to the global table
- if (g_sensor_disc.num >= SENSOR_DISC_MAX) {
- syslog(LOG_WARNING, "populate_disc_sensors: num exceeded\n");
- return;
- }
-
- memcpy(&g_sensor_disc.sensor[g_sensor_disc.num], &sensor, sizeof(sensor_disc_t));
-
- g_sensor_disc.num++;
-
- // Sensor SEL Status
- // Sensor# 0x5F
- // EntitiyId# 0xD0, EntityInst# 0x02
- // Sensor Type# OEM: 0xC0
- // Event Read/Type# Sensor Specific: 0x6F
- sensor.owner= BMC_SLAVE_ADDR;
- sensor.lun = 0x00;
- sensor.sensor_num = 0x5F;
-
- sensor.ent_id = 0xD0;
- sensor.ent_inst = 0x02;
- // Enable Scanning, Enable Events
- sensor.sensor_init = 0x63;
- // Supports Auto Re-Arm
- sensor.sensor_caps = 0x40;
- sensor.sensor_type = 0xC0;
- sensor.evt_read_type = 0x6F;
- // SEL Clear(bit1), SEL Rollover(bit8)
- sensor.assert_evt_mask[0] = 0x02;
- sensor.assert_evt_mask[1] = 0x01;
- sensor.deassert_evt_mask[0] = 0x00;
- sensor.deassert_evt_mask[1] = 0x00;
- sensor.read_evt_mask[0] = 0x02;
- sensor.read_evt_mask[1] = 0x01;
-
- // Device ID string
- // Type - 0xC0: ASCII, Length - 12
- sensor.str_type_len = 0xC0 + 10;
- strncpy(sensor.str, "SEL-Status", 10);
-
- // Add this sensor to the global table
- if (g_sensor_disc.num >= SENSOR_DISC_MAX) {
- syslog(LOG_WARNING, "populate_disc_sensors: num exceeded\n");
- return;
- }
-
- memcpy(&g_sensor_disc.sensor[g_sensor_disc.num], &sensor, sizeof(sensor_disc_t));
-
- g_sensor_disc.num++;
-
-
- // Sensor WDT
- // Sensor# 0x60
- // EntitiyId# 0xD0, EntityInst# 0x03
- // Sensor Type# WDT2: 0x23
- // Event Read/Type# Sensor Specific: 0x6F
- sensor.owner= BMC_SLAVE_ADDR;
- sensor.lun = 0x00;
- sensor.sensor_num = 0x60;
-
- sensor.ent_id = 0xD0;
- sensor.ent_inst = 0x03;
- // Enable Scanning, Enable Events
- sensor.sensor_init = 0x63;
- // Supports Auto Re-Arm
- sensor.sensor_caps = 0x40;
- sensor.sensor_type = 0x23;
- sensor.evt_read_type = 0x6F;
- // 5 bits for expiry, reset, pwrdown, pwrcycle, timer
- sensor.assert_evt_mask[0] = 0x0F;
- sensor.assert_evt_mask[1] = 0x01;
- sensor.deassert_evt_mask[0] = 0x00;
- sensor.deassert_evt_mask[1] = 0x00;
- sensor.read_evt_mask[0] = 0x0F;
- sensor.read_evt_mask[1] = 0x01;
-
- // Device ID string
- // Type - 0xC0: ASCII, Length - 12
- sensor.str_type_len = 0xC0 + 3;
- strncpy(sensor.str, "WDT", 3);
-
- // Add this sensor to the global table
- if (g_sensor_disc.num >= SENSOR_DISC_MAX) {
- syslog(LOG_WARNING, "populate_disc_sensors: num exceeded\n");
- return;
- }
-
- memcpy(&g_sensor_disc.sensor[g_sensor_disc.num], &sensor, sizeof(sensor_disc_t));
-
- g_sensor_disc.num++;
-
-
- // Sensor Chassis Pwr Sts
- // Sensor# 0x70
- // EntitiyId# 0x15, EntityInst# 0x00
- // Sensor Type# OEM: 0xC8
- // Event Read/Type# Sensor Specific: 0x6F
- sensor.owner= BMC_SLAVE_ADDR;
- sensor.lun = 0x00;
- sensor.sensor_num = 0x70;
-
- sensor.ent_id = 0x15;
- sensor.ent_inst = 0x00;
- // Enable Scanning, Enable Events
- sensor.sensor_init = 0x63;
- // Supports Auto Re-Arm
- sensor.sensor_caps = 0x40;
- sensor.sensor_type = 0xC8;
- sensor.evt_read_type = 0x6F;
- // 6 bits for pwroff, pwrcycle, pwron, softdown, ac-lost, hard-reset
- sensor.assert_evt_mask[0] = 0x3F;
- sensor.deassert_evt_mask[0] = 0x00;
- sensor.read_evt_mask[0] = 0x3F;
-
- // Device ID string
- // Type - 0xC0: ASCII, Length - 12
- sensor.str_type_len = 0xC0 + 13;
- strncpy(sensor.str, "CH-Pwr-Status", 13);
-
- // Add this sensor to the global table
- if (g_sensor_disc.num >= SENSOR_DISC_MAX) {
- syslog(LOG_WARNING, "populate_disc_sensors: num exceeded\n");
- return;
- }
-
- memcpy(&g_sensor_disc.sensor[g_sensor_disc.num], &sensor, sizeof(sensor_disc_t));
-
- g_sensor_disc.num++;
-
- // Sensor CPU DIMM Hot
- // Sensor# 0xB3
- // EntitiyId# 0xD0, EntityInst# 0x05
- // Sensor Type# OEM 0xC6
- // Event Read/Type# Sensor Specific 6Fh
- sensor.owner= BMC_SLAVE_ADDR;
- sensor.lun = 0x00;
- sensor.sensor_num = 0xB3;
-
- sensor.ent_id = 0xD0;
- sensor.ent_inst = 0x05;
- // Enable Scanning, Enable Events
- sensor.sensor_init = 0x63;
- // Supports Auto Re-Arm
- sensor.sensor_caps = 0x40;
- sensor.sensor_type = 0xC6;
- sensor.evt_read_type = 0x6F;
- // Two bits for CPU Hot, DIMM Hot
- sensor.assert_evt_mask[0] = 0x05;
- sensor.deassert_evt_mask[0] = 0x05;
- sensor.read_evt_mask[0] = 0x05;
-
- // Device ID string
- // Type - 0xC0: ASCII, Length - 12
- sensor.str_type_len = 0xC0 + 12;
- strncpy(sensor.str, "CPU_DIMM_HOT", 12);
-
- // Add this sensor to the global table
- if (g_sensor_disc.num >= SENSOR_DISC_MAX) {
- syslog(LOG_WARNING, "populate_disc_sensors: num exceeded\n");
- return;
- }
-
- memcpy(&g_sensor_disc.sensor[g_sensor_disc.num], &sensor, sizeof(sensor_disc_t));
-
- g_sensor_disc.num++;
-
- // Sensor PMBus Status Word Low
- // Sensor PMBus Status Word High
- // Sensor PMBus Status MFR
- // Sensor PMBus Status Input
- // Sensor NTP Status
- // Sensor# 0xED
- // EntitiyId# 0x35, EntityInst# 0x00
- // Sensor Type# OEM 0xC7
- // Event Read/Type# Sensor Specific 6Fh
- sensor.owner= BMC_SLAVE_ADDR;
- sensor.lun = 0x00;
- sensor.sensor_num = 0xED;
-
- sensor.ent_id = 0x35;
- sensor.ent_inst = 0x00;
- // Enable Scanning, Enable Events
- sensor.sensor_init = 0x63;
- // Supports Auto Re-Arm
- sensor.sensor_caps = 0x40;
- sensor.sensor_type = 0xC7;
- sensor.evt_read_type = 0x6F;
- // 1-bit for date/time sync failed
- sensor.assert_evt_mask[0] = 0x01;
- sensor.deassert_evt_mask[0] = 0x00;
- sensor.read_evt_mask[0] = 0x01;
-
- // Device ID string
- // Type - 0xC0: ASCII, Length - 10
- sensor.str_type_len = 0xC0 + 12;
- strncpy(sensor.str, "NTP-Status", 10);
-
- // Add this sensor to the global table
- if (g_sensor_disc.num >= SENSOR_DISC_MAX) {
- syslog(LOG_WARNING, "populate_disc_sensors: num exceeded\n");
- return;
- }
-
- memcpy(&g_sensor_disc.sensor[g_sensor_disc.num], &sensor, sizeof(sensor_disc_t));
-
- g_sensor_disc.num++;
-
- return;
-}
-
-// Access functions for Sensor Table
-void
-plat_sensor_mgmt_info(int *p_num, sensor_mgmt_t **p_sensor) {
- *p_num = g_sensor_mgmt.num;
- *p_sensor = g_sensor_mgmt.sensor;
-}
-
-void
-plat_sensor_disc_info(int *p_num, sensor_disc_t **p_sensor) {
- *p_num = g_sensor_disc.num;
- *p_sensor = g_sensor_disc.sensor;
-}
-
-void
-plat_sensor_thresh_info(int *p_num, sensor_thresh_t **p_sensor) {
- *p_num = g_sensor_thresh.num;
- *p_sensor = g_sensor_thresh.sensor;
-}
-
-void
-plat_sensor_oem_info(int *p_num, sensor_oem_t **p_sensor) {
- *p_num = g_sensor_oem.num;
- *p_sensor = g_sensor_oem.sensor;
-}
-
-// Initialize Sensor Table
-int
-plat_sensor_init(void) {
-
- // Populate all Sensors
- populate_mgmt_sensors();
- populate_disc_sensors();
-
- return 0;
-}
OpenPOWER on IntegriCloud