blob: ad8c4c33e488b03ba0f0680b5cb7b68501029d7a [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 * intrCtrl.h
41 *
42 * Project:
43 * --------
44 * Maui_Software
45 *
46 * Description:
47 * ------------
48 * Common type and structure definition for MediaTek GSM/GPRS software
49 *
50 * Author:
51 * -------
52 * -------
53 * -------
54 *
55 *============================================================================
56 * HISTORY
57 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
58 *------------------------------------------------------------------------------
59 * removed!
60 * removed!
61 * removed!
62 *
63 * removed!
64 * removed!
65 * removed!
66 *
67 * removed!
68 * removed!
69 * removed!
70 *
71 * removed!
72 * removed!
73 * removed!
74 *
75 * removed!
76 * removed!
77 * removed!
78 *
79 * removed!
80 * removed!
81 * removed!
82 *
83 * removed!
84 * removed!
85 * removed!
86 *
87 * removed!
88 * removed!
89 * removed!
90 *
91 * removed!
92 * removed!
93 * removed!
94 *
95 * removed!
96 * removed!
97 * removed!
98 *
99 * removed!
100 * removed!
101 * removed!
102 *
103 * removed!
104 * removed!
105 * removed!
106 *
107 * removed!
108 * removed!
109 * removed!
110 *
111 * removed!
112 * removed!
113 * removed!
114 *
115 * removed!
116 * removed!
117 * removed!
118 *
119 * removed!
120 * removed!
121 * removed!
122 *
123 * removed!
124 * removed!
125 * removed!
126 *
127 * removed!
128 * removed!
129 * removed!
130 * removed!
131 *
132 * removed!
133 * removed!
134 * removed!
135 *
136 * removed!
137 * removed!
138 * removed!
139 *
140 * removed!
141 * removed!
142 * removed!
143 *
144 * removed!
145 * removed!
146 * removed!
147 *
148 * removed!
149 * removed!
150 * removed!
151 *
152 * removed!
153 * removed!
154 * removed!
155 *
156 * removed!
157 * removed!
158 * removed!
159 *
160 * removed!
161 * removed!
162 * removed!
163 *
164 * removed!
165 * removed!
166 * removed!
167 *
168 * removed!
169 * removed!
170 * removed!
171 *
172 * removed!
173 * removed!
174 * removed!
175 * removed!
176 *
177 * removed!
178 * removed!
179 * removed!
180 *
181 * removed!
182 * removed!
183 * removed!
184 *
185 * removed!
186 * removed!
187 * removed!
188 *
189 * removed!
190 * removed!
191 * removed!
192 * removed!
193 * removed!
194 * removed!
195 *
196 * removed!
197 * removed!
198 * removed!
199 *
200 * removed!
201 * removed!
202 * removed!
203 *
204 * removed!
205 * removed!
206 * removed!
207 *
208 * removed!
209 * removed!
210 * removed!
211 *
212 * removed!
213 * removed!
214 *
215 * removed!
216 * removed!
217 * removed!
218 *
219 * removed!
220 * removed!
221 * removed!
222 *
223 * removed!
224 * removed!
225 * removed!
226 *
227 * removed!
228 * removed!
229 * removed!
230 *
231 * removed!
232 * removed!
233 * removed!
234 *
235 * removed!
236 * removed!
237 * removed!
238 *
239 * removed!
240 * removed!
241 * removed!
242 *
243 * removed!
244 * removed!
245 * removed!
246 *
247 * removed!
248 * removed!
249 * removed!
250 *
251 * removed!
252 * removed!
253 * removed!
254 *
255 * removed!
256 * removed!
257 * removed!
258 *
259 * removed!
260 * removed!
261 * removed!
262 *
263 * removed!
264 * removed!
265 * removed!
266 *
267 * removed!
268 * removed!
269 * removed!
270 *
271 * removed!
272 * removed!
273 * removed!
274 *
275 * removed!
276 * removed!
277 * removed!
278 *
279 * removed!
280 * removed!
281 * removed!
282 *
283 * removed!
284 * removed!
285 * removed!
286 *
287 * removed!
288 * removed!
289 * removed!
290 *
291 * removed!
292 * removed!
293 * removed!
294 *
295 * removed!
296 * removed!
297 * removed!
298 *
299 * removed!
300 * removed!
301 * removed!
302 *
303 * removed!
304 * removed!
305 * removed!
306 *
307 * removed!
308 * removed!
309 * removed!
310 *
311 * removed!
312 * removed!
313 * removed!
314 *
315 * removed!
316 * removed!
317 * removed!
318 *
319 * removed!
320 * removed!
321 * removed!
322 *
323 * removed!
324 * removed!
325 * removed!
326 *
327 * removed!
328 * removed!
329 *
330 * removed!
331 *
332 * removed!
333 * removed!
334 * removed!
335 *
336 * removed!
337 * removed!
338 * removed!
339 *
340 * removed!
341 * removed!
342 * removed!
343 *
344 * removed!
345 * removed!
346 * removed!
347 *
348 * removed!
349 * removed!
350 * removed!
351 *
352 * removed!
353 * removed!
354 * removed!
355 *
356 * removed!
357 * removed!
358 * removed!
359 *
360 * removed!
361 * removed!
362 * removed!
363 *
364 * removed!
365 * removed!
366 * removed!
367 *
368 * removed!
369 * removed!
370 * removed!
371 *
372 * removed!
373 * removed!
374 * removed!
375 *
376 * removed!
377 * removed!
378 *
379 *
380 * removed!
381 * removed!
382 *
383 *
384 * removed!
385 * removed!
386 *
387 *
388 * removed!
389 * removed!
390 *
391 *
392 * removed!
393 * removed!
394 *
395 *
396 * removed!
397 * removed!
398 *
399 *
400 * removed!
401 * removed!
402 *
403 *
404 * removed!
405 * removed!
406 *
407 *
408 * removed!
409 * removed!
410 *
411 *
412 * removed!
413 * removed!
414 *
415 *
416 * removed!
417 * removed!
418 *
419 *
420 * removed!
421 * removed!
422 *
423 *
424 * removed!
425 * removed!
426 *
427 *
428 * removed!
429 * removed!
430 *
431 *
432 * removed!
433 * removed!
434 *
435 *
436 * removed!
437 * removed!
438 *
439 *
440 * removed!
441 * removed!
442 *
443 *
444 * removed!
445 * removed!
446 *
447 *
448 * removed!
449 * removed!
450 * removed!
451 *
452 * removed!
453 * removed!
454 *
455 *
456 * removed!
457 * removed!
458 *
459 *
460 * removed!
461 * removed!
462 *
463 *
464 * removed!
465 * removed!
466 * removed!
467 *
468 * removed!
469 * removed!
470 *
471 *
472 * removed!
473 * removed!
474 *
475 *
476 * removed!
477 * removed!
478 *
479 *
480 * removed!
481 * removed!
482 *
483 *
484 * removed!
485 * removed!
486 * removed!
487 *
488 * removed!
489 * removed!
490 * removed!
491 *
492 * removed!
493 * removed!
494 * removed!
495 *
496 * removed!
497 * removed!
498 * removed!
499 *
500 * removed!
501 * removed!
502 * removed!
503 *
504 * removed!
505 * removed!
506 * removed!
507 *
508 * removed!
509 * removed!
510 * removed!
511 *
512 * removed!
513 * removed!
514 * removed!
515 *
516 * removed!
517 * removed!
518 * removed!
519 *
520 * removed!
521 * removed!
522 * removed!
523 *
524 * removed!
525 * removed!
526 * removed!
527 *
528 * removed!
529 * removed!
530 * removed!
531 *
532 * removed!
533 * removed!
534 * removed!
535 *
536 * removed!
537 * removed!
538 *
539 * removed!
540 * removed!
541 * removed!
542 *
543 * removed!
544 * removed!
545 *
546 * removed!
547 * removed!
548 * removed!
549 *
550 * removed!
551 * removed!
552 * removed!
553 *
554 * removed!
555 * removed!
556 *
557 * removed!
558 * removed!
559 * removed!
560 *
561 * removed!
562 * removed!
563 *
564 * removed!
565 * removed!
566 *
567 * removed!
568 * removed!
569 * removed!
570 *
571 * removed!
572 * removed!
573 * removed!
574 *
575 * removed!
576 * removed!
577 *
578 * removed!
579 * removed!
580 *
581 * removed!
582 * removed!
583 * removed!
584 *
585 * removed!
586 * removed!
587 * removed!
588 *
589 * removed!
590 * removed!
591 *
592 * removed!
593 * removed!
594 *
595 * removed!
596 * removed!
597 *
598 * removed!
599 * removed!
600 * removed!
601 * removed!
602 *
603 * removed!
604 * removed!
605 * removed!
606 *
607 * removed!
608 * removed!
609 * removed!
610 *
611 * removed!
612 * removed!
613 * removed!
614 *
615 * removed!
616 * removed!
617 * removed!
618 *
619 * removed!
620 * removed!
621 * removed!
622 *
623 * removed!
624 * removed!
625 * removed!
626 *
627 * removed!
628 * removed!
629 * removed!
630 *
631 * removed!
632 * removed!
633 * removed!
634 *
635 * removed!
636 * removed!
637 *
638 * removed!
639 * removed!
640 *
641 * removed!
642 * removed!
643 *
644 * removed!
645 * removed!
646 *
647 * removed!
648 * removed!
649 *
650 * removed!
651 * removed!
652 *------------------------------------------------------------------------------
653 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
654 *============================================================================
655 ****************************************************************************/
656
657#ifndef _INTRCTRL_H
658#define _INTRCTRL_H
659
660/*******************************************************************************
661 * Include header files
662 *******************************************************************************/
663#include "kal_general_types.h"
664#include "mips_ia_utils_public.h"
665#include "us_timer.h"
666
667#if defined(MT6763)
668#if defined(__MIPS_IA__)
669#include "intrCtrl_MT6763.h"
670#else
671#error "No CPU version select. Need to specify CPU version in project MT6763 MDSYS."
672#endif
673#endif
674
675#if defined(MT6739)
676#if defined(__MIPS_IA__)
677#include "intrCtrl_MT6739.h"
678#else
679#error "No CPU version select. Need to specify CPU version in project MT6739 MDSYS."
680#endif
681#endif
682
683#if defined(MT6771)
684#if defined(__MIPS_IA__)
685#include "intrCtrl_MT6771.h"
686#else
687#error "No CPU version select. Need to specify CPU version in project MT6771 MDSYS."
688#endif
689#endif
690
691#if defined(MT6765)
692#if defined(__MIPS_IA__)
693#include "intrCtrl_MT6765.h"
694#else
695#error "No CPU version select. Need to specify CPU version in project MT6765 MDSYS."
696#endif
697#endif
698
699#if defined(MT6761)
700#if defined(__MIPS_IA__)
701#include "intrCtrl_MT6761.h"
702#else
703#error "No CPU version select. Need to specify CPU version in project MT6761 MDSYS."
704#endif
705#endif
706
707/*******************************************************************************
708 * Declarations and Definitions
709 *******************************************************************************/
710
711#define EDGE_SENSITIVE KAL_TRUE
712#define LEVEL_SENSITIVE KAL_FALSE
713
714#define IRQ_NOT_LISR_CONTEXT (0xFFFF)
715
716#if defined(__CIRQ_MASK_REG_NR_1_NEW__) || defined(__CIRQ_MASK_REG_NR_2_NEW__) || defined(__CIRQ_MASK_REG_NR_3_NEW__) || defined(__CIRQ_MASK_REG_NR_4_NEW__) || defined(__CIRQ_MASK_REG_NR_5_NEW__)
717#define __CIRQ_DESIGN_NEW__
718#endif
719
720typedef struct CIRQ_MASK_VALUE_STRUCT
721{
722 kal_uint32 irq_mask[8];
723} CIRQ_MASK_VALUE_T;
724
725typedef struct MIPSGIC_IRQ_MASK_VALUE_STRUCT
726{
727#if defined(__MIPSGIC_MASK_REG_NR_2_NEW__)
728 kal_uint32 irq_mask0;
729 kal_uint32 irq_mask1;
730#else
731 kal_uint32 irq_maskl;
732 kal_uint32 irq_maskh;
733#endif
734} MIPSGIC_IRQ_MASK_VALUE_T;
735
736typedef struct MIPSGIC_IRQ_SEN_VALUE_STRUCT
737{
738#if defined(__MIPSGIC_MASK_REG_NR_2_NEW__)
739 kal_uint32 irq_sen0;
740 kal_uint32 irq_sen1;
741#else
742 kal_uint32 irq_maskl;
743 kal_uint32 irq_maskh;
744#endif
745} MIPSGIC_IRQ_SEN_VALUE_T;
746
747
748/* To enable SW Trigger Interrupt for new BB chips
749 Need to modify 3 files
750 1. add a file intrCtrl_MTxxxx_SW_Handler.h
751 2. add an entry on intrCtrl_SW_Handler.h
752 3. modify IRQ_SetSWRegister & IRQ_ResetSWRegister to support BB Chips on intrCtrl.c */
753#if defined(__ENABLE_SW_TRIGGER_INTERRUPT__)
754typedef enum
755{
756#define X_SW_HANDLE_CONST(a, b, c) a=(b),
757#include "intrCtrl_SW_Handle.h"
758#undef X_SW_HANDLE_CONST
759 SW_HANDLE_END
760} SW_CODE_HANDLE;
761
762#define Activate_LISR(code) MDCIRQ_Activate_LISR(code)
763#define Deactivate_LISR(code) MDCIRQ_Deactivate_LISR(code)
764
765extern void MDCIRQ_Activate_LISR(SW_CODE_HANDLE code);
766extern void MDCIRQ_Deactivate_LISR(SW_CODE_HANDLE code);
767extern const kal_uint8 SW_Code_Handle2Code[NUM_IRQ_SOURCES];
768
769/* Use to translate the mapping between software handler to hardware interrupt code */
770#define SW_code_handle2code(a) (a)
771
772extern kal_uint32 SW_INT_Counter[NUM_IRQ_SOURCES];
773
774#endif /* __ENABLE_SW_TRIGGER_INTERRUPT__ */
775
776
777#define IRQClearInt(vector) MDCIRQ_IRQClearInt(vector)
778#define IRQMask(vector) MDCIRQ_IRQMask(vector)
779#define IRQUnmask(vector) MDCIRQ_IRQUnmask(vector)
780#define IRQSensitivity(vector, e) MDCIRQ_IRQSensitivity(vector, e)
781#define IRQ_VPE_SPL_Compare_with_IRQ_Priority(VPE, code) MDCIRQ_VPE_SPL_Compare_with_IRQ_Priority(VPE, code)
782
783
784
785extern kal_uint32 SaveAndSetIRQMask(void);
786extern void RestoreIRQMask(kal_uint32);
787extern void MDCIRQ_IRQClearInt(kal_uint8);
788extern void MDCIRQ_IRQMask(kal_uint8);
789extern void MDCIRQ_IRQUnmask(kal_uint8);
790extern void MDCIRQ_IRQSensitivity(kal_uint8, kal_bool);
791extern void initINTR(void);
792extern kal_uint32 IRQMask_Status(kal_uint8 code);
793extern kal_uint32 IRQ_Status(void);
794extern kal_bool MDCIRQ_VPE_SPL_Compare_with_IRQ_Priority(kal_uint32 VPE, kal_uint32 code);
795
796
797#define IRQ_Register_LISR(code, lisr, description) \
798 MDCIRQ_IRQ_Register_LISR(code, (void*)lisr, description)
799extern void MDCIRQ_IRQ_Register_LISR(kal_uint32 code, void (*reg_lisr)(kal_uint32 vector), char* description);
800//extern void IRQ_Register_LISR(kal_uint32 code, void (*reg_lisr)(kal_uint32 vector), char* description);
801
802extern void initVPEIRQ(void);
803
804#if !defined(__SINGLE_CORE__)
805extern kal_uint32 sst_dhl_irq_count[4];
806extern kal_uint32 sst_dhl_irq_caller[4];
807extern kal_uint32 DHLIrqCounter[4];
808#else
809extern kal_uint32 sst_dhl_irq_count[2];
810extern kal_uint32 sst_dhl_irq_caller[2];
811extern kal_uint32 DHLIrqCounter[2];
812#endif
813extern kal_int32 INC_Initialize_State;
814
815/***********************************
816NOTE:
8171. below API is only for L2 logging, please not use
8182. if you want to use, please confirm with CIRQ owner first
819***********************************/
820#define __IRQ_LOCK_WITHOUT_CHECK__
821//#define __NESTED_DI_CHECK__
822
823#if defined(__L2_LOGGING_IRQ_LOC__)
824#if defined(__IRQ_LOCK_WITHOUT_CHECK__) && defined(__MIPS_IA__)
825#if defined(__NESTED_DI_CHECK__)
826#define LOCK_CPU_INTERRUPT(oldmask, newmask) \
827do{\
828 kal_uint32 vpe_num = 0;\
829 miu_mt_dmt();\
830 __asm__ __volatile__\
831 (\
832 "di %0\n\t"\
833 "ehb\n\t"\
834 :"=&r"(oldmask), "=&r"(newmask)\
835 :\
836 :"$31","memory"\
837 );\
838 oldmask &= 0x1;\
839 vpe_num = miu_get_current_vpe_id();\
840 sst_dhl_irq_count[vpe_num]++;\
841 sst_dhl_irq_caller[vpe_num] = (kal_uint32)__builtin_return_address(0);\
842 DHLIrqCounter[vpe_num] = ust_get_current_time();\
843} while(0)
844
845#define UNLOCK_CPU_INTERRUPT(oldmask) \
846do{\
847 kal_uint32 tmp=1;\
848 sst_dhl_irq_count[miu_get_current_vpe_id()]--;\
849 __asm__ __volatile__\
850 (\
851 "bne %0, %1, END\n\t"\
852 "ei\n\t"\
853 "ehb\n\t"\
854 "END:emt\n\t"\
855 "ehb\n\t"\
856 :\
857 :"r"(oldmask), "r"(tmp)\
858 :"memory"\
859 );\
860} while(0)
861#else
862#define LOCK_CPU_INTERRUPT(oldmask, newmask) \
863do{\
864 miu_mt_dmt();\
865 __asm__ __volatile__\
866 (\
867 "di %0\n\t"\
868 "ehb\n\t"\
869 :"=&r"(oldmask), "=&r"(newmask)\
870 :\
871 :"$31","memory"\
872 );\
873 oldmask &= 0x1;\
874} while(0)
875
876#define UNLOCK_CPU_INTERRUPT(oldmask) \
877do{\
878 kal_uint32 tmp=1;\
879 __asm__ __volatile__\
880 (\
881 "bne %0, %1, END\n\t"\
882 "ei\n\t"\
883 "ehb\n\t"\
884 "END:emt\n\t"\
885 "ehb\n\t"\
886 :\
887 :"r"(oldmask), "r"(tmp)\
888 :"memory"\
889 );\
890} while(0)
891#endif
892
893#else
894
895#define LOCK_CPU_INTERRUPT(oldmask, newmask) \
896do{ \
897 oldmask = kal_hrt_SaveAndSetIRQMask(); \
898}while(0);
899
900#define UNLOCK_CPU_INTERRUPT(oldmask) \
901do{ \
902 kal_hrt_RestoreIRQMask(oldmask); \
903}while(0);
904
905#endif
906#endif
907
908#endif /* _INTRCTRL_H */
909