diff mbox series

[v2,2/5] bootstd: Add bootflow_iter_check_mmc() helper

Message ID 20240613-bootmeth-android-v2-2-397f6e66eb29@baylibre.com
State Changes Requested
Delegated to: Tom Rini
Headers show
Series bootstd: Add Android support | expand

Commit Message

Mattijs Korpershoek June 13, 2024, 10:13 a.m. UTC
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>
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
---
 boot/bootflow.c    | 12 ++++++++++++
 include/bootflow.h |  9 +++++++++
 2 files changed, 21 insertions(+)

Comments

Julien Masson June 13, 2024, 2:16 p.m. UTC | #1
On Thu 13 Jun 2024 at 16:15, Mattijs Korpershoek <mkorpershoek@baylibre.com> wrote:

> 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>
> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> ---
>  boot/bootflow.c    | 12 ++++++++++++
>  include/bootflow.h |  9 +++++++++
>  2 files changed, 21 insertions(+)
> 
> diff --git a/boot/bootflow.c b/boot/bootflow.c
> index 9aa3179c3881..59d77d2385f4 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 080ee8501225..6058ddd89b16 100644
> --- a/include/bootflow.h
> +++ b/include/bootflow.h
> @@ -407,6 +407,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
>   *
> 
> -- 
> 2.45.2
> 

Reviewed-by: Julien Masson <jmasson@baylibre.com>
Guillaume La Roque June 13, 2024, 6:44 p.m. UTC | #2
Le 13/06/2024 à 12:13, Mattijs Korpershoek a écrit :
> 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>
> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
> ---
>   boot/bootflow.c    | 12 ++++++++++++
>   include/bootflow.h |  9 +++++++++
>   2 files changed, 21 insertions(+)
>
> diff --git a/boot/bootflow.c b/boot/bootflow.c
> index 9aa3179c3881..59d77d2385f4 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 080ee8501225..6058ddd89b16 100644
> --- a/include/bootflow.h
> +++ b/include/bootflow.h
> @@ -407,6 +407,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
>    *
>
Reviewed-by: Guillaume La Roque <glaroque@baylibre.com>
diff mbox series

Patch

diff --git a/boot/bootflow.c b/boot/bootflow.c
index 9aa3179c3881..59d77d2385f4 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 080ee8501225..6058ddd89b16 100644
--- a/include/bootflow.h
+++ b/include/bootflow.h
@@ -407,6 +407,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
  *