@ -1531,6 +1531,53 @@ int __deprecated mmc_register(struct mmc *mmc)
return - 1 ;
}
# ifdef CONFIG_BLK
int mmc_bind ( struct udevice * dev , struct mmc * mmc , const struct mmc_config * cfg )
{
struct blk_desc * bdesc ;
struct udevice * bdev ;
int ret ;
ret = blk_create_devicef ( dev , " mmc_blk " , " blk " , IF_TYPE_MMC , - 1 , 512 ,
0 , & bdev ) ;
if ( ret ) {
debug ( " Cannot create block device \n " ) ;
return ret ;
}
bdesc = dev_get_uclass_platdata ( bdev ) ;
mmc - > cfg = cfg ;
mmc - > priv = dev ;
/* the following chunk was from mmc_register() */
/* Setup dsr related values */
mmc - > dsr_imp = 0 ;
mmc - > dsr = 0xffffffff ;
/* Setup the universal parts of the block interface just once */
bdesc - > if_type = IF_TYPE_MMC ;
bdesc - > removable = 1 ;
/* setup initial part type */
bdesc - > part_type = mmc - > cfg - > part_type ;
mmc - > dev = dev ;
return 0 ;
}
int mmc_unbind ( struct udevice * dev )
{
struct udevice * bdev ;
device_find_first_child ( dev , & bdev ) ;
if ( bdev ) {
device_remove ( bdev ) ;
device_unbind ( bdev ) ;
}
return 0 ;
}
# else
struct mmc * mmc_create ( const struct mmc_config * cfg , void * priv )
{
struct blk_desc * bdesc ;
@ -1574,6 +1621,7 @@ void mmc_destroy(struct mmc *mmc)
/* only freeing memory for now */
free ( mmc ) ;
}
# endif
static int mmc_get_dev ( int dev , struct blk_desc * * descp )
{