rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame] | 1 | /***************************************************************************** |
| 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 | * md32_boot.h |
| 41 | * |
| 42 | * Project: |
| 43 | * -------- |
| 44 | * Maui_Software |
| 45 | * |
| 46 | * Description: |
| 47 | * ------------ |
| 48 | * This Module defines the HW initialization. |
| 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 | * |
| 61 | * removed! |
| 62 | * removed! |
| 63 | *------------------------------------------------------------------------------ |
| 64 | * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! |
| 65 | *============================================================================ |
| 66 | ****************************************************************************/ |
| 67 | #ifndef MD32_BOOT_H |
| 68 | #define MD32_BOOT_H |
| 69 | |
| 70 | #include "md32_boot_public.h" |
| 71 | #include "md32_file.h" |
| 72 | #include "reg_base.h" |
| 73 | #include "dsp_control_public.h" |
| 74 | #define REG_WRITE32(addr, val) do{*((volatile kal_uint32 *)(addr)) = val;}while(0) |
| 75 | #define REG_READ32(var, addr) do{var = *((volatile kal_uint32 *)(addr));}while(0) |
| 76 | #define MD32_LOADER_REG(ptr) (*(volatile kal_uint32*)(ptr)) |
| 77 | |
| 78 | /* MD32 core sys */ |
| 79 | //#define MD32_RAKE_SYS (BASE_MADDR_RAKE) |
| 80 | #define MD32_NUM 1 |
| 81 | |
| 82 | /* platform dependent setting*/ |
| 83 | #if defined(MT6763)|| defined(MT6739) || defined(MT6771) || defined(MT6295M) || defined(MT6765) || defined(MT6761) || defined(MT3967) || defined(MT6779) || defined(__MD97__) || defined(__MD97P__) |
| 84 | #define MD32_MAGIC_KEY (0x62930000) |
| 85 | #else |
| 86 | #error "Unknown Platform!!" |
| 87 | #endif |
| 88 | |
| 89 | /* MD32 offset */ |
| 90 | #define MD32_PM (0x00380000) |
| 91 | #define MD32_DM (0x003E0000) |
| 92 | #define MD32_CMIF (0x00358000) |
| 93 | #define MD32_BTSLV (0x35100C) |
| 94 | #define MD32_DBG_EN (0x351010) |
| 95 | #define MD32_DMP_EN (0x35101C) |
| 96 | #define MD32_PERI_CTRL (0x351000) |
| 97 | |
| 98 | #define MD32_RAKE_PM BASE_MADDR_RAKESYS_PM |
| 99 | #define MD32_RAKE_DM BASE_MADDR_RAKESYS_RAKE_DM_ARB |
| 100 | |
| 101 | #define MD32_RAKE_BTSLV (0x35100C) |
| 102 | #define MD32_RAKE_POWER (0x351004) |
| 103 | #define MD32_RAKE_PM_CRC (0x50) |
| 104 | #define MD32_RAKE_DM_CRC (0x54) |
| 105 | |
| 106 | #define MD32_USIP0_TH0_BTSLV (0x400) |
| 107 | #define MD32_USIP0_TH1_BTSLV (0x404) |
| 108 | #define MD32_USIP1_TH0_BTSLV (0x408) |
| 109 | #define MD32_USIP1_TH1_BTSLV (0x40C) |
| 110 | |
| 111 | #if defined(MT6763)|| defined(MT6739) || defined(MT6771) || defined(MT6295M) || defined(MT6765) || defined(MT6761) || defined(MT3967) || defined(MT6779) || defined(__MD97__) || defined(__MD97P__) |
| 112 | #define MD32_RAKE_SYS BASE_MADDR_RAKESYS_RAKE_INST_DEC |
| 113 | #define MD32_RAKE_GLOBAL_CON BASE_MADDR_RAKESYS_GLOBAL_CON |
| 114 | |
| 115 | #define MD32_USIP_SYS BASE_MADDR_MDMCU_USIP_CROSS_CORE_CTRL |
| 116 | |
| 117 | #define MD32_KB (1024) |
| 118 | #define RAKE_PM_SZ (96 * MD32_KB) |
| 119 | #define RAKE_DM_SZ (48 * MD32_KB) |
| 120 | #define RAKE_CMIF_SZ (8 * MD32_KB) |
| 121 | |
| 122 | #else |
| 123 | #error "Unknown Platform!!" |
| 124 | #endif |
| 125 | |
| 126 | #if defined(__MD32_PM_PROTECT_SUPPORT__) |
| 127 | #define MD32_PM_PROTECT_EN_OFF (0x351020) |
| 128 | #define MD32_PM_PROTECT_BNK_OFF (0x351024) |
| 129 | #define MD32_PM_PROTECT_INSTR_OFF (0x351028) |
| 130 | #define MD32_UDF_INST_VAL (0x00F400F4) |
| 131 | #endif /* __MD32_PM_PROTECT_SUPPORT__ */ |
| 132 | |
| 133 | /* MD32 setting */ |
| 134 | #define MD32_PERI_CTRL_MAGIC (0x80A180A1) |
| 135 | #define MD32_DFE_MEM_BNK_SZ (16 * 1024) |
| 136 | #define MD32_BRP_MEM_BNK_SZ ( 8 * 1024) |
| 137 | #define MD32_ENABLE (MD32_MAGIC_KEY | 0x1) |
| 138 | #define MD32_DISABLE (MD32_MAGIC_KEY | 0x0) |
| 139 | |
| 140 | /* Timestamp for GDMA callback function internal operation */ |
| 141 | struct gdma_cb_timestamp { |
| 142 | unsigned long start; |
| 143 | unsigned long hwitc_start_end; |
| 144 | unsigned long who_use_gdma; |
| 145 | unsigned long who_wait_gdma; |
| 146 | unsigned long activeate_LISR_before; |
| 147 | unsigned long activeate_LISR_end; |
| 148 | unsigned long hwitc_end_before; |
| 149 | unsigned long hwitc_end_end; |
| 150 | unsigned long end; |
| 151 | }; |
| 152 | |
| 153 | /* Timestamp of GDMA DDL callback function internal operation */ |
| 154 | struct gdma_cb_ddl_timestamp { |
| 155 | unsigned long start; |
| 156 | unsigned long who_use_gdma; |
| 157 | unsigned long check; |
| 158 | unsigned long config; |
| 159 | unsigned long ddl; |
| 160 | unsigned long data_sync; |
| 161 | unsigned long gdma_set_config; |
| 162 | unsigned long gdma_start_cmd; |
| 163 | unsigned long enablc_clk; |
| 164 | unsigned long send_interrupt; |
| 165 | unsigned long end; |
| 166 | }; |
| 167 | |
| 168 | typedef enum |
| 169 | { |
| 170 | LOADER_SRAM_TYPE_PM = 0, |
| 171 | LOADER_SRAM_TYPE_DM = 1, |
| 172 | } LOADER_SRAM_TYPE; |
| 173 | |
| 174 | typedef struct { |
| 175 | unsigned long dump_en; |
| 176 | unsigned long gate_status; |
| 177 | unsigned long golden_pm_crc; |
| 178 | unsigned long golden_dm_crc; |
| 179 | unsigned long reg_pm_crc; |
| 180 | unsigned long reg_dm_crc; |
| 181 | unsigned long ori_pm_crc; |
| 182 | unsigned long ori_pm; |
| 183 | unsigned long ori_dm_crc; |
| 184 | unsigned long ori_dm; |
| 185 | unsigned long new_pm_crc; |
| 186 | unsigned long new_pm; |
| 187 | unsigned long new_dm_crc; |
| 188 | unsigned long new_dm; |
| 189 | unsigned long end_pm; |
| 190 | unsigned long end_dm; |
| 191 | DDL_MODE ddl_mode; |
| 192 | LOADER_SRAM_TYPE sram_type; |
| 193 | |
| 194 | } CRC_DBG_Info_T; |
| 195 | #endif /* MD32_BOOT_H */ |
| 196 | |