blob: 5f12b2af12a391af828c3cfb062bb94350ba71e1 [file] [log] [blame]
yu.dongc33b3072024-08-21 23:14:49 -07001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2012
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*******************************************************************************
37 * Filename:
38 * ---------
39 * hlt_if.h
40 *
41 * Project:
42 * --------
43 * MOLY
44 *
45 * Description:
46 * ------------
47 * Defines the HLT data structures and APIs
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 * ==========================================================================
54 * $Log$
55 *
56 * 08 16 2018 actory.ou
57 * [MOLY00345375] [Gen97] Landing NCCCI (Next gen CCCI)
58 * [VMOLY] add nccci ncccisrv nccci_it_ctrl
59 *
60 * 03 26 2015 hsin-jun.tang
61 * [MOLY00104127] [HLT] Add HLT feature for CCCISRV CCCIDEV SDIOC
62 * [HLT] CCCISRV CCCIDEV SDIOC
63 *
64 ****************************************************************************/
65#ifndef _HLT_IF_H
66#define _HLT_IF_H
67#include "kal_public_api.h"
68
69/* struct define */
70typedef enum{
71 HLT_USER_ID_START =0,
72 CCCI_LATENCY_ULIOR_CB,
73 CCCI_LATENCY_ULIOR_CB_TO_USER,
74 CCCI_LATENCY_ULIOR_CB_TO_NCCCI_USER,
75 CCCI_LATENCY_ULBUFF_CB,
76 CCCI_LATENCY_ULBUFF_CB_TO_USER,
77 CCCI_LATENCY_ULNET_CB,
78 CCCI_LATENCY_ULNET_CB_TO_USER,
79 CCCI_LATENCY_WRITE_BUFF,
80 CCCI_LATENCY_WRITE_IOR,
81 CCCI_LATENCY_WRITE_IOREQ,
82 CCCI_LATENCY_DLIOR_AGG_CB,
83 CCCI_LATENCY_DLIOR_AGG_CB_TO_USER,
84 CLDMA_LATENCY_HISR,
85 CLDMA_LATENCY_DEQ,
86 CLDMA_LATENCY_ENQ,
87 CLDMA_LATENCY_ACK,
88 //SDIOC 16
89 SDIOC_DL_SUBMIT,
90 SDIOC_UL_POLL_Q,
91 //CCCI SYS MSG 18
92 CCCI_SYS_MSG_SEND_MESSAGE,
93 CCCI_SYS_MSG_UL_CB,
94 //CCCI IPC 20
95 CCCI_IPC_DL_TO_HIF,
96 CCCI_IPC_DL_WHOLE,
97 CCCI_IPC_UL_SEND_ILM,
98 CCCI_IPC_UL_WHOLE,
99 //CCCI RPC 24
100 CCCI_RPC_WRITE,
101 CCCI_RPC_PROCESS,
102 CCCI_RPC_READ,
103 CCCI_RPC_WHOLE,
104 //CCCI IMS 28
105 CCCI_IMS_DL_TO_HIF,
106 CCCI_IMS_UL_CB,
107 //CCCI FS 30
108 CCCI_FS_GET_PORT,
109 CCCI_FS_PUT_BUFF,
110 CCCI_FS_WAIT_RX,
111 CCCI_FS_GET_BUFF,
112 CCCI_FS_PUT_PORT,
113 CCCI_FS_WHOLE,
114 //CCMNI 36
115 CCMNI_DL_TO_HIF,
116 CCMNI_UL_CB,
117 CCMNI_UL_RELOAD_Q,
118 //CCCI TTY 39
119 CCCI_TTY_DL_TO_HIF,
120 CCCI_TTY_DL_RELOAD_GPD,
121 CCCI_TTY_UL_CB,
122 CCCI_TTY_UL_DEQ_ILM,
123 //NCCCI
124 CCCI_LATENCY_CB_TO_NCCCI_USER,
125 CCCI_LATENCY_NCCCI_WRITE_IOREQ,
126 CCCI_LATENCY_NCCCI_READ_RELOAD_HIF_IOREQ,
127 // user need to define here
128 HLT_USER_ID_MAX,
129}HLT_USER_ID;
130
131typedef enum{
132 /* Unit is us */
133 HLT_LATENCY_BOUND_10US = 10,
134 HLT_LATENCY_BOUND_50US = 50,
135 HLT_LATENCY_BOUND_100US = 100,
136 HLT_LATENCY_BOUND_500US = 500,
137 HLT_LATENCY_BOUND_1MS = 1000,
138 HLT_LATENCY_BOUND_5MS = 5000,
139 HLT_LATENCY_BOUND_10MS = 10000,
140 // add more
141}HLT_LATENCY_BOUND;
142
143typedef struct {
144 HLT_USER_ID id; /* The latecy trace id*/
145 kal_uint32 start_time;
146 kal_uint32 end_time;
147 HLT_LATENCY_BOUND bound; /* The latency boundary */
148 kal_uint32 reserved; /* Print this reserved to log */
149}HLT_USER_INFO_T;
150
151#if defined(__HLT_SUPPORT__) // in hif_main.mak
152
153/* API define */
154void hlt_init(HLT_USER_INFO_T *info, HLT_USER_ID id, HLT_LATENCY_BOUND bound, kal_uint32 reserved);
155void hlt_start(HLT_USER_INFO_T *info);
156kal_uint32 hlt_end(HLT_USER_INFO_T *info);
157
158#define HLT_INIT hlt_init
159#define HLT_START hlt_start
160#define HLT_END hlt_end
161
162/* Will calcualte avg when call hif_latency_trace_end */
163//#define __HLT_CALCULATE_AVG__
164
165/* Check user's input parameter, wil assert if invalid */
166//#define __HLT_CHECK_ERROR__
167#if defined (__HLT_CHECK_ERROR__)
168#define HLT_CHECK_ERROR_ASSERT EXT_ASSERT
169#else
170#define HLT_CHECK_ERROR_ASSERT(...) {}
171#endif // __HLT_CHECK_ERROR__
172
173#else // Not support HLT
174#define HLT_INIT(...) {}
175#define HLT_START(...) {}
176#define HLT_END(...) {}
177#endif // __HLT_SUPPORT__
178
179#endif //#ifndef _HLT_IF_H