@ -330,6 +330,40 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
printf ( " EMMC boot partition Size change Failed. \n " ) ;
printf ( " EMMC boot partition Size change Failed. \n " ) ;
return 1 ;
return 1 ;
}
}
} else if ( strcmp ( argv [ 1 ] , " rst-function " ) = = 0 ) {
/*
* Set the RST_n_ENABLE bit of RST_n_FUNCTION
* The only valid values are 0x0 , 0x1 and 0x2 and writing
* a value of 0x1 or 0x2 sets the value permanently .
*/
int dev ;
struct mmc * mmc ;
u8 enable ;
if ( argc = = 4 ) {
dev = simple_strtoul ( argv [ 2 ] , NULL , 10 ) ;
enable = simple_strtoul ( argv [ 3 ] , NULL , 10 ) ;
} else {
return CMD_RET_USAGE ;
}
if ( enable > 2 | | enable < 0 ) {
puts ( " Invalid RST_n_ENABLE value \n " ) ;
return CMD_RET_USAGE ;
}
mmc = find_mmc_device ( dev ) ;
if ( ! mmc ) {
printf ( " no mmc device at slot %x \n " , dev ) ;
return 1 ;
}
if ( IS_SD ( mmc ) ) {
puts ( " RST_n_FUNCTION only exists on eMMC \n " ) ;
return 1 ;
}
return mmc_set_rst_n_function ( mmc , enable ) ;
# endif /* CONFIG_SUPPORT_EMMC_BOOT */
# endif /* CONFIG_SUPPORT_EMMC_BOOT */
}
}
@ -436,6 +470,9 @@ U_BOOT_CMD(
" - Change sizes of boot and RPMB partitions of specified device \n "
" - Change sizes of boot and RPMB partitions of specified device \n "
" mmc partconf dev boot_ack boot_partition partition_access \n "
" mmc partconf dev boot_ack boot_partition partition_access \n "
" - Change the bits of the PARTITION_CONFIG field of the specified device \n "
" - Change the bits of the PARTITION_CONFIG field of the specified device \n "
" mmc rst-function dev value \n "
" - Change the RST_n_FUNCTION field of the specified device \n "
" WARNING: This is a write-once field and 0 / 1 / 2 are the only valid values. \n "
# endif
# endif
" mmc setdsr - set DSR register value \n "
" mmc setdsr - set DSR register value \n "
) ;
) ;