|
@@ -545,6 +545,38 @@ int of_machine_is_compatible(const char *compat)
|
|
|
}
|
|
|
EXPORT_SYMBOL(of_machine_is_compatible);
|
|
|
|
|
|
+/**
|
|
|
+ * of_machine_get_model_name - Find and read the model name or the compatible
|
|
|
+ * value for the machine.
|
|
|
+ * @model: pointer to null terminated return string, modified only if
|
|
|
+ * return value is 0.
|
|
|
+ *
|
|
|
+ * Returns a string containing either the model name or the compatible value
|
|
|
+ * of the machine if found, else return error.
|
|
|
+ *
|
|
|
+ * Search for a machine model name or the compatible if model name is missing
|
|
|
+ * in a device tree node and retrieve a null terminated string value (pointer
|
|
|
+ * to data, not a copy). Returns 0 on success, -EINVAL if root of the device
|
|
|
+ * tree is not found and other error returned by of_property_read_string on
|
|
|
+ * failure.
|
|
|
+ */
|
|
|
+int of_machine_get_model_name(const char **model)
|
|
|
+{
|
|
|
+ int error;
|
|
|
+
|
|
|
+ if (!of_node_get(of_root))
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ error = of_property_read_string(of_root, "model", model);
|
|
|
+ if (error)
|
|
|
+ error = of_property_read_string_index(of_root, "compatible",
|
|
|
+ 0, model);
|
|
|
+ of_node_put(of_root);
|
|
|
+
|
|
|
+ return error;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(of_machine_get_model_name);
|
|
|
+
|
|
|
/**
|
|
|
* __of_device_is_available - check if a device is available for use
|
|
|
*
|