mmc-first-dev.c 820 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * Copyright (C) 2016 Socionext Inc.
  3. * Author: Masahiro Yamada <yamada.masahiro@socionext.com>
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #include <common.h>
  8. #include <mmc.h>
  9. #include <linux/errno.h>
  10. static int find_first_mmc_device(void)
  11. {
  12. struct mmc *mmc;
  13. int i;
  14. for (i = 0; (mmc = find_mmc_device(i)); i++) {
  15. if (!mmc_init(mmc) && IS_MMC(mmc))
  16. return i;
  17. }
  18. return -ENODEV;
  19. }
  20. int mmc_get_env_dev(void)
  21. {
  22. return find_first_mmc_device();
  23. }
  24. static int do_mmcsetn(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  25. {
  26. int dev;
  27. dev = find_first_mmc_device();
  28. if (dev < 0)
  29. return CMD_RET_FAILURE;
  30. setenv_ulong("mmc_first_dev", dev);
  31. return CMD_RET_SUCCESS;
  32. }
  33. U_BOOT_CMD(
  34. mmcsetn, 1, 1, do_mmcsetn,
  35. "Set the first MMC (not SD) dev number to \"mmc_first_dev\" environment",
  36. ""
  37. );