From patchwork Tue Oct 11 04:26:26 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shawn Lin X-Patchwork-Id: 9370099 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 4894D60865 for ; Tue, 11 Oct 2016 04:20:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 39C9D28D37 for ; Tue, 11 Oct 2016 04:20:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 25CCC29174; Tue, 11 Oct 2016 04:20:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id C514028D62 for ; Tue, 11 Oct 2016 04:20:53 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1btoYe-000563-HP; Tue, 11 Oct 2016 04:20:52 +0000 Received: from lucky1.263xmail.com ([211.157.147.133]) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1btoYb-0004vK-EZ for linux-rockchip@lists.infradead.org; Tue, 11 Oct 2016 04:20:50 +0000 Received: from shawn.lin?rock-chips.com (unknown [192.168.167.175]) by lucky1.263xmail.com (Postfix) with ESMTP id 1034D53FBC; Tue, 11 Oct 2016 12:20:24 +0800 (CST) X-263anti-spam: KSV:0; X-MAIL-GRAY: 1 X-MAIL-DELIVERY: 0 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-ADDR-CHECKED4: 1 Received: from localhost.localdomain (localhost [127.0.0.1]) by smtp.263.net (Postfix) with ESMTP id E3E6B37E; Tue, 11 Oct 2016 12:20:22 +0800 (CST) X-RL-SENDER: shawn.lin@rock-chips.com X-FST-TO: bhelgaas@google.com X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: shawn.lin@rock-chips.com X-UNIQUE-TAG: <1bcea3de36f4a73caab957d6c65b4dd5> X-ATTACHMENT-NUM: 0 X-SENDER: lintao@rock-chips.com X-DNS-TYPE: 0 Received: from unknown (unknown [58.22.7.114]) by smtp.263.net (Postfix) whith SMTP id 27797GRXCO0; Tue, 11 Oct 2016 12:20:24 +0800 (CST) From: Shawn Lin To: Bjorn Helgaas , Rob Herring Subject: [PATCH v6 2/3] of/pci: Add helper function to parse max-link-speed from dt Date: Tue, 11 Oct 2016 12:26:26 +0800 Message-Id: <1476159987-31372-2-git-send-email-shawn.lin@rock-chips.com> X-Mailer: git-send-email 1.8.0 In-Reply-To: <1476159987-31372-1-git-send-email-shawn.lin@rock-chips.com> References: <1476159987-31372-1-git-send-email-shawn.lin@rock-chips.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20161010_212049_921262_C8567B84 X-CRM114-Status: UNSURE ( 8.70 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Wenrui Li , linux-pci@vger.kernel.org, Shawn Lin , Brian Norris , linux-rockchip@lists.infradead.org, Rajat Jain MIME-Version: 1.0 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+patchwork-linux-rockchip=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP 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 --- Changes in v6: None Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: None drivers/of/of_pci.c | 27 +++++++++++++++++++++++++++ include/linux/of_pci.h | 7 +++++++ 2 files changed, 34 insertions(+) diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c index 589b30c..91fd465 100644 --- a/drivers/of/of_pci.c +++ b/drivers/of/of_pci.c @@ -120,6 +120,33 @@ 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_get_pci_max_link_speed(struct device_node *node) +{ + const __be32 *value; + int len; + u16 max_link_speed; + + value = of_get_property(node, "max-link-speed", &len); + if (!value || len < sizeof(*value)) + return -EINVAL; + + max_link_speed = (u16)be32_to_cpup(value); + if (max_link_speed > 4) + return -EINVAL; + + return max_link_speed; +} +EXPORT_SYMBOL_GPL(of_get_pci_max_link_speed); + +/** * of_pci_check_probe_only - Setup probe only mode if linux,pci-probe-only * is present and valid */ diff --git a/include/linux/of_pci.h b/include/linux/of_pci.h index b969e94..a8946d7 100644 --- a/include/linux/of_pci.h +++ b/include/linux/of_pci.h @@ -16,6 +16,7 @@ int of_pci_get_devfn(struct device_node *np); int of_irq_parse_and_map_pci(const struct pci_dev *dev, u8 slot, u8 pin); int of_pci_parse_bus_range(struct device_node *node, struct resource *res); int of_get_pci_domain_nr(struct device_node *node); +int of_get_pci_max_link_speed(struct device_node *node); void of_pci_check_probe_only(void); #else static inline int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *out_irq) @@ -52,6 +53,12 @@ of_get_pci_domain_nr(struct device_node *node) return -1; } +static inline int +of_get_pci_max_link_speed(struct device_node *node) +{ + return -EINVAL; +} + static inline void of_pci_check_probe_only(void) { } #endif