1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * Copyright (C) 2016 Freescale Semiconductor, Inc. 4 * Copyright 2018 NXP 5 * 6 */ 7 8 #include <vsprintf.h> 9 #include <linux/errno.h> 10 #include <asm/io.h> 11 #include <env.h> 12 #include <command.h> 13 #include <stdbool.h> 14 #include <mmc.h> 15 check_mmc_autodetect(void)16static int check_mmc_autodetect(void) 17 { 18 char *autodetect_str = env_get("mmcautodetect"); 19 20 if ((autodetect_str) && (strcmp(autodetect_str, "yes") == 0)) 21 return 1; 22 23 return 0; 24 } 25 26 /* This should be defined for each board */ mmc_map_to_kernel_blk(int dev_no)27__weak int mmc_map_to_kernel_blk(int dev_no) 28 { 29 return dev_no; 30 } 31 board_late_mmc_env_init(void)32void board_late_mmc_env_init(void) 33 { 34 char cmd[32]; 35 char mmcblk[32]; 36 u32 dev_no = mmc_get_env_dev(); 37 38 if (!check_mmc_autodetect()) 39 return; 40 41 env_set_ulong("mmcdev", dev_no); 42 43 /* Set mmcblk env */ 44 sprintf(mmcblk, "/dev/mmcblk%dp2 rootwait rw", 45 mmc_map_to_kernel_blk(dev_no)); 46 env_set("mmcroot", mmcblk); 47 48 sprintf(cmd, "mmc dev %d", dev_no); 49 run_command(cmd, 0); 50 } 51