From 05013a8a5f19073b6b667e60830640664ce307c7 Mon Sep 17 00:00:00 2001 From: shilong Date: Wed, 24 Jul 2024 08:10:20 +0000 Subject: [PATCH 1/3] =?UTF-8?q?=E8=B6=85=E5=A4=A7=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: shilong --- .../model/input/driver/hdf_hid_adapter.h | 1 + framework/model/input/driver/hdf_touch.c | 60 ++++++++----------- framework/model/input/driver/hdf_touch.h | 2 + 3 files changed, 29 insertions(+), 34 deletions(-) diff --git a/framework/model/input/driver/hdf_hid_adapter.h b/framework/model/input/driver/hdf_hid_adapter.h index d054a5a20..83efe6140 100644 --- a/framework/model/input/driver/hdf_hid_adapter.h +++ b/framework/model/input/driver/hdf_hid_adapter.h @@ -96,4 +96,5 @@ void SendInfoToHdf(HidInfo *info); void* HidRegisterHdfInputDev(HidInfo *info); void HidUnregisterHdfInputDev(const void *inputDev); void HidReportEvent(const void *inputDev, uint32_t type, uint32_t code, int32_t value); + #endif diff --git a/framework/model/input/driver/hdf_touch.c b/framework/model/input/driver/hdf_touch.c index 52aec409c..6529b860b 100644 --- a/framework/model/input/driver/hdf_touch.c +++ b/framework/model/input/driver/hdf_touch.c @@ -237,20 +237,39 @@ static int32_t Gt1xRequestIo(ChipDevice *chipDev) } #endif +static int32_t HandleSeqArray(SeqArray *src, PowerEventHandler eventHandler, ChipDevice *chipDev) +{ + int32_t i; + SeqArray pwrTiming = {0}; + int32_t ret = memcpy_s(&pwrTiming, sizeof(SeqArray), src, sizeof(SeqArray)); + if (ret != EOK) { + HDF_LOGE("%s: memcpy_s failed", __func__); + return HDF_FAILURE; + } + if ((pwrTiming.buf == NULL) || (pwrTiming.count == 0)) { + HDF_LOGE("%s: obj config is invalid", __func__); + return HDF_FAILURE; + } + for (i = 0; i < pwrTiming.count / PWR_CELL_LEN; i++) { + ret = eventHandler(chipDev, pwrTiming.buf, PWR_CELL_LEN); + CHECK_RETURN_VALUE(ret); + pwrTiming.buf = pwrTiming.buf + PWR_CELL_LEN; + } + return HDF_SUCCESS; +} + static int32_t SetTiming(ChipDevice *chipDev, bool enable) { #if defined(CONFIG_ARCH_MESON) return HDF_SUCCESS; #endif - int32_t i; int32_t ret; uint32_t rstPinAddr; uint32_t rstPinValue; uint32_t intPinAddr; uint32_t intPinValue; - SeqArray pwrOnTiming = {0}; - SeqArray pwroffTiming = {0}; TouchDriver *driver = chipDev->driver; + PowerEventHandler eventHandler; rstPinAddr = driver->boardCfg->pins.rstPinReg[0]; rstPinValue = driver->boardCfg->pins.rstPinReg[1]; @@ -268,37 +287,10 @@ static int32_t SetTiming(ChipDevice *chipDev, bool enable) __func__, rstPinAddr, rstPinValue, intPinAddr, intPinValue); HDF_LOGE("%s: enable = %d", __func__, enable); - if (enable) { - ret = memcpy_s(&pwrOnTiming, sizeof(SeqArray), &chipDev->chipCfg->pwrSeq.pwrOn, sizeof(SeqArray)); - if (ret != EOK) { - HDF_LOGE("%s: memcpy_s failed", __func__); - return HDF_FAILURE; - } - if ((pwrOnTiming.buf == NULL) || (pwrOnTiming.count == 0)) { - HDF_LOGE("%s: pwrOnTiming config is invalid", __func__); - return HDF_FAILURE; - } - for (i = 0; i < pwrOnTiming.count / PWR_CELL_LEN; i++) { - ret = HandleResetEvent(chipDev, pwrOnTiming.buf, PWR_CELL_LEN); - CHECK_RETURN_VALUE(ret); - pwrOnTiming.buf = pwrOnTiming.buf + PWR_CELL_LEN; - } - } else { - ret = memcpy_s(&pwroffTiming, sizeof(SeqArray), &chipDev->chipCfg->pwrSeq.pwrOff, sizeof(SeqArray)); - if (ret != EOK) { - HDF_LOGE("%s: memcpy_s failed", __func__); - return HDF_FAILURE; - } - if ((pwroffTiming.buf == NULL) || (pwroffTiming.count == 0)) { - HDF_LOGE("%s: pwroffTiming config is invalid", __func__); - return HDF_FAILURE; - } - for (i = 0; i < pwroffTiming.count / PWR_CELL_LEN; i++) { - ret = HandlePowerEvent(chipDev, pwroffTiming.buf, PWR_CELL_LEN); - CHECK_RETURN_VALUE(ret); - pwroffTiming.buf = pwroffTiming.buf + PWR_CELL_LEN; - } - } + SeqArray *src = enable ? &chipDev->chipCfg->pwrSeq.pwrOn : &chipDev->chipCfg->pwrSeq.pwrOff; + eventHandler = enable ? HandleResetEvent : HandlePowerEvent; + ret = HandleSeqArray(src, eventHandler, chipDev); + CHECK_RETURN_VALUE(ret); #if defined(CONFIG_ARCH_ROCKCHIP) ret = SetResetStatus(driver); diff --git a/framework/model/input/driver/hdf_touch.h b/framework/model/input/driver/hdf_touch.h index 248273d43..9adca63f0 100644 --- a/framework/model/input/driver/hdf_touch.h +++ b/framework/model/input/driver/hdf_touch.h @@ -109,4 +109,6 @@ typedef struct { int32_t RegisterTouchChipDevice(ChipDevice *chipDev); +typedef int32_t (*PowerEventHandler)(ChipDevice *chipDev, uint32_t *timing, uint32_t length); + #endif -- Gitee From ab5fd8a6a8cc5743337b95180e5ec170d582d6fa Mon Sep 17 00:00:00 2001 From: shilong Date: Wed, 24 Jul 2024 09:41:03 +0000 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: shilong --- framework/model/input/driver/hdf_touch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/model/input/driver/hdf_touch.c b/framework/model/input/driver/hdf_touch.c index 6529b860b..3f7fe6558 100644 --- a/framework/model/input/driver/hdf_touch.c +++ b/framework/model/input/driver/hdf_touch.c @@ -247,7 +247,7 @@ static int32_t HandleSeqArray(SeqArray *src, PowerEventHandler eventHandler, Chi return HDF_FAILURE; } if ((pwrTiming.buf == NULL) || (pwrTiming.count == 0)) { - HDF_LOGE("%s: obj config is invalid", __func__); + HDF_LOGE("%s: pwrTiming config is invalid", __func__); return HDF_FAILURE; } for (i = 0; i < pwrTiming.count / PWR_CELL_LEN; i++) { -- Gitee From 463ea2e70324d13065e6a0f005dfc0c3ca8a35da Mon Sep 17 00:00:00 2001 From: shilong Date: Thu, 25 Jul 2024 02:35:44 +0000 Subject: [PATCH 3/3] =?UTF-8?q?c=E8=AF=AD=E8=A8=80=E7=BC=96=E7=A8=8B?= =?UTF-8?q?=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: shilong --- framework/model/input/driver/hdf_touch.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/framework/model/input/driver/hdf_touch.c b/framework/model/input/driver/hdf_touch.c index 3f7fe6558..067e929d6 100644 --- a/framework/model/input/driver/hdf_touch.c +++ b/framework/model/input/driver/hdf_touch.c @@ -270,6 +270,7 @@ static int32_t SetTiming(ChipDevice *chipDev, bool enable) uint32_t intPinValue; TouchDriver *driver = chipDev->driver; PowerEventHandler eventHandler; + SeqArray *src = NULL; rstPinAddr = driver->boardCfg->pins.rstPinReg[0]; rstPinValue = driver->boardCfg->pins.rstPinReg[1]; @@ -287,7 +288,7 @@ static int32_t SetTiming(ChipDevice *chipDev, bool enable) __func__, rstPinAddr, rstPinValue, intPinAddr, intPinValue); HDF_LOGE("%s: enable = %d", __func__, enable); - SeqArray *src = enable ? &chipDev->chipCfg->pwrSeq.pwrOn : &chipDev->chipCfg->pwrSeq.pwrOff; + src = enable ? &chipDev->chipCfg->pwrSeq.pwrOn : &chipDev->chipCfg->pwrSeq.pwrOff; eventHandler = enable ? HandleResetEvent : HandlePowerEvent; ret = HandleSeqArray(src, eventHandler, chipDev); CHECK_RETURN_VALUE(ret); -- Gitee