/* * Copyright (c) 2016 - 2020, Broadcom * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef EMMC_API_H #define EMMC_API_H #include "bcm_emmc.h" #include "emmc_pboot_hal_memory_drv.h" #ifdef INCLUDE_EMMC_DRIVER_ERASE_CODE /* * The erasable unit of the eMMC is the Erase Group * Erase group is measured in write blocks which * are the basic writable units of the Device * EMMC_ERASE_GROUP_SIZE is the number of writeable * units (each unit is 512 bytes) */ /* Start address (sector) */ #define EMMC_ERASE_START_BLOCK 0x0 /* Number of blocks to be erased */ #define EMMC_ERASE_BLOCK_COUNT 0x1 #define EMMC_ERASE_USER_AREA 0 #define EMMC_ERASE_BOOT_PARTITION1 1 #define EMMC_ERASE_BOOT_PARTITION2 2 /* eMMC partition to be erased */ #define EMMC_ERASE_PARTITION EMMC_ERASE_USER_AREA #endif uint32_t bcm_emmc_init(bool card_rdy_only); void emmc_deinit(void); #ifdef INCLUDE_EMMC_DRIVER_ERASE_CODE int emmc_erase(uintptr_t mem_addr, size_t num_of_blocks, uint32_t partition); #endif uint32_t emmc_partition_select(uint32_t partition); uint32_t emmc_read(uintptr_t mem_addr, uintptr_t storage_addr, size_t storage_size, size_t bytes_to_read); uint32_t emmc_write(uintptr_t mem_addr, uintptr_t data_addr, size_t bytes_to_write); #endif /* EMMC_API_H */