aboutsummaryrefslogtreecommitdiff
path: root/drivers/core
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2021-03-15 17:25:37 +1300
committerSimon Glass <sjg@chromium.org>2021-03-26 17:03:09 +1300
commit6f644efdd803e0718d39266f75c0535a534cc601 (patch)
tree2c5c623bf4c9860885b10736638dcec1da9594e0 /drivers/core
parentab933d802643ca51d276f0f449921a047126f8a1 (diff)
downloadu-boot-6f644efdd803e0718d39266f75c0535a534cc601.zip
u-boot-6f644efdd803e0718d39266f75c0535a534cc601.tar.gz
u-boot-6f644efdd803e0718d39266f75c0535a534cc601.tar.bz2
dm: core: Move flags to device-runtime info
When of-platdata-inst is active, use the flags in the new udevice_rt table, dropping them from the main struct udevice. This ensures that the latter is not updated at runtime. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/core')
-rw-r--r--drivers/core/device.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/core/device.c b/drivers/core/device.c
index 1990b6f..06d2467 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -1136,3 +1136,36 @@ int dev_enable_by_path(const char *path)
return lists_bind_fdt(parent, node, NULL, false);
}
#endif
+
+#if CONFIG_IS_ENABLED(OF_PLATDATA_RT)
+static struct udevice_rt *dev_get_rt(const struct udevice *dev)
+{
+ struct udevice *base = ll_entry_start(struct udevice, udevice);
+ int idx = dev - base;
+
+ struct udevice_rt *urt = gd_dm_udevice_rt() + idx;
+
+ return urt;
+}
+
+u32 dev_get_flags(const struct udevice *dev)
+{
+ const struct udevice_rt *urt = dev_get_rt(dev);
+
+ return urt->flags_;
+}
+
+void dev_or_flags(const struct udevice *dev, u32 or)
+{
+ struct udevice_rt *urt = dev_get_rt(dev);
+
+ urt->flags_ |= or;
+}
+
+void dev_bic_flags(const struct udevice *dev, u32 bic)
+{
+ struct udevice_rt *urt = dev_get_rt(dev);
+
+ urt->flags_ &= ~bic;
+}
+#endif /* OF_PLATDATA_RT */