1 /* 2 * Copyright 2008,2010 Freescale Semiconductor, Inc 3 * Andy Fleming 4 * 5 * Based (loosely) on the Linux code 6 * 7 * SPDX-License-Identifier: GPL-2.0+ 8 */ 9 10 #ifndef _MMC_PRIVATE_H_ 11 #define _MMC_PRIVATE_H_ 12 13 #include <mmc.h> 14 15 extern int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, 16 struct mmc_data *data); 17 extern int mmc_send_status(struct mmc *mmc, int timeout); 18 extern int mmc_set_blocklen(struct mmc *mmc, int len); 19 #ifdef CONFIG_FSL_ESDHC_ADAPTER_IDENT 20 void mmc_adapter_card_type_ident(void); 21 #endif 22 23 #ifndef CONFIG_SPL_BUILD 24 25 unsigned long mmc_berase(struct blk_desc *block_dev, lbaint_t start, 26 lbaint_t blkcnt); 27 28 #ifdef CONFIG_BLK 29 ulong mmc_bwrite(struct udevice *dev, lbaint_t start, lbaint_t blkcnt, 30 const void *src); 31 #else 32 ulong mmc_bwrite(struct blk_desc *block_dev, lbaint_t start, lbaint_t blkcnt, 33 const void *src); 34 #endif 35 36 #else /* CONFIG_SPL_BUILD */ 37 38 /* SPL will never write or erase, declare dummies to reduce code size. */ 39 40 #ifdef CONFIG_BLK 41 static inline unsigned long mmc_berase(struct udevice *dev, 42 lbaint_t start, lbaint_t blkcnt) 43 { 44 return 0; 45 } 46 47 static inline ulong mmc_bwrite(struct udevice *dev, lbaint_t start, 48 lbaint_t blkcnt, const void *src) 49 { 50 return 0; 51 } 52 #else 53 static inline unsigned long mmc_berase(struct blk_desc *block_dev, 54 lbaint_t start, lbaint_t blkcnt) 55 { 56 return 0; 57 } 58 59 static inline ulong mmc_bwrite(struct blk_desc *block_dev, lbaint_t start, 60 lbaint_t blkcnt, const void *src) 61 { 62 return 0; 63 } 64 #endif 65 66 #endif /* CONFIG_SPL_BUILD */ 67 68 /** 69 * mmc_get_next_devnum() - Get the next available MMC device number 70 * 71 * @return next available device number (0 = first), or -ve on error 72 */ 73 int mmc_get_next_devnum(void); 74 75 /** 76 * mmc_do_preinit() - Get an MMC device ready for use 77 */ 78 void mmc_do_preinit(void); 79 80 /** 81 * mmc_list_init() - Set up the list of MMC devices 82 */ 83 void mmc_list_init(void); 84 85 /** 86 * mmc_list_add() - Add a new MMC device to the list of devices 87 * 88 * @mmc: Device to add 89 */ 90 void mmc_list_add(struct mmc *mmc); 91 92 #endif /* _MMC_PRIVATE_H_ */ 93