From afbff129a9c8db8685ab7087a6817a32b2dcd5ff Mon Sep 17 00:00:00 2001 From: 149 Date: Thu, 27 Jul 2023 10:24:15 +0800 Subject: [PATCH] fogo charger_ic bring up module Add cc ic sc89890 support at fogona. Change-Id: I79a636cc2f3e67aab7f4a77ed85e369c9c98a035 Reviewed-on: https://gerrit.mot.com/2690275 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Wei Xu Reviewed-by: Xiangpo Zhao Submit-Approved: Jira Key --- drivers/power/bq2589x_chg_mmi/Android.mk | 1 + drivers/power/bq2589x_chg_mmi/Makefile | 23 +++++++- .../power/bq2589x_chg_mmi/bq2589x_charger.c | 53 ++++++++++++++++--- 3 files changed, 68 insertions(+), 9 deletions(-) diff --git a/drivers/power/bq2589x_chg_mmi/Android.mk b/drivers/power/bq2589x_chg_mmi/Android.mk index 0861a1687f32..b4d9538c8024 100644 --- a/drivers/power/bq2589x_chg_mmi/Android.mk +++ b/drivers/power/bq2589x_chg_mmi/Android.mk @@ -21,5 +21,6 @@ LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT) LOCAL_ADDITIONAL_DEPENDENCIES := $(KERNEL_MODULES_OUT)/mmi_discrete_charger_class.ko KBUILD_OPTIONS_GKI += GKI_OBJ_MODULE_DIR=gki +KBUILD_OPTIONS += MODULE_KERNEL_VERSION=$(TARGET_KERNEL_VERSION) include $(DLKM_DIR)/AndroidKernelModule.mk diff --git a/drivers/power/bq2589x_chg_mmi/Makefile b/drivers/power/bq2589x_chg_mmi/Makefile index 62a13fd28500..6fd4304bb47c 100644 --- a/drivers/power/bq2589x_chg_mmi/Makefile +++ b/drivers/power/bq2589x_chg_mmi/Makefile @@ -1,3 +1,24 @@ +ifeq ($(strip $(MODULE_KERNEL_VERSION)), 5.15) + +all: modules + +modules: + $(MAKE) -C $(KERNEL_SRC) M=$(M) modules $(KBUILD_OPTIONS) + +modules_install: + $(MAKE) INSTALL_MOD_STRIP=1 -C $(KERNEL_SRC) M=$(M) modules_install + +%: + $(MAKE) -C $(KERNEL_SRC) M=$(M) $@ $(KBUILD_OPTIONS) + +clean: + rm -f *.o *.ko *.mod.c *.mod.o *~ .*.cmd Module.symvers + rm -rf .tmp_versions + +KBUILD_EXTRA_SYMBOLS += $(CURDIR)/$(KBUILD_EXTMOD)/../mmi_discrete_charger/$(GKI_OBJ_MODULE_DIR)/Module.symvers + +else + KERNEL_SRC ?= /lib/modules/$(shell uname -r)/build all: @@ -8,4 +29,4 @@ modules_install: clean: $(MAKE) -C $(KERNEL_SRC) M=$(PWD) clean - +endif diff --git a/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c b/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c index d049b0f1b90c..f57bc679382b 100644 --- a/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c +++ b/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c @@ -31,9 +31,14 @@ #include #include #include +#include #include #include "bq2589x_reg.h" +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) +#include +#endif + #ifdef __indicator_led_en__ static struct bq2589x *bq_g; #define TRILED_NUM_MAX 3 @@ -1299,13 +1304,21 @@ static int bq2589x_power_supply_get_property(struct power_supply *psy, val->intval = POWER_SUPPLY_USB_TYPE_DCP; break; case 4: /* 100 - Adjustable High Voltage DCP */ - val->intval = POWER_SUPPLY_TYPE_USB_HVDCP; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) + val->intval = QTI_POWER_SUPPLY_TYPE_USB_HVDCP; +#else + val->intval = POWER_SUPPLY_TYPE_USB_HVDCP; +#endif break; case 5: /* 101 - Unkown Adapter */ val->intval = POWER_SUPPLY_USB_TYPE_UNKNOWN; break; case 6: /* 110 - Non-Standard Adapter */ - val->intval = POWER_SUPPLY_TYPE_USB_FLOAT; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) + val->intval = QTI_POWER_SUPPLY_TYPE_USB_FLOAT; +#else + val->intval = POWER_SUPPLY_TYPE_USB_FLOAT; +#endif break; default: val->intval = POWER_SUPPLY_CHARGE_TYPE_UNKNOWN; @@ -1831,7 +1844,11 @@ static int mmi_detected_qc20_hvdcp(struct bq2589x *bq, int *charger_type) if (vbus_voltage > MMI_HVDCP2_VOLTAGE_STANDARD) { dev_info(bq->dev, "QC20 charger detected\n"); - *charger_type = POWER_SUPPLY_TYPE_USB_HVDCP; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) + *charger_type = QTI_POWER_SUPPLY_TYPE_USB_HVDCP; +#else + *charger_type = POWER_SUPPLY_TYPE_USB_HVDCP; +#endif } else { dev_info(bq->dev, "charger type is not HVDCP\n"); } @@ -1936,7 +1953,11 @@ static int mmi_detected_qc30_hvdcp(struct bq2589x *bq, int *charger_type) dev_info(bq->dev, "%s vbus voltage now = %d in detected qc30\n", __func__,vbus_voltage); if (vbus_voltage > MMI_HVDCP3_VOLTAGE_STANDARD) { - *charger_type = POWER_SUPPLY_TYPE_USB_HVDCP_3; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) + *charger_type = QTI_POWER_SUPPLY_TYPE_USB_HVDCP_3; +#else + *charger_type = POWER_SUPPLY_TYPE_USB_HVDCP_3; +#endif dev_info(bq->dev, "%s QC3.0 charger detected\n", __func__); } @@ -2193,7 +2214,11 @@ bool qc3p_update_policy(struct bq2589x *chip ) } #endif -static int bq2589x_enable_termination(struct charger_device *chg_dev, bool enable) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) +int bq2589x_enable_termination(struct charger_device *chg_dev, bool enable) +#else +static int bq2589x_enable_termination(struct charger_device *chg_dev, bool enable) +#endif { struct bq2589x *bq = dev_get_drvdata(&chg_dev->dev); u8 val; @@ -2240,7 +2265,11 @@ static int mmi_hvdcp_detect_kthread(void *param) goto out; } - if (charger_type != POWER_SUPPLY_TYPE_USB_HVDCP || bq->pd_active) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) + if (charger_type != QTI_POWER_SUPPLY_TYPE_USB_HVDCP || bq->pd_active) +#else + if (charger_type != POWER_SUPPLY_TYPE_USB_HVDCP || bq->pd_active) +#endif goto out; //do qc3.0 detected @@ -2348,7 +2377,11 @@ static void bq2589x_adapter_in_func(struct bq2589x *bq) switch (bq->vbus_type) { case BQ2589X_VBUS_MAXC: dev_info(bq->dev, "%s:HVDCP adapter plugged in\n", __func__); - bq->real_charger_type = POWER_SUPPLY_TYPE_USB_HVDCP; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) + bq->real_charger_type = QTI_POWER_SUPPLY_TYPE_USB_HVDCP; +#else + bq->real_charger_type = POWER_SUPPLY_TYPE_USB_HVDCP; +#endif bq->chg_dev->noti.hvdcp_done = true; schedule_delayed_work(&bq->ico_work, 0); break; @@ -2370,7 +2403,11 @@ static void bq2589x_adapter_in_func(struct bq2589x *bq) dev_err(bq->dev, "%s:Unkown adpater plugged in\n", __func__); case BQ2589X_VBUS_NONSTAND: dev_info(bq->dev, "%s:NON STAND plugged in\n", __func__); - bq->real_charger_type = POWER_SUPPLY_TYPE_USB_FLOAT; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) + bq->real_charger_type = QTI_POWER_SUPPLY_TYPE_USB_FLOAT; +#else + bq->real_charger_type = POWER_SUPPLY_TYPE_USB_FLOAT; +#endif break; default: dev_info(bq->dev, "%s:Other adapter %d plugged in\n", __func__, bq->vbus_type);