/**************************************************************** **************************************************************** ** ** ** (C)Copyright 2005-2006, American Megatrends Inc. ** ** ** ** All Rights Reserved. ** ** ** ** 6145-F, Northbelt Parkway, Norcross, ** ** ** ** Georgia - 30071, USA. Phone-(770)-246-8600. ** ** ** **************************************************************** ****************************************************************/ /***************************************************************** * * hal_defs.h * HAL Definitions * * Author: Vinoth kumar S * *****************************************************************/ #ifndef HAL_DEFS_H #define HAL_DEFS_H #include "Types.h" //#include "SensorMonitor.h" #define MAX_INT_HNDLR_NAME 25 #define MAX_NM_HNDLR_NAME 25 /** * @brief HAL Error code definitions **/ typedef enum { /* HAL Error codes */ HAL_ERR_NONE, /* No error */ HAL_ERR_READ, /* Error in reading device */ HAL_ERR_WRITE, /* Error in writing to device*/ HAL_ERR_FUNC_NOT_SUPPORTED, /* Function called is not supported */ } hal_status_codes_e; /** * @brief HAL Supported Hardware functions **/ typedef enum { HAL_DEVICE_READ, /* General Read function */ HAL_DEVICE_WRITE, /* General Write function */ /* Special I2C functions */ HAL_I2C_READ_REG, /* Read I2C register */ HAL_I2C_READ_WRITE, /* Read/Write I2C */ /* Special GPIO functions */ HAL_SET_GPIO_DIR, /* GPIO Set direction */ HAL_GET_GPIO_DIR, /* GPIO Get direction */ HAL_SET_GPIO_POL, /* GPIO Set Polarity */ HAL_GET_GPIO_POL, /* GPIO Get Polarity */ HAL_SET_GPIO_OUTPUT_REG, /* GPIO Set output data register */ } hal_func_codes_e; /** * @brief HAL Supported Device Types **/ typedef enum { HAL_DEVICE_I2C, /* I2C Device */ HAL_DEVICE_GPIO, /* GPIO Device */ HAL_DEVICE_MMAP, /* Memory mapped device */ HAL_DEVICE_FANPWM, /* FanPwm Device */ } hal_dev_type_e; /** * @brief HAL Error code definitions **/ typedef enum { HAL_SOURCE_PORT_UART, /* Source uart port */ HAL_SOURCE_PORT_COM, /* Source com port */ HAL_SOURCE_PORT_BOTH, /* Source both port */ } hal_lpcuart_type_e; /** * @brief This structure holds device properties information **/ typedef struct { int handle; /* Device handle */ u8 sensor_num; /* sensor number if device is a sensor */ int len; /* Device property length */ u8 *pData; /* Device properties */ } hal_dev_properties_t; /** * @brief This structure holds I2C device information **/ typedef struct { u8 bus; /* Bus number in which the device resides */ u8 slave_addr; /* Slave address of the device */ u8 reg_num; /* Register to read/write */ /* I2C read/write functionality uses the read/write buffer present in the HAL structure */ } hal_i2c_t; /** * @brief This structure holds GPIO device information **/ typedef struct { u8 pin; /* GPIO number */ u8 dir; /* direction for this gpio */ u8 pol; /* polarity for this gpio */ } hal_gpio_t; /** * @brief This structure holds Memory mapped device information **/ typedef struct { u32 addr; /* memory map to access */ u8 mask; /* memory map mask to read or write data */ } hal_mmap_t; /** * @brief This structure holds ADC device information **/ typedef struct { int channel; /* adc channel to read */ int raw; /* non-0 means driver returns raw data */ } hal_adc_t; /** * @brief This structure necessary hardware information to access any device **/ typedef struct { u8 fannum; unsigned int rpmvalue; unsigned int fanpwm; unsigned int fantach; }hal_fanpwm_t; /** * @brief This structure necessary hardware information to access any device **/ typedef struct { unsigned char target; unsigned char dev_id; unsigned char write_len; unsigned char write_buffer[20]; unsigned char read_len; unsigned char read_buffer[20]; }hal_peci_t; /** * @brief This structure necessary hardware information to access any device **/ typedef struct { unsigned char source_port_type; unsigned short source_port; unsigned short destination_port; }hal_lpcuart_t; typedef struct { unsigned char IsIntConfig; char IntrHndlrName[MAX_INT_HNDLR_NAME]; unsigned char Int_num; unsigned char Intsource; unsigned char Intsensornum; unsigned char SensorType; unsigned char TriggerMethod; unsigned char TriggerType; unsigned char int_type; unsigned char int_input_data; }hal_intsensor_t; typedef struct { unsigned char IsNMconfig; unsigned char Sensor_Num; unsigned char SensorType; unsigned char NetFnLUN; unsigned char cmd; u16 NM_SensorID; unsigned char res_par; char FillHndlrName[MAX_NM_HNDLR_NAME]; char ParseHndlrName[MAX_NM_HNDLR_NAME]; }hal_nmsensor_t; /** * @brief This structure necessary hardware information to access any device **/ typedef struct { hal_status_codes_e status_code; /* HAL api's status codes */ hal_func_codes_e func; /* Hardware function */ union { u8 *pbyte; /* All HAL apis return data in bytes using this pointer */ u16 *pword; /* All HAL apis return data accesed in words using this pointer */ u8 *pread_buf; /* All HAL apis return data in bytes using this pointer */ }; int read_len; /* bytes to read */ u8 *pwrite_buf; /* All HAL apis write data from this buffer */ int write_len; /* bytes to write */ hal_dev_properties_t dev_prop; /* Device properties information */ hal_dev_type_e dev_type; /* Type of the device */ hal_i2c_t i2c; /* Hold I2C information */ hal_gpio_t gpio; /* Hold GPIO information */ hal_mmap_t mmap; /* Hold memory mapped information */ hal_adc_t adc; /* Hold ADC information */ hal_fanpwm_t fan; /* Hold FanPwm information Added by winston for fanpwm */ hal_peci_t peci; /* Hold PECI information Added by winston for peci */ hal_lpcuart_t lpcuart; /* Hold LPCUART information Added by jcchiu for lpcuart */ hal_intsensor_t intsensor; /* Hold Interrupt Sensor information */ hal_nmsensor_t nmsensor; /* Hold Interrupt Sensor information */ } hal_t; /** * @brief HAL read/write/init function type definition **/ typedef int (*phal_hndlr_t) (hal_t *phal); /** * @brief HAL Device Table **/ typedef struct { // u16 device_enum; u16 device_instance; u16 sensor_number; u16 device_id; phal_hndlr_t device_read; phal_hndlr_t device_write; phal_hndlr_t device_init; void *device_properties; int properties_len; } device_tbl_t; /** * @brief HAL Sensor Properties Table **/ typedef struct { u8 monitor_interval; u8 monitor_state; u16 normal_value; u8 poweron_delay; // Delay after chassis power on in seconds. 0 don’t delay u8 sysreset_delay; // Delay after chassis reset in seconds. 0 don’t delay } sensor_properties_t; typedef int (*preturn_total_t) (void); typedef device_tbl_t* (*preturn_tbl_t) (int); typedef struct { preturn_total_t pget_total_sensors; preturn_tbl_t pget_sen_tbl_entry; preturn_total_t pget_total_devices; preturn_tbl_t pget_dev_tbl_entry; } par_fn_t; #endif //#define HAL_DEFS_H