summaryrefslogtreecommitdiffstats
path: root/include/bootsource.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/bootsource.h')
-rw-r--r--include/bootsource.h44
1 files changed, 42 insertions, 2 deletions
diff --git a/include/bootsource.h b/include/bootsource.h
index 646b0e91c1..33ad269460 100644
--- a/include/bootsource.h
+++ b/include/bootsource.h
@@ -20,15 +20,55 @@ enum bootsource {
BOOTSOURCE_NET,
BOOTSOURCE_CAN,
BOOTSOURCE_JTAG,
+ BOOTSOURCE_MAX,
};
#define BOOTSOURCE_INSTANCE_UNKNOWN -1
enum bootsource bootsource_get(void);
+enum bootsource bootsource_get_device(void);
int bootsource_get_instance(void);
-void bootsource_set(enum bootsource src);
-void bootsource_set_instance(int instance);
void bootsource_set_alias_name(const char *name);
char *bootsource_get_alias_name(void);
+const char *bootsource_to_string(enum bootsource src);
+const char *bootsource_get_alias_stem(enum bootsource bs);
+int bootsource_of_alias_xlate(enum bootsource bs, int instance);
+struct device_node *bootsource_of_node_get(struct device_node *root);
+
+/**
+ * bootsource_set - set bootsource with optional DT mapping table
+ * @bs: bootrom reported bootsource
+ * @instance: bootrom reported instance
+ *
+ * Returns computed bootsource instace
+ *
+ * Normal bootsource_set_raw_instance() expects numbering used by
+ * bootrom for instance to align with DT aliases, e.g.
+ * $bootsource = "mmc" && $bootsource_instance = 1 -> /aliases/mmc1
+ * bootsource_set() will instead consult
+ * /aliases/barebox,bootsource-mmc1 which may point at a different
+ * device than mmc1. In absence of appropriate barebox,bootsource-*
+ * chosen property, instance is set without translation.
+ */
+int bootsource_set(enum bootsource bs, int instance);
+
+/**
+ * bootsource_set_raw - set bootsource as-is
+ * @bs: bootsource to report
+ * @instance: bootsource instance to report
+ *
+ * This sets bootsource and bootsource_instance directly.
+ * Preferably, use bootsource_set in new code.
+ */
+void bootsource_set_raw(enum bootsource src, int instance);
+
+/**
+ * bootsource_set_raw_instance - set bootsource_instance as-is
+ * @bs: bootrom reported bootsource
+ * @instance: bootrom reported instance
+ *
+ * This directly sets bootsource_instance without changing bootsource.
+ */
+void bootsource_set_raw_instance(int instance);
#endif /* __BOOTSOURCE_H__ */