aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattijs Korpershoek2024-07-10 10:40:03 +0200
committerTom Rini2024-07-18 13:51:30 -0600
commitbe0b076c55a3de8a1a10053a8db9ff9ca8ffb8ac (patch)
tree1ec2b6fb0cd489ba8da24d469d5f8042e76bc9b3
parent58fed99f46115fe8547e7978fa361bbbbb3f3b50 (diff)
bootstd: Add bootflow_iter_check_mmc() helper
Some bootflows might be able to only boot from MMC devices. Add a helper function these bootflows can use. Reviewed-by: Igor Opaniuk <igor.opaniuk@gmail.com> Reviewed-by: Julien Masson <jmasson@baylibre.com> Reviewed-by: Guillaume La Roque <glaroque@baylibre.com> Tested-by: Guillaume La Roque <glaroque@baylibre.com> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r--boot/bootflow.c12
-rw-r--r--include/bootflow.h9
2 files changed, 21 insertions, 0 deletions
diff --git a/boot/bootflow.c b/boot/bootflow.c
index 9aa3179c388..59d77d2385f 100644
--- a/boot/bootflow.c
+++ b/boot/bootflow.c
@@ -575,6 +575,18 @@ int bootflow_iter_check_blk(const struct bootflow_iter *iter)
return -ENOTSUPP;
}
+int bootflow_iter_check_mmc(const struct bootflow_iter *iter)
+{
+ const struct udevice *media = dev_get_parent(iter->dev);
+ enum uclass_id id = device_get_uclass_id(media);
+
+ log_debug("uclass %d: %s\n", id, uclass_get_name(id));
+ if (id == UCLASS_MMC)
+ return 0;
+
+ return -ENOTSUPP;
+}
+
int bootflow_iter_check_sf(const struct bootflow_iter *iter)
{
const struct udevice *media = dev_get_parent(iter->dev);
diff --git a/include/bootflow.h b/include/bootflow.h
index 6affc5e1a4f..4d2fc7b69b5 100644
--- a/include/bootflow.h
+++ b/include/bootflow.h
@@ -409,6 +409,15 @@ void bootflow_remove(struct bootflow *bflow);
int bootflow_iter_check_blk(const struct bootflow_iter *iter);
/**
+ * bootflow_iter_check_mmc() - Check that a bootflow uses a MMC device
+ *
+ * This checks the bootdev in the bootflow to make sure it uses a mmc device
+ *
+ * Return: 0 if OK, -ENOTSUPP if some other device is used (e.g. ethernet)
+ */
+int bootflow_iter_check_mmc(const struct bootflow_iter *iter);
+
+/**
* bootflow_iter_check_sf() - Check that a bootflow uses SPI FLASH
*
* This checks the bootdev in the bootflow to make sure it uses SPI flash