meta-facebook/meta-fby2/recipes-fby2/plat-libs/files/pal/pal.h (176 lines of code) (raw):

/* * * Copyright 2015-present Facebook. All Rights Reserved. * * * 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. */ #ifndef __PAL_H__ #define __PAL_H__ #include <openbmc/obmc-pal.h> #include <openbmc/kv.h> #ifdef __cplusplus extern "C" { #endif #include <facebook/bic.h> #include <facebook/fby2_common.h> #include <facebook/fby2_fruid.h> #include <facebook/fby2_sensor.h> #define MAX_NUM_FAN 2 #define MAX_NODES 4 #define MAX_NIC_TEMP_RETRY 3 #define SOCK_PATH_ASD_BIC "/tmp/asd_bic_socket" #define SOCK_PATH_JTAG_MSG "/tmp/jtag_msg_socket" #define YV250_NVMe_Temp_Dev_UCR 75 #define MAX_DEV_JTAG_GPIO 4 extern char * key_list[]; extern size_t pal_pwm_cnt; extern size_t pal_tach_cnt; extern char pal_pwm_list[]; extern char pal_tach_list[]; extern const char pal_fru_list[]; extern const char pal_server_list[]; extern const char pal_dev_fru_list[]; extern const char pal_dev_pwr_list[]; extern const char pal_dev_pwr_option_list[]; enum { USB_MUX_OFF, USB_MUX_ON, }; enum { DEVICE_POWER_OFF, DEVICE_POWER_ON, }; enum { FFI_STORAGE, FFI_ACCELERATOR, }; enum { MEFF_M2_22110 = 0x35, MEFF_DUAL_M2 = 0xF0, }; enum { DEV_FRU_NOT_COMPLETE, DEV_FRU_COMPLETE, DEV_FRU_IGNORE, }; enum { HAND_SW_SERVER1 = 1, HAND_SW_SERVER2, HAND_SW_SERVER3, HAND_SW_SERVER4, HAND_SW_BMC }; enum { BIC_MODE_NORMAL = 0x01, BIC_MODE_UPDATE = 0x0F, }; enum { FAN_0 = 0, FAN_1, FAN_2, FAN_3, }; enum { POST_RESET = 0, POST_SET }; enum { POST_END_CHECK = 0, NVME_READY_CHECK }; enum { IMC_DUMP_END = 0, IMC_DUMP_START, IMC_DUMP_PROCESS, }; enum { TRANS_TYPE_VALID = 0, OPER_VALID, LEVEL_VALID, PROC_CONTEXT_CORRUPT_VALID, CORR_VALID, PRECISE_PC_VALID, RESTART_PC_VALID, PARTICIPATION_TYPE_VALID, TIMEOUT_VALID, ADDRESS_SPACE_VALID, MEM_ATTR_VALID, ACCESS_MODE_VALID }; enum { CACHE_ERROR = 0, TLB_ERROR, BUS_ERROR, MICRO_ARCH_ERROR }; enum { DRIVE_NOT_READY = 0, DRIVE_READY }; int pal_is_slot_latch_closed(uint8_t slot_id, uint8_t *status); int pal_get_dev_info(uint8_t slot_id, uint8_t dev_id, uint8_t *nvme_ready, uint8_t *status, uint8_t *type, uint8_t force); void pal_power_policy_control(uint8_t slot_id, char *last_ps, bool force); int pal_baseboard_clock_control(uint8_t slot_id, int ctrl); int pal_is_server_12v_on(uint8_t slot_id, uint8_t *status); int pal_slot_pair_12V_off(uint8_t slot_id); bool pal_is_hsvc_ongoing(uint8_t slot_id); int pal_set_hsvc_ongoing(uint8_t slot_id, uint8_t status, uint8_t ident); int pal_is_debug_card_prsnt(uint8_t *status); int pal_get_hand_sw_physically(uint8_t *pos); int pal_get_hand_sw(uint8_t *pos); int pal_get_usb_sw(uint8_t *pos); int pal_enable_usb_mux(uint8_t state); int pal_switch_vga_mux(uint8_t slot); int pal_switch_usb_mux(uint8_t slot); int pal_switch_uart_mux(uint8_t slot); int pal_post_enable(uint8_t slot); int pal_post_disable(uint8_t slot); int pal_post_get_last(uint8_t slot, uint8_t *post); int pal_get_pwr_btn(uint8_t *status); int pal_get_rst_btn(uint8_t *status); int pal_set_sled_led(uint8_t status); int pal_set_id_led(uint8_t slot, uint8_t status); int pal_set_slot_id_led(uint8_t slot, uint8_t status); int pal_get_fru_sdr_path(uint8_t fru, char *path); int pal_sensor_sdr_init(uint8_t fru, sensor_info_t *sinfo); int pal_get_pair_slot_type(uint8_t fru); int pal_system_config_check(uint8_t slot_id); int pal_read_nic_fruid(const char *path, int size); void pal_notify_nic(uint8_t slot); int pal_get_fan_latch(uint8_t *status); int pal_get_fru_post(uint8_t fru, uint8_t *value); uint8_t pal_is_post_ongoing(); int pal_set_nvme_ready(uint8_t fru, uint8_t value); int pal_get_nvme_ready(uint8_t fru, uint8_t *value); uint8_t pal_is_nvme_ready(); int pal_ignore_thresh(uint8_t fru, uint8_t snr_num, uint8_t thresh); long pal_get_fscd_counter(); int pal_set_fscd_counter(long value); int pal_set_ignore_thresh(int value); int pal_get_ignore_thresh(int *value); int pal_set_post_start_timestamp(uint8_t fru, uint8_t method); int pal_get_post_start_timestamp(uint8_t fru, long *value); int pal_set_post_end_timestamp(uint8_t fru); int pal_get_post_end_timestamp(uint8_t fru, long *value); int pal_set_nvme_ready_timestamp(uint8_t fru); int pal_get_nvme_ready_timestamp(uint8_t fru, long *value); uint8_t pal_is_post_time_out(); uint8_t pal_is_nvme_time_out(); void pal_check_fscd_watchdog(); uint8_t pal_get_server_type(uint8_t fru); int pal_set_tpm_timeout(uint8_t slot, int timeout); int pal_set_tpm_physical_presence_reset(uint8_t slot, uint8_t reset); int pal_get_sensor_util_timeout(uint8_t fru); int pal_set_m2_prsnt(uint8_t slot_id, uint8_t dev_id, uint8_t present); int pal_is_ocp30_nic(void); int pal_set_dev_config_setup(uint8_t value); int pal_get_dev_config_setup(uint8_t *value); int pal_set_dev_sdr_setup(uint8_t fru, uint8_t value); int pal_get_dev_sdr_setup(uint8_t fru, uint8_t *value); int pal_get_fan_config(); int pal_set_update_sdr_flag(uint8_t fru, uint8_t value); int pal_get_update_sdr_flag(uint8_t fru, uint8_t *value); int8_t pal_init_dev_jtag_gpio(uint8_t fru, uint8_t dev); int8_t pal_is_dev_com_sel_en (uint8_t fru); int8_t pal_dev_jtag_gpio_to_bus(uint8_t fru); bool pal_is_all_fan_fail(); int pal_set_last_postcode(uint8_t slot, uint32_t postcode); int pal_get_last_postcode(uint8_t slot, char* postcode); #ifdef __cplusplus } // extern "C" #endif #endif /* __PAL_H__ */