|
@@ -567,6 +567,29 @@ bool of_device_is_available(const struct device_node *device)
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(of_device_is_available);
|
|
EXPORT_SYMBOL(of_device_is_available);
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * of_device_is_big_endian - check if a device has BE registers
|
|
|
|
+ *
|
|
|
|
+ * @device: Node to check for endianness
|
|
|
|
+ *
|
|
|
|
+ * Returns true if the device has a "big-endian" property, or if the kernel
|
|
|
|
+ * was compiled for BE *and* the device has a "native-endian" property.
|
|
|
|
+ * Returns false otherwise.
|
|
|
|
+ *
|
|
|
|
+ * Callers would nominally use ioread32be/iowrite32be if
|
|
|
|
+ * of_device_is_big_endian() == true, or readl/writel otherwise.
|
|
|
|
+ */
|
|
|
|
+bool of_device_is_big_endian(const struct device_node *device)
|
|
|
|
+{
|
|
|
|
+ if (of_property_read_bool(device, "big-endian"))
|
|
|
|
+ return true;
|
|
|
|
+ if (IS_ENABLED(CONFIG_CPU_BIG_ENDIAN) &&
|
|
|
|
+ of_property_read_bool(device, "native-endian"))
|
|
|
|
+ return true;
|
|
|
|
+ return false;
|
|
|
|
+}
|
|
|
|
+EXPORT_SYMBOL(of_device_is_big_endian);
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* of_get_parent - Get a node's parent if any
|
|
* of_get_parent - Get a node's parent if any
|
|
* @node: Node to get parent
|
|
* @node: Node to get parent
|