]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
dm: core: Add function to access uclass priv
authorSimon Glass <sjg@chromium.org>
Wed, 23 Dec 2020 02:30:26 +0000 (19:30 -0700)
committerSimon Glass <sjg@chromium.org>
Tue, 5 Jan 2021 19:24:40 +0000 (12:24 -0700)
Add functions so this information is not accessed directly. This will be
needed for of-platdata which stores it in a different place.

Signed-off-by: Simon Glass <sjg@chromium.org>
drivers/core/uclass.c
include/dm/uclass-internal.h
include/dm/uclass.h

index 6409457fa962cd7bbcfc3b0f126f14dbb193a100..5e24927b341f4ed859c552e49868e97ba58dd2a2 100644 (file)
@@ -160,6 +160,16 @@ const char *uclass_get_name(enum uclass_id id)
        return uc->uc_drv->name;
 }
 
+void *uclass_get_priv(const struct uclass *uc)
+{
+       return uc->priv;
+}
+
+void uclass_set_priv(struct uclass *uc, void *priv)
+{
+       uc->priv = priv;
+}
+
 enum uclass_id uclass_get_by_name(const char *name)
 {
        int i;
index 3e052f95d324bcbe052a516eaf19fe185f7286a2..c5a464be7c44c4187960fea4c845f6d5a7c8b67c 100644 (file)
 
 #include <dm/ofnode.h>
 
+/**
+ * uclass_set_priv() - Set the private data for a uclass
+ *
+ * This is normally handled by driver model, which automatically allocates
+ * private data when an 'auto' size if provided by the uclass driver.
+ *
+ * Use this function to override normal operation for special situations, such
+ * as needing to allocate a variable amount of data.
+ *
+ * @uc         Uclass to update
+ * @priv       New private-data pointer
+ */
+void uclass_set_priv(struct uclass *uc, void *priv);
+
 /**
  * uclass_find_next_free_seq() - Get the next free sequence number
  *
index fde08fe157abb35071921984d1010e5076ba27ca..20d4b9e68329003d298b54a7aae233f969f2f44a 100644 (file)
@@ -114,6 +114,14 @@ struct uclass_driver {
 #define UCLASS_DRIVER(__name)                                          \
        ll_entry_declare(struct uclass_driver, __name, uclass_driver)
 
+/**
+ * uclass_get_priv() - Get the private data for a uclass
+ *
+ * @uc         Uclass to check
+ * @return private data, or NULL if none
+ */
+void *uclass_get_priv(const struct uclass *uc);
+
 /**
  * uclass_get() - Get a uclass based on an ID, creating it if needed
  *