1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 *
4 * HDF is dual licensed: you can use it either under the terms of
5 * the GPL, or the BSD license, at your option.
6 * See the LICENSE file in the root of this repository for complete details.
7 */
8
9 #include "hdf_audio_driver_test.h"
10 #include "hdf_log.h"
11 #include "hi3516_aiao_impl_test.h"
12 #include "hi3516_codec_impl_test.h"
13 #include "hi3516_codec_ops_test.h"
14 #include "hi3516_dai_ops_test.h"
15 #include "hi3516_dma_ops_test.h"
16
17 #define HDF_LOG_TAG hdf_hi3516_audio_driver_test
18
19 static HdfTestCaseList g_hdfHi3516DirverTestCaseList[] = {
20 {AUDIO_DRIVER_TESTDAIDEVICEINIT, TestDaiDeviceInit},
21 {AUDIO_DRIVER_TESTDAISTARTUP, TestDaiStartup},
22 {AUDIO_DRIVER_TESTDAIHWPARAMS, TestDaiHwParams},
23 {AUDIO_DRIVER_TESTDAI_TRIGGER, TestDaiTrigger},
24
25 {AUDIO_DRIVER_TESTCODECHALSYSINIT, TestCodecHalSysInit},
26 {AUDIO_DRIVER_TESTACODECREGBITSREAD, TestCodecRegBitsRead},
27 {AUDIO_DRIVER_TESTCODECREGBITSUPDATE, TestCodecRegBitsUpdate},
28 {AUDIO_DRIVER_TESTCODECREGDEFAULTINIT, TestCodecRegDefaultInit},
29 {AUDIO_DRIVER_TESTCODECSETADCTUNEENABLE, TestCodecSetAdcTuneEnable},
30 {AUDIO_DRIVER_TESTCODECDAIPARAMSUPDATE, TestCodecDaiParamsUpdate},
31 {AUDIO_DRIVER_TESTAUDIOCODECAIAOSETCTRLOPS, TestAudioCodecAiaoSetCtrlOps},
32 {AUDIO_DRIVER_TESTAUDIOCODECAIAOGETCTRLOPS, TestAudioCodecAiaoGetCtrlOps},
33
34 {AUDIO_DRIVER_TESTCODECDEVICEINIT, TestCodecDeviceInit},
35 {AUDIO_DRIVER_TESTCODECDAIDEVICEINIT, TestCodecDaiDeviceInit},
36 {AUDIO_DRIVER_TESTCODECDAIHWPARAMS, TestCodecDaiHwParams},
37 {AUDIO_DRIVER_TESTCODECDAISTARTUP, TestCodecDaiStartup},
38
39 {AUDIO_DRIVER_TESTAIOPREGCFG, TestAiopRegCfg},
40 {AUDIO_DRIVER_TESTAIAOHALSYSINIT, TestAiaoHalSysInit},
41 {AUDIO_DRIVER_TESTAIAOCLOCKRESET, TestAiaoClockReset},
42 {AUDIO_DRIVER_TESTAIAOHALREADREG, TestAiaoHalReadReg},
43 {AUDIO_DRIVER_TESTAOPHALSETBUFFRPTR, TestAopHalSetBuffRptr},
44 {AUDIO_DRIVER_TESTAOPHALSETBUFFWPTR, TestAopHalSetBuffWptr},
45 {AUDIO_DRIVER_TESTAIPHALSETBUFFWPTR, TestAipHalSetBuffWptr},
46 {AUDIO_DRIVER_TESTAIPHALSETBUFFRPTR, TestAipHalSetBuffRptr},
47 {AUDIO_DRIVER_TESTAOPHALSETTXSTART, TestAopHalSetTxStart},
48 {AUDIO_DRIVER_TESTAIPHALSETRXSTART, TestAipHalSetRxStart},
49 {AUDIO_DRIVER_TESTAOPHALDEVENABLE, TestAopHalDevEnable},
50 {AUDIO_DRIVER_TESTAIAODEVICEINIT, TestAiaoDeviceInit},
51 {AUDIO_DRIVER_TESTAUDIOAOINIT, TestAudioAoInit},
52 {AUDIO_DRIVER_TESTAUDIOAIINIT, TestAudioAiInit},
53 {AUDIO_DRIVER_TESTAIAOSYSPINMUX, TestAiaoSysPinMux},
54 {AUDIO_DRIVER_TESTAIAOGETMCLK, TestAiaoGetMclk},
55 {AUDIO_DRIVER_TESTAIAOSETSYSCTLREGVALUE, TestAiaoSetSysCtlRegValue},
56
57 {AUDIO_DRIVER_TESTAUDIODMADEVICEINIT, TestAudioDmaDeviceInit},
58 {AUDIO_DRIVER_TESTHI3516DMABUFALLOC, TestHi3516DmaBufAlloc},
59 {AUDIO_DRIVER_TESTHI3516DMABUFFREE, TestHi3516DmaBufFree},
60 {AUDIO_DRIVER_TESTHI3516DMAREQUESTCHANNEL, TestHi3516DmaRequestChannel},
61 {AUDIO_DRIVER_TESTHI3516DMACONFIGCHANNEL, TestHi3516DmaConfigChannel},
62 {AUDIO_DRIVER_TESTHI3516DMAPREP, TestHi3516DmaPrep},
63 {AUDIO_DRIVER_TESTHI3516DMASUBMIT, TestHi3516DmaSubmit},
64 {AUDIO_DRIVER_TESTHI3516DMAPENDING, TestHi3516DmaPending},
65 {AUDIO_DRIVER_TESTHI3516DMAPAUSE, TestHi3516DmaPause},
66 {AUDIO_DRIVER_TESTHI3516DMARESUME, TestHi3516DmaResume},
67 {AUDIO_DRIVER_TESTHI3516DMAPOINTER, TestHi3516DmaPointer},
68 };
69
HdfAudioDriverEntry(HdfTestMsg * msg)70 int32_t HdfAudioDriverEntry(HdfTestMsg *msg)
71 {
72 int32_t result;
73 uint32_t i;
74
75 if (msg == NULL) {
76 HDF_LOGE("%s is fail: HdfTestMsg is NULL!", __func__);
77 return HDF_SUCCESS;
78 }
79
80 for (i = 0; i < sizeof(g_hdfHi3516DirverTestCaseList) / sizeof(g_hdfHi3516DirverTestCaseList[0]); ++i) {
81 if ((msg->subCmd == g_hdfHi3516DirverTestCaseList[i].subCmd) &&
82 (g_hdfHi3516DirverTestCaseList[i].testFunc != NULL)) {
83 result = g_hdfHi3516DirverTestCaseList[i].testFunc();
84 HDF_LOGE("HdfAudioDriverEntry::hi3516 driver test result[%s-%u]",
85 ((result == 0) ? "pass" : "fail"), msg->subCmd);
86 msg->result = (result == 0) ? HDF_SUCCESS : HDF_FAILURE;
87 return HDF_SUCCESS;
88 }
89 }
90
91 return HDF_SUCCESS;
92 }
93