Lines Matching +full:sc8280xp +full:- +full:pmic +full:- +full:glink
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
191 /* mWh or mAh, based on info->power_unit */
322 reinit_completion(&battmgr->ack); in qcom_battmgr_request()
324 battmgr->error = 0; in qcom_battmgr_request()
326 ret = pmic_glink_send(battmgr->client, data, len); in qcom_battmgr_request()
330 left = wait_for_completion_timeout(&battmgr->ack, HZ); in qcom_battmgr_request()
332 return -ETIMEDOUT; in qcom_battmgr_request()
334 return battmgr->error; in qcom_battmgr_request()
431 return -EINVAL; in qcom_battmgr_bat_sm8350_update()
435 mutex_lock(&battmgr->lock); in qcom_battmgr_bat_sm8350_update()
437 mutex_unlock(&battmgr->lock); in qcom_battmgr_bat_sm8350_update()
447 mutex_lock(&battmgr->lock); in qcom_battmgr_bat_sc8280xp_update()
449 if (!battmgr->info.valid) { in qcom_battmgr_bat_sc8280xp_update()
453 battmgr->info.valid = true; in qcom_battmgr_bat_sc8280xp_update()
463 ret = -ENODATA; in qcom_battmgr_bat_sc8280xp_update()
471 ret = -ENODATA; in qcom_battmgr_bat_sc8280xp_update()
477 mutex_unlock(&battmgr->lock); in qcom_battmgr_bat_sc8280xp_update()
486 enum qcom_battmgr_unit unit = battmgr->unit; in qcom_battmgr_bat_get_property()
489 if (!battmgr->service_up) in qcom_battmgr_bat_get_property()
490 return -EAGAIN; in qcom_battmgr_bat_get_property()
492 if (battmgr->variant == QCOM_BATTMGR_SC8280XP) in qcom_battmgr_bat_get_property()
501 val->intval = battmgr->status.status; in qcom_battmgr_bat_get_property()
504 val->intval = battmgr->info.charge_type; in qcom_battmgr_bat_get_property()
507 val->intval = battmgr->status.health; in qcom_battmgr_bat_get_property()
510 val->intval = battmgr->info.present; in qcom_battmgr_bat_get_property()
513 val->intval = battmgr->info.technology; in qcom_battmgr_bat_get_property()
516 val->intval = battmgr->info.cycle_count; in qcom_battmgr_bat_get_property()
519 val->intval = battmgr->info.voltage_max_design; in qcom_battmgr_bat_get_property()
522 val->intval = battmgr->info.voltage_max; in qcom_battmgr_bat_get_property()
525 val->intval = battmgr->status.voltage_now; in qcom_battmgr_bat_get_property()
528 val->intval = battmgr->status.voltage_ocv; in qcom_battmgr_bat_get_property()
531 val->intval = battmgr->status.current_now; in qcom_battmgr_bat_get_property()
534 val->intval = battmgr->status.power_now; in qcom_battmgr_bat_get_property()
538 return -ENODATA; in qcom_battmgr_bat_get_property()
539 val->intval = battmgr->info.design_capacity; in qcom_battmgr_bat_get_property()
543 return -ENODATA; in qcom_battmgr_bat_get_property()
544 val->intval = battmgr->info.last_full_capacity; in qcom_battmgr_bat_get_property()
548 return -ENODATA; in qcom_battmgr_bat_get_property()
549 val->intval = battmgr->info.capacity_low; in qcom_battmgr_bat_get_property()
553 return -ENODATA; in qcom_battmgr_bat_get_property()
554 val->intval = battmgr->status.capacity; in qcom_battmgr_bat_get_property()
557 val->intval = battmgr->info.charge_count; in qcom_battmgr_bat_get_property()
561 return -ENODATA; in qcom_battmgr_bat_get_property()
562 val->intval = battmgr->info.design_capacity; in qcom_battmgr_bat_get_property()
566 return -ENODATA; in qcom_battmgr_bat_get_property()
567 val->intval = battmgr->info.last_full_capacity; in qcom_battmgr_bat_get_property()
571 return -ENODATA; in qcom_battmgr_bat_get_property()
572 val->intval = battmgr->info.capacity_low; in qcom_battmgr_bat_get_property()
576 return -ENODATA; in qcom_battmgr_bat_get_property()
577 val->intval = battmgr->status.capacity; in qcom_battmgr_bat_get_property()
580 if (battmgr->status.percent == (unsigned int)-1) in qcom_battmgr_bat_get_property()
581 return -ENODATA; in qcom_battmgr_bat_get_property()
582 val->intval = battmgr->status.percent; in qcom_battmgr_bat_get_property()
585 val->intval = battmgr->status.temperature; in qcom_battmgr_bat_get_property()
588 val->intval = battmgr->status.discharge_time; in qcom_battmgr_bat_get_property()
591 val->intval = battmgr->status.charge_time; in qcom_battmgr_bat_get_property()
594 val->intval = battmgr->info.year; in qcom_battmgr_bat_get_property()
597 val->intval = battmgr->info.month; in qcom_battmgr_bat_get_property()
600 val->intval = battmgr->info.day; in qcom_battmgr_bat_get_property()
603 val->strval = battmgr->info.model_number; in qcom_battmgr_bat_get_property()
606 val->strval = battmgr->info.oem_info; in qcom_battmgr_bat_get_property()
609 val->strval = battmgr->info.serial_number; in qcom_battmgr_bat_get_property()
612 return -EINVAL; in qcom_battmgr_bat_get_property()
645 .name = "qcom-battmgr-bat",
675 .name = "qcom-battmgr-bat",
689 if (!battmgr->service_up) in qcom_battmgr_ac_get_property()
690 return -EAGAIN; in qcom_battmgr_ac_get_property()
698 val->intval = battmgr->ac.online; in qcom_battmgr_ac_get_property()
701 return -EINVAL; in qcom_battmgr_ac_get_property()
712 .name = "qcom-battmgr-ac",
736 return -EINVAL; in qcom_battmgr_usb_sm8350_update()
740 mutex_lock(&battmgr->lock); in qcom_battmgr_usb_sm8350_update()
742 mutex_unlock(&battmgr->lock); in qcom_battmgr_usb_sm8350_update()
754 if (!battmgr->service_up) in qcom_battmgr_usb_get_property()
755 return -EAGAIN; in qcom_battmgr_usb_get_property()
757 if (battmgr->variant == QCOM_BATTMGR_SC8280XP) in qcom_battmgr_usb_get_property()
766 val->intval = battmgr->usb.online; in qcom_battmgr_usb_get_property()
769 val->intval = battmgr->usb.voltage_now; in qcom_battmgr_usb_get_property()
772 val->intval = battmgr->usb.voltage_max; in qcom_battmgr_usb_get_property()
775 val->intval = battmgr->usb.current_now; in qcom_battmgr_usb_get_property()
778 val->intval = battmgr->usb.current_max; in qcom_battmgr_usb_get_property()
781 val->intval = battmgr->usb.current_limit; in qcom_battmgr_usb_get_property()
784 val->intval = battmgr->usb.usb_type; in qcom_battmgr_usb_get_property()
787 return -EINVAL; in qcom_battmgr_usb_get_property()
798 .name = "qcom-battmgr-usb",
826 .name = "qcom-battmgr-usb",
858 return -EINVAL; in qcom_battmgr_wls_sm8350_update()
862 mutex_lock(&battmgr->lock); in qcom_battmgr_wls_sm8350_update()
864 mutex_unlock(&battmgr->lock); in qcom_battmgr_wls_sm8350_update()
876 if (!battmgr->service_up) in qcom_battmgr_wls_get_property()
877 return -EAGAIN; in qcom_battmgr_wls_get_property()
879 if (battmgr->variant == QCOM_BATTMGR_SC8280XP) in qcom_battmgr_wls_get_property()
888 val->intval = battmgr->wireless.online; in qcom_battmgr_wls_get_property()
891 val->intval = battmgr->wireless.voltage_now; in qcom_battmgr_wls_get_property()
894 val->intval = battmgr->wireless.voltage_max; in qcom_battmgr_wls_get_property()
897 val->intval = battmgr->wireless.current_now; in qcom_battmgr_wls_get_property()
900 val->intval = battmgr->wireless.current_max; in qcom_battmgr_wls_get_property()
903 return -EINVAL; in qcom_battmgr_wls_get_property()
914 .name = "qcom-battmgr-wls",
930 .name = "qcom-battmgr-wls",
941 size_t payload_len = len - sizeof(struct pmic_glink_hdr); in qcom_battmgr_notification()
944 if (payload_len != sizeof(msg->notification)) { in qcom_battmgr_notification()
945 dev_warn(battmgr->dev, "ignoring notification with invalid length\n"); in qcom_battmgr_notification()
949 notification = le32_to_cpu(msg->notification); in qcom_battmgr_notification()
952 battmgr->info.valid = false; in qcom_battmgr_notification()
956 power_supply_changed(battmgr->bat_psy); in qcom_battmgr_notification()
959 power_supply_changed(battmgr->usb_psy); in qcom_battmgr_notification()
962 power_supply_changed(battmgr->wls_psy); in qcom_battmgr_notification()
965 dev_err(battmgr->dev, "unknown notification: %#x\n", notification); in qcom_battmgr_notification()
974 /* Some firmware versions return Pascal-style strings */ in qcom_battmgr_sc8280xp_strcpy()
975 if (len < BATTMGR_STRING_LEN && len == strnlen(src + 1, BATTMGR_STRING_LEN - 1)) { in qcom_battmgr_sc8280xp_strcpy()
1003 unsigned int opcode = le32_to_cpu(resp->hdr.opcode); in qcom_battmgr_sc8280xp_callback()
1006 size_t payload_len = len - sizeof(struct pmic_glink_hdr); in qcom_battmgr_sc8280xp_callback()
1009 dev_warn(battmgr->dev, "invalid payload length for %#x: %zd\n", in qcom_battmgr_sc8280xp_callback()
1016 battmgr->error = 0; in qcom_battmgr_sc8280xp_callback()
1020 if (payload_len != sizeof(resp->info) && in qcom_battmgr_sc8280xp_callback()
1021 payload_len != (sizeof(resp->info) + sizeof(__le32))) { in qcom_battmgr_sc8280xp_callback()
1022 dev_warn(battmgr->dev, in qcom_battmgr_sc8280xp_callback()
1025 battmgr->error = -ENODATA; in qcom_battmgr_sc8280xp_callback()
1029 battmgr->unit = le32_to_cpu(resp->info.power_unit); in qcom_battmgr_sc8280xp_callback()
1031 battmgr->info.present = true; in qcom_battmgr_sc8280xp_callback()
1032 battmgr->info.design_capacity = le32_to_cpu(resp->info.design_capacity) * 1000; in qcom_battmgr_sc8280xp_callback()
1033 battmgr->info.last_full_capacity = le32_to_cpu(resp->info.last_full_capacity) * 1000; in qcom_battmgr_sc8280xp_callback()
1034 battmgr->info.voltage_max_design = le32_to_cpu(resp->info.design_voltage) * 1000; in qcom_battmgr_sc8280xp_callback()
1035 battmgr->info.capacity_low = le32_to_cpu(resp->info.capacity_low) * 1000; in qcom_battmgr_sc8280xp_callback()
1036 battmgr->info.cycle_count = le32_to_cpu(resp->info.cycle_count); in qcom_battmgr_sc8280xp_callback()
1037 qcom_battmgr_sc8280xp_strcpy(battmgr->info.model_number, resp->info.model_number); in qcom_battmgr_sc8280xp_callback()
1038 qcom_battmgr_sc8280xp_strcpy(battmgr->info.serial_number, resp->info.serial_number); in qcom_battmgr_sc8280xp_callback()
1039 battmgr->info.technology = qcom_battmgr_sc8280xp_parse_technology(resp->info.battery_chemistry); in qcom_battmgr_sc8280xp_callback()
1040 qcom_battmgr_sc8280xp_strcpy(battmgr->info.oem_info, resp->info.oem_info); in qcom_battmgr_sc8280xp_callback()
1041 battmgr->info.day = resp->info.day; in qcom_battmgr_sc8280xp_callback()
1042 battmgr->info.month = resp->info.month; in qcom_battmgr_sc8280xp_callback()
1043 battmgr->info.year = le16_to_cpu(resp->info.year); in qcom_battmgr_sc8280xp_callback()
1046 if (payload_len != sizeof(resp->status)) { in qcom_battmgr_sc8280xp_callback()
1047 dev_warn(battmgr->dev, in qcom_battmgr_sc8280xp_callback()
1050 battmgr->error = -ENODATA; in qcom_battmgr_sc8280xp_callback()
1054 state = le32_to_cpu(resp->status.battery_state); in qcom_battmgr_sc8280xp_callback()
1056 battmgr->status.status = POWER_SUPPLY_STATUS_DISCHARGING; in qcom_battmgr_sc8280xp_callback()
1058 battmgr->status.status = POWER_SUPPLY_STATUS_CHARGING; in qcom_battmgr_sc8280xp_callback()
1060 battmgr->status.status = POWER_SUPPLY_STATUS_NOT_CHARGING; in qcom_battmgr_sc8280xp_callback()
1062 battmgr->status.capacity = le32_to_cpu(resp->status.capacity) * 1000; in qcom_battmgr_sc8280xp_callback()
1063 battmgr->status.power_now = le32_to_cpu(resp->status.rate) * 1000; in qcom_battmgr_sc8280xp_callback()
1064 battmgr->status.voltage_now = le32_to_cpu(resp->status.battery_voltage) * 1000; in qcom_battmgr_sc8280xp_callback()
1065 …battmgr->status.temperature = qcom_battmgr_sc8280xp_convert_temp(le32_to_cpu(resp->status.temperat… in qcom_battmgr_sc8280xp_callback()
1067 source = le32_to_cpu(resp->status.charging_source); in qcom_battmgr_sc8280xp_callback()
1068 battmgr->ac.online = source == BATTMGR_CHARGING_SOURCE_AC; in qcom_battmgr_sc8280xp_callback()
1069 battmgr->usb.online = source == BATTMGR_CHARGING_SOURCE_USB; in qcom_battmgr_sc8280xp_callback()
1070 battmgr->wireless.online = source == BATTMGR_CHARGING_SOURCE_WIRELESS; in qcom_battmgr_sc8280xp_callback()
1071 if (battmgr->info.last_full_capacity != 0) { in qcom_battmgr_sc8280xp_callback()
1073 * 100 * battmgr->status.capacity can overflow a 32bit in qcom_battmgr_sc8280xp_callback()
1081 battmgr->status.percent = in qcom_battmgr_sc8280xp_callback()
1082 (100 * le32_to_cpu(resp->status.capacity)) / in qcom_battmgr_sc8280xp_callback()
1083 (battmgr->info.last_full_capacity / 1000); in qcom_battmgr_sc8280xp_callback()
1089 battmgr->status.percent = (unsigned int)-1; in qcom_battmgr_sc8280xp_callback()
1093 battmgr->status.discharge_time = le32_to_cpu(resp->time); in qcom_battmgr_sc8280xp_callback()
1096 battmgr->status.charge_time = le32_to_cpu(resp->time); in qcom_battmgr_sc8280xp_callback()
1099 dev_warn(battmgr->dev, "unknown message %#x\n", opcode); in qcom_battmgr_sc8280xp_callback()
1103 complete(&battmgr->ack); in qcom_battmgr_sc8280xp_callback()
1111 unsigned int opcode = le32_to_cpu(resp->hdr.opcode); in qcom_battmgr_sm8350_callback()
1112 size_t payload_len = len - sizeof(struct pmic_glink_hdr); in qcom_battmgr_sm8350_callback()
1116 dev_warn(battmgr->dev, "invalid payload length for %#x: %zd\n", in qcom_battmgr_sm8350_callback()
1123 property = le32_to_cpu(resp->intval.property); in qcom_battmgr_sm8350_callback()
1125 if (payload_len != sizeof(resp->strval)) { in qcom_battmgr_sm8350_callback()
1126 dev_warn(battmgr->dev, in qcom_battmgr_sm8350_callback()
1129 battmgr->error = -ENODATA; in qcom_battmgr_sm8350_callback()
1133 if (payload_len != sizeof(resp->intval)) { in qcom_battmgr_sm8350_callback()
1134 dev_warn(battmgr->dev, in qcom_battmgr_sm8350_callback()
1137 battmgr->error = -ENODATA; in qcom_battmgr_sm8350_callback()
1141 battmgr->error = le32_to_cpu(resp->intval.result); in qcom_battmgr_sm8350_callback()
1142 if (battmgr->error) in qcom_battmgr_sm8350_callback()
1148 battmgr->status.status = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1151 battmgr->status.health = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1154 battmgr->info.present = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1157 battmgr->info.charge_type = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1160 battmgr->status.percent = le32_to_cpu(resp->intval.value) / 100; in qcom_battmgr_sm8350_callback()
1163 battmgr->status.voltage_ocv = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1166 battmgr->status.voltage_now = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1169 battmgr->info.voltage_max = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1172 battmgr->status.current_now = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1175 val = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1176 battmgr->status.temperature = DIV_ROUND_CLOSEST(val, 10); in qcom_battmgr_sm8350_callback()
1179 battmgr->info.technology = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1182 battmgr->info.charge_count = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1185 battmgr->info.cycle_count = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1188 battmgr->info.design_capacity = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1191 battmgr->info.last_full_capacity = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1194 strscpy(battmgr->info.model_number, resp->strval.model, BATTMGR_STRING_LEN); in qcom_battmgr_sm8350_callback()
1197 battmgr->status.charge_time = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1200 battmgr->status.discharge_time = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1203 battmgr->status.power_now = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1206 dev_warn(battmgr->dev, "unknown property %#x\n", property); in qcom_battmgr_sm8350_callback()
1211 property = le32_to_cpu(resp->intval.property); in qcom_battmgr_sm8350_callback()
1212 if (payload_len != sizeof(resp->intval)) { in qcom_battmgr_sm8350_callback()
1213 dev_warn(battmgr->dev, in qcom_battmgr_sm8350_callback()
1216 battmgr->error = -ENODATA; in qcom_battmgr_sm8350_callback()
1220 battmgr->error = le32_to_cpu(resp->intval.result); in qcom_battmgr_sm8350_callback()
1221 if (battmgr->error) in qcom_battmgr_sm8350_callback()
1226 battmgr->usb.online = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1229 battmgr->usb.voltage_now = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1232 battmgr->usb.voltage_max = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1235 battmgr->usb.current_now = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1238 battmgr->usb.current_max = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1241 battmgr->usb.current_limit = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1244 battmgr->usb.usb_type = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1247 dev_warn(battmgr->dev, "unknown property %#x\n", property); in qcom_battmgr_sm8350_callback()
1252 property = le32_to_cpu(resp->intval.property); in qcom_battmgr_sm8350_callback()
1253 if (payload_len != sizeof(resp->intval)) { in qcom_battmgr_sm8350_callback()
1254 dev_warn(battmgr->dev, in qcom_battmgr_sm8350_callback()
1257 battmgr->error = -ENODATA; in qcom_battmgr_sm8350_callback()
1261 battmgr->error = le32_to_cpu(resp->intval.result); in qcom_battmgr_sm8350_callback()
1262 if (battmgr->error) in qcom_battmgr_sm8350_callback()
1267 battmgr->wireless.online = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1270 battmgr->wireless.voltage_now = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1273 battmgr->wireless.voltage_max = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1276 battmgr->wireless.current_now = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1279 battmgr->wireless.current_max = le32_to_cpu(resp->intval.value); in qcom_battmgr_sm8350_callback()
1282 dev_warn(battmgr->dev, "unknown property %#x\n", property); in qcom_battmgr_sm8350_callback()
1287 battmgr->error = 0; in qcom_battmgr_sm8350_callback()
1290 dev_warn(battmgr->dev, "unknown message %#x\n", opcode); in qcom_battmgr_sm8350_callback()
1295 complete(&battmgr->ack); in qcom_battmgr_sm8350_callback()
1302 unsigned int opcode = le32_to_cpu(hdr->opcode); in qcom_battmgr_callback()
1306 else if (battmgr->variant == QCOM_BATTMGR_SC8280XP) in qcom_battmgr_callback()
1324 dev_err(battmgr->dev, "failed to request power notifications\n"); in qcom_battmgr_enable_worker()
1332 battmgr->service_up = true; in qcom_battmgr_pdr_notify()
1333 schedule_work(&battmgr->enable_work); in qcom_battmgr_pdr_notify()
1335 battmgr->service_up = false; in qcom_battmgr_pdr_notify()
1340 { .compatible = "qcom,sc8180x-pmic-glink", .data = (void *)QCOM_BATTMGR_SC8280XP },
1341 { .compatible = "qcom,sc8280xp-pmic-glink", .data = (void *)QCOM_BATTMGR_SC8280XP },
1342 { .compatible = "qcom,x1e80100-pmic-glink", .data = (void *)QCOM_BATTMGR_SC8280XP },
1356 struct device *dev = &adev->dev; in qcom_battmgr_probe()
1360 return -ENOMEM; in qcom_battmgr_probe()
1362 battmgr->dev = dev; in qcom_battmgr_probe()
1365 psy_cfg.fwnode = dev_fwnode(&adev->dev); in qcom_battmgr_probe()
1368 psy_cfg_supply.fwnode = dev_fwnode(&adev->dev); in qcom_battmgr_probe()
1372 INIT_WORK(&battmgr->enable_work, qcom_battmgr_enable_worker); in qcom_battmgr_probe()
1373 mutex_init(&battmgr->lock); in qcom_battmgr_probe()
1374 init_completion(&battmgr->ack); in qcom_battmgr_probe()
1376 match = of_match_device(qcom_battmgr_of_variants, dev->parent); in qcom_battmgr_probe()
1378 battmgr->variant = (unsigned long)match->data; in qcom_battmgr_probe()
1380 battmgr->variant = QCOM_BATTMGR_SM8350; in qcom_battmgr_probe()
1382 if (battmgr->variant == QCOM_BATTMGR_SC8280XP) { in qcom_battmgr_probe()
1383 battmgr->bat_psy = devm_power_supply_register(dev, &sc8280xp_bat_psy_desc, &psy_cfg); in qcom_battmgr_probe()
1384 if (IS_ERR(battmgr->bat_psy)) in qcom_battmgr_probe()
1385 return dev_err_probe(dev, PTR_ERR(battmgr->bat_psy), in qcom_battmgr_probe()
1388 battmgr->ac_psy = devm_power_supply_register(dev, &sc8280xp_ac_psy_desc, &psy_cfg_supply); in qcom_battmgr_probe()
1389 if (IS_ERR(battmgr->ac_psy)) in qcom_battmgr_probe()
1390 return dev_err_probe(dev, PTR_ERR(battmgr->ac_psy), in qcom_battmgr_probe()
1393 battmgr->usb_psy = devm_power_supply_register(dev, &sc8280xp_usb_psy_desc, &psy_cfg_supply); in qcom_battmgr_probe()
1394 if (IS_ERR(battmgr->usb_psy)) in qcom_battmgr_probe()
1395 return dev_err_probe(dev, PTR_ERR(battmgr->usb_psy), in qcom_battmgr_probe()
1398 battmgr->wls_psy = devm_power_supply_register(dev, &sc8280xp_wls_psy_desc, &psy_cfg_supply); in qcom_battmgr_probe()
1399 if (IS_ERR(battmgr->wls_psy)) in qcom_battmgr_probe()
1400 return dev_err_probe(dev, PTR_ERR(battmgr->wls_psy), in qcom_battmgr_probe()
1403 battmgr->bat_psy = devm_power_supply_register(dev, &sm8350_bat_psy_desc, &psy_cfg); in qcom_battmgr_probe()
1404 if (IS_ERR(battmgr->bat_psy)) in qcom_battmgr_probe()
1405 return dev_err_probe(dev, PTR_ERR(battmgr->bat_psy), in qcom_battmgr_probe()
1408 battmgr->usb_psy = devm_power_supply_register(dev, &sm8350_usb_psy_desc, &psy_cfg_supply); in qcom_battmgr_probe()
1409 if (IS_ERR(battmgr->usb_psy)) in qcom_battmgr_probe()
1410 return dev_err_probe(dev, PTR_ERR(battmgr->usb_psy), in qcom_battmgr_probe()
1413 battmgr->wls_psy = devm_power_supply_register(dev, &sm8350_wls_psy_desc, &psy_cfg_supply); in qcom_battmgr_probe()
1414 if (IS_ERR(battmgr->wls_psy)) in qcom_battmgr_probe()
1415 return dev_err_probe(dev, PTR_ERR(battmgr->wls_psy), in qcom_battmgr_probe()
1419 battmgr->client = devm_pmic_glink_client_alloc(dev, PMIC_GLINK_OWNER_BATTMGR, in qcom_battmgr_probe()
1423 if (IS_ERR(battmgr->client)) in qcom_battmgr_probe()
1424 return PTR_ERR(battmgr->client); in qcom_battmgr_probe()
1426 pmic_glink_client_register(battmgr->client); in qcom_battmgr_probe()
1432 { .name = "pmic_glink.power-supply", },
1445 MODULE_DESCRIPTION("Qualcomm PMIC GLINK battery manager driver");