From 40887495298d3151000313bb6db43b17661f1ded Mon Sep 17 00:00:00 2001 From: xuwt2 Date: Tue, 1 Nov 2022 20:34:26 +0800 Subject: [PATCH] qti_glink_charger: Checking wireless TX_MODE get tx_mode status by accessing qti_glink notify tx_mode when it changed Change-Id: I325c1982141f7095548857d39fc38b5d8e6f2a5f Signed-off-by: xuwt2 Reviewed-on: https://gerrit.mot.com/2418046 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Jianqi Yang Submit-Approved: Jira Key --- .../qti_glink_charger/qti_glink_charger.c | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/drivers/power/qti_glink_charger/qti_glink_charger.c b/drivers/power/qti_glink_charger/qti_glink_charger.c index b40cfbf34229..dd36b59f4dfc 100644 --- a/drivers/power/qti_glink_charger/qti_glink_charger.c +++ b/drivers/power/qti_glink_charger/qti_glink_charger.c @@ -162,6 +162,7 @@ struct wls_dump u16 tx_vrect_mv; u16 tx_det_rx_power; u16 tx_power; + u16 tx_ept; s16 power_loss; u16 usb_otg; u16 wls_boost; @@ -240,7 +241,7 @@ struct qti_charger { u32 wlc_tx_sn; bool *debug_enabled; u32 wls_curr_max; - u32 rx_connected; + int rx_connected; struct notifier_block wls_nb; struct dentry *debug_root; struct power_supply *batt_psy; @@ -673,14 +674,15 @@ void qti_wireless_charge_dump_info(struct qti_charger *chg, struct wls_dump wls_ wls_info.rx_neg_power); mmi_info(chg, "Wireless dump info -2: TX_IIN: %dmA, TX_VIN: %dmV, TX_VRECT: %dmV, " - "TX_DET_RX_POWER: %dmW, TX_POWER: %dmW, POWER_LOSS: %dmW, TX_FOD: %d, ", + "TX_DET_RX_POWER: %dmW, TX_POWER: %dmW, POWER_LOSS: %dmW, TX_FOD: %d, TX_EPT_RSN: 0x%04x, ", wls_info.tx_iin_ma, wls_info.tx_vin_mv, wls_info.tx_vrect_mv, wls_info.tx_det_rx_power, wls_info.tx_power, wls_info.power_loss, - (wls_info.irq_status & (0x01<<12)) ? 1 : 0); + (wls_info.irq_status & (0x01<<12)) ? 1 : 0), + wls_info.tx_ept; mmi_info(chg, "Wireless dump info -3: FOLIO_MODE: %d, PEN_STATUS: %d, " "PEN_SOC: %d, PEN_ERROR: %d, USB_OTG: %d, WLS_BOOST: %d, WLS_ICL_MA: %dmA, WLS_ICL_THERM_MA: %dmA", @@ -1542,15 +1544,22 @@ static ssize_t tx_mode_show(struct device *dev, struct device_attribute *attr, char *buf) { + u32 tx_mode = 0; struct qti_charger *chg = this_chip; if (!chg) { - pr_err("PEN: chip not valid\n"); + pr_err("QTI: chip not valid\n"); return -ENODEV; } - return scnprintf(buf, CHG_SHOW_MAX_SIZE, "%d\n", chg->tx_mode); + qti_charger_read(chg, OEM_PROP_WLS_TX_MODE, + &tx_mode, + sizeof(tx_mode)); + + chg->tx_mode = tx_mode; + return scnprintf(buf, CHG_SHOW_MAX_SIZE, "%d\n", tx_mode); } + static DEVICE_ATTR(tx_mode, S_IRUGO|S_IWUSR, tx_mode_show, tx_mode_store); static ssize_t tx_mode_vout_show(struct device *dev, @@ -1934,7 +1943,7 @@ static int show_wls_dump_info(struct seq_file *m, void *data) seq_printf(m, "RX_VRECT: %dmV\n", wls_info.rx_vrect_mv); - seq_printf(m, "RX_IRECT: %dmV\n", wls_info.rx_irect_ma); + seq_printf(m, "RX_IRECT: %dmA\n", wls_info.rx_irect_ma); seq_printf(m, "RX_EPT: 0x%04x\n", wls_info.rx_ept); @@ -1956,6 +1965,8 @@ static int show_wls_dump_info(struct seq_file *m, void *data) seq_printf(m, "TX_POWER: %dmW\n", wls_info.tx_power); + seq_printf(m, "TX_EPT_RSN: 0x%04x\n", wls_info.tx_ept); + seq_printf(m, "POWER_LOSS: %dmW\n", wls_info.power_loss); seq_printf(m, "TX_FOD: %d\n", (wls_info.irq_status & TX_INT_FOD) ? 1 : 0); @@ -2098,6 +2109,12 @@ static int wireless_charger_notify_callback(struct notifier_block *nb, case NOTIFY_EVENT_WLS_RX_OVERTEMP: break; case NOTIFY_EVENT_WLS_CHANGE: + if (notify_data->data[0] != chg->tx_mode) { + if (chg->wls_psy) { + pr_info("report tx_mode %d\n", notify_data->data[0]); + sysfs_notify(&chg->wls_psy->dev.parent->kobj, NULL, "tx_mode"); + } + } break; case NOTIFY_EVENT_WLS_WLC_CHANGE: /* WLC status update */