xref: /arm-trusted-firmware/plat/st/common/include/stm32mp_io_storage.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2021-2023, STMicroelectronics - All Rights Reserved
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu #ifndef STM32MP_IO_STORAGE_H
7*91f16700Schasinglulu #define STM32MP_IO_STORAGE_H
8*91f16700Schasinglulu 
9*91f16700Schasinglulu #include <stdint.h>
10*91f16700Schasinglulu 
11*91f16700Schasinglulu #include <drivers/io/io_storage.h>
12*91f16700Schasinglulu 
13*91f16700Schasinglulu /*******************************************************************************
14*91f16700Schasinglulu  * STM32MP1 RAW partition offset for devices without GPT
15*91f16700Schasinglulu  ******************************************************************************/
16*91f16700Schasinglulu #define STM32MP_EMMC_BOOT_FIP_OFFSET	U(0x00040000)
17*91f16700Schasinglulu #if PSA_FWU_SUPPORT
18*91f16700Schasinglulu #define STM32MP_NOR_METADATA1_OFFSET	U(0x00080000)
19*91f16700Schasinglulu #define STM32MP_NOR_METADATA2_OFFSET	U(0x000C0000)
20*91f16700Schasinglulu #define STM32MP_NOR_FIP_A_OFFSET	U(0x00100000)
21*91f16700Schasinglulu #define STM32MP_NOR_FIP_A_GUID		(const struct efi_guid)EFI_GUID(0x4fd84c93,  \
22*91f16700Schasinglulu 					0x54ef, 0x463f, 0xa7, 0xef, 0xae, 0x25, 0xff,\
23*91f16700Schasinglulu 					0x88, 0x70, 0x87)
24*91f16700Schasinglulu 
25*91f16700Schasinglulu #define STM32MP_NOR_FIP_B_OFFSET	U(0x00500000)
26*91f16700Schasinglulu #define STM32MP_NOR_FIP_B_GUID		(const struct efi_guid)EFI_GUID(0x09c54952,  \
27*91f16700Schasinglulu 					0xd5bf, 0x45af, 0xac, 0xee, 0x33, 0x53, 0x03,\
28*91f16700Schasinglulu 					0x76, 0x6f, 0xb3)
29*91f16700Schasinglulu 
30*91f16700Schasinglulu #define STM32MP_NAND_METADATA1_OFFSET	U(0x00100000)
31*91f16700Schasinglulu #define STM32MP_NAND_METADATA2_OFFSET	U(0x00180000)
32*91f16700Schasinglulu #define STM32MP_NAND_FIP_A_OFFSET	U(0x00200000)
33*91f16700Schasinglulu #define STM32MP_NAND_FIP_A_GUID		(const struct efi_guid)EFI_GUID(0x4fd84c93,  \
34*91f16700Schasinglulu 					0x54ef, 0x463f, 0xa7, 0xef, 0xae, 0x25, 0xff,\
35*91f16700Schasinglulu 					0x88, 0x70, 0x87)
36*91f16700Schasinglulu 
37*91f16700Schasinglulu #define STM32MP_NAND_FIP_B_OFFSET	U(0x00A00000)
38*91f16700Schasinglulu #define STM32MP_NAND_FIP_B_GUID		(const struct efi_guid)EFI_GUID(0x09c54952,  \
39*91f16700Schasinglulu 					0xd5bf, 0x45af, 0xac, 0xee, 0x33, 0x53, 0x03,\
40*91f16700Schasinglulu 					0x76, 0x6f, 0xb3)
41*91f16700Schasinglulu 
42*91f16700Schasinglulu #define STM32MP_NAND_FIP_B_MAX_OFFSET	U(0x01200000)
43*91f16700Schasinglulu #else /* PSA_FWU_SUPPORT */
44*91f16700Schasinglulu #ifndef STM32MP_NOR_FIP_OFFSET
45*91f16700Schasinglulu #define STM32MP_NOR_FIP_OFFSET		U(0x00080000)
46*91f16700Schasinglulu #endif
47*91f16700Schasinglulu #ifndef STM32MP_NAND_FIP_OFFSET
48*91f16700Schasinglulu #define STM32MP_NAND_FIP_OFFSET		U(0x00200000)
49*91f16700Schasinglulu #endif
50*91f16700Schasinglulu #endif /* PSA_FWU_SUPPORT */
51*91f16700Schasinglulu 
52*91f16700Schasinglulu /*
53*91f16700Schasinglulu  * Only used for MTD devices that need some backup blocks.
54*91f16700Schasinglulu  * Must define a maximum size for a partition.
55*91f16700Schasinglulu  */
56*91f16700Schasinglulu #define PLATFORM_MTD_MAX_PART_SIZE	U(0x00400000)
57*91f16700Schasinglulu 
58*91f16700Schasinglulu #define FIP_IMAGE_NAME			"fip"
59*91f16700Schasinglulu #define METADATA_PART_1			"metadata1"
60*91f16700Schasinglulu #define METADATA_PART_2			"metadata2"
61*91f16700Schasinglulu 
62*91f16700Schasinglulu /* IO devices handle */
63*91f16700Schasinglulu extern uintptr_t storage_dev_handle;
64*91f16700Schasinglulu extern uintptr_t fip_dev_handle;
65*91f16700Schasinglulu extern uintptr_t enc_dev_handle;
66*91f16700Schasinglulu 
67*91f16700Schasinglulu extern io_block_spec_t image_block_spec;
68*91f16700Schasinglulu 
69*91f16700Schasinglulu /* Function declarations */
70*91f16700Schasinglulu int open_fip(const uintptr_t spec);
71*91f16700Schasinglulu #ifndef DECRYPTION_SUPPORT_none
72*91f16700Schasinglulu int open_enc_fip(const uintptr_t spec);
73*91f16700Schasinglulu #endif
74*91f16700Schasinglulu int open_storage(const uintptr_t spec);
75*91f16700Schasinglulu 
76*91f16700Schasinglulu #endif /* STM32MP_IO_STORAGE_H */
77