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