diff --git a/framework/model/input/driver/hdf_hid_adapter.c b/framework/model/input/driver/hdf_hid_adapter.c index 26171509f5833ddcb7923efe5e47c8c09f03b6d8..cd96df37bb9ce628a7c2762b39e7e043155bdb37 100644 --- a/framework/model/input/driver/hdf_hid_adapter.c +++ b/framework/model/input/driver/hdf_hid_adapter.c @@ -226,7 +226,7 @@ static void DoRegisterInputDev(InputDevice* inputDev) } } -void CacheHid(InputDevice* inputDev) +static void CacheHid(InputDevice* inputDev) { HDF_LOGI("%s: Cache hid device", __func__); int32_t i = 0; diff --git a/framework/model/input/driver/hdf_hid_adapter.h b/framework/model/input/driver/hdf_hid_adapter.h index 2b4a5af2cfc55cafb831ed6b33b6ca9cf33b815a..d054a5a20f12d531d1b779aba441784e45dc419c 100644 --- a/framework/model/input/driver/hdf_hid_adapter.h +++ b/framework/model/input/driver/hdf_hid_adapter.h @@ -96,5 +96,4 @@ 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); -void CacheHid(InputDevice* inputDev); #endif diff --git a/framework/model/input/driver/hdf_input_device_manager.c b/framework/model/input/driver/hdf_input_device_manager.c index e1ed415402c58b654c73fc831984c680533e3ceb..078b41b1a52c3feb847c36416d6a6b725baff518 100644 --- a/framework/model/input/driver/hdf_input_device_manager.c +++ b/framework/model/input/driver/hdf_input_device_manager.c @@ -13,7 +13,6 @@ #include "hdf_device_object.h" #include "hdf_log.h" #include "osal_mem.h" -#include "hdf_hid_adapter.h" #define NODE_MODE 0660 #define SERVICE_NAME_LEN 24 diff --git a/framework/model/input/driver/hdf_touch.c b/framework/model/input/driver/hdf_touch.c index 52aec409c9d1e2ed0171c07cd927327df624d05c..8dff10cf692688606715be495001a71a04ae3c02 100644 --- a/framework/model/input/driver/hdf_touch.c +++ b/framework/model/input/driver/hdf_touch.c @@ -237,19 +237,39 @@ static int32_t Gt1xRequestIo(ChipDevice *chipDev) } #endif +static int32_t HandleSeqArray(SeqArray *obj, SeqArray *src, PowerEventHandler eventHandler) +{ + int32_t i; + int32_t ret = memcpy_s(obj, sizeof(SeqArray), src, sizeof(SeqArray)); + if (ret != EOK) { + HDF_LOGE("%s: memcpy_s failed", __func__); + return HDF_FAILURE; + } + if ((obj->buf == NULL) || (obj->count == 0)) { + HDF_LOGE("%s: obj config is invalid", __func__); + return HDF_FAILURE; + } + for (i = 0; i < obj->count / PWR_CELL_LEN; i++) { + ret = eventHandler(chipDev, obj->buf, PWR_CELL_LEN); + CHECK_RETURN_VALUE(ret); + obj->buf = obj->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; + PowerEventHandler eventHandler; SeqArray pwrOnTiming = {0}; - SeqArray pwroffTiming = {0}; + SeqArray pwrOffTiming = {0}; TouchDriver *driver = chipDev->driver; rstPinAddr = driver->boardCfg->pins.rstPinReg[0]; @@ -268,37 +288,11 @@ 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 *obj = enable ? &pwrOnTiming : &pwrOffTiming; + SeqArray *src = enable ? &chipDev->chipCfg->pwrSeq.pwrOn : &chipDev->chipCfg->pwrSeq.pwrOff; + eventHandler = enable ? HandleResetEvent : HandlePowerEvent; + ret = HandleSeqArray(obj, src, eventHandler); + 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 248273d43cc81a662d9fb9d48f02e09e107e070b..19b19d1731ef94ade9e53459bde2926d2910aedb 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 *buf, uint32_t len); + #endif