cmd: new mac_from_mmc command

This commit is contained in:
hayzamjs 2024-05-20 03:27:15 +05:30
parent c5b92986b5
commit cfea650c68
Signed by: hayzam
GPG key ID: 13B4C5B544B53947
3 changed files with 54 additions and 0 deletions

View file

@ -1288,6 +1288,12 @@ config CMD_MMC_REG
Enable the commands for reading card registers. This is useful
mostly for debugging or extracting details from the card.
config CMD_MAC_FROM_MMC
bool "mac form mmc cid"
depends on CMD_MMC
help
Enable command for forming a MAC address from the CID of a eMMC device.
config CMD_MMC_RPMB
bool "Enable support for RPMB in the mmc command"
depends on SUPPORT_EMMC_RPMB

View file

@ -115,6 +115,7 @@ obj-$(CONFIG_CMD_MDIO) += mdio.o
obj-$(CONFIG_CMD_PAUSE) += pause.o
obj-$(CONFIG_CMD_SLEEP) += sleep.o
obj-$(CONFIG_CMD_MMC) += mmc.o
obj-$(CONFIG_CMD_MAC_FROM_MMC) += mac_from_emmc.o
obj-$(CONFIG_CMD_OPTEE_RPMB) += optee_rpmb.o
obj-$(CONFIG_CMD_MP) += mp.o
obj-$(CONFIG_CMD_MTD) += mtd.o

47
cmd/mac_from_emmc.c Normal file
View file

@ -0,0 +1,47 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (c) 2024 Alchemilla Ventures Private Limited <hayzam@alchemilla.io>
*/
#include <common.h>
#include <command.h>
#include <console.h>
#include <mmc.h>
static int do_mac_from_mmc(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) {
if (argc != 2) {
return CMD_RET_USAGE;
}
int currentDevice = simple_strtoul(argv[1], NULL, 10);
struct mmc *mmc = find_mmc_device(currentDevice);
if (!mmc) {
printf("No MMC device at slot %d\n", currentDevice);
return CMD_RET_FAILURE;
}
if (IS_SD(mmc)) {
printf("SD registers are not supported\n");
return CMD_RET_FAILURE;
}
unsigned char mac[6];
mac[0] = (mmc->cid[0] >> 24) & 0xFE;
mac[1] = (mmc->cid[1] >> 16) & 0xFF;
mac[2] = (mmc->cid[2] >> 8) & 0xFF;
mac[3] = (mmc->cid[3]) & 0xFF;
mac[4] = (mmc->cid[0] >> 8) & 0xFF;
mac[5] = (mmc->cid[1] >> 24) & 0xFF;
printf("MAC Address: %02X:%02X:%02X:%02X:%02X:%02X\n",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
return CMD_RET_SUCCESS;
}
U_BOOT_CMD(
mac_from_mmc, 2, 0, do_mac_from_mmc,
"Get MAC address from MMC CID",
"mmc"
);