/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ /* * Copyright (c) 2021, The Linux Foundation. All rights reserved. */ #ifndef __QBG_PROFILE_H__ #define __QBG_PROFILE_H__ #define MAX_BP_LUT_ROWS 35 #define MAX_BP_LUT_COLS 8 #define MAX_PROFILE_NAME_LENGTH 256 enum profile_table_type { CHARGE_TABLE = 0, DISCHARGE_TABLE, }; struct battery_data_table { unsigned short int table[MAX_BP_LUT_ROWS][MAX_BP_LUT_COLS]; int unit_conv_factor[MAX_BP_LUT_COLS]; unsigned short int nrows; unsigned short int ncols; }; struct battery_config { char bp_profile_name[MAX_PROFILE_NAME_LENGTH]; int bp_batt_id; int capacity; int bp_checksum; int soh_range_high; int soh_range_low; int normal_impedance; int aged_impedance; int normal_capacity; int aged_capacity; int recharge_soc_delta; int recharge_vflt_delta; int recharge_iterm; }; struct battery_profile_table { enum profile_table_type table_type; int table_index; struct battery_data_table *table; }; /* IOCTLs to query battery profile data */ /* Battery configuration */ #define BPIOCXBP \ _IOWR('B', 0x01, struct battery_config) /* Battery profile table */ #define BPIOCXBPTABLE \ _IOWR('B', 0x02, struct battery_profile_table) #endif