diff options
author | Soby Mathew <soby.mathew@arm.com> | 2018-10-18 10:44:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-18 10:44:53 +0100 |
commit | 0595abceba85bee8d6c27e6e122722f816610df7 (patch) | |
tree | 589d716b6b681ff0f677dd80930c204a35ab4368 /include | |
parent | a51443fa7e50346d167a93efb556f290eb63bd5c (diff) | |
parent | aec7de41754308ace38ac2672405d0ee8a586ae3 (diff) | |
download | platform_external_arm-trusted-firmware-0595abceba85bee8d6c27e6e122722f816610df7.tar.gz platform_external_arm-trusted-firmware-0595abceba85bee8d6c27e6e122722f816610df7.tar.bz2 platform_external_arm-trusted-firmware-0595abceba85bee8d6c27e6e122722f816610df7.zip |
Merge pull request #1632 from Yann-lms/stm32mp1_mmc
Add MMC support for STM32MP1
Diffstat (limited to 'include')
-rw-r--r-- | include/common/tbbr/tbbr_img_def.h | 8 | ||||
-rw-r--r-- | include/drivers/io/io_storage.h | 2 | ||||
-rw-r--r-- | include/drivers/st/io_mmc.h | 14 | ||||
-rw-r--r-- | include/drivers/st/io_stm32image.h | 32 | ||||
-rw-r--r-- | include/drivers/st/stm32_sdmmc2.h | 31 |
5 files changed, 86 insertions, 1 deletions
diff --git a/include/common/tbbr/tbbr_img_def.h b/include/common/tbbr/tbbr_img_def.h index a97914de6..96bfb5341 100644 --- a/include/common/tbbr/tbbr_img_def.h +++ b/include/common/tbbr/tbbr_img_def.h @@ -77,7 +77,13 @@ /* NT_FW_CONFIG */ #define NT_FW_CONFIG_ID U(27) +/* GPT Partition */ +#define GPT_IMAGE_ID U(28) + +/* Binary with STM32 header */ +#define STM32_IMAGE_ID U(29) + /* Define size of the array */ -#define MAX_NUMBER_IDS U(28) +#define MAX_NUMBER_IDS U(30) #endif /* __TBBR_IMG_DEF_H__ */ diff --git a/include/drivers/io/io_storage.h b/include/drivers/io/io_storage.h index 485ed8c0f..02308e3a2 100644 --- a/include/drivers/io/io_storage.h +++ b/include/drivers/io/io_storage.h @@ -22,6 +22,8 @@ typedef enum { IO_TYPE_DUMMY, IO_TYPE_FIRMWARE_IMAGE_PACKAGE, IO_TYPE_BLOCK, + IO_TYPE_MMC, + IO_TYPE_STM32IMAGE, IO_TYPE_MAX } io_type_t; diff --git a/include/drivers/st/io_mmc.h b/include/drivers/st/io_mmc.h new file mode 100644 index 000000000..de71e7d8a --- /dev/null +++ b/include/drivers/st/io_mmc.h @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef IO_MMC_H +#define IO_MMC_H + +#include <io_driver.h> + +int register_io_dev_mmc(const io_dev_connector_t **dev_con); + +#endif /* IO_MMC_H */ diff --git a/include/drivers/st/io_stm32image.h b/include/drivers/st/io_stm32image.h new file mode 100644 index 000000000..b66821960 --- /dev/null +++ b/include/drivers/st/io_stm32image.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef IO_STM32IMAGE_H +#define IO_STM32IMAGE_H + +#include <io_driver.h> +#include <partition.h> + +#define MAX_LBA_SIZE 512 +#define MAX_PART_NAME_SIZE (EFI_NAMELEN + 1) +#define STM32_PART_NUM (PLAT_PARTITION_MAX_ENTRIES - STM32_TF_A_COPIES) + +struct stm32image_part_info { + char name[MAX_PART_NAME_SIZE]; + uint32_t binary_type; + uintptr_t part_offset; + uint32_t bkp_offset; +}; + +struct stm32image_device_info { + struct stm32image_part_info part_info[STM32_PART_NUM]; + uint32_t device_size; + uint32_t lba_size; +}; + +int register_io_dev_stm32image(const io_dev_connector_t **dev_con); + +#endif /* IO_STM32IMAGE_H */ diff --git a/include/drivers/st/stm32_sdmmc2.h b/include/drivers/st/stm32_sdmmc2.h new file mode 100644 index 000000000..b17265926 --- /dev/null +++ b/include/drivers/st/stm32_sdmmc2.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2017-2018, STMicroelectronics - All Rights Reserved + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef STM32_SDMMC2_H +#define STM32_SDMMC2_H + +#include <mmc.h> +#include <stdbool.h> + +struct stm32_sdmmc2_params { + uintptr_t reg_base; + unsigned int clk_rate; + unsigned int bus_width; + unsigned int flags; + struct mmc_device_info *device_info; + unsigned int pin_ckin; + unsigned int negedge; + unsigned int dirpol; + unsigned int clock_id; + unsigned int reset_id; + bool use_dma; +}; + +unsigned long long stm32_sdmmc2_mmc_get_device_size(void); +int stm32_sdmmc2_mmc_init(struct stm32_sdmmc2_params *params); +bool plat_sdmmc2_use_dma(unsigned int instance, unsigned int memory); + +#endif /* STM32_SDMMC2_H */ |