From 44f9977133c623b03c76bed50a7d8798f4bc4989 Mon Sep 17 00:00:00 2001 From: zianed Date: Sun, 26 Sep 2021 12:11:34 +0800 Subject: [PATCH 01/16] fixed d01008e from https://gitee.com/zianed/drivers_framework/pulls/279 fixed 590b4e4 from https://gitee.com/zianed/drivers_framework/pulls/278 delete unused file Signed-off-by: zianed --- model/audio/common/src/audio_dsp_base.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 model/audio/common/src/audio_dsp_base.c diff --git a/model/audio/common/src/audio_dsp_base.c b/model/audio/common/src/audio_dsp_base.c deleted file mode 100755 index e69de29bb..000000000 -- Gitee From 4c1b7d47727c6272fe16e8a185fe2c076119d749 Mon Sep 17 00:00:00 2001 From: jiachanglin Date: Wed, 13 Oct 2021 08:24:06 +0000 Subject: [PATCH 02/16] Description:L2 UT reset failed Feature or Bugfix:Feature Binary Source: No Signed-off-by: jiachanglin --- test/unittest/model/network/wifi/unittest/net/hdf_netbuf_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/model/network/wifi/unittest/net/hdf_netbuf_test.c b/test/unittest/model/network/wifi/unittest/net/hdf_netbuf_test.c index e82ab80d5..42961f96a 100644 --- a/test/unittest/model/network/wifi/unittest/net/hdf_netbuf_test.c +++ b/test/unittest/model/network/wifi/unittest/net/hdf_netbuf_test.c @@ -16,7 +16,7 @@ #define DEFAULT_TAIL_SIZE 20 #define DEFAULT_MAPPING_QUEUE 10 #define DEFAULT_TRIM_SIZE 3 -#define DEFAULT_SECTION_SIZE 3 +#define DEFAULT_SECTION_SIZE 10 #define MAX_MEM_ALLOC_SIZE 0x7fffffff -- Gitee From b49e4e5c7d2b35579f991794104a7d7af429decd Mon Sep 17 00:00:00 2001 From: zhang Date: Wed, 3 Nov 2021 10:34:53 +0800 Subject: [PATCH 03/16] modify walk function for HdfDeviceDestruct Signed-off-by: zhang --- core/host/src/hdf_device.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/host/src/hdf_device.c b/core/host/src/hdf_device.c index d61036007..451faf992 100644 --- a/core/host/src/hdf_device.c +++ b/core/host/src/hdf_device.c @@ -39,7 +39,8 @@ void HdfDeviceConstruct(struct HdfDevice *device) void HdfDeviceDestruct(struct HdfDevice *device) { struct HdfDeviceNode *devNode = NULL; - DLIST_FOR_EACH_ENTRY(devNode, &device->devNodes, struct HdfDeviceNode, entry) { + struct HdfDeviceNode *devNodeTmp = NULL; + DLIST_FOR_EACH_ENTRY_SAFE(devNode, devNodeTmp, &device->devNodes, struct HdfDeviceNode, entry) { HdfDeviceNodeDelete(devNode); } DListHeadInit(&device->devNodes); -- Gitee From 099d281abc9be787aacddbe3e7e3d1804e2a2a90 Mon Sep 17 00:00:00 2001 From: YOUR_NAME Date: Mon, 15 Nov 2021 10:01:21 +0800 Subject: [PATCH 04/16] =?UTF-8?q?=E4=BB=8E=E4=B8=BB=E7=BA=BF=E5=90=8C?= =?UTF-8?q?=E6=AD=A5-PWM=203=E4=B8=AA=E5=A4=B1=E8=B4=A5=E6=A0=B7=E4=BE=8B?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: YOUR_NAME --- support/platform/src/pwm_core.c | 63 ++++++- .../test/unittest/common/hdf_pwm_test.cpp | 6 - test/unittest/platform/common/pwm_test.c | 164 ++++++++++++------ test/unittest/platform/common/pwm_test.h | 2 +- test/unittest/platform/hdf_pwm_entry_test.c | 6 +- 5 files changed, 171 insertions(+), 70 deletions(-) diff --git a/support/platform/src/pwm_core.c b/support/platform/src/pwm_core.c index 98b2347be..1f77085da 100644 --- a/support/platform/src/pwm_core.c +++ b/support/platform/src/pwm_core.c @@ -6,13 +6,12 @@ * See the LICENSE file in the root of this repository for complete details. */ +#include "pwm_core.h" #include "hdf_log.h" #include "osal_mem.h" -#include "pwm_core.h" -#include "pwm_if.h" #include "securec.h" -#define HDF_LOG_TAG PWM_CORE +#define HDF_LOG_TAG pwm_core #define PWM_NAME_LEN 32 static struct PwmDev *PwmGetDevByNum(uint32_t num) @@ -91,6 +90,7 @@ int32_t PwmSetConfig(DevHandle handle, struct PwmConfig *config) int32_t ret; struct PwmDev *pwm = NULL; + HDF_LOGI("%s: enter.", __func__); if (handle == NULL) { HDF_LOGE("%s: handle is NULL", __func__); return HDF_ERR_INVALID_OBJECT; @@ -108,12 +108,16 @@ int32_t PwmSetConfig(DevHandle handle, struct PwmConfig *config) HDF_LOGE("%s: setConfig is not support", __func__); return HDF_ERR_NOT_SUPPORT; } + HDF_LOGI("%s: set PwmConfig: number %u, period %u, duty %u, polarity %u, enable %u.", __func__, + config->number, config->period, config->duty, config->polarity, config->status); ret = pwm->method->setConfig(pwm, config); if (ret != HDF_SUCCESS) { HDF_LOGE("%s: failed, ret %d", __func__, ret); return ret; } pwm->cfg = *config; + HDF_LOGI("%s: success.", __func__); + return HDF_SUCCESS; } @@ -121,6 +125,7 @@ int32_t PwmGetConfig(DevHandle handle, struct PwmConfig *config) { struct PwmDev *pwm = NULL; + HDF_LOGI("%s: enter.", __func__); if (handle == NULL) { HDF_LOGE("%s: handle is NULL", __func__); return HDF_ERR_INVALID_OBJECT; @@ -131,6 +136,7 @@ int32_t PwmGetConfig(DevHandle handle, struct PwmConfig *config) } pwm = (struct PwmDev *)handle; *config = pwm->cfg; + HDF_LOGI("%s: success.", __func__); return HDF_SUCCESS; } @@ -138,57 +144,96 @@ int32_t PwmGetConfig(DevHandle handle, struct PwmConfig *config) int32_t PwmEnable(DevHandle handle) { struct PwmConfig config; + uint32_t curValue; + int32_t ret; + HDF_LOGI("%s: enter.", __func__); if (PwmGetConfig(handle, &config) != HDF_SUCCESS) { return HDF_FAILURE; } + curValue = config.status; config.status = PWM_ENABLE_STATUS; - return PwmSetConfig(handle, &config); + ret = PwmSetConfig(handle, &config); + if (ret == HDF_SUCCESS) { + HDF_LOGI("%s: success. enable: %d -> %d.", __func__, curValue, config.status); + } + return ret; } int32_t PwmDisable(DevHandle handle) { struct PwmConfig config; + uint32_t curValue; + int32_t ret; + HDF_LOGI("%s: enter.", __func__); if (PwmGetConfig(handle, &config) != HDF_SUCCESS) { return HDF_FAILURE; } + curValue = config.status; config.status = PWM_DISABLE_STATUS; - return PwmSetConfig(handle, &config); + ret = PwmSetConfig(handle, &config); + if (ret == HDF_SUCCESS) { + HDF_LOGI("%s: success. enable: %d -> %d.", __func__, curValue, config.status); + } + return ret; } int32_t PwmSetPeriod(DevHandle handle, uint32_t period) { struct PwmConfig config; + uint32_t curValue; + int32_t ret; + HDF_LOGI("%s: enter.", __func__); if (PwmGetConfig(handle, &config) != HDF_SUCCESS) { return HDF_FAILURE; } + curValue = config.period; config.period = period; - return PwmSetConfig(handle, &config); + ret = PwmSetConfig(handle, &config); + if (ret == HDF_SUCCESS) { + HDF_LOGI("%s: success. period: %d -> %d.", __func__, curValue, config.period); + } + return ret; } int32_t PwmSetDuty(DevHandle handle, uint32_t duty) { struct PwmConfig config; + uint32_t curValue; + int32_t ret; + HDF_LOGI("%s: enter.", __func__); if (PwmGetConfig(handle, &config) != HDF_SUCCESS) { return HDF_FAILURE; } + curValue = config.duty; config.duty = duty; - return PwmSetConfig(handle, &config); + ret = PwmSetConfig(handle, &config); + if (ret == HDF_SUCCESS) { + HDF_LOGI("%s: success. duty: %d -> %d.", __func__, curValue, config.duty); + } + return ret; } int32_t PwmSetPolarity(DevHandle handle, uint8_t polarity) { struct PwmConfig config; + uint32_t curValue; + int32_t ret; + HDF_LOGI("%s: enter.", __func__); if (PwmGetConfig(handle, &config) != HDF_SUCCESS) { return HDF_FAILURE; } + curValue = config.polarity; config.polarity = polarity; - config.duty = config.period - config.duty; - return PwmSetConfig(handle, &config); + ret = PwmSetConfig(handle, &config); + if (ret == HDF_SUCCESS) { + HDF_LOGI("%s: success. polarity: %d -> %d.", __func__, curValue, config.polarity); + } + return ret; } int32_t PwmSetPriv(struct PwmDev *pwm, void *priv) diff --git a/support/platform/test/unittest/common/hdf_pwm_test.cpp b/support/platform/test/unittest/common/hdf_pwm_test.cpp index 3a439a5ea..c7c787dfa 100644 --- a/support/platform/test/unittest/common/hdf_pwm_test.cpp +++ b/support/platform/test/unittest/common/hdf_pwm_test.cpp @@ -6,13 +6,7 @@ * See the LICENSE file in the root of this repository for complete details. */ -#include -#include -#include -#include #include -#include -#include #include "hdf_uhdf_test.h" using namespace testing::ext; diff --git a/test/unittest/platform/common/pwm_test.c b/test/unittest/platform/common/pwm_test.c index 6c291326a..0ca46e516 100644 --- a/test/unittest/platform/common/pwm_test.c +++ b/test/unittest/platform/common/pwm_test.c @@ -6,14 +6,17 @@ * See the LICENSE file in the root of this repository for complete details. */ +#include "pwm_test.h" #include "device_resource_if.h" #include "hdf_base.h" #include "hdf_log.h" -#include "osal_mem.h" #include "osal_time.h" -#include "pwm_test.h" -#define HDF_LOG_TAG pwm_test_c +#define HDF_LOG_TAG pwm_test +#define SEQ_OUTPUT_DELAY 100 /* Delay time of sequential output, unit: ms */ +#define OUTPUT_WAVES_DELAY 1 /* Delay time of waves output, unit: second */ +#define TEST_WAVES_NUMBER 10 /* The number of waves for test. */ + struct PwmTestFunc { enum PwmTestCmd type; int32_t (*Func)(struct PwmTest *test); @@ -27,7 +30,7 @@ static DevHandle PwmTestGetHandle(struct PwmTest *test) static void PwmTestReleaseHandle(DevHandle handle) { if (handle == NULL) { - HDF_LOGE("%s: pwm handle is null", __func__); + HDF_LOGE("%s: pwm handle is null.", __func__); return; } PwmClose(handle); @@ -37,23 +40,36 @@ static int32_t PwmSetConfigTest(struct PwmTest *test) { int32_t ret; struct PwmConfig cfg = {0}; + uint32_t number; + HDF_LOGI("%s: enter. Test [PwmSetConfig].", __func__); + number = test->cfg.number; + test->cfg.number = (number > 0) ? 0 : TEST_WAVES_NUMBER; + HDF_LOGI("%s: Set number %u.", __func__, test->cfg.number); + ret = PwmSetConfig(test->handle, &(test->cfg)); + if (ret != HDF_SUCCESS) { + HDF_LOGE("%s: [PwmSetConfig] failed, ret %d.", __func__, ret); + return HDF_FAILURE; + } + OsalSleep(OUTPUT_WAVES_DELAY); + test->cfg.number = number; + HDF_LOGI("%s: Set number %u.", __func__, test->cfg.number); ret = PwmSetConfig(test->handle, &(test->cfg)); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmSetConfig] failed, ret %d.", __func__, ret); return HDF_FAILURE; } ret = PwmGetConfig(test->handle, &cfg); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmGetConfig] failed, ret %d.", __func__, ret); return HDF_FAILURE; } if (memcmp(&cfg, &(test->cfg), sizeof(cfg)) != 0) { - HDF_LOGE("%s: failed", __func__); + HDF_LOGE("%s: [memcmp] failed.", __func__); return HDF_FAILURE; } - HDF_LOGE("============= %s: success =============", __func__); + HDF_LOGI("%s: success.", __func__); return ret; } @@ -62,12 +78,13 @@ static int32_t PwmGetConfigTest(struct PwmTest *test) int32_t ret; struct PwmConfig cfg = {0}; + HDF_LOGI("%s: enter. Test [PwmGetConfig].", __func__); ret = PwmGetConfig(test->handle, &cfg); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmGetConfig] failed, ret %d.", __func__, ret); return HDF_FAILURE; } - HDF_LOGE("============= %s: success =============", __func__); + HDF_LOGI("%s: success.", __func__); return ret; } @@ -75,22 +92,25 @@ static int32_t PwmSetPeriodTest(struct PwmTest *test) { int32_t ret; struct PwmConfig cfg = {0}; + uint32_t period; - ret = PwmSetPeriod(test->handle, test->cfg.period); + period = test->cfg.period + test->originCfg.period; + HDF_LOGI("%s: enter. Test [PwmSetPeriod] period %u.", __func__, period); + ret = PwmSetPeriod(test->handle, period); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmSetPeriod] failed, ret %d.", __func__, ret); return HDF_FAILURE; } ret = PwmGetConfig(test->handle, &cfg); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmGetConfig] failed, ret %d.", __func__, ret); return HDF_FAILURE; } - if (cfg.period != test->cfg.period) { - HDF_LOGE("%s: failed", __func__); + if (cfg.period != period) { + HDF_LOGE("%s: failed.", __func__); return HDF_FAILURE; } - HDF_LOGE("============= %s: success =============", __func__); + HDF_LOGI("%s: success.", __func__); return ret; } @@ -98,22 +118,25 @@ static int32_t PwmSetDutyTest(struct PwmTest *test) { int32_t ret; struct PwmConfig cfg = {0}; + uint32_t duty; - ret = PwmSetDuty(test->handle, test->cfg.duty); + duty = test->cfg.duty + test->originCfg.duty; + HDF_LOGI("%s: enter. Test [PwmSetDuty] duty %u.", __func__, duty); + ret = PwmSetDuty(test->handle, duty); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmSetDuty] failed, ret %d.", __func__, ret); return HDF_FAILURE; } ret = PwmGetConfig(test->handle, &cfg); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmGetConfig] failed, ret %d.", __func__, ret); return HDF_FAILURE; } - if (cfg.duty != test->cfg.duty) { - HDF_LOGE("%s: failed", __func__); + if (cfg.duty != duty) { + HDF_LOGE("%s: failed.", __func__); return HDF_FAILURE; } - HDF_LOGE("============= %s: success =============", __func__); + HDF_LOGI("%s: success.", __func__); return ret; } @@ -122,21 +145,31 @@ static int32_t PwmSetPolarityTest(struct PwmTest *test) int32_t ret; struct PwmConfig cfg = {0}; + HDF_LOGI("%s: enter.", __func__); + test->cfg.polarity = PWM_NORMAL_POLARITY; + HDF_LOGI("%s: Test [PwmSetPolarity] polarity %u.", __func__, test->cfg.polarity); ret = PwmSetPolarity(test->handle, test->cfg.polarity); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmSetPolarity] failed, ret %d.", __func__, ret); + return HDF_FAILURE; + } + test->cfg.polarity = PWM_INVERTED_POLARITY; + HDF_LOGI("%s: Test [PwmSetPolarity] polarity %u.", __func__, test->cfg.polarity); + ret = PwmSetPolarity(test->handle, test->cfg.polarity); + if (ret != HDF_SUCCESS) { + HDF_LOGE("%s: [PwmSetPolarity] failed, ret %d.", __func__, ret); return HDF_FAILURE; } ret = PwmGetConfig(test->handle, &cfg); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmGetConfig] failed, ret %d.", __func__, ret); return HDF_FAILURE; } if (cfg.polarity != test->cfg.polarity) { - HDF_LOGE("%s: failed", __func__); + HDF_LOGE("%s: failed.", __func__); return HDF_FAILURE; } - HDF_LOGE("============= %s: success =============", __func__); + HDF_LOGI("%s: success.", __func__); return ret; } @@ -145,21 +178,28 @@ static int32_t PwmEnableTest(struct PwmTest *test) int32_t ret; struct PwmConfig cfg = {0}; + HDF_LOGI("%s: enter.", __func__); + ret = PwmDisable(test->handle); + if (ret != HDF_SUCCESS) { + HDF_LOGE("%s: [PwmDisable] failed, ret %d.", __func__, ret); + return HDF_FAILURE; + } + HDF_LOGI("%s: Test [PwmEnable] enable.", __func__); ret = PwmEnable(test->handle); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmEnable] failed, ret %d.", __func__, ret); return HDF_FAILURE; } ret = PwmGetConfig(test->handle, &cfg); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmGetConfig] failed, ret %d.", __func__, ret); return HDF_FAILURE; } - if (cfg.status == 0) { + if (cfg.status == PWM_DISABLE_STATUS) { HDF_LOGE("%s: failed", __func__); return HDF_FAILURE; } - HDF_LOGE("============= %s: success =============", __func__); + HDF_LOGI("%s: success.", __func__); return ret; } @@ -168,21 +208,28 @@ static int32_t PwmDisableTest(struct PwmTest *test) int32_t ret; struct PwmConfig cfg = {0}; + HDF_LOGI("%s: enter.", __func__); + ret = PwmEnable(test->handle); + if (ret != HDF_SUCCESS) { + HDF_LOGE("%s: [PwmEnable] failed, ret %d.", __func__, ret); + return HDF_FAILURE; + } + HDF_LOGI("%s: Test [PwmDisable] disable.", __func__); ret = PwmDisable(test->handle); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmDisable] failed, ret %d.", __func__, ret); return HDF_FAILURE; } ret = PwmGetConfig(test->handle, &cfg); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: error, ret %d", __func__, ret); + HDF_LOGE("%s: [PwmGetConfig] failed, ret %d.", __func__, ret); return HDF_FAILURE; } - if (cfg.status == 1) { - HDF_LOGE("%s: failed", __func__); + if (cfg.status == PWM_ENABLE_STATUS) { + HDF_LOGE("%s: failed.", __func__); return HDF_FAILURE; } - HDF_LOGE("============= %s: success =============", __func__); + HDF_LOGI("%s: success.", __func__); return ret; } @@ -212,7 +259,7 @@ static int32_t PwmReliabilityTest(struct PwmTest *test) (void)PwmDisable(test->handle); (void)PwmDisable(test->handle); - HDF_LOGE("============= %s: success =============", __func__); + HDF_LOGI("%s: success.", __func__); return HDF_SUCCESS; } @@ -254,7 +301,7 @@ static int32_t PwmTestAll(struct PwmTest *test) } total++; - HDF_LOGE("============= %s: Pwm Test Total %d Error %d =============", __func__, total, error); + HDF_LOGI("%s: Pwm Test Total %d Error %d.", __func__, total, error); return HDF_SUCCESS; } @@ -278,20 +325,34 @@ static int32_t PwmTestEntry(struct PwmTest *test, int32_t cmd) if (test == NULL) { return HDF_ERR_INVALID_OBJECT; } + OsalMSleep(SEQ_OUTPUT_DELAY); test->handle = PwmTestGetHandle(test); if (test->handle == NULL) { - HDF_LOGE("%s: spi test get handle fail", __func__); + HDF_LOGE("%s: pwm test get handle fail.", __func__); return HDF_FAILURE; } + // At first test case. + if (cmd == PWM_SET_PERIOD_TEST) { + ret = PwmGetConfig(test->handle, &(test->originCfg)); + if (ret != HDF_SUCCESS) { + HDF_LOGE("%s: [PwmGetConfig] failed, ret %d.", __func__, ret); + return HDF_FAILURE; + } + } for (i = 0; i < sizeof(g_pwmTestFunc) / sizeof(g_pwmTestFunc[0]); i++) { if (cmd == g_pwmTestFunc[i].type && g_pwmTestFunc[i].Func != NULL) { ret = g_pwmTestFunc[i].Func(test); - HDF_LOGE("%s: cmd %d ret %d", __func__, cmd, ret); + HDF_LOGI("%s: cmd %d ret %d.", __func__, cmd, ret); break; } } - + // At last test case. + if (cmd == PWM_DISABLE_TEST) { + PwmSetConfig(test->handle, &(test->originCfg)); + } PwmTestReleaseHandle(test->handle); + OsalMSleep(SEQ_OUTPUT_DELAY); + return ret; } @@ -302,9 +363,9 @@ static int32_t PwmTestBind(struct HdfDeviceObject *device) if (device != NULL) { device->service = &test.service; } else { - HDF_LOGE("%s: device is NULL", __func__); + HDF_LOGE("%s: device is NULL.", __func__); } - HDF_LOGE("%s: success", __func__); + HDF_LOGE("%s: success.", __func__); return HDF_SUCCESS; } @@ -317,31 +378,31 @@ static int32_t PwmTestInitFromHcs(struct PwmTest *test, const struct DeviceResou face = DeviceResourceGetIfaceInstance(HDF_CONFIG_SOURCE); if (face == NULL) { - HDF_LOGE("%s: face is null", __func__); + HDF_LOGE("%s: face is null.", __func__); return HDF_FAILURE; } if (face->GetUint32 == NULL) { - HDF_LOGE("%s: GetUint32 not support", __func__); + HDF_LOGE("%s: GetUint32 not support.", __func__); return HDF_ERR_NOT_SUPPORT; } ret = face->GetUint32(node, "num", &(test->num), 0); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: read num fail", __func__); + HDF_LOGE("%s: read num fail.", __func__); return HDF_FAILURE; } ret = face->GetUint32(node, "period", &(test->cfg.period), 0); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: read period fail", __func__); + HDF_LOGE("%s: read period fail.", __func__); return HDF_FAILURE; } ret = face->GetUint32(node, "duty", &(test->cfg.duty), 0); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: read duty fail", __func__); + HDF_LOGE("%s: read duty fail.", __func__); return HDF_FAILURE; } ret = face->GetUint32(node, "polarity", &tmp, 0); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: read polarity fail", __func__); + HDF_LOGE("%s: read polarity fail.", __func__); return HDF_FAILURE; } test->cfg.polarity = tmp; @@ -359,14 +420,14 @@ static int32_t PwmTestInit(struct HdfDeviceObject *device) struct PwmTest *test = NULL; if (device == NULL || device->service == NULL || device->property == NULL) { - HDF_LOGE("%s: invalid parameter", __func__); + HDF_LOGE("%s: invalid parameter.", __func__); return HDF_ERR_INVALID_PARAM; } test = (struct PwmTest *)device->service; if (PwmTestInitFromHcs(test, device->property) != HDF_SUCCESS) { return HDF_FAILURE; } - HDF_LOGE("%s: success", __func__); + HDF_LOGE("%s: success.", __func__); test->TestEntry = PwmTestEntry; return HDF_SUCCESS; } @@ -374,7 +435,7 @@ static int32_t PwmTestInit(struct HdfDeviceObject *device) static void PwmTestRelease(struct HdfDeviceObject *device) { (void)device; - HDF_LOGE("%s: success", __func__); + HDF_LOGE("%s: success.", __func__); } struct HdfDriverEntry g_pwmTestEntry = { @@ -385,4 +446,3 @@ struct HdfDriverEntry g_pwmTestEntry = { .moduleName = "PLATFORM_PWM_TEST", }; HDF_INIT(g_pwmTestEntry); - diff --git a/test/unittest/platform/common/pwm_test.h b/test/unittest/platform/common/pwm_test.h index b82a8b3ed..35cfddddd 100644 --- a/test/unittest/platform/common/pwm_test.h +++ b/test/unittest/platform/common/pwm_test.h @@ -10,7 +10,6 @@ #define PWM_TEST_H #include "hdf_device_desc.h" -#include "hdf_platform.h" #include "pwm_if.h" enum PwmTestCmd { @@ -31,6 +30,7 @@ struct PwmTest { int32_t (*TestEntry)(struct PwmTest *test, int32_t cmd); uint32_t num; struct PwmConfig cfg; + struct PwmConfig originCfg; DevHandle handle; }; diff --git a/test/unittest/platform/hdf_pwm_entry_test.c b/test/unittest/platform/hdf_pwm_entry_test.c index bb274ea24..6385cb6f4 100644 --- a/test/unittest/platform/hdf_pwm_entry_test.c +++ b/test/unittest/platform/hdf_pwm_entry_test.c @@ -8,7 +8,6 @@ #include "hdf_pwm_entry_test.h" #include "hdf_log.h" -#include "pwm_if.h" #include "pwm_test.h" #define HDF_LOG_TAG hdf_pwm_entry_test @@ -18,13 +17,16 @@ int32_t HdfPwmUnitTestEntry(HdfTestMsg *msg) struct PwmTest *test = NULL; if (msg == NULL) { - return HDF_FAILURE; + HDF_LOGE("%s: msg is NULL!", __func__); + return HDF_ERR_INVALID_OBJECT; } test = GetPwmTest(); if (test == NULL || test->TestEntry == NULL) { + HDF_LOGE("%s: test or TestEntry is NULL!", __func__); msg->result = HDF_FAILURE; return HDF_FAILURE; } + HDF_LOGI("%s: call [TestEntry]", __func__); msg->result = test->TestEntry(test, msg->subCmd); return msg->result; } -- Gitee From c25ab73101d51f3638bbf95fea22efc54eecb0aa Mon Sep 17 00:00:00 2001 From: jifengfei Date: Tue, 16 Nov 2021 16:47:40 +0800 Subject: [PATCH 05/16] modify 3.0LTS code Signed-off-by: jifengfei --- model/sensor/driver/accel/sensor_accel_driver.c | 4 ++-- model/sensor/driver/barometer/sensor_barometer_driver.c | 4 ++-- model/sensor/driver/chipset/accel/accel_bmi160.c | 9 ++++++--- model/sensor/driver/chipset/barometer/barometer_bmp180.c | 9 ++++++--- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/model/sensor/driver/accel/sensor_accel_driver.c b/model/sensor/driver/accel/sensor_accel_driver.c index 7f9a88370..dca54870a 100644 --- a/model/sensor/driver/accel/sensor_accel_driver.c +++ b/model/sensor/driver/accel/sensor_accel_driver.c @@ -299,7 +299,7 @@ BASE_CONFIG_EXIT: (void)memset_s(&drvData->accelCfg->sensorInfo, sizeof(struct SensorBasicInfo), 0, sizeof(struct SensorBasicInfo)); (void)memset_s(&drvData->accelCfg->busCfg, sizeof(struct SensorBusCfg), 0, sizeof(struct SensorBusCfg)); (void)memset_s(&drvData->accelCfg->sensorAttr, sizeof(struct SensorAttr), 0, sizeof(struct SensorAttr)); - return NULL; + return drvData->accelCfg; } void AccelReleaseCfgData(struct SensorCfgData *accelCfg) @@ -346,7 +346,7 @@ void AccelReleaseDriver(struct HdfDeviceObject *device) struct AccelDrvData *drvData = (struct AccelDrvData *)device->service; CHECK_NULL_PTR_RETURN(drvData); - if (drvData->detectFlag) { + if (drvData->detectFlag && drvData->accelCfg != NULL) { AccelReleaseCfgData(drvData->accelCfg); } diff --git a/model/sensor/driver/barometer/sensor_barometer_driver.c b/model/sensor/driver/barometer/sensor_barometer_driver.c index 988ea0333..251aa390a 100644 --- a/model/sensor/driver/barometer/sensor_barometer_driver.c +++ b/model/sensor/driver/barometer/sensor_barometer_driver.c @@ -300,7 +300,7 @@ BASE_CONFIG_EXIT: sizeof(struct SensorBasicInfo)); (void)memset_s(&drvData->barometerCfg->busCfg, sizeof(struct SensorBusCfg), 0, sizeof(struct SensorBusCfg)); (void)memset_s(&drvData->barometerCfg->sensorAttr, sizeof(struct SensorAttr), 0, sizeof(struct SensorAttr)); - return NULL; + return drvData->barometerCfg; } void BarometerReleaseCfgData(struct SensorCfgData *barometerCfg) @@ -347,7 +347,7 @@ void BarometerReleaseDriver(struct HdfDeviceObject *device) struct BarometerDrvData *drvData = (struct BarometerDrvData *)device->service; CHECK_NULL_PTR_RETURN(drvData); - if (drvData->detectFlag) { + if (drvData->detectFlag && drvData->barometerCfg != NULL) { BarometerReleaseCfgData(drvData->barometerCfg); } diff --git a/model/sensor/driver/chipset/accel/accel_bmi160.c b/model/sensor/driver/chipset/accel/accel_bmi160.c index b39d7bc4c..2ee5764f8 100644 --- a/model/sensor/driver/chipset/accel/accel_bmi160.c +++ b/model/sensor/driver/chipset/accel/accel_bmi160.c @@ -187,7 +187,8 @@ int32_t Bmi160InitDriver(struct HdfDeviceObject *device) } drvData->sensorCfg = AccelCreateCfgData(device->property); - if (drvData->sensorCfg == NULL) { + if (drvData->sensorCfg == NULL || drvData->sensorCfg->root == NULL) { + HDF_LOGD("%s: Creating accelcfg failed because detection failed", __func__); return HDF_ERR_NOT_SUPPORT; } @@ -215,8 +216,10 @@ void Bmi160ReleaseDriver(struct HdfDeviceObject *device) struct Bmi160DrvData *drvData = (struct Bmi160DrvData *)device->service; CHECK_NULL_PTR_RETURN(drvData); - AccelReleaseCfgData(drvData->sensorCfg); - drvData->sensorCfg = NULL; + if (drvData->sensorCfg != NULL) { + AccelReleaseCfgData(drvData->sensorCfg); + drvData->sensorCfg = NULL; + } OsalMemFree(drvData); } diff --git a/model/sensor/driver/chipset/barometer/barometer_bmp180.c b/model/sensor/driver/chipset/barometer/barometer_bmp180.c index 298684807..2bb975471 100644 --- a/model/sensor/driver/chipset/barometer/barometer_bmp180.c +++ b/model/sensor/driver/chipset/barometer/barometer_bmp180.c @@ -367,7 +367,8 @@ int32_t Bmp180InitDriver(struct HdfDeviceObject *device) } drvData->sensorCfg = BarometerCreateCfgData(device->property); - if (drvData->sensorCfg == NULL) { + if (drvData->sensorCfg == NULL || drvData->sensorCfg->root == NULL) { + HDF_LOGD("%s: Creating barometercfg failed because detection failed", __func__); return HDF_ERR_NOT_SUPPORT; } @@ -395,8 +396,10 @@ void Bmp180ReleaseDriver(struct HdfDeviceObject *device) struct Bmp180DrvData *drvData = (struct Bmp180DrvData *)device->service; CHECK_NULL_PTR_RETURN(drvData); - BarometerReleaseCfgData(drvData->sensorCfg); - drvData->sensorCfg = NULL; + if (drvData->sensorCfg != NULL) { + BarometerReleaseCfgData(drvData->sensorCfg); + drvData->sensorCfg = NULL; + } OsalMemFree(drvData); } -- Gitee From c32a4550b4e1eb980eb681cc89a86e8ca1c27fac Mon Sep 17 00:00:00 2001 From: YOUR_NAME Date: Wed, 17 Nov 2021 08:16:06 +0000 Subject: [PATCH 06/16] fix input issue Signed-off-by: YOUR_NAME --- model/input/driver/hdf_hid_adapter.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/model/input/driver/hdf_hid_adapter.c b/model/input/driver/hdf_hid_adapter.c index 1ab568243..3ebda661b 100644 --- a/model/input/driver/hdf_hid_adapter.c +++ b/model/input/driver/hdf_hid_adapter.c @@ -114,12 +114,12 @@ static int32_t SetInputDevAbsAttr(InputDevice *inputDev, HidInfo *info) return HDF_SUCCESS; } -static int32_t GetInfoFromCache(InputDevice *inputDev, HidInfo *info) +static int32_t GetInfoFromCache(InputDevice *inputDev, HidInfo **info) { int32_t id = 0; while (id < MAX_INPUT_DEV_NUM) { if (g_cachedInfo[id] != NULL && !strcmp(inputDev->devName, g_cachedInfo[id]->devName)) { - info = g_cachedInfo[id]; + *info = g_cachedInfo[id]; break; } id++; @@ -137,7 +137,7 @@ static void SetInputDevAbility(InputDevice *inputDev) uint32_t len; int32_t ret; - ret = GetInfoFromCache(inputDev, info); + ret = GetInfoFromCache(inputDev, &info); MEMCPY_CHECK_RETURN(ret); len = sizeof(unsigned long); ret = memcpy_s(inputDev->abilitySet.devProp, len * BITS_TO_LONG(INPUT_PROP_CNT), -- Gitee From 6dab471c4be2364ec3c509673dbffb16fa031862 Mon Sep 17 00:00:00 2001 From: yinshuqing Date: Mon, 22 Nov 2021 10:24:15 +0800 Subject: [PATCH 07/16] =?UTF-8?q?fixed=2051a5f85=20from=20https://gitee.co?= =?UTF-8?q?m/qqkongbai/drivers=5Fframework/pulls/414=20=E5=86=85=E5=AD=98?= =?UTF-8?q?=E6=B3=84=E6=BC=8F=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yinshuqing --- support/platform/src/dmac_core.c | 1 + 1 file changed, 1 insertion(+) diff --git a/support/platform/src/dmac_core.c b/support/platform/src/dmac_core.c index c5d529f0b..1cdccf936 100644 --- a/support/platform/src/dmac_core.c +++ b/support/platform/src/dmac_core.c @@ -229,6 +229,7 @@ static void DmacFreeChannel(struct DmaCntlr *cntlr, uint16_t channel) } OsalSpinLockIrqSave(&cntlr->lock, &flags); + DmacFreeLli(&cntlr->channelList[channel]); cntlr->channelList[channel].useStatus = DMAC_CHN_VACANCY; OsalSpinUnlockIrqRestore(&cntlr->lock, &flags); } -- Gitee From 198877a8b847b6dbfe4163d4ba93911afeb07fab Mon Sep 17 00:00:00 2001 From: YOUR_NAME Date: Thu, 25 Nov 2021 01:05:21 +0000 Subject: [PATCH 08/16] =?UTF-8?q?=E8=A7=A3=E5=86=B3pwm=E8=83=8C=E5=85=89?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E8=AE=BE=E7=BD=AE0=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: YOUR_NAME --- model/display/driver/backlight/pwm_bl.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/model/display/driver/backlight/pwm_bl.c b/model/display/driver/backlight/pwm_bl.c index c3710b4ff..f2dc3ac7a 100644 --- a/model/display/driver/backlight/pwm_bl.c +++ b/model/display/driver/backlight/pwm_bl.c @@ -48,18 +48,16 @@ static int32_t BlPwmUpdateBrightness(struct BacklightDev *blDev, uint32_t bright HDF_LOGE("%s maxBrightness is 0", __func__); return HDF_FAILURE; } + if (brightness == 0) { + return PwmDisable(blPwmDev->pwmHandle); + } duty = (brightness * blPwmDev->config.period) / blPwmDev->props.maxBrightness; ret = PwmSetDuty(blPwmDev->pwmHandle, duty); if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: PwmSetDutyCycle failed, ret %d", __func__, ret); + HDF_LOGE("%s: PwmSetDuty failed, ret %d", __func__, ret); return HDF_FAILURE; } - if (brightness != 0) { - ret = PwmEnable(blPwmDev->pwmHandle); - } else { - ret = PwmDisable(blPwmDev->pwmHandle); - } - return ret; + return PwmEnable(blPwmDev->pwmHandle); } static struct BacklightOps g_blDevOps = { @@ -183,4 +181,4 @@ struct HdfDriverEntry g_pwmBlDevEntry = { .Init = BlPwmEntryInit, }; -HDF_INIT(g_pwmBlDevEntry); \ No newline at end of file +HDF_INIT(g_pwmBlDevEntry); -- Gitee From ec740ee69cb99405c55412b321f5781f8631f3f7 Mon Sep 17 00:00:00 2001 From: YOUR_NAME Date: Fri, 26 Nov 2021 01:34:19 +0000 Subject: [PATCH 09/16] =?UTF-8?q?Description:=E6=8C=91=E5=8D=95=E8=A7=A3?= =?UTF-8?q?=E5=86=B3hdf=5Funitest=5Ftest=E7=94=A8=E4=BE=8B=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E9=97=AE=E9=A2=98=20Feature=20or=20Bugfix:Feature=20B?= =?UTF-8?q?inary=20Source:=20No?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: YOUR_NAME --- .../wifi/unittest/message/hdf_single_node_message_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c b/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c index dc017718f..d79338f91 100644 --- a/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c +++ b/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c @@ -16,7 +16,7 @@ const uint32_t SEND_MESSAGE_COUNT = 40000; const uint32_t SYNC_MESSAGE_TIMEOUT = 2; -const uint32_t ASYNC_MESSAGE_TIMEOUT = 2; +const uint32_t ASYNC_MESSAGE_TIMEOUT = 5; #define COMMON_SEM_TIMEOUT 300 enum ServiceList { -- Gitee From a352a0b775bf8777620729f8fb468a0e5a30daf8 Mon Sep 17 00:00:00 2001 From: YOUR_NAME Date: Mon, 29 Nov 2021 01:04:26 +0000 Subject: [PATCH 10/16] =?UTF-8?q?Description:=E6=8C=91=E5=8D=95=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E8=B6=85=E6=97=B6=E9=97=AE=E9=A2=98=20Feature=20or=20?= =?UTF-8?q?Bugfix:Feature=20Binary=20Source:=20No?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: YOUR_NAME --- .../wifi/unittest/message/hdf_single_node_message_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c b/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c index d79338f91..92c875e9d 100644 --- a/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c +++ b/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c @@ -16,7 +16,7 @@ const uint32_t SEND_MESSAGE_COUNT = 40000; const uint32_t SYNC_MESSAGE_TIMEOUT = 2; -const uint32_t ASYNC_MESSAGE_TIMEOUT = 5; +const uint32_t ASYNC_MESSAGE_TIMEOUT = 8; #define COMMON_SEM_TIMEOUT 300 enum ServiceList { -- Gitee From b8cbf3e4b232643c897a25dd339bee58fedd8404 Mon Sep 17 00:00:00 2001 From: YOUR_NAME Date: Mon, 29 Nov 2021 09:36:21 +0000 Subject: [PATCH 11/16] Description:ut failed about hdf_single_node_message_test Feature or Bugfix:Feature Binary Source: No Signed-off-by: YOUR_NAME --- .../wifi/unittest/message/hdf_single_node_message_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c b/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c index 92c875e9d..d79338f91 100644 --- a/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c +++ b/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c @@ -16,7 +16,7 @@ const uint32_t SEND_MESSAGE_COUNT = 40000; const uint32_t SYNC_MESSAGE_TIMEOUT = 2; -const uint32_t ASYNC_MESSAGE_TIMEOUT = 8; +const uint32_t ASYNC_MESSAGE_TIMEOUT = 5; #define COMMON_SEM_TIMEOUT 300 enum ServiceList { -- Gitee From a0fc84edca18c8041a286c5a704ff8427ded25cd Mon Sep 17 00:00:00 2001 From: YOUR_NAME Date: Mon, 29 Nov 2021 09:38:11 +0000 Subject: [PATCH 12/16] Description:ut failed about hdf_single_node_message_test Feature or Bugfix:Feature Binary Source: No Signed-off-by: YOUR_NAME --- .../wifi/unittest/message/hdf_single_node_message_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c b/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c index d79338f91..92c875e9d 100644 --- a/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c +++ b/test/unittest/model/network/wifi/unittest/message/hdf_single_node_message_test.c @@ -16,7 +16,7 @@ const uint32_t SEND_MESSAGE_COUNT = 40000; const uint32_t SYNC_MESSAGE_TIMEOUT = 2; -const uint32_t ASYNC_MESSAGE_TIMEOUT = 5; +const uint32_t ASYNC_MESSAGE_TIMEOUT = 8; #define COMMON_SEM_TIMEOUT 300 enum ServiceList { -- Gitee From 16154c190c89fd915d054e515bd8bb397e84252a Mon Sep 17 00:00:00 2001 From: jifengfei Date: Fri, 3 Dec 2021 15:50:21 +0800 Subject: [PATCH 13/16] clean display 3.0 waring Signed-off-by: jifengfei --- model/display/driver/hdf_disp.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/model/display/driver/hdf_disp.c b/model/display/driver/hdf_disp.c index 8d7d2603a..2e04c5fc3 100644 --- a/model/display/driver/hdf_disp.c +++ b/model/display/driver/hdf_disp.c @@ -109,8 +109,8 @@ static int32_t SetDispBacklight(uint32_t devId, uint32_t level) if (disp && disp->panelManager && devId < disp->panelManager->panelNum) { panel = disp->panelManager->panel[devId]; } - if (UpdateBrightness(panel->blDev, level) != HDF_SUCCESS) { - HDF_LOGE("%s:UpdateBrightness failed", __func__); + if ((panel == NULL) || (UpdateBrightness(panel->blDev, level) != HDF_SUCCESS)) { + HDF_LOGE("%s:panel is null or UpdateBrightness failed", __func__); return HDF_FAILURE; } HDF_LOGI("%s:level = %u", __func__, level); @@ -172,7 +172,7 @@ static int32_t SetDispPower(uint32_t devId, uint32_t powerStatus) OsalMutexLock(&disp->dispMutex); if (panel->powerStatus == powerStatus) { OsalMutexUnlock(&disp->dispMutex); - HDF_LOGE("%s:devId[%d] already in mode = %d", __func__, devId, powerStatus); + HDF_LOGE("%s: panel already in mode = %d", __func__, powerStatus); return HDF_SUCCESS; } switch (powerStatus) { @@ -289,6 +289,7 @@ static int32_t GetBacklight(struct HdfDeviceObject *device, struct HdfSBuf *reqD HDF_LOGE("%s: get panel failed", __func__); return HDF_FAILURE; } + panel = disp->panelManager->panel[devId]; if (GetCurrBrightness(panel->blDev, &currLevel) != HDF_SUCCESS) { HDF_LOGE("%s: GetCurrBrightness failed", __func__); return HDF_FAILURE; @@ -393,6 +394,10 @@ static void EsdTimerHandler(uintptr_t arg) struct DispManager *disp = NULL; disp = GetDispManager(); + if ((disp == NULL) || (disp->esd == NULL)) { + HDF_LOGE("%s: disp or esd is null", __func__); + return; + } if (devId >= disp->esd->panelNum) { HDF_LOGE("%s: esd is null", __func__); return; @@ -409,14 +414,20 @@ static void EsdWorkHandler(void *arg) struct DispManager *disp = NULL; disp = GetDispManager(); + if ((disp == NULL) || (disp->panelManager == NULL)) { + HDF_LOGE("%s: disp or panelManager is null", __func__); + return; + } if (devId >= disp->panelManager->panelNum) { HDF_LOGE("%s: dispCtrl is null or panel is null", __func__); return; } panel = disp->panelManager->panel[devId]; - if ((panel->esd != NULL) && (panel->esd->checkFunc != NULL)) { - ret = panel->esd->checkFunc(panel); + if ((panel->esd == NULL) || (panel->esd->checkFunc == NULL)) { + HDF_LOGE("%s: esd or checkFunc is null", __func__); + return; } + ret = panel->esd->checkFunc(panel); if (ret != HDF_SUCCESS) { OsalMutexLock(&disp->dispMutex); if (panel->esd->state == ESD_RUNNING) { @@ -429,7 +440,7 @@ static void EsdWorkHandler(void *arg) OsalMutexUnlock(&disp->dispMutex); panel->esd->recoveryNum++; } - HDF_LOGD("%s devId[%d] recoveryNum = %d", __func__, devId, panel->esd->recoveryNum); + HDF_LOGD("%s recoveryNum = %d", __func__, panel->esd->recoveryNum); if (panel->esd->recoveryNum >= ESD_MAX_RECOVERY) { panel->esd->recoveryNum = 0; OsalMutexLock(&disp->dispMutex); @@ -459,7 +470,7 @@ static void EsdCheckStartUp(struct DispEsd *esd, uint32_t devId) EsdTimerHandler, (uintptr_t)devId); OsalTimerStartLoop(esd->timer[devId]); esd->panelEsd[devId]->state = ESD_RUNNING; - HDF_LOGI("%s devId[%d] enable esd check", __func__, devId); + HDF_LOGI("%s panel enable esd check", __func__); } } } @@ -476,7 +487,7 @@ static void EsdCheckEnd(struct DispEsd *esd, uint32_t devId) if (esd->panelEsd[devId]->state == ESD_RUNNING) { OsalTimerDelete(esd->timer[devId]); esd->panelEsd[devId]->state = ESD_READY; - HDF_LOGI("%s devId[%d], disable esd check", __func__, devId); + HDF_LOGI("%s panel disable esd check", __func__); } } } -- Gitee From 22f5527f77a05068d47243f170110c28655d8e3c Mon Sep 17 00:00:00 2001 From: s00442234 Date: Sat, 11 Dec 2021 16:09:18 +0800 Subject: [PATCH 14/16] fix:delete mipi-dis screen refresh logs Signed-off-by: s00442234 --- support/platform/src/mipi_dsi_core.c | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/support/platform/src/mipi_dsi_core.c b/support/platform/src/mipi_dsi_core.c index 8d75f5b13..d1dcf10bd 100644 --- a/support/platform/src/mipi_dsi_core.c +++ b/support/platform/src/mipi_dsi_core.c @@ -23,7 +23,6 @@ static struct MipiDsiHandle g_mipiDsihandle[MAX_CNTLR_CNT]; int32_t MipiDsiRegisterCntlr(struct MipiDsiCntlr *cntlr, struct HdfDeviceObject *device) { - HDF_LOGI("%s: enter!", __func__); if (cntlr == NULL) { HDF_LOGE("%s: cntlr is NULL.", __func__); return HDF_ERR_INVALID_PARAM; @@ -78,7 +77,6 @@ struct MipiDsiCntlr *MipiDsiCntlrFromDevice(struct HdfDeviceObject *device) struct MipiDsiCntlr *MipiDsiCntlrOpen(uint8_t number) { struct MipiDsiCntlr *cntlr = NULL; - HDF_LOGI("%s: enter!", __func__); if (number >= MAX_CNTLR_CNT) { HDF_LOGE("%s: invalid number.", __func__); @@ -117,7 +115,6 @@ void MipiDsiCntlrClose(struct MipiDsiCntlr *cntlr) int32_t MipiDsiCntlrSetCfg(struct MipiDsiCntlr *cntlr, struct MipiCfg *cfg) { int32_t ret; - HDF_LOGI("%s: enter!", __func__); if ((cntlr == NULL) || (cntlr->ops == NULL)) { HDF_LOGE("%s: cntlr or ops is NULL.", __func__); @@ -139,9 +136,7 @@ int32_t MipiDsiCntlrSetCfg(struct MipiDsiCntlr *cntlr, struct MipiCfg *cfg) ret = cntlr->ops->setCntlrCfg(cntlr); (void)OsalMutexUnlock(&(cntlr->lock)); - if (ret == HDF_SUCCESS) { - HDF_LOGI("%s: success!", __func__); - } else { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: failed!", __func__); } @@ -259,9 +254,7 @@ int32_t MipiDsiCntlrTx(struct MipiDsiCntlr *cntlr, struct DsiCmdDesc *cmd) } (void)OsalMutexUnlock(&(cntlr->lock)); - if (ret == HDF_SUCCESS) { - HDF_LOGI("%s: success!", __func__); - } else { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: failed!", __func__); } @@ -290,9 +283,7 @@ int32_t MipiDsiCntlrRx(struct MipiDsiCntlr *cntlr, struct DsiCmdDesc *cmd, int32 ret = cntlr->ops->getCmd(cntlr, cmd, readLen, out); (void)OsalMutexUnlock(&(cntlr->lock)); - if (ret == HDF_SUCCESS) { - HDF_LOGI("%s: success!", __func__); - } else { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: failed!", __func__); } @@ -317,9 +308,7 @@ int32_t MipiDsiCntlrPowerControl(struct MipiDsiCntlr *cntlr, uint8_t enable) ret = cntlr->ops->powerControl(cntlr, enable); (void)OsalMutexUnlock(&(cntlr->lock)); - if (ret == HDF_SUCCESS) { - HDF_LOGI("%s: success!", __func__); - } else { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: failed!", __func__); } @@ -344,9 +333,7 @@ int32_t MipiDsiCntlrAttach(struct MipiDsiCntlr *cntlr, uint8_t *name) ret = cntlr->ops->attach(cntlr, name); (void)OsalMutexUnlock(&(cntlr->lock)); - if (ret == HDF_SUCCESS) { - HDF_LOGI("%s: success!", __func__); - } else { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: failed!", __func__); } -- Gitee From ed6e01556ef74f649ef7c18def76f0bc62c38fb6 Mon Sep 17 00:00:00 2001 From: sunxuejiao Date: Tue, 21 Dec 2021 17:25:19 +0800 Subject: [PATCH 15/16] fix: fix the bug that release the memory and lock resource of manager->eventMutex Signed-off-by: sunxuejiao --- .../driver/common/src/sensor_device_manager.c | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/model/sensor/driver/common/src/sensor_device_manager.c b/model/sensor/driver/common/src/sensor_device_manager.c index 8c3389392..c38271e7a 100644 --- a/model/sensor/driver/common/src/sensor_device_manager.c +++ b/model/sensor/driver/common/src/sensor_device_manager.c @@ -88,14 +88,16 @@ int32_t DeleteSensorDevice(const struct SensorBasicInfo *sensorBaseInfo) int32_t ReportSensorEvent(const struct SensorReportEvent *events) { int32_t ret; + struct SensorDevMgrData *manager = NULL; + struct HdfSBuf *msg = NULL; CHECK_NULL_PTR_RETURN_VALUE(events, HDF_ERR_INVALID_PARAM); - struct SensorDevMgrData *manager = GetSensorDeviceManager(); + manager = GetSensorDeviceManager(); CHECK_NULL_PTR_RETURN_VALUE(manager, HDF_ERR_INVALID_PARAM); (void)OsalMutexLock(&manager->eventMutex); - struct HdfSBuf *msg = HdfSBufObtain(HDF_SENSOR_EVENT_MAX_BUF); + msg = HdfSBufObtain(HDF_SENSOR_EVENT_MAX_BUF); if (msg == NULL) { (void)OsalMutexUnlock(&manager->eventMutex); return HDF_ERR_INVALID_PARAM; @@ -128,11 +130,14 @@ EXIT: static int32_t GetAllSensorInfo(struct HdfSBuf *data, struct HdfSBuf *reply) { - (void)data; + int32_t count = 0; struct SensorDevInfoNode *pos = NULL; struct SensorBasicInfo *sensorInfo = NULL; - struct SensorDevMgrData *manager = GetSensorDeviceManager(); - int32_t count = 0; + struct SensorDevMgrData *manager = NULL; + + (void)data; + + manager = GetSensorDeviceManager(); CHECK_NULL_PTR_RETURN_VALUE(reply, HDF_ERR_INVALID_PARAM); CHECK_NULL_PTR_RETURN_VALUE(manager, HDF_ERR_INVALID_PARAM); @@ -303,9 +308,11 @@ static int32_t DispatchSensor(struct HdfDeviceIoClient *client, int32_t BindSensorDevManager(struct HdfDeviceObject *device) { + struct SensorDevMgrData *manager = NULL; + CHECK_NULL_PTR_RETURN_VALUE(device, HDF_ERR_INVALID_PARAM); - struct SensorDevMgrData *manager = (struct SensorDevMgrData *)OsalMemCalloc(sizeof(*manager)); + manager = (struct SensorDevMgrData *)OsalMemCalloc(sizeof(*manager)); if (manager == NULL) { HDF_LOGE("%s: malloc manager fail!", __func__); return HDF_ERR_MALLOC_FAIL; @@ -321,8 +328,10 @@ int32_t BindSensorDevManager(struct HdfDeviceObject *device) int32_t InitSensorDevManager(struct HdfDeviceObject *device) { + struct SensorDevMgrData *manager = NULL; + CHECK_NULL_PTR_RETURN_VALUE(device, HDF_ERR_INVALID_PARAM); - struct SensorDevMgrData *manager = (struct SensorDevMgrData *)device->service; + manager = (struct SensorDevMgrData *)device->service; CHECK_NULL_PTR_RETURN_VALUE(manager, HDF_ERR_INVALID_PARAM); DListHeadInit(&manager->sensorDevInfoHead); @@ -347,11 +356,13 @@ int32_t InitSensorDevManager(struct HdfDeviceObject *device) void ReleaseSensorDevManager(struct HdfDeviceObject *device) { - CHECK_NULL_PTR_RETURN(device); - struct SensorDevInfoNode *pos = NULL; struct SensorDevInfoNode *tmp = NULL; - struct SensorDevMgrData *manager = (struct SensorDevMgrData *)device->service; + struct SensorDevMgrData *manager = NULL; + + CHECK_NULL_PTR_RETURN(device); + + manager = (struct SensorDevMgrData *)device->service; CHECK_NULL_PTR_RETURN(manager); DLIST_FOR_EACH_ENTRY_SAFE(pos, tmp, &manager->sensorDevInfoHead, struct SensorDevInfoNode, node) { @@ -360,6 +371,7 @@ void ReleaseSensorDevManager(struct HdfDeviceObject *device) } OsalMutexDestroy(&manager->mutex); + OsalMutexDestroy(&manager->eventMutex); OsalMemFree(manager); g_sensorDeviceManager = NULL; } -- Gitee From 2de4743227174f0ff73fa98b388304a52424ab1f Mon Sep 17 00:00:00 2001 From: liyf0715 Date: Fri, 24 Dec 2021 22:30:40 +0800 Subject: [PATCH 16/16] DLTS Signed-off-by: liyf0715 --- model/input/driver/touchscreen/Kconfig | 6 + model/input/driver/touchscreen/touch_ft5336.c | 375 ++++++++++++++++++ model/input/driver/touchscreen/touch_ft5336.h | 46 +++ 3 files changed, 427 insertions(+) create mode 100644 model/input/driver/touchscreen/Kconfig create mode 100644 model/input/driver/touchscreen/touch_ft5336.c create mode 100644 model/input/driver/touchscreen/touch_ft5336.h diff --git a/model/input/driver/touchscreen/Kconfig b/model/input/driver/touchscreen/Kconfig new file mode 100644 index 000000000..2bf2eff0d --- /dev/null +++ b/model/input/driver/touchscreen/Kconfig @@ -0,0 +1,6 @@ +config ARCH_VIM3L_TOUCH + bool "config vim3l ft5336 touch" + default n + help + Answer Y to enable config ft5336 touch. + diff --git a/model/input/driver/touchscreen/touch_ft5336.c b/model/input/driver/touchscreen/touch_ft5336.c new file mode 100644 index 000000000..ceb422f66 --- /dev/null +++ b/model/input/driver/touchscreen/touch_ft5336.c @@ -0,0 +1,375 @@ +#include +#include "osal_mem.h" +#include "hdf_device_desc.h" +#include "hdf_touch.h" +#include "input_i2c_ops.h" +#include "touch_ft5336.h" +#include "hdf_log.h" +#include +#include "input_config.h" +#include "hdf_input_device_manager.h" +#include "hdf_types.h" +#include "device_resource_if.h" +#include "gpio_if.h" +#include "hdf_device_desc.h" +#include "osal_io.h" +#include "event_hub.h" + +#define TP_SWAP(x, y) do {\ + typeof(x) z = x;\ + x = y;\ + y = z; \ +} while (0) + +static int32_t ChipInit(ChipDevice *device) +{ + return HDF_SUCCESS; +} + +static int32_t ChipResume(ChipDevice *device) +{ + return HDF_SUCCESS; +} + +static int32_t ChipSuspend(ChipDevice *device) +{ + return HDF_SUCCESS; +} + +static int Ft5336_Identify(ChipDevice *device, const InputI2cClient *i2cClient) +{ + u8 rdbuf[EDT_NAME_LEN]; + char *p; + int error; + char fw_version[EDT_NAME_LEN]; + + memset(rdbuf, 0, sizeof(rdbuf)); + + error = InputI2cRead(i2cClient, "\xbb", 1, rdbuf, EDT_NAME_LEN - 1); + if (error) + return error; + + /* Probe content for something consistent. + * M06 starts with a response byte. + * M09/Generic does not provide model number information. + */ + if (!(strncasecmp(rdbuf + 1, "EP0", 3))) { + device->chipCfg->chipVersion = EDT_M06; + HDF_LOGI("%s: version = EDT_M06", __func__); + + rdbuf[EDT_NAME_LEN - 1] = '\0'; + if (rdbuf[EDT_NAME_LEN - 2] == '$') + rdbuf[EDT_NAME_LEN - 2] = '\0'; + + p = strchr(rdbuf, '*'); + if (p) + *p++ = '\0'; + strlcpy(fw_version, p ? p : "", EDT_NAME_LEN); + } else { + /* since there are only two versions around (M06, M09) */ + device->chipCfg->chipVersion = EDT_M09; + HDF_LOGI("%s: version = EDT_M09;", __func__); + + error = InputI2cRead(i2cClient, "\xA6", 1, rdbuf, 2); + if (error) + return error; + + strlcpy(fw_version, rdbuf, 2); + } + + HDF_LOGI("%s: fw_version = %s", __func__, fw_version); + return 0; +} + +static int32_t ChipDetect(ChipDevice *device) +{ + uint8_t regAddr; + uint8_t regValue = 0; + int32_t ret; + + InputI2cClient *i2cClient = &device->driver->i2cClient; + + regAddr = WORK_REGISTER_REPORT_RATE; + ret = InputI2cWrite(i2cClient, ®Addr, 1); + CHIP_CHECK_RETURN(ret); + ret = InputI2cRead(i2cClient, ®Addr, 1, ®Value, 1); + CHIP_CHECK_RETURN(ret); + HDF_LOGI("%s: Report rate is %u * 10", __func__, regValue); + + Ft5336_Identify(device, i2cClient); + + (void)ChipInit(device); + (void)ChipResume(device); + (void)ChipSuspend(device); + + return HDF_SUCCESS; +} + +static int32_t ParsePointData(ChipDevice *device, FrameData *frame, uint8_t *buf, uint8_t pointNum, int32_t version) +{ + int32_t i; + int32_t x,y; + int32_t offset, tplen, crclen; + int32_t type; + switch (version) { + case EDT_M06: + offset = 5; /* where the actual touch data starts */ + tplen = 4; /* data comes in so called frames */ + crclen = 1; /* length of the crc data */ + break; + + case EDT_M09: + offset = 3; + tplen = 6; + crclen = 0; + break; + + default: + return HDF_FAILURE; + } + + for (i = 0; i < pointNum; i++) { + u8 *rdbuf = &buf[i * tplen + offset]; + + type = rdbuf[0] >> 6; + /* ignore Reserved events */ + if (type == TOUCH_EVENT_RESERVED){ + continue; + } + + /* M06 sometimes sends bogus coordinates in TOUCH_DOWN */ + if (version == EDT_M06 && type == TOUCH_EVENT_DOWN){ + continue; + } + + if (type == TOUCH_EVENT_UP){ + frame->definedEvent = type; + continue; + } + + x = ((rdbuf[0] << 8) | rdbuf[1]) & 0x0fff; + y = ((rdbuf[2] << 8) | rdbuf[3]) & 0x0fff; + +#if TP_CHANGE_X2Y + TP_SWAP(x, y); +#endif + +#if TP_Y_REVERSE_ENABLE + y = device->boardCfg->attr.resolutionY - y; +#endif + +#if TP_X_REVERSE_ENABLE + x = device->boardCfg->attr.resolutionX - x; +#endif +// HDF_LOGI("%s : x = %u , y = %u ", __func__, x, y); + + frame->fingers[i].x = x; + frame->fingers[i].y = y; + frame->fingers[i].trackId = (rdbuf[2] >> 4) & 0x0f; + frame->fingers[i].status = rdbuf[0] >> 6;; + frame->fingers[i].valid = true; + frame->definedEvent = frame->fingers[i].status; + + if ((frame->fingers[i].status == TOUCH_DOWN || frame->fingers[i].status == TOUCH_CONTACT) && (pointNum == 0)) { + HDF_LOGE("%s: abnormal event data from driver chip", __func__); + return HDF_FAILURE; + } + } + + return HDF_SUCCESS; +} + +static int32_t ChipDataHandle(ChipDevice *device) +{ + uint8_t reg = 0x0; + uint8_t pointNum; + uint8_t buf[POINT_BUFFER_LEN_M09] = {0}; + int32_t ret = 0; + + InputI2cClient *i2cClient = &device->driver->i2cClient; + FrameData *frame = &device->driver->frameData; + + switch (device->chipCfg->chipVersion) { + case EDT_M06: + reg = 0xf9; /* tell the controller to send touch data */ + ret = InputI2cRead(i2cClient, ®, 1, buf, POINT_BUFFER_LEN_M06); + break; + + case EDT_M09: + ret = InputI2cRead(i2cClient, ®, 1, buf, POINT_BUFFER_LEN_M09); + break; + + default: + return HDF_FAILURE; + } + CHIP_CHECK_RETURN(ret); + + OsalMutexLock(&device->driver->mutex); + (void)memset_s(frame, sizeof(FrameData), 0, sizeof(FrameData)); + + pointNum = buf[2] & GT_FINGER_NUM_MASK; + if (pointNum > MAX_POINT) { + OsalMutexUnlock(&device->driver->mutex); + return HDF_FAILURE; + } + + if(pointNum == 0){ + frame->realPointNum = 0; + frame->definedEvent = TOUCH_EVENT_UP; + OsalMutexUnlock(&device->driver->mutex); + return HDF_SUCCESS; + } + + frame->realPointNum = pointNum; + + ret = ParsePointData(device, frame, buf, pointNum, device->chipCfg->chipVersion); + if (ret != HDF_SUCCESS) { + OsalMutexUnlock(&device->driver->mutex); + return ret; + } + OsalMutexUnlock(&device->driver->mutex); + + return HDF_SUCCESS; +} + +static void SetAbility(ChipDevice *device) +{ + device->driver->inputDev->abilitySet.devProp[0] = SET_BIT(INPUT_PROP_DIRECT); + device->driver->inputDev->abilitySet.eventType[0] = SET_BIT(EV_SYN) | + SET_BIT(EV_KEY) | SET_BIT(EV_ABS); + device->driver->inputDev->abilitySet.absCode[0] = SET_BIT(ABS_X) | SET_BIT(ABS_Y); + device->driver->inputDev->abilitySet.absCode[1] = SET_BIT(ABS_MT_POSITION_X) | + SET_BIT(ABS_MT_POSITION_Y) | SET_BIT(ABS_MT_TRACKING_ID); + device->driver->inputDev->abilitySet.keyCode[3] = SET_BIT(KEY_UP) | SET_BIT(KEY_DOWN); + device->driver->inputDev->attrSet.axisInfo[ABS_X].min = 0; + device->driver->inputDev->attrSet.axisInfo[ABS_X].max = device->boardCfg->attr.resolutionX - 1; + device->driver->inputDev->attrSet.axisInfo[ABS_X].range = 0; + device->driver->inputDev->attrSet.axisInfo[ABS_Y].min = 0; + device->driver->inputDev->attrSet.axisInfo[ABS_Y].max = device->boardCfg->attr.resolutionY - 1; + device->driver->inputDev->attrSet.axisInfo[ABS_Y].range = 0; + device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_X].min = 0; + device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_X].max = device->boardCfg->attr.resolutionX - 1; + device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_X].range = 0; + device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_Y].min = 0; + device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_Y].max = device->boardCfg->attr.resolutionY - 1; + device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_Y].range = 0; + device->driver->inputDev->attrSet.axisInfo[ABS_MT_TRACKING_ID].max = MAX_POINT; +} + + +static struct TouchChipOps g_ft5336ChipOps = { + .Init = ChipInit, + .Detect = ChipDetect, + .Resume = ChipResume, + .Suspend = ChipSuspend, + .DataHandle = ChipDataHandle, + .SetAbility = SetAbility, +}; + +static void FreeChipConfig(TouchChipCfg *config) +{ + if (config->pwrSeq.pwrOn.buf != NULL) { + OsalMemFree(config->pwrSeq.pwrOn.buf); + } + + if (config->pwrSeq.pwrOff.buf != NULL) { + OsalMemFree(config->pwrSeq.pwrOff.buf); + } + + if (config->pwrSeq.resume.buf != NULL) { + OsalMemFree(config->pwrSeq.resume.buf); + } + + if (config->pwrSeq.suspend.buf != NULL) { + OsalMemFree(config->pwrSeq.suspend.buf); + } + + OsalMemFree(config); +} + +static TouchChipCfg *ChipConfigInstance(struct HdfDeviceObject *device) +{ + TouchChipCfg *chipCfg = (TouchChipCfg *)OsalMemAlloc(sizeof(TouchChipCfg)); + if (chipCfg == NULL) { + HDF_LOGE("%s: instance chip config failed", __func__); + return NULL; + } + (void)memset_s(chipCfg, sizeof(TouchChipCfg), 0, sizeof(TouchChipCfg)); + + if (ParseTouchChipConfig(device->property, chipCfg) != HDF_SUCCESS) { + HDF_LOGE("%s: parse chip config failed", __func__); + OsalMemFree(chipCfg); + chipCfg = NULL; + } + return chipCfg; +} + +static ChipDevice *ChipDeviceInstance(void) +{ + ChipDevice *chipDev = (ChipDevice *)OsalMemAlloc(sizeof(ChipDevice)); + if (chipDev == NULL) { + HDF_LOGE("%s: instance chip device failed", __func__); + return NULL; + } + (void)memset_s(chipDev, sizeof(ChipDevice), 0, sizeof(ChipDevice)); + return chipDev; +} + +extern int tca6408_output_set_value(u8 value, u8 mask); +static int32_t EdtFocalChipInit(struct HdfDeviceObject *device) +{ + TouchChipCfg *chipCfg = NULL; + ChipDevice *chipDev = NULL; + if (device == NULL) { + return HDF_ERR_INVALID_PARAM; + } + + chipCfg = ChipConfigInstance(device); //解析input_config中的chipConfig + if (chipCfg == NULL) { + return HDF_ERR_MALLOC_FAIL; + } + + chipDev = ChipDeviceInstance(); + if (chipDev == NULL) { + goto EXIT; + } + + tca6408_output_set_value(TCA_TP_RST_MASK, TCA_TP_RST_MASK); + usleep_range(5000, 6000); + tca6408_output_set_value((0<<6), (1<<6)); + msleep(300); + tca6408_output_set_value((1<<6), (1<<6)); + + chipDev->chipCfg = chipCfg; + chipDev->ops = &g_ft5336ChipOps; + chipDev->chipName = chipCfg->chipName; + chipDev->vendorName = chipCfg->vendorName; + + if (RegisterChipDevice(chipDev) != HDF_SUCCESS) { + HDF_LOGI("%s: fail", __func__); + goto EXIT1; + } + +#if TP_CHANGE_X2Y + uint32_t resolution = chipDev->boardCfg->attr.resolutionX; + chipDev->boardCfg->attr.resolutionX = chipDev->boardCfg->attr.resolutionY; + chipDev->boardCfg->attr.resolutionY = resolution; +#endif + + HDF_LOGI("%s: init succ, chipName = %s", __func__, chipCfg->chipName); + return HDF_SUCCESS; + +EXIT1: + OsalMemFree(chipDev); +EXIT: + FreeChipConfig(chipCfg); + return HDF_FAILURE; +} + +struct HdfDriverEntry g_edtTouchFocalChipEntry = { + .moduleVersion = 1, + .moduleName = "EDT_TOUCH_FT5336", + .Init = EdtFocalChipInit, +}; + +HDF_INIT(g_edtTouchFocalChipEntry); diff --git a/model/input/driver/touchscreen/touch_ft5336.h b/model/input/driver/touchscreen/touch_ft5336.h new file mode 100644 index 000000000..7833ea548 --- /dev/null +++ b/model/input/driver/touchscreen/touch_ft5336.h @@ -0,0 +1,46 @@ +#ifndef TOUCH_FT5x06_H +#define TOUCH_FT5x06_H + +#define TCA_TP_RST_MASK (1<<6) +#define WORK_REGISTER_THRESHOLD 0x00 +#define WORK_REGISTER_REPORT_RATE 0x08 +#define WORK_REGISTER_GAIN 0x30 +#define WORK_REGISTER_OFFSET 0x31 +#define WORK_REGISTER_NUM_X 0x33 +#define WORK_REGISTER_NUM_Y 0x34 + +#define M09_REGISTER_THRESHOLD 0x80 +#define M09_REGISTER_GAIN 0x92 +#define M09_REGISTER_OFFSET 0x93 +#define M09_REGISTER_NUM_X 0x94 +#define M09_REGISTER_NUM_Y 0x95 + +#define NO_REGISTER 0xff + +#define WORK_REGISTER_OPMODE 0x3c +#define FACTORY_REGISTER_OPMODE 0x01 + +#define TOUCH_EVENT_DOWN 0x00 +#define TOUCH_EVENT_UP 0x01 +#define TOUCH_EVENT_ON 0x02 +#define TOUCH_EVENT_RESERVED 0x03 + +#define EDT_NAME_LEN 23 +#define EDT_SWITCH_MODE_RETRIES 10 +#define EDT_SWITCH_MODE_DELAY 5 /* msec */ +#define EDT_RAW_DATA_RETRIES 100 +#define EDT_RAW_DATA_DELAY 1000 /* usec */ + +#define TP_CHANGE_X2Y 0 +#define TP_X_REVERSE_ENABLE 0 +#define TP_Y_REVERSE_ENABLE 0 + +#define POINT_BUFFER_LEN_M06 26 +#define POINT_BUFFER_LEN_M09 33 +#define MAX_POINT 5 + +#define EDT_M06 0 +#define EDT_M09 1 +#define GT_FINGER_NUM_MASK 0x0F + +#endif -- Gitee