1 /******************************************************************************
2  *  Copyright (c) 2021-2023 Texas Instruments Incorporated. All rights reserved.
3  *
4  *  Redistribution and use in source and binary forms, with or without
5  *  modification, are permitted provided that the following conditions are met:
6  *
7  *  1) Redistributions of source code must retain the above copyright notice,
8  *     this list of conditions and the following disclaimer.
9  *
10  *  2) Redistributions in binary form must reproduce the above copyright notice,
11  *     this list of conditions and the following disclaimer in the documentation
12  *     and/or other materials provided with the distribution.
13  *
14  *  3) Neither the name of the copyright holder nor the names of its contributors
15  *     may be used to endorse or promote products derived from this software
16  *     without specific prior written permission.
17  *
18  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
22  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  *  POSSIBILITY OF SUCH DAMAGE.
29  ******************************************************************************/
30 #ifndef __HW_PLATFORM_H__
31 #define __HW_PLATFORM_H__
32 #include "hw_memmap.h"
33 #include "hw_pmctl.h"
34 
35 //*****************************************************************************
36 //
37 // Address, offset and constant definitions
38 //
39 //*****************************************************************************
40 // --- ROM definitions ---
41 /// Address of ROM FW revision structure
42 #define ROM_FWREV_ADDR (ROM_BASE + 0x0048)
43 /// Base address of HAPI table in ROM
44 #define ROM_HAPI_BASE  (ROM_BASE + 0x004C)
45 /// Address of CRC32 calculated over entire ROM
46 #define ROM_CRC_ADDR   (ROM_BASE + ROM_SIZE - 4)
47 
48 // --- SRAM definitions ---
49 /// Magic value used in Fcfg.criticalTrim.sramRepair.magicWord to
50 /// indicate that SRAM repair information is valid
51 #define SRAMREP_MAGICWORD 0x40008100
52 
53 //*****************************************************************************
54 //
55 // Boot status definitions (available through PMCTL::BOOTSTA) in addition to
56 // the defines listed in hw_pmctl.h
57 //
58 //*****************************************************************************
59 /// Boot sequence completed
60 #define PMCTL_BOOTSTA_BOOT_COMPLETE   (PMCTL_BOOTSTA_FLAG_MODE_BLDR)
61 /// Bootloader start initiated
62 #define PMCTL_BOOTSTA_BLDR_START_INIT (PMCTL_BOOTSTA_FLAG_MODE_BLDR | 0x02)
63 /// ROM serial bootloader complete
64 #define PMCTL_BOOTSTA_BLDR_COMPLETE   (PMCTL_BOOTSTA_FLAG_MODE_APP)
65 /// Application start initiated
66 #define PMCTL_BOOTSTA_APP_START_INIT  (PMCTL_BOOTSTA_FLAG_MODE_APP | 0x02)
67 
68 #if !(defined(__ASM_INCLUDE__))
69 // Only included in C files
70 
71 /// Data type for passing flags to bootloader/application entry function
72 typedef union
73 {
74     uint32_t val32; ///< 32b value of word
75     struct
76     {
77         uint32_t bCcfgValid:1;        ///< Is CCFG valid?
78         uint32_t bAppCanBoot:1;       ///< Does a bootable application exist?
79         uint32_t bChipEraseAllowed:1; ///< Is ChipErase operation allowed?
80         uint32_t bParamsFromCcfg:1;   ///< Entry function params argument is CCFG(1) or FCFG(0)
81         uint32_t bBldrAllowDbg:1;     ///< Is debugging of bootloader allowed?
82         uint32_t res0:27;             ///< (Reserved for future use)
83     } bldr;
84 } bldrEntryFlags_t;
85 
86 #endif //!(defined(__ASM_INCLUDE__)
87 
88 #endif // __HW_PLATFORM_H__
89