From d8207b2525f1420f7bbb9728ba62b600fe1576d6 Mon Sep 17 00:00:00 2001 From: huangkai Date: Mon, 22 Nov 2021 09:03:20 +0000 Subject: [PATCH 1/2] touch bug fix Signed-off-by: huangkai --- model/input/driver/touchscreen/touch_gt911.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/model/input/driver/touchscreen/touch_gt911.c b/model/input/driver/touchscreen/touch_gt911.c index 9092f2ac..b1662c81 100644 --- a/model/input/driver/touchscreen/touch_gt911.c +++ b/model/input/driver/touchscreen/touch_gt911.c @@ -291,6 +291,7 @@ static int32_t HdfGoodixChipInit(struct HdfDeviceObject *device) chipDev->ops = &g_gt911ChipOps; chipDev->chipName = chipCfg->chipName; chipDev->vendorName = chipCfg->vendorName; + device->priv = chipDev; if (RegisterTouchChipDevice(chipDev) != HDF_SUCCESS) { goto EXIT1; @@ -305,10 +306,26 @@ EXIT: return HDF_FAILURE; } +static void HdfGoodixChipRelease(struct HdfDeviceObject *device) +{ + ChipDevice *chipDev = NULL; + if (device == NULL || device->priv == NULL) { + HDF_LOGE("%s: param is null", __func__); + return; + } + + chipDev = (ChipDevice *)device->priv; + FreeChipConfig(chipDev->chipCfg); + OsalMemFree(chipDev); + + HDF_LOGI("%s: goodix chip is release", __func__); +} + struct HdfDriverEntry g_touchGoodixChipEntry = { .moduleVersion = 1, .moduleName = "HDF_TOUCH_GT911", .Init = HdfGoodixChipInit, + .Release = HdfGoodixChipRelease, }; HDF_INIT(g_touchGoodixChipEntry); From b2e1efdc753c82afa1d01b481a8824085821fcb5 Mon Sep 17 00:00:00 2001 From: huangkai Date: Mon, 22 Nov 2021 11:12:54 +0000 Subject: [PATCH 2/2] touch bug fix Signed-off-by: huangkai --- model/input/driver/touchscreen/touch_gt911.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/model/input/driver/touchscreen/touch_gt911.c b/model/input/driver/touchscreen/touch_gt911.c index b1662c81..df8aa506 100644 --- a/model/input/driver/touchscreen/touch_gt911.c +++ b/model/input/driver/touchscreen/touch_gt911.c @@ -248,6 +248,9 @@ static ChipDevice *ChipDeviceInstance(void) static void FreeChipConfig(TouchChipCfg *config) { + if (config == NULL) { + HDF_LOGE("%s: param is null", __func__); + } if (config->pwrSeq.pwrOn.buf != NULL) { OsalMemFree(config->pwrSeq.pwrOn.buf); } @@ -315,7 +318,9 @@ static void HdfGoodixChipRelease(struct HdfDeviceObject *device) } chipDev = (ChipDevice *)device->priv; - FreeChipConfig(chipDev->chipCfg); + if (chipDev->chipCfg != NULL) { + FreeChipConfig(chipDev->chipCfg); + } OsalMemFree(chipDev); HDF_LOGI("%s: goodix chip is release", __func__);