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