This is useful as state backend that need not hardcode a specific device
at compile time and instead uses the bootsource device at runtime.

Signed-off-by: Ahmad Fatoum <a.fat...@pengutronix.de>
---
 drivers/misc/Kconfig            |  5 +++++
 drivers/misc/storage-by-alias.c | 12 ++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index 73814f36bf9c..e235646ee551 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -60,6 +60,11 @@ config STORAGE_BY_ALIAS
 
          Following compatibles are supported:
 
+         - "barebox,bootsource"
+
+         Alias the device barebox was booted from. This is useful to have
+         barebox-state come from the same device as barebox itself.
+
          - "barebox,storage-by-uuid"
 
          Look for a storage device matching the given DISKUUID and when found
diff --git a/drivers/misc/storage-by-alias.c b/drivers/misc/storage-by-alias.c
index 0bf0059ad41c..ece5929d60ce 100644
--- a/drivers/misc/storage-by-alias.c
+++ b/drivers/misc/storage-by-alias.c
@@ -7,6 +7,9 @@
  * - barebox,storage-by-uuid
  *   Useful for referencing existing EFI disks and their partition
  *   from device tree by offset
+ * - barebox,bootsource
+ *   Reference the boot medium indicated by barebox $bootsource
+ *   and $bootsource_instance variable
  */
 #include <common.h>
 #include <init.h>
@@ -179,6 +182,12 @@ static int storage_by_uuid_init(struct sba *sba)
        return 0;
 }
 
+static int storage_by_bootsource_init(struct sba *sba)
+{
+       sba->alias = xasprintf("bootsource");
+       return 0;
+}
+
 static int sba_probe(struct device *dev)
 {
        int (*init)(struct sba *);
@@ -209,6 +218,9 @@ static struct of_device_id sba_dt_ids[] = {
        {
                .compatible = "barebox,storage-by-uuid",
                .data = storage_by_uuid_init
+       }, {
+               .compatible = "barebox,bootsource",
+               .data = storage_by_bootsource_init
        }, {
                /* sentinel */
        }
-- 
2.39.5


Reply via email to