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