高通kernel充电参数定义

来源:互联网 发布:mac搜狗五笔组词 编辑:程序博客网 时间:2024/05/16 06:03

1.从log中看出kernel初始化充电模块从subsys_initcall(batterydata_init);开始。

[    2.818350] BATTERY: batterydata_init: Battery-data device created!

2.batterydata_init做了什么?

看下代码

int batterydata_init(void){int rc;struct battery_data *battery;battery = kzalloc(sizeof(*battery), GFP_KERNEL);if (!battery) {pr_err("Unable to allocate memory\n");return -ENOMEM;}/* character device to access the battery-data from userspace */rc = alloc_chrdev_region(&battery->dev_no, 0, 1, "battery_data");if (rc) {pr_err("Unable to allocate chrdev rc=%d\n", rc);return rc;}cdev_init(&battery->battery_cdev, &battery_data_fops);rc = cdev_add(&battery->battery_cdev, battery->dev_no, 1);if (rc) {pr_err("Unable to add battery_cdev rc=%d\n", rc);goto unregister_chrdev;}battery->battery_class = class_create(THIS_MODULE, "battery_data");if (IS_ERR_OR_NULL(battery->battery_class)) {pr_err("Fail to create battery class\n");rc = -ENODEV;goto delete_cdev;}battery->battery_device = device_create(battery->battery_class,NULL, battery->dev_no,NULL, "battery_data");if (IS_ERR(battery->battery_device)) {pr_err("Fail to create battery_device device\n");rc = -ENODEV;goto delete_cdev;}the_battery = battery;pr_info("Battery-data device created!\n");return 0;delete_cdev:cdev_del(&battery->battery_cdev);unregister_chrdev:unregister_chrdev_region(battery->dev_no, 1);the_battery = NULL;return rc;}

主要是填充结构体struct battery_data *battery;其他的都是正常的系统调用进行模块,设备注册,以及节点加载。

看看结构体battery_data里面有什么?

struct battery_data {dev_tdev_no;struct class*battery_class;struct device*battery_device;struct cdevbattery_cdev;struct bms_battery_data*profile;};
主要是struct bms_battery_data *profile;这个结构体,其他的都是通用的。

看看bms_battery_data里面是什么?

/** * struct bms_battery_data - * @fcc:full charge capacity (mAmpHour) * @fcc_temp_lut:table to get fcc at a given temp * @pc_temp_ocv_lut:table to get percent charge given batt temp and cycles * @pc_sf_lut:table to get percent charge scaling factor given cycles *and percent charge * @rbatt_sf_lut:table to get battery resistance scaling factor given *temperature and percent charge * @default_rbatt_mohm:the default value of battery resistance to use when *readings from bms are not available. * @delta_rbatt_mohm:the resistance to be added towards lower soc to *compensate for battery capacitance. * @rbatt_capacitve_mohm: the resistance to be added to compensate for *battery capacitance * @flat_ocv_threshold_uv: the voltage where the battery's discharge curve *starts flattening out. * @max_voltage_uv:max voltage of the battery * @cutoff_uv:cutoff voltage of the battery * @iterm_ua:termination current of the battery when charging *to 100% * @batt_id_kohm:the best matched battery id resistor value * @fastchg_current_ma: maximum fast charge current * @fg_cc_cv_threshold_mv: CC to CV threashold voltage */struct bms_battery_data {unsigned intfcc;struct single_row_lut*fcc_temp_lut;struct single_row_lut*fcc_sf_lut;struct pc_temp_ocv_lut*pc_temp_ocv_lut;struct ibat_temp_acc_lut *ibat_acc_lut;struct sf_lut*pc_sf_lut;struct sf_lut*rbatt_sf_lut;intdefault_rbatt_mohm;intdelta_rbatt_mohm;intrbatt_capacitive_mohm;intflat_ocv_threshold_uv;intmax_voltage_uv;intcutoff_uv;intiterm_ua;intbatt_id_kohm;intfastchg_current_ma;intfg_cc_cv_threshold_mv;const char*battery_type;};

这里有大量和充电相关的参数定义。就是我们要找的参数。具体参数含义注释都有。

0 0