|
@@ -40,6 +40,27 @@ struct fdt_memory {
|
|
|
fdt_addr_t end;
|
|
|
};
|
|
|
|
|
|
+/*
|
|
|
+ * Information about a resource. start is the first address of the resource
|
|
|
+ * and end is the last address (inclusive). The length of the resource will
|
|
|
+ * be equal to: end - start + 1.
|
|
|
+ */
|
|
|
+struct fdt_resource {
|
|
|
+ fdt_addr_t start;
|
|
|
+ fdt_addr_t end;
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * Compute the size of a resource.
|
|
|
+ *
|
|
|
+ * @param res the resource to operate on
|
|
|
+ * @return the size of the resource
|
|
|
+ */
|
|
|
+static inline fdt_size_t fdt_resource_size(const struct fdt_resource *res)
|
|
|
+{
|
|
|
+ return res->end - res->start + 1;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* Compat types that we know about and for which we might have drivers.
|
|
|
* Each is named COMPAT_<dir>_<filename> where <dir> is the directory
|
|
@@ -597,4 +618,35 @@ struct fmap_entry {
|
|
|
*/
|
|
|
int fdtdec_read_fmap_entry(const void *blob, int node, const char *name,
|
|
|
struct fmap_entry *entry);
|
|
|
+
|
|
|
+/**
|
|
|
+ * Obtain an indexed resource from a device property.
|
|
|
+ *
|
|
|
+ * @param fdt FDT blob
|
|
|
+ * @param node node to examine
|
|
|
+ * @param property name of the property to parse
|
|
|
+ * @param index index of the resource to retrieve
|
|
|
+ * @param res returns the resource
|
|
|
+ * @return 0 if ok, negative on error
|
|
|
+ */
|
|
|
+int fdt_get_resource(const void *fdt, int node, const char *property,
|
|
|
+ unsigned int index, struct fdt_resource *res);
|
|
|
+
|
|
|
+/**
|
|
|
+ * Obtain a named resource from a device property.
|
|
|
+ *
|
|
|
+ * Look up the index of the name in a list of strings and return the resource
|
|
|
+ * at that index.
|
|
|
+ *
|
|
|
+ * @param fdt FDT blob
|
|
|
+ * @param node node to examine
|
|
|
+ * @param property name of the property to parse
|
|
|
+ * @param prop_names name of the property containing the list of names
|
|
|
+ * @param name the name of the entry to look up
|
|
|
+ * @param res returns the resource
|
|
|
+ */
|
|
|
+int fdt_get_named_resource(const void *fdt, int node, const char *property,
|
|
|
+ const char *prop_names, const char *name,
|
|
|
+ struct fdt_resource *res);
|
|
|
+
|
|
|
#endif
|