1 /* 2 * Copyright (c) 2016 - 2020, Broadcom 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef EMMC_API_H 8 #define EMMC_API_H 9 10 #include "bcm_emmc.h" 11 #include "emmc_pboot_hal_memory_drv.h" 12 13 #ifdef INCLUDE_EMMC_DRIVER_ERASE_CODE 14 /* 15 * The erasable unit of the eMMC is the Erase Group 16 * Erase group is measured in write blocks which 17 * are the basic writable units of the Device 18 * EMMC_ERASE_GROUP_SIZE is the number of writeable 19 * units (each unit is 512 bytes) 20 */ 21 22 /* Start address (sector) */ 23 #define EMMC_ERASE_START_BLOCK 0x0 24 /* Number of blocks to be erased */ 25 #define EMMC_ERASE_BLOCK_COUNT 0x1 26 27 #define EMMC_ERASE_USER_AREA 0 28 #define EMMC_ERASE_BOOT_PARTITION1 1 29 #define EMMC_ERASE_BOOT_PARTITION2 2 30 31 /* eMMC partition to be erased */ 32 #define EMMC_ERASE_PARTITION EMMC_ERASE_USER_AREA 33 #endif 34 35 uint32_t bcm_emmc_init(bool card_rdy_only); 36 void emmc_deinit(void); 37 38 #ifdef INCLUDE_EMMC_DRIVER_ERASE_CODE 39 int emmc_erase(uintptr_t mem_addr, size_t num_of_blocks, uint32_t partition); 40 #endif 41 42 uint32_t emmc_partition_select(uint32_t partition); 43 uint32_t emmc_read(uintptr_t mem_addr, uintptr_t storage_addr, 44 size_t storage_size, size_t bytes_to_read); 45 uint32_t emmc_write(uintptr_t mem_addr, uintptr_t data_addr, 46 size_t bytes_to_write); 47 #endif /* EMMC_API_H */ 48