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