| #ifndef __QG_PROFILE_H__ |
| #define __QG_PROFILE_H__ |
| |
| #include <linux/ioctl.h> |
| |
| /** |
| * enum profile_table - Table index for battery profile data |
| */ |
| enum profile_table { |
| TABLE_SOC_OCV1, |
| TABLE_SOC_OCV2, |
| TABLE_FCC1, |
| TABLE_FCC2, |
| TABLE_Z1, |
| TABLE_Z2, |
| TABLE_Z3, |
| TABLE_Z4, |
| TABLE_Z5, |
| TABLE_Z6, |
| TABLE_Y1, |
| TABLE_Y2, |
| TABLE_Y3, |
| TABLE_Y4, |
| TABLE_Y5, |
| TABLE_Y6, |
| TABLE_MAX, |
| }; |
| |
| /** |
| * struct battery_params - Battery profile data to be exchanged |
| * @soc: SOC (state of charge) of the battery |
| * @ocv_uv: OCV (open circuit voltage) of the battery |
| * @batt_temp: Battery temperature in deci-degree |
| * @var: 'X' axis param for interpolation |
| * @table_index:Table index to be used for interpolation |
| */ |
| struct battery_params { |
| int soc; |
| int ocv_uv; |
| int fcc_mah; |
| int slope; |
| int var; |
| int batt_temp; |
| int table_index; |
| }; |
| |
| /* Profile MIN / MAX values */ |
| #define QG_MIN_SOC 0 |
| #define QG_MAX_SOC 10000 |
| #define QG_MIN_OCV_UV 3000000 |
| #define QG_MAX_OCV_UV 5000000 |
| #define QG_MIN_VAR 0 |
| #define QG_MAX_VAR 65535 |
| #define QG_MIN_FCC_MAH 100 |
| #define QG_MAX_FCC_MAH 16000 |
| #define QG_MIN_SLOPE 1 |
| #define QG_MAX_SLOPE 50000 |
| |
| /* IOCTLs to query battery profile data */ |
| #define BPIOCXSOC _IOWR('B', 0x01, struct battery_params) /* SOC */ |
| #define BPIOCXOCV _IOWR('B', 0x02, struct battery_params) /* OCV */ |
| #define BPIOCXFCC _IOWR('B', 0x03, struct battery_params) /* FCC */ |
| #define BPIOCXSLOPE _IOWR('B', 0x04, struct battery_params) /* Slope */ |
| #define BPIOCXVAR _IOWR('B', 0x05, struct battery_params) /* All-other */ |
| |
| #endif /* __QG_PROFILE_H__ */ |