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 <xuwei9@lenovo.com>
Reviewed-by: Xiangpo Zhao <zhaoxp3@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
149 2023-07-27 10:24:15 +08:00 • committed by longc149
commit afbff129a9
3 changed files with 68 additions and 9 deletions

View file

@ -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

View file

@ -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

View file

@ -31,9 +31,14 @@
#include <linux/seq_file.h>
#include <uapi/linux/sched/types.h>
#include <linux/kthread.h>
#include <linux/version.h>
#include <linux/iio/consumer.h>
#include "bq2589x_reg.h"
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0)
#include <linux/qti_power_supply.h>
#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);