From patchwork Fri Nov 10 21:58:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 836938 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-pci-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Ct88teOB"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yYYpG5xBsz9t2r for ; Sat, 11 Nov 2017 08:59:02 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751324AbdKJV7B (ORCPT ); Fri, 10 Nov 2017 16:59:01 -0500 Received: from mail-wr0-f194.google.com ([209.85.128.194]:56324 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751186AbdKJV7A (ORCPT ); Fri, 10 Nov 2017 16:59:00 -0500 Received: by mail-wr0-f194.google.com with SMTP id q66so9701993wrb.13; Fri, 10 Nov 2017 13:58:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+zCmnIKoiT/rlNBHmthA7UggQMf6U3HiUtv49rJxkOo=; b=Ct88teOB8ZWHf5s0hAcaKACcTpwJGkv2v7j9n/Qtp6JXIql3xieZ7L4BAk2OJBe/0O 77PAYJvTR+MrHXhY3E/H/lIrkWkK3c+pUjI3LhFyeybGr0zx0kzX5VIsRsI0iylkWItH GPzjb4wTkqMw5fQnYGSyMdyd1WDm35mD+JDkC/T6FUp/oA1UwwG/mA7/YZYkqs+5Yn4h bPN2NWid6Uvuc13e7fX6jMndlHMCakKxDch6sXQ3q8pncS0wSd8GDQ3S+GwEYLACEmLK lkgNvFw69S3N2NhDV2XGRIh3977l1gDAs+CsPsn9sakTc0JmYF4UMlyDOoY9I8oDDvjK GuPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=+zCmnIKoiT/rlNBHmthA7UggQMf6U3HiUtv49rJxkOo=; b=RfBARu7oikiEDS9HYo/w1wAgiC00GDvsMDx4PMessGjMmCypNPpt6PXKE9VH/mrdaK uSmnn4cafhbMdl9lla1tNQ50g6Mdyll4LrQuPDUCZyBrThxiO3TkKp6JnbgMQo8tdNzr Y9CACqgsPbneQXLVDqEZxaFRvfRJRm13km5QDr9gJiR6yctVziCujRIcKVwRD5aCsdOd aLwsy3SJDrDps0T/2biuqymx7e4ZNTy2WIIdjzL2WlDq+rcYO17h9E1fJdCJHTHHbL2g GW7SYcnJ3B9tly0hWoMEeABRizZ+hvJ+zR9L6QqeVvyel+UheKA5NhRJXsFdtKcSDteO qMVw== X-Gm-Message-State: AJaThX6GlszQ7dtw0Gi9iJwPwz0fH0hLB4uGLSfimaZ6jHx5IYL7anTN Natg/wLXvQL7Wave4qeIIl0q4cc9 X-Google-Smtp-Source: AGs4zMazTAMz1PcOW3wkwDSfGDuz2V8JuYs8SY6ol47BRtMQn6HaFkLqv7G6t75P4qP80rtr4FWnZw== X-Received: by 10.223.135.132 with SMTP id b4mr1503983wrb.248.1510351138639; Fri, 10 Nov 2017 13:58:58 -0800 (PST) Received: from kurokawa.lan (ip-86-49-107-50.net.upcbroadband.cz. [86.49.107.50]) by smtp.gmail.com with ESMTPSA id c3sm4560784wrd.44.2017.11.10.13.58.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Nov 2017 13:58:57 -0800 (PST) From: Marek Vasut X-Google-Original-From: Marek Vasut To: linux-pci@vger.kernel.org Cc: Marek Vasut , Geert Uytterhoeven , Phil Edworthy , Simon Horman , Wolfram Sang , linux-renesas-soc@vger.kernel.org Subject: [PATCH V2 1/5] PCI: rcar: Poll more often in rcar_pcie_wait_for_dl() Date: Fri, 10 Nov 2017 22:58:39 +0100 Message-Id: <20171110215843.432-2-marek.vasut+renesas@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171110215843.432-1-marek.vasut+renesas@gmail.com> References: <20171110215843.432-1-marek.vasut+renesas@gmail.com> Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org The data link active signal usually takes ~20 uSec to be asserted, poll the bit more often to avoid useless delays in this function. Signed-off-by: Marek Vasut Cc: Geert Uytterhoeven Cc: Phil Edworthy Cc: Simon Horman Cc: Wolfram Sang Cc: linux-renesas-soc@vger.kernel.org Acked-by: Simon Horman --- V2: New patch --- drivers/pci/host/pcie-rcar.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c index e00f865952d5..351e1276b90a 100644 --- a/drivers/pci/host/pcie-rcar.c +++ b/drivers/pci/host/pcie-rcar.c @@ -531,13 +531,13 @@ static void phy_write_reg(struct rcar_pcie *pcie, static int rcar_pcie_wait_for_dl(struct rcar_pcie *pcie) { - unsigned int timeout = 10; + unsigned int timeout = 10000; while (timeout--) { if ((rcar_pci_read_reg(pcie, PCIETSTR) & DATA_LINK_ACTIVE)) return 0; - msleep(5); + udelay(5); } return -ETIMEDOUT; From patchwork Fri Nov 10 21:58:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 836939 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-pci-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="FhL14YIK"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yYYpJ69Vsz9t2r for ; Sat, 11 Nov 2017 08:59:04 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753323AbdKJV7C (ORCPT ); Fri, 10 Nov 2017 16:59:02 -0500 Received: from mail-wr0-f196.google.com ([209.85.128.196]:56025 "EHLO mail-wr0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750932AbdKJV7B (ORCPT ); Fri, 10 Nov 2017 16:59:01 -0500 Received: by mail-wr0-f196.google.com with SMTP id l8so9698002wre.12; Fri, 10 Nov 2017 13:59:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=5jcMxWAQ502Cq+0SEFTryZJUU+ck9qr0qEK5Z6t9FDU=; b=FhL14YIKUDV6n4o8gC9bksdGEpT95tcMGklNqz03aZNg09zNkl6nb2HHXEJFFCeY3e JyLGFGiW7Ykjviw+ogSlh4aUxHPy8k8+ZXU9Ve4ETkJbzMg8JefE/zy7Hszvm+rprYt1 jDaD1+RoEJzUNdbW3kYNaga0BG2OJ1ARKKxQkkOwmI4y2XUp0JhhCQyB7oKI+pAR7DP1 g/FnsIdtlEgPhFx7aKmTKWf0G7I/EHBM/GxbVT8mYYGAjrdbGZfKLQz9cyMo51tqQeIi vjQmq5vaiPkbQtJhIZEORaClriReAwFc0+1BqPeLwig49pxNIsli1Tkckj9Baez/BiGM LHvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=5jcMxWAQ502Cq+0SEFTryZJUU+ck9qr0qEK5Z6t9FDU=; b=kHpkz8R9yPiyUdqrraNwmSJqPoe646lu/sFUWEGAR7n0PcOlTBnuCpTk/fi2KIWt+O 5HSmebViS90iyl0yRK3+gH4aH5VDxfcw8kp/ElYBJN5yv/62qqKCB+ML+TzpMql0yxpG Ib9fqK68RLsbycxM88EIkwiafEWufLsgxOKHpxpAnb6MqRTIbQmFK1J0IfA07O9Du4/Z WoBViwXrGX49hB6YzMG0ciraK5z84DxRL8KWrq4ngRghQsPyP44Bu1F/HbrX5/gaeTq6 lkbbFR5BLEhfWVwqrORqo6EYlUNKYKZdRJg5JFGeJyQid6yVZdNum2oaEUmj3tcrjxGr Kewg== X-Gm-Message-State: AJaThX4NADn/vkr9WV670DBA9CtP+XisqrHCupQBRI7EARD0QNpam31E eF6mFNC1ZywM2/nF3jDMaNzSgO6+ X-Google-Smtp-Source: AGs4zMaThXKl3nqlhvNeB08s1taocWQIZCUKakfjORvPaeSC2QQjbQLYyj3Qa9SwtqwxX+W1SmK2uw== X-Received: by 10.223.146.167 with SMTP id 36mr1386231wrn.155.1510351139747; Fri, 10 Nov 2017 13:58:59 -0800 (PST) Received: from kurokawa.lan (ip-86-49-107-50.net.upcbroadband.cz. [86.49.107.50]) by smtp.gmail.com with ESMTPSA id c3sm4560784wrd.44.2017.11.10.13.58.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Nov 2017 13:58:59 -0800 (PST) From: Marek Vasut X-Google-Original-From: Marek Vasut To: linux-pci@vger.kernel.org Cc: Marek Vasut , Geert Uytterhoeven , Phil Edworthy , Simon Horman , Wolfram Sang , linux-renesas-soc@vger.kernel.org Subject: [PATCH V2 2/5] PCI: rcar: Clean up the macros Date: Fri, 10 Nov 2017 22:58:40 +0100 Message-Id: <20171110215843.432-3-marek.vasut+renesas@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171110215843.432-1-marek.vasut+renesas@gmail.com> References: <20171110215843.432-1-marek.vasut+renesas@gmail.com> Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Just clean up the macros in the RCar PCI driver, no functional change. Signed-off-by: Marek Vasut Cc: Geert Uytterhoeven Cc: Phil Edworthy Cc: Simon Horman Cc: Wolfram Sang Cc: linux-renesas-soc@vger.kernel.org Acked-by: Simon Horman --- V2: New patch --- drivers/pci/host/pcie-rcar.c | 52 ++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c index 351e1276b90a..811e8194ef74 100644 --- a/drivers/pci/host/pcie-rcar.c +++ b/drivers/pci/host/pcie-rcar.c @@ -33,9 +33,9 @@ #define PCIECAR 0x000010 #define PCIECCTLR 0x000018 -#define CONFIG_SEND_ENABLE (1 << 31) +#define CONFIG_SEND_ENABLE BIT(31) #define TYPE0 (0 << 8) -#define TYPE1 (1 << 8) +#define TYPE1 BIT(8) #define PCIECDR 0x000020 #define PCIEMSR 0x000028 #define PCIEINTXR 0x000400 @@ -47,7 +47,7 @@ #define PCIETSTR 0x02004 #define DATA_LINK_ACTIVE 1 #define PCIEERRFR 0x02020 -#define UNSUPPORTED_REQUEST (1 << 4) +#define UNSUPPORTED_REQUEST BIT(4) #define PCIEMSIFR 0x02044 #define PCIEMSIALR 0x02048 #define MSIFE 1 @@ -60,17 +60,17 @@ /* local address reg & mask */ #define PCIELAR(x) (0x02200 + ((x) * 0x20)) #define PCIELAMR(x) (0x02208 + ((x) * 0x20)) -#define LAM_PREFETCH (1 << 3) -#define LAM_64BIT (1 << 2) -#define LAR_ENABLE (1 << 1) +#define LAM_PREFETCH BIT(3) +#define LAM_64BIT BIT(2) +#define LAR_ENABLE BIT(1) /* PCIe address reg & mask */ #define PCIEPALR(x) (0x03400 + ((x) * 0x20)) #define PCIEPAUR(x) (0x03404 + ((x) * 0x20)) #define PCIEPAMR(x) (0x03408 + ((x) * 0x20)) #define PCIEPTCTLR(x) (0x0340c + ((x) * 0x20)) -#define PAR_ENABLE (1 << 31) -#define IO_SPACE (1 << 8) +#define PAR_ENABLE BIT(31) +#define IO_SPACE BIT(8) /* Configuration */ #define PCICONF(x) (0x010000 + ((x) * 0x4)) @@ -82,23 +82,23 @@ #define IDSETR1 0x011004 #define TLCTLR 0x011048 #define MACSR 0x011054 -#define SPCHGFIN (1 << 4) -#define SPCHGFAIL (1 << 6) -#define SPCHGSUC (1 << 7) +#define SPCHGFIN BIT(4) +#define SPCHGFAIL BIT(6) +#define SPCHGSUC BIT(7) #define LINK_SPEED (0xf << 16) #define LINK_SPEED_2_5GTS (1 << 16) #define LINK_SPEED_5_0GTS (2 << 16) #define MACCTLR 0x011058 -#define SPEED_CHANGE (1 << 24) -#define SCRAMBLE_DISABLE (1 << 27) +#define SPEED_CHANGE BIT(24) +#define SCRAMBLE_DISABLE BIT(27) #define MACS2R 0x011078 #define MACCGSPSETR 0x011084 -#define SPCNGRSN (1 << 31) +#define SPCNGRSN BIT(31) /* R-Car H1 PHY */ #define H1_PCIEPHYADRR 0x04000c -#define WRITE_CMD (1 << 16) -#define PHY_ACK (1 << 24) +#define WRITE_CMD BIT(16) +#define PHY_ACK BIT(24) #define RATE_POS 12 #define LANE_POS 8 #define ADR_POS 0 @@ -110,19 +110,19 @@ #define GEN2_PCIEPHYDATA 0x784 #define GEN2_PCIEPHYCTRL 0x78c -#define INT_PCI_MSI_NR 32 +#define INT_PCI_MSI_NR 32 -#define RCONF(x) (PCICONF(0)+(x)) -#define RPMCAP(x) (PMCAP(0)+(x)) -#define REXPCAP(x) (EXPCAP(0)+(x)) -#define RVCCAP(x) (VCCAP(0)+(x)) +#define RCONF(x) (PCICONF(0) + (x)) +#define RPMCAP(x) (PMCAP(0) + (x)) +#define REXPCAP(x) (EXPCAP(0) + (x)) +#define RVCCAP(x) (VCCAP(0) + (x)) -#define PCIE_CONF_BUS(b) (((b) & 0xff) << 24) -#define PCIE_CONF_DEV(d) (((d) & 0x1f) << 19) -#define PCIE_CONF_FUNC(f) (((f) & 0x7) << 16) +#define PCIE_CONF_BUS(b) (((b) & 0xff) << 24) +#define PCIE_CONF_DEV(d) (((d) & 0x1f) << 19) +#define PCIE_CONF_FUNC(f) (((f) & 0x7) << 16) -#define RCAR_PCI_MAX_RESOURCES 4 -#define MAX_NR_INBOUND_MAPS 6 +#define RCAR_PCI_MAX_RESOURCES 4 +#define MAX_NR_INBOUND_MAPS 6 struct rcar_msi { DECLARE_BITMAP(used, INT_PCI_MSI_NR); From patchwork Fri Nov 10 21:58:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 836940 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-pci-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="J/8m/USq"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yYYpK68ccz9t2r for ; Sat, 11 Nov 2017 08:59:05 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751206AbdKJV7D (ORCPT ); Fri, 10 Nov 2017 16:59:03 -0500 Received: from mail-wm0-f66.google.com ([74.125.82.66]:32787 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751186AbdKJV7C (ORCPT ); Fri, 10 Nov 2017 16:59:02 -0500 Received: by mail-wm0-f66.google.com with SMTP id r68so7277934wmr.0; Fri, 10 Nov 2017 13:59:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=FAwD9irxVM1nnqNDpU+wde3i4owX2fPmdQXUlQsDTWA=; b=J/8m/USqtderkrWEY5JRiEiZU7K34wQwsaRj1Kur+6Uw5tHmyf8GnG7MzK07MXXupR jxhNe4yMbFtn/lVFjVsUk0gUGc711H8ruZpyEqt3o0q1oG8D9iNPgFBZ2XnEr21oWBHO H375gRvfMXcJ2V6A6L/CU5lN+QI8Sc/YyvfSXzTD0Nhq+uOfXkxgqdmAMJjaIA7VAZww naFhOaPwj04fE6T1Pwal3C9f8Jqg1tuwXwhteXbbDza9A8sW4A6tgGFNnSdtzvFXOkEB 63NTiWAq4lL+eJgygkEeLnLDGulSNEu2fRHa0J/66hJDsC9vQ5o9lG6T3FbmJwQ9S+/D c/CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=FAwD9irxVM1nnqNDpU+wde3i4owX2fPmdQXUlQsDTWA=; b=gH0ax8W1DJvxvxcOs4ePCOFbck0Lo9wHpQ2kBOAL4JVFLtL1hQOKJBUM80uxCZqCTu Epb21VeOh7ZcTE5PVaoFwUaydeKjZRAdS+atM/YWLMZN3oe+7YyZJgd2Qdgp9jG7Y6dg zuxqxRMxKA+JxhrOJRXia26+NM3uuI5Svh/Zl2w3R4W6OLsGiY6aV0j0jx2JQAuMaC/M BEg0Ljx7kfuZbTtuoyFOLa3Q9o+PSsUmIvBd9hIlDCN233Ijjgz1oIzyzvifG2U1VmTC g9g/1lcKR6nhaKP/PB5/FL/HoC9O8B453GxQUjso8todPuP8fKwHeINELJ39Js8E7oSE DAIw== X-Gm-Message-State: AJaThX788wA2exJcKWTxfVHIeBwl3++qFCHMYH7NiH7OpnR5VCbxrmQd iUMHtBTP1/Opne4nngp5KS1k+2Xd X-Google-Smtp-Source: AGs4zMZlnfv5FDW4VgDcM5ziLTMpbcgCBZVYOdSSovfa7ha4ctNWEePtqFocYGjtYdXq9v8+oz5vHw== X-Received: by 10.28.222.70 with SMTP id v67mr1128253wmg.99.1510351140870; Fri, 10 Nov 2017 13:59:00 -0800 (PST) Received: from kurokawa.lan (ip-86-49-107-50.net.upcbroadband.cz. [86.49.107.50]) by smtp.gmail.com with ESMTPSA id c3sm4560784wrd.44.2017.11.10.13.58.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Nov 2017 13:59:00 -0800 (PST) From: Marek Vasut X-Google-Original-From: Marek Vasut To: linux-pci@vger.kernel.org Cc: Kazufumi Ikeda , Gaku Inami , Marek Vasut , Geert Uytterhoeven , Phil Edworthy , Simon Horman , Wolfram Sang , linux-renesas-soc@vger.kernel.org Subject: [PATCH V2 3/5] PCI: rcar: Add the initialization of PCIe link in resume_noirq Date: Fri, 10 Nov 2017 22:58:41 +0100 Message-Id: <20171110215843.432-4-marek.vasut+renesas@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171110215843.432-1-marek.vasut+renesas@gmail.com> References: <20171110215843.432-1-marek.vasut+renesas@gmail.com> Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org From: Kazufumi Ikeda Reestablish the PCIe link very early in the resume process in case it went down to prevent PCI accesses from hanging the bus. Such accesses can happen early in the PCI resume process, in the resume_noirq, thus the link must be reestablished in the resume_noirq callback of the driver. Signed-off-by: Kazufumi Ikeda Signed-off-by: Gaku Inami Signed-off-by: Marek Vasut Cc: Geert Uytterhoeven Cc: Phil Edworthy Cc: Simon Horman Cc: Wolfram Sang Cc: linux-renesas-soc@vger.kernel.org Acked-by: Simon Horman --- V2: - Use BIT() macro for (1 << n) - Since polling in rcar_pcie_wait_for_dl() uses udelay(), do not add extra changes to this function anymore - Make resume_noirq return early and clean up parenthesis therein --- drivers/pci/host/pcie-rcar.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c index 811e8194ef74..ab61829db389 100644 --- a/drivers/pci/host/pcie-rcar.c +++ b/drivers/pci/host/pcie-rcar.c @@ -43,6 +43,7 @@ /* Transfer control */ #define PCIETCTLR 0x02000 +#define DL_DOWN BIT(3) #define CFINIT 1 #define PCIETSTR 0x02004 #define DATA_LINK_ACTIVE 1 @@ -1107,6 +1108,7 @@ static int rcar_pcie_probe(struct platform_device *pdev) pcie = pci_host_bridge_priv(bridge); pcie->dev = dev; + platform_set_drvdata(pdev, pcie); INIT_LIST_HEAD(&pcie->resources); @@ -1167,10 +1169,28 @@ static int rcar_pcie_probe(struct platform_device *pdev) return err; } +static int rcar_pcie_resume_noirq(struct device *dev) +{ + struct rcar_pcie *pcie = dev_get_drvdata(dev); + + if (rcar_pci_read_reg(pcie, PMSR) && + !(rcar_pci_read_reg(pcie, PCIETCTLR) & DL_DOWN)) + return 0; + + /* Re-establish the PCIe link */ + rcar_pci_write_reg(pcie, CFINIT, PCIETCTLR); + return rcar_pcie_wait_for_dl(pcie); +} + +static const struct dev_pm_ops rcar_pcie_pm_ops = { + .resume_noirq = rcar_pcie_resume_noirq, +}; + static struct platform_driver rcar_pcie_driver = { .driver = { .name = "rcar-pcie", .of_match_table = rcar_pcie_of_match, + .pm = &rcar_pcie_pm_ops, .suppress_bind_attrs = true, }, .probe = rcar_pcie_probe, From patchwork Fri Nov 10 21:58:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 836941 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-pci-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="K/MvvFLa"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yYYpM3gYzz9t2r for ; Sat, 11 Nov 2017 08:59:07 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751339AbdKJV7F (ORCPT ); Fri, 10 Nov 2017 16:59:05 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:37815 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750932AbdKJV7D (ORCPT ); Fri, 10 Nov 2017 16:59:03 -0500 Received: by mail-wm0-f65.google.com with SMTP id b14so5260908wme.2; Fri, 10 Nov 2017 13:59:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=veqGqBCOjFuTBaWkmv1ir08Suc4Q5a5QDIVkfQ5EwBY=; b=K/MvvFLa3zOLv1180zs7US2zccZcZeTYIXGaIgdA+adZey3TKVeYrzJGHJcgWSR84m eTL91lI5KuBqwzd57Ap9Sw5K1ZU4FlGp85C5nwSgOqO/DjZ2sZifEBBk3YweSr6cMmZP 5ptBXuhUU+BCtTrojR8eVkq2+VglHESlsoeFJxotd8jCBZmBFDi5ZcGYiFCPnQx6TVmA QYYl+LrILlldDSLq1efpZYQa9StulaPkLWKPq/wgYODFtLclGqETrc+T96tBeXzPDcEU MsIzm6fv0S4Sbt/faWHHE2ZQqIxCzW5ZRTB/mR3b2sW25EKAqaiDfVnvINvqBHseC9sK xHyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=veqGqBCOjFuTBaWkmv1ir08Suc4Q5a5QDIVkfQ5EwBY=; b=fwgrqVdvGI8jEM4eDjCrxfGQGP6mznhN48HeXrMjWiFZu1J7Wmk8SIu7ojLSX5C38R civxYuCjvD4Juv2oSOMpJyluKJpGlO3ynvATdLKhQ/bcygMM7FQioq0iqkN0UAqUNV7C +9vl9VI5/N8M8sAoQXcomURTovH7Rq+UetswQsDDI/zLvDzI1KiX94Y3JJMxfdpKX83u Swx31jTmHYrea+10S2YAxh0bmoOgLrsnmM79WftKySAA7k/N4ybkHNn54dHmICXkYeG2 gmO3UmH39SQ/tj5ld4yjrmxtR2n5ScHi3nFyRlD6Iem9MMXbX7reFdp25nFLpAqlTMEv Bj6w== X-Gm-Message-State: AJaThX5hnw4orUOWygs0y2BA1rPt3kCbNQ0sGw7r2Y4wrEjbaU3l6T4h lA+5TcP+uPm74Qpd2WpIhrzDIgn3 X-Google-Smtp-Source: AGs4zMYV8zVx0Ok2iZcWOJ7ezy8x+0thKcdHi2db9Ce4vEfVeLXJbXWzK37K+b1A8CfbMdX86kXlYg== X-Received: by 10.28.232.76 with SMTP id f73mr1228237wmh.45.1510351142078; Fri, 10 Nov 2017 13:59:02 -0800 (PST) Received: from kurokawa.lan (ip-86-49-107-50.net.upcbroadband.cz. [86.49.107.50]) by smtp.gmail.com with ESMTPSA id c3sm4560784wrd.44.2017.11.10.13.59.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Nov 2017 13:59:01 -0800 (PST) From: Marek Vasut X-Google-Original-From: Marek Vasut To: linux-pci@vger.kernel.org Cc: Phil Edworthy , Marek Vasut , Geert Uytterhoeven , Simon Horman , Wolfram Sang , linux-renesas-soc@vger.kernel.org Subject: [PATCH V2 4/5] PCI: rcar: Support runtime PM, link state L1 handling Date: Fri, 10 Nov 2017 22:58:42 +0100 Message-Id: <20171110215843.432-5-marek.vasut+renesas@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171110215843.432-1-marek.vasut+renesas@gmail.com> References: <20171110215843.432-1-marek.vasut+renesas@gmail.com> Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org From: Phil Edworthy Most PCIe host controllers support L0s and L1 power states via ASPM. The R-Car hardware only supports L0s, so when the system suspends and resumes we have to manually handle L1. When the system suspends, cards can put themselves into L1 and send a PM_ENTER_L1 DLLP to the host controller. At this point, we can no longer access the card's config registers. The R-Car host controller will handle taking cards out of L1 as long as the host controller has also been transitioned to L1 link state. Ideally, we would detect the PM_ENTER_L1 DLLP using an interrupt and transition the host to L1 immediately. However, this patch just ensures that we can talk to cards after they have gone into L1. When attempting a config access, it checks to see if the card has gone into L1, and if so, does the same for the host controller. This is based on a patch by Hien Dang Signed-off-by: Phil Edworthy Signed-off-by: Marek Vasut Cc: Geert Uytterhoeven Cc: Phil Edworthy Cc: Simon Horman Cc: Wolfram Sang Cc: linux-renesas-soc@vger.kernel.org Acked-by: Simon Horman --- V2: - Drop extra parenthesis - Use GENMASK() - Fix comment "The HW will handle coming of of L1.", s/of of/out of/ --- drivers/pci/host/pcie-rcar.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c index ab61829db389..068bf9067ec1 100644 --- a/drivers/pci/host/pcie-rcar.c +++ b/drivers/pci/host/pcie-rcar.c @@ -92,6 +92,13 @@ #define MACCTLR 0x011058 #define SPEED_CHANGE BIT(24) #define SCRAMBLE_DISABLE BIT(27) +#define PMSR 0x01105c +#define L1FAEG BIT(31) +#define PM_ENTER_L1RX BIT(23) +#define PMSTATE GENMASK(18, 16) +#define PMSTATE_L1 GENMASK(17, 16) +#define PMCTLR 0x011060 +#define L1_INIT BIT(31) #define MACS2R 0x011078 #define MACCGSPSETR 0x011084 #define SPCNGRSN BIT(31) @@ -191,6 +198,7 @@ static int rcar_pcie_config_access(struct rcar_pcie *pcie, unsigned int devfn, int where, u32 *data) { int dev, func, reg, index; + u32 val; dev = PCI_SLOT(devfn); func = PCI_FUNC(devfn); @@ -232,6 +240,22 @@ static int rcar_pcie_config_access(struct rcar_pcie *pcie, if (pcie->root_bus_nr < 0) return PCIBIOS_DEVICE_NOT_FOUND; + /* + * If we are not in L1 link state and we have received PM_ENTER_L1 DLLP, + * transition to L1 link state. The HW will handle coming out of L1. + */ + val = rcar_pci_read_reg(pcie, PMSR); + if (val & PM_ENTER_L1RX && (val & PMSTATE) != PMSTATE_L1) { + rcar_pci_write_reg(pcie, L1_INIT, PMCTLR); + + /* Wait until we are in L1 */ + while (!(val & L1FAEG)) + val = rcar_pci_read_reg(pcie, PMSR); + + /* Clear flags indicating link has transitioned to L1 */ + rcar_pci_write_reg(pcie, L1FAEG | PM_ENTER_L1RX, PMSR); + } + /* Clear errors */ rcar_pci_write_reg(pcie, rcar_pci_read_reg(pcie, PCIEERRFR), PCIEERRFR); From patchwork Fri Nov 10 21:58:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 836942 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-pci-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="i5nMO06K"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yYYpN2v80z9t38 for ; Sat, 11 Nov 2017 08:59:08 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754100AbdKJV7H (ORCPT ); Fri, 10 Nov 2017 16:59:07 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:39452 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754072AbdKJV7F (ORCPT ); Fri, 10 Nov 2017 16:59:05 -0500 Received: by mail-wm0-f65.google.com with SMTP id b189so5211812wmd.4; Fri, 10 Nov 2017 13:59:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=vTpYKyudzVVybk7RfWT0g9pe5sKSHvya/CTQb2xeqko=; b=i5nMO06KV1b6IwSux/t5ruDTIDOuACx3K5uJW4qWpqyQYGF2n3YXOEjhf0MLO/X081 ajqMgyEPGbZoY05gJCttrGH7M3SD++etYG1LrX6p05bOTGYeG+U8GgKVlebiIzBmAm2L GvzVE5mKvF6N8YG33p9lNJJXetBqsXCU0GIXH8t5zg1dOBTP5wRPl+bp+FwomOdk3nBi nNOBBda+49y6lQAQF90dYPw7B9eMvQA+X4f16GC6+5bVg0Ypto+GmOKs8CeDW6AEQ9Wf Uqmv+d6bv9zj8PvGiW45G/DxJwrfItsD3AciudZ/34BLibr28nSNTvete2aW0lBygEYB /68Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=vTpYKyudzVVybk7RfWT0g9pe5sKSHvya/CTQb2xeqko=; b=KI6S4T+R3iHgmufaUTl7GqacKJcbD0ye75lCmCkkqdL6mZvs9kcL7+sG2p4AwmiB3y kHnedpH++d74nn7Wi/RLIddWJ+QAir7Sg+hi3AQigF0mQvE2At1ks+hCZ4A/WrQjkJsK hfsO5/XveVTtyGi8aFLKoF+K3sy8bejhxlySYoceIXKqsOW1RwF4GFkRBBC2hvHF5WFb gm8Mb+LuaNmGgW1J4exdx24T7xSE03zNO75lzpIs5WUoYhKhw+4BLr20AbuCqtTBx4Jh 5FbTLUmTy0T7Gx6lbA0W3bt3bRTHj4hlOSbPn8sX0d8prtQ/tK5d3cQamuuLVpdASmZ0 +MpQ== X-Gm-Message-State: AJaThX41Nxc0bYL2AZ+p7TTMPecnq1hFfgcuelN1x0uWNr4d5SCWNuoJ DZ2fQ6XeOZrr6urS6XYlByrGqRX4 X-Google-Smtp-Source: AGs4zMa6E5v5Zvh5foXzIK2S15VEz0HnlWlL7Js8zY9gIcheSAd+wdW5uG6kgCVyTm5PCk/KxBzrQA== X-Received: by 10.28.84.89 with SMTP id p25mr1154962wmi.112.1510351143410; Fri, 10 Nov 2017 13:59:03 -0800 (PST) Received: from kurokawa.lan (ip-86-49-107-50.net.upcbroadband.cz. [86.49.107.50]) by smtp.gmail.com with ESMTPSA id c3sm4560784wrd.44.2017.11.10.13.59.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Nov 2017 13:59:02 -0800 (PST) From: Marek Vasut X-Google-Original-From: Marek Vasut To: linux-pci@vger.kernel.org Cc: Kazufumi Ikeda , Gaku Inami , Marek Vasut , Geert Uytterhoeven , Phil Edworthy , Simon Horman , Wolfram Sang , linux-renesas-soc@vger.kernel.org Subject: [PATCH V2 5/5] PCI: rcar: Add the suspend/resume for pcie-rcar driver Date: Fri, 10 Nov 2017 22:58:43 +0100 Message-Id: <20171110215843.432-6-marek.vasut+renesas@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171110215843.432-1-marek.vasut+renesas@gmail.com> References: <20171110215843.432-1-marek.vasut+renesas@gmail.com> Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org From: Kazufumi Ikeda This adds the suspend/resume supports for pcie-rcar. The resume handler reprograms the hardware based on the software state kept in specific device structures. Also it doesn't need to save any registers. Signed-off-by: Kazufumi Ikeda Signed-off-by: Gaku Inami Signed-off-by: Marek Vasut Cc: Geert Uytterhoeven Cc: Phil Edworthy Cc: Simon Horman Cc: Wolfram Sang Cc: linux-renesas-soc@vger.kernel.org Acked-by: Simon Horman --- V2: - Change return type of rcar_pcie_hw_enable() to void - Drop default: case in switch statement in rcar_pcie_hw_enable() - Sort variables in rcar_pcie_resume() --- drivers/pci/host/pcie-rcar.c | 82 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 8 deletions(-) diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c index 068bf9067ec1..f65ad226335d 100644 --- a/drivers/pci/host/pcie-rcar.c +++ b/drivers/pci/host/pcie-rcar.c @@ -471,6 +471,32 @@ static void rcar_pcie_force_speedup(struct rcar_pcie *pcie) (macsr & LINK_SPEED) == LINK_SPEED_5_0GTS ? "5" : "2.5"); } +static void rcar_pcie_hw_enable(struct rcar_pcie *pci) +{ + struct resource_entry *win; + LIST_HEAD(res); + int i = 0; + + /* Try setting 5 GT/s link speed */ + rcar_pcie_force_speedup(pci); + + /* Setup PCI resources */ + resource_list_for_each_entry(win, &pci->resources) { + struct resource *res = win->res; + + if (!res->flags) + continue; + + switch (resource_type(res)) { + case IORESOURCE_IO: + case IORESOURCE_MEM: + rcar_pcie_setup_window(i, pci, res); + i++; + break; + } + } +} + static int rcar_pcie_enable(struct rcar_pcie *pcie) { struct device *dev = pcie->dev; @@ -869,11 +895,25 @@ static const struct irq_domain_ops msi_domain_ops = { .map = rcar_msi_map, }; +static void rcar_pcie_hw_enable_msi(struct rcar_pcie *pcie) +{ + struct rcar_msi *msi = &pcie->msi; + unsigned long base; + + /* setup MSI data target */ + base = virt_to_phys((void *)msi->pages); + + rcar_pci_write_reg(pcie, base | MSIFE, PCIEMSIALR); + rcar_pci_write_reg(pcie, 0, PCIEMSIAUR); + + /* enable all MSI interrupts */ + rcar_pci_write_reg(pcie, 0xffffffff, PCIEMSIIER); +} + static int rcar_pcie_enable_msi(struct rcar_pcie *pcie) { struct device *dev = pcie->dev; struct rcar_msi *msi = &pcie->msi; - unsigned long base; int err, i; mutex_init(&msi->lock); @@ -912,13 +952,7 @@ static int rcar_pcie_enable_msi(struct rcar_pcie *pcie) /* setup MSI data target */ msi->pages = __get_free_pages(GFP_KERNEL, 0); - base = virt_to_phys((void *)msi->pages); - - rcar_pci_write_reg(pcie, base | MSIFE, PCIEMSIALR); - rcar_pci_write_reg(pcie, 0, PCIEMSIAUR); - - /* enable all MSI interrupts */ - rcar_pci_write_reg(pcie, 0xffffffff, PCIEMSIIER); + rcar_pcie_hw_enable_msi(pcie); return 0; @@ -1193,6 +1227,37 @@ static int rcar_pcie_probe(struct platform_device *pdev) return err; } +static int rcar_pcie_resume(struct device *dev) +{ + struct rcar_pcie *pcie = dev_get_drvdata(dev); + int (*hw_init_fn)(struct rcar_pcie *); + unsigned int data; + int err; + + err = rcar_pcie_parse_map_dma_ranges(pcie, dev->of_node); + if (err) + return 0; + + /* Failure to get a link might just be that no cards are inserted */ + hw_init_fn = of_device_get_match_data(dev); + err = hw_init_fn(pcie); + if (err) { + dev_info(dev, "PCIe link down\n"); + return 0; + } + + data = rcar_pci_read_reg(pcie, MACSR); + dev_info(dev, "PCIe x%d: link up\n", (data >> 20) & 0x3f); + + /* Enable MSI */ + if (IS_ENABLED(CONFIG_PCI_MSI)) + rcar_pcie_hw_enable_msi(pcie); + + rcar_pcie_hw_enable(pcie); + + return 0; +} + static int rcar_pcie_resume_noirq(struct device *dev) { struct rcar_pcie *pcie = dev_get_drvdata(dev); @@ -1207,6 +1272,7 @@ static int rcar_pcie_resume_noirq(struct device *dev) } static const struct dev_pm_ops rcar_pcie_pm_ops = { + SET_SYSTEM_SLEEP_PM_OPS(NULL, rcar_pcie_resume) .resume_noirq = rcar_pcie_resume_noirq, };