}
EXPORT_SYMBOL_GPL(devm_pci_pwrctrl_device_set_ready);
+/*
+ * Check whether the pwrctrl device really needs to be created or not. The
+ * pwrctrl device will only be created if the node satisfies below requirements:
+ *
+ * 1. Presence of compatible property with "pci" prefix to match against the
+ * pwrctrl driver (AND)
+ * 2. At least one of the power supplies defined in the devicetree node of the
+ * device (OR) in the remote endpoint parent node to indicate pwrctrl
+ * requirement.
+ */
+static bool pci_pwrctrl_is_required(struct device_node *np)
+{
+ struct device_node *endpoint;
+ const char *compat;
+ int ret;
+
+ ret = of_property_read_string(np, "compatible", &compat);
+ if (ret < 0)
+ return false;
+
+ if (!strstarts(compat, "pci"))
+ return false;
+
+ if (of_pci_supply_present(np))
+ return true;
+
+ if (of_graph_is_present(np)) {
+ for_each_endpoint_of_node(np, endpoint) {
+ struct device_node *remote __free(device_node) =
+ of_graph_get_remote_port_parent(endpoint);
+ if (remote) {
+ if (of_pci_supply_present(remote)) {
+ of_node_put(endpoint);
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+}
+
static int __pci_pwrctrl_power_off_device(struct device *dev)
{
struct pci_pwrctrl *pwrctrl = dev_get_drvdata(dev);
}
EXPORT_SYMBOL_GPL(pci_pwrctrl_power_on_devices);
-/*
- * Check whether the pwrctrl device really needs to be created or not. The
- * pwrctrl device will only be created if the node satisfies below requirements:
- *
- * 1. Presence of compatible property with "pci" prefix to match against the
- * pwrctrl driver (AND)
- * 2. At least one of the power supplies defined in the devicetree node of the
- * device (OR) in the remote endpoint parent node to indicate pwrctrl
- * requirement.
- */
-static bool pci_pwrctrl_is_required(struct device_node *np)
-{
- struct device_node *endpoint;
- const char *compat;
- int ret;
-
- ret = of_property_read_string(np, "compatible", &compat);
- if (ret < 0)
- return false;
-
- if (!strstarts(compat, "pci"))
- return false;
-
- if (of_pci_supply_present(np))
- return true;
-
- if (of_graph_is_present(np)) {
- for_each_endpoint_of_node(np, endpoint) {
- struct device_node *remote __free(device_node) =
- of_graph_get_remote_port_parent(endpoint);
- if (remote) {
- if (of_pci_supply_present(remote)) {
- of_node_put(endpoint);
- return true;
- }
- }
- }
- }
-
- return false;
-}
-
static int pci_pwrctrl_create_device(struct device_node *np,
struct device *parent)
{