blob: 97036bddc024373484a20f608276c1f7536465c8 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
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) 2005
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 *
38 * Filename:
39 * ---------
40 * mml1_rf_container.h
41 *
42 * Project:
43 * --------
44 * MT6295
45 *
46 * Description:
47 * ------------
48 * MMRF container definition
49 *
50 * Author:
51 * -------
52 * -------
53 *
54 *============================================================================
55 * HISTORY
56 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
57 *----------------------------------------------------------------------------
58
59 *----------------------------------------------------------------------------
60 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
61 *============================================================================
62 ****************************************************************************/
63
64#ifndef __MML1_RF_CONTAINER_H__
65#define __MML1_RF_CONTAINER_H__
66
67#include "kal_general_types.h"
68#include "mmrf_common_cid.h"
69#include "mml1_rf_hal_general_def.h"
70
71#define MMRFD_CONTAINER_SEQ_SIZE 32
72
73#define MMRFHAL_CW_ADDR_MASK (0x3FF00000)
74#define MMRFHAL_CW_ADDR_LSB (20)
75#define MMRFHAL_GET_CW_ADDRESS(data) ((data&MMRFHAL_CW_ADDR_MASK)>>MMRFHAL_CW_ADDR_LSB)
76
77#define MMRFHAL_CONTAINER_SIZE sizeof(MMRFD_SEQ_CONTAINER_INTF_CONTAINER_T)
78#define MMRFHAL_SEQ_NODE_SIZE sizeof(MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T)
79
80/* SEQ Container interface error codes */
81typedef enum
82{
83 MMRFD_SEQ_CONTAINER_INTF_ERR_NONE, /* No Error */
84 MMRFD_SEQ_CONTAINER_INTF_ERR_BUFF_OVERFLOW, /* Buffer overflow */
85 MMRFD_SEQ_CONTAINER_INTF_ERR_INVALID_INPUTS, /* Input(s) Errors */
86 MMRFD_SEQ_CONTAINER_INTF_ERR_SEQ_LIST_UNINITIALIZED, /* SEQ list not initialized */
87 MMRFD_SEQ_CONTAINER_INTF_ERR_MEM_ALLOC_FAILED, /* Memory allocation failed */
88 MMRFD_SEQ_CONTAINER_INTF_ERR_BSI_ALLOCATION_FAIL, /* BSI allocation failed */
89 MMRFD_SEQ_CONTAINER_INTF_ERR_ENUM_TYPE_MAX
90} MMRFD_SEQ_CONTAINER_INTF_ERR_E;
91
92/* Seq Trigger Types */
93typedef enum
94{
95 MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIGGER_NONE,
96 MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIGGER_IMM_W,
97 MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIGGER_IMM_R,
98 MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIGGER_SCH_W,
99 MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIGGER_SCH_R,
100} MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIG_E;
101
102/* ========== Structure Prototypes ========== */
103typedef struct
104{
105 MMRFD_SEQ_CONTAINER_INTF_ERR_E allocate_result; /* Allocation result */
106 MMRFD_DEVICE_DRIVER_RF_INTF_CMD_E cmd; /* Command to the device */
107 MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIG_E seq_trig_type; /* trigger type for the node */
108 kal_uint32 event_id;
109 kal_uint32 data_start_idx;
110 kal_uint32 data_end_idx;
111 kal_uint32 imm_read_result;
112} MMRFD_SEQ_CONTAINER_ALLOCATE_RESULT_T;
113
114typedef struct
115{
116 kal_uint32 cw_data[MMRFD_CONTAINER_SEQ_SIZE]; /* address + data */
117} MMRFD_SEQ_CONTAINER_INTF_DATA_ENTRY_T;
118
119typedef struct
120{
121 kal_uint32 sch_read_set; /* for sch read */
122 MMRF_DEVICE_DRIVER_LORX_INFO_T lorx_en_info; /* for lorx enable */
123 MMRF_DEVICE_DRIVER_PRACH_CANCEL_EN_E wcdma_prach_cancel_en; /* for wcdma PRACH cancel */
124} MMRFD_SEQ_CONTAINER_ALLOCATE_INFO_T;
125
126typedef struct _node
127{
128 kal_uint32 is_occupied; /* is resource occupied */
129 kal_int32 seq_offset_time; /* SEQ node offset time */
130 MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIG_E seq_trig_type; /* SEQ list trigger type */
131 MMRFD_DEVICE_PORT_E port; /* Port associated to this node */
132 kal_uint32 alloc_size; /* Allocated size for this node */
133 kal_uint32 curr_size; /* Current size of this node */
134 MMRFD_SEQ_CONTAINER_INTF_DATA_ENTRY_T seq; /* Contents of this list entry */
135 MMRFD_SEQ_CONTAINER_ALLOCATE_INFO_T allocate_info; /* Allocation info for the sequence node */
136 MMRFD_SEQ_CONTAINER_ALLOCATE_RESULT_T allocate_result_info; /* Allocation result for the sequence node */
137 struct _node* prev_p; /* Pointer to prev list entry */
138 struct _node* next_p; /* Pointer to next list entry */
139} MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T;
140
141typedef struct
142{
143 kal_uint32 seq_bias_time; /* SEQ list bias time */
144 kal_uint32 seq_size_max; /* Max size of SEQ list */
145 kal_uint32 seq_curr_size; /* Current size of SEQ list */
146 MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T* seq_list_head_p;/* Pointer to start of SEQ list */
147 MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T* seq_list_tail_p;/* Pointer to tail of SEQ list */
148} MMRFD_SEQ_CONTAINER_INTF_SEQ_LIST_T;
149
150typedef struct
151{
152 kal_uint32 is_occupied; /* is resource occupied */
153 MMRFD_SEQ_CONTAINER_INTF_SEQ_LIST_T seq_lists[MMRFD_DEVICE_TRANSPORT_CNT]; /* Array of pointers to all sequence lists */
154} MMRFD_SEQ_CONTAINER_INTF_CONTAINER_T;
155
156typedef struct
157{
158 //kal_uint8 curr_size; /* Current size of this node */
159 //kal_uint16 node[5]; /* reserve 5 for debug*/
160 kal_uint32 time_stamp; /* frc time stamp */
161} MMRFD_SEQ_CONTAINER_DEBUG_APPEND_INFO_T;
162
163typedef struct
164{
165 kal_uint8 curr_size; /* Current size of this node */
166 kal_uint16 node[5]; /* reserve 5 for debug*/
167 kal_uint32 time_stamp; /* frc time stamp */
168} MMRFD_SEQ_CONTAINER_DEBUG_DELETE_INFO_T;
169
170typedef struct
171{
172 MMRFD_SEQ_CONTAINER_DEBUG_APPEND_INFO_T mmrf_container_append;
173 MMRFD_SEQ_CONTAINER_DEBUG_DELETE_INFO_T mmrf_container_delete;
174} MMRFD_SEQ_CONTAINER_DEBUG_T;
175
176MMRFD_SEQ_CONTAINER_INTF_ERR_E
177MMRFD_Seq_Container_Intf_Delete_Seq( MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T** seq );
178
179MMRFD_SEQ_CONTAINER_INTF_ERR_E
180MMRFD_Seq_Container_Intf_Create_Seq( MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T** seq );
181
182MMRFD_SEQ_CONTAINER_INTF_ERR_E
183MMRFD_Seq_Container_Intf_Update_Seq( MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T* seq,
184 MMRFD_DEVICE_PORT_E port,
185 MMRFD_SEQ_CONTAINER_INTF_SEQ_TRIG_E seq_trig_type,
186 kal_int32 seq_offset_time);
187
188MMRFD_SEQ_CONTAINER_INTF_ERR_E
189MMRFD_Seq_Container_Intf_Append_Seq( MMRFD_SEQ_CONTAINER_INTF_SEQ_NODE_T* seq_node,
190 MMRFD_SEQ_CONTAINER_INTF_CONTAINER_T* container,
191 MMRFD_DEVICE_TRANSPORT_E proto );
192
193#endif
194