summaryrefslogtreecommitdiffstats
path: root/drivers/of
diff options
context:
space:
mode:
authorShawn Lin <shawn.lin@rock-chips.com>2016-11-14 15:21:14 -0600
committerBjorn Helgaas <bhelgaas@google.com>2016-11-14 15:21:14 -0600
commit9a1dc3891255afd836f355b117fd6b975d0b1eb2 (patch)
treee32a27ec04397d4d767342be5ad721cfb57fb91e /drivers/of
parent2fa39159b6a9931d6fd82ecbe65357e0ad77e1a4 (diff)
downloadlinux-9a1dc3891255afd836f355b117fd6b975d0b1eb2.tar.gz
linux-9a1dc3891255afd836f355b117fd6b975d0b1eb2.tar.bz2
linux-9a1dc3891255afd836f355b117fd6b975d0b1eb2.zip
of/pci: Add of_pci_get_max_link_speed() to parse max-link-speed from DT
This new helper function could be used by host drivers to get the limitaion of max link speed provided by DT. If the property isn't assigned or is invalid, it will return -EINVAL to the caller. Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Rob Herring <robh@kernel.org>
Diffstat (limited to 'drivers/of')
-rw-r--r--drivers/of/of_pci.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c
index b58be12ab277..0ee42c3e66a1 100644
--- a/drivers/of/of_pci.c
+++ b/drivers/of/of_pci.c
@@ -120,6 +120,27 @@ int of_get_pci_domain_nr(struct device_node *node)
EXPORT_SYMBOL_GPL(of_get_pci_domain_nr);
/**
+ * This function will try to find the limitation of link speed by finding
+ * a property called "max-link-speed" of the given device node.
+ *
+ * @node: device tree node with the max link speed information
+ *
+ * Returns the associated max link speed from DT, or a negative value if the
+ * required property is not found or is invalid.
+ */
+int of_pci_get_max_link_speed(struct device_node *node)
+{
+ u32 max_link_speed;
+
+ if (of_property_read_u32(node, "max-link-speed", &max_link_speed) ||
+ max_link_speed > 4)
+ return -EINVAL;
+
+ return max_link_speed;
+}
+EXPORT_SYMBOL_GPL(of_pci_get_max_link_speed);
+
+/**
* of_pci_check_probe_only - Setup probe only mode if linux,pci-probe-only
* is present and valid
*/