charger_kernel_smb358
2017-02-20 10:15:17 0 举报
smb358kernel相关充电流程
作者其他创作
大纲/内容
充电指示灯配置
cw_bat_probe
STAT irq configuration
qpnp_coincell_set_voltage
dump_regs
smb358_hw_init
kzalloc
smbchg_regulator_init(chip)
创建一个内核线程
充电参数定义
INIT_DELAYED_WORK
qpnp_get_vadc
read_shutdown_ocv_soc(chip)读关机保存的soc和last_soc_uv
i2c_check_functionality
qpnp_vm_bms_probe
smb_parse_dt从dtsi获取参数
smb358_debugfs_init
qpnp_coincell_check_type
中断GPIO配置默认不使用
获取dtsi中充电参数msm8937-pmi8937-qrd-sku2.dts
获取系统启动以来所经过的c时间,不包含休眠时间,返回timespec结构
spmi_ext_register_writel
Y
of_property_read_boolof_get_named_gpio_flagsof_property_read_u32
struct smb358_charger *chip;
cw_update_config_info其他都是封装I2C进行读写
spmi_get_resource
高通QPNP电压模式的PMIC电池管理系统提供接口给客户端来读取电池相关属性,它的主要功能是基于周期性采样VBAT(vattery voltage)来计算SOC(state ofcharge)
对参数赋值
cw_init
chip-vadc_dev = vadc_dev;\tchip-vchg_vadc_dev = vchg_vadc_dev;\tchip-spmi = spmi;\tchip-dev = &spmi-dev;\tchip-usb_psy = usb_psy;\tchip-typec_psy = typec_psy;\tchip-fake_battery_soc = -EINVAL;\tchip-usb_online = -EINVAL;
N
smb358_term_current_set
充电电压设置
est_ocv = estimate_ocv(chip)预估开路电压
smb358_recharge_and_inhibit_set
create_singlethread_workqueue
smbchg_hw_init(chip);充电初始化数据,电流,充电器电压。。。
电量用shutdown SOC
如果支持BAT_LOW_INTERRUPT,进行相应的电源管理
smb358_masked_write(setup defaults for PIN_CTRL_REG )
打印smb358寄存器值
schedule_delayed_work
判断shutdown_soc是否可用
读smb358寄存器值,测i2c是否通
I2C设备通用函数,建立私有数据
smb358_charger_probe
qpnp_coincell_set_resistance
rerun_hvdcp_det_if_necessary
calculate_initial_soc初始电量获取qpnp-vm-bms.c(drivers/power)
power_supply_get_by_name(\"usb\")
cw_update_time_member_capacity_change
struct power_supply *usb_psy;
填充cw_bat结构体
cw_bat_parse_dt
smb358的debug测试
重要函数,将充电加入电源管理
快充电流限制设置
smbchg_parse_peripherals(chip)
of_get_regulation_constraints
功耗控制初始化
devm_kzalloc
using_pmic_therm
struct bms_battery_data
qpnp_coincell_charger_show_state
struct bms_battery_data\t\t*profile;
of_get_regulator_init_data
cw_bat-run_time_capacity_change = new_run_time; cw_bat-sleep_time_capacity_change = new_sleep_time;
qpnp_coincell_set_charge
smbchg_probe
smb358_charging_disable
config_info_cellwise根据battery_id是4选用这个电池参数配置
determine_initial_state
get_monotonic_boottime
确认充电初始化状态
power_supply_register
smb358_float_voltage_set
延时开始工作队列
smb_parse_dt
queue_delayed_work
smb358_masked_write(setup defaults for CHG_CNTRL_REG)
smbchg_request_irqs
用来判定设配器的能力
(abs(chip-shutdown_soc - chip-calculated_soc) dt.cfg_shutdown_soc_valid_limit))非重启情况下电量判断阈值决定用计算出来的soc还是用上次关机的soc
batterydata_init
struct battery_data *battery;
注册一个电池温度保护的工作队列
pmic温度控制配置
i2c_set_clientdata
将系统启动来的时间和休眠时间写入cw_bat结构体
subsys_initcall
配寄存器具体见代码
cw_update_time_member_charge_start刷新cw的时间相关参数
power_supply_get_by_name(\"usb\")查询是否存在usb充电节点
判断是否是warm reset即重启
determine_initial_status
使能充电功能
smb358_fastchg_current_set
获取系统启动以来所经过的时间,包含休眠时间
chip-batt_psy.name\t\t= \"battery\";
cw_check_ic
dump_regs(chip);\tcreate_debugfs_entries(chip);
init_completion(&chip-src_det_lowered);\tinit_completion(&chip-src_det_raised);\tinit_completion(&chip-usbin_uv_lowered);\tinit_completion(&chip-usbin_uv_raised);
charger_kernel_smb358
smb358_regulator_init
smb358_enable_volatile_writes
of_get_named_gpio_flags此为linux通用GPIO函数
smbchg_check_chg_version检查版本
smb358_read_reg
充电截止电流设置
注册电池设备
dump_regs(chip);
qpnp_coincell_probe
power_supply_get_by_name(typec_psy_name)
smb358_update_power_on_state
回充电压设置
ktime_get_ts
0 条评论
回复 删除
下一页