diff --git a/drivers/power/qti_glink_charger/Android.mk b/drivers/power/qti_glink_charger/Android.mk index 9905be68c0bf..a59f66cfd10f 100755 --- a/drivers/power/qti_glink_charger/Android.mk +++ b/drivers/power/qti_glink_charger/Android.mk @@ -23,6 +23,11 @@ ifeq ($(MSB_DEV),true) KBUILD_OPTIONS += CONFIG_MSB_DEV=y endif +ifeq ($(SWITCHEDCAP_DUMP),true) + KERNEL_CFLAGS += CONFIG_SWITCHEDCAP_DUMP=y + KBUILD_OPTIONS += CONFIG_SWITCHEDCAP_DUMP=y +endif + ifeq ($(SKIP_QTI_CHARGER_CONFIRMAION),true) KERNEL_CFLAGS += CONFIG_SKIP_QTI_CHARGER_CONFIRMAION=y KBUILD_OPTIONS += CONFIG_SKIP_QTI_CHARGER_CONFIRMAION=y diff --git a/drivers/power/qti_glink_charger/Kbuild b/drivers/power/qti_glink_charger/Kbuild index 1219004ec207..e3327b9ffc4f 100755 --- a/drivers/power/qti_glink_charger/Kbuild +++ b/drivers/power/qti_glink_charger/Kbuild @@ -15,6 +15,10 @@ ifneq ($(filter m y,$(CONFIG_MSB_DEV)),) EXTRA_CFLAGS += -DMSB_DEV endif +ifneq ($(filter m y,$(CONFIG_SWITCHEDCAP_DUMP)),) + EXTRA_CFLAGS += -DSWITCHEDCAP_DUMP +endif + ifneq ($(filter m y,$(CONFIG_SKIP_QTI_CHARGER_CONFIRMAION)),) EXTRA_CFLAGS += -DSKIP_QTI_CHARGER_CONFIRMAION endif diff --git a/drivers/power/qti_glink_charger/qti_glink_charger.c b/drivers/power/qti_glink_charger/qti_glink_charger.c index 15ba9553d83b..63a183ccba40 100644 --- a/drivers/power/qti_glink_charger/qti_glink_charger.c +++ b/drivers/power/qti_glink_charger/qti_glink_charger.c @@ -724,7 +724,18 @@ void qti_msb_dev_info(struct qti_charger *chg, struct msb_dev_info msb_dev) msb_dev.batt_fv, msb_dev.chg_en, msb_dev.chg_fault, - msb_dev.chg_st); + msb_dev.chg_st); +} +#endif + +#if defined(SWITCHEDCAP_DUMP) +void qti_switched_dump_info(struct qti_charger *chg, struct switched_dev_info switched_info) +{ + mmi_info(chg, "switchedcap dump info [%d]: chg_en %d, work_mode 0x%x, int_stat 0x%x, " + "ibat_ma %d, ibus_ma %d, vbus_mv %d, vout_mv %d, vbat_mv %d", + switched_info.chg_role, switched_info.chg_en, switched_info.work_mode, + switched_info.int_stat, switched_info.ibat_ma, switched_info.ibus_ma, + switched_info.vbus_mv, switched_info.vout_mv, switched_info.vbat_mv); } #endif @@ -735,7 +746,10 @@ static int qti_charger_get_chg_info(void *data, struct mmi_charger_info *chg_inf struct charger_info info; struct wls_dump wls_info; #if defined(MSB_DEV) - struct msb_dev_info msb_dev; + struct msb_dev_info msb_dev; +#endif +#if defined(SWITCHEDCAP_DUMP) + struct switched_dev_info master_switched_info; #endif rc = qti_charger_read(chg, OEM_PROP_CHG_INFO, &info, @@ -793,6 +807,13 @@ static int qti_charger_get_chg_info(void *data, struct mmi_charger_info *chg_inf qti_msb_dev_info(chg, msb_dev); #endif +#if defined(SWITCHEDCAP_DUMP) + qti_charger_read(chg, OEM_PROP_MASTER_SWITCHEDCAP_INFO, + &master_switched_info, + sizeof(struct switched_dev_info)); + qti_switched_dump_info(chg, master_switched_info); +#endif + bm_ulog_print_log(OEM_BM_ULOG_SIZE); return rc; diff --git a/drivers/power/qti_glink_charger/qti_glink_charger.h b/drivers/power/qti_glink_charger/qti_glink_charger.h index 3992c4a1c5bd..be03fb550a1d 100644 --- a/drivers/power/qti_glink_charger/qti_glink_charger.h +++ b/drivers/power/qti_glink_charger/qti_glink_charger.h @@ -71,6 +71,7 @@ enum oem_property_type { OEM_PROP_LPD_MITIGATE_MODE, OEM_PROP_CHG_PARTNER_ICL, OEM_PROP_MSB_DEV_INFO, + OEM_PROP_MASTER_SWITCHEDCAP_INFO, OEM_PROP_MAX, }; @@ -94,6 +95,19 @@ enum mmi_charger_sku_type MMI_CHARGER_SKU_SUPERSET, }; +struct switched_dev_info +{ + bool chg_en; + u8 chg_role; + u8 work_mode; + u8 int_stat; + s32 ibat_ma; + s32 ibus_ma; + s32 vbus_mv; + s32 vout_mv; + s32 vbat_mv; +}; + struct qti_charger_notify_data { u32 receiver; u32 data[MAX_OEM_NOTIFY_DATA_LEN];