From patchwork Fri Apr 30 15:21:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Quinlan X-Patchwork-Id: 12233659 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 177EDC43461 for ; Fri, 30 Apr 2021 15:22:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E9EF4615FF for ; Fri, 30 Apr 2021 15:22:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231154AbhD3PWz (ORCPT ); Fri, 30 Apr 2021 11:22:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59142 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231145AbhD3PWz (ORCPT ); Fri, 30 Apr 2021 11:22:55 -0400 Received: from mail-pl1-x62c.google.com (mail-pl1-x62c.google.com [IPv6:2607:f8b0:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4568CC06174A; Fri, 30 Apr 2021 08:22:07 -0700 (PDT) Received: by mail-pl1-x62c.google.com with SMTP id e2so32459301plh.8; Fri, 30 Apr 2021 08:22:07 -0700 (PDT) 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=pTK2+tXKXlDNh7BndZWyfsnbTIToWlHunFXdpF9eDN4=; b=ooM+TPJPR5n+5ONlVr4BI4DoiNj41EIJgTRlDlafBvjIPqB1VUYcaC3DELnCdE2g0y HjqtCn6/48IMprlDdb86taWe4Qw9uw0xgFJtVqMSCQNgwKKcnw7RFD3WiOeYd5jwXPpd 3H0cMz7SS3ybe9MP1xRanIOsks+uUBi22cRJIVgtLfFJgkC023YRwNHAkyvxR+SRk/f7 pjWjb+l5uejmgYoLAoXbzInexTpuGwubbX5bmpIrSI1G1rjdPfTerj4vChXBarbF3240 O9WpAUQRlmUw2KK1EiKjIs7fXdICLPPmH3fn9yoXVZ3ETj/ZthK+bwJGE+NG/nX1R5CR O82Q== 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=pTK2+tXKXlDNh7BndZWyfsnbTIToWlHunFXdpF9eDN4=; b=j0f97/odWINZTS1l8yXUiEDfNsnbXbAAiLZrzy9hiwlS32S35JgYt7yHfcGal3Im6E 4yZ/fkD7fXEY9Ajf9L3dwHyxGqNRGj/pMy18dmhy+YAe4j4Eg2ohdjUG9tYcWUrqCJo0 2M3q8WzgPEMcsaq+jDlRTQCKGTyvykNpEzj/Bg7z8QFPWdG/7OAPCZPqmrsH17ZzQ45Q Ew6IDTGiSex65/zC8a4TDugPRXHtegYaf/ozngfy8qbhiz096DqCxmhbUt7YiHGqBaij TlHs7lF8+P7eEvJzP/57e5hlTibwKS3dhFR8nUMM/y8FZ8JWD+ZYOyNau0HYOFL1F4Gg 7awQ== X-Gm-Message-State: AOAM531xSoADqCgUYgNBWK9sgq9Z9/LlW//FrEZTopglzeeGq2O+5PqE VMatNlRP1eoJ6j0NttuRlIs= X-Google-Smtp-Source: ABdhPJzm9HT86DnclS99Kv824zsCX+OC/Fjc1Oxh/mxyDmHUArj4qmeRwqbubhayouz1Id1A4kp8dw== X-Received: by 2002:a17:90a:c903:: with SMTP id v3mr15689200pjt.13.1619796126947; Fri, 30 Apr 2021 08:22:06 -0700 (PDT) Received: from stbsrv-and-01.and.broadcom.net ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id q128sm2543034pfb.67.2021.04.30.08.22.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Apr 2021 08:22:06 -0700 (PDT) From: Jim Quinlan To: Bjorn Helgaas , Amjad Ouled-Ameur , Philipp Zabel , linux-pci@vger.kernel.org, Nicolas Saenz Julienne , bcm-kernel-feedback-list@broadcom.com, james.quinlan@broadcom.com, jim2101024@gmail.com Cc: stable@vger.kernel.org, linux-kernel@vger.kernel.org (open list) Subject: [PATCH v6 1/3] reset: add missing empty function reset_control_rearm() Date: Fri, 30 Apr 2021 11:21:54 -0400 Message-Id: <20210430152156.21162-2-jim2101024@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210430152156.21162-1-jim2101024@gmail.com> References: <20210430152156.21162-1-jim2101024@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org All other functions are defined for when CONFIG_RESET_CONTROLLER is not set. Fixes: 557acb3d2cd9 ("reset: make shared pulsed reset controls re-triggerable") CC: stable@vger.kernel.org # v5.11+ Signed-off-by: Jim Quinlan Acked-by: Philipp Zabel --- include/linux/reset.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/linux/reset.h b/include/linux/reset.h index b9109efa2a5c..9700124affa3 100644 --- a/include/linux/reset.h +++ b/include/linux/reset.h @@ -47,6 +47,11 @@ static inline int reset_control_reset(struct reset_control *rstc) return 0; } +static inline int reset_control_rearm(struct reset_control *rstc) +{ + return 0; +} + static inline int reset_control_assert(struct reset_control *rstc) { return 0; From patchwork Fri Apr 30 15:21:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Quinlan X-Patchwork-Id: 12233661 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7BABCC433ED for ; Fri, 30 Apr 2021 15:22:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4B7E36144D for ; Fri, 30 Apr 2021 15:22:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231187AbhD3PW6 (ORCPT ); Fri, 30 Apr 2021 11:22:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59168 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231145AbhD3PW6 (ORCPT ); Fri, 30 Apr 2021 11:22:58 -0400 Received: from mail-pj1-x102c.google.com (mail-pj1-x102c.google.com [IPv6:2607:f8b0:4864:20::102c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EDD45C06174A; Fri, 30 Apr 2021 08:22:09 -0700 (PDT) Received: by mail-pj1-x102c.google.com with SMTP id z6-20020a17090a1706b0290155e8a752d8so1899322pjd.4; Fri, 30 Apr 2021 08:22:09 -0700 (PDT) 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=P3skkHZLGnNb4o4IjNFBvtLuN+EXmgZbKt3sCXgsAjA=; b=WoDbvr6t/6Loj2/scnIAb91IbA+zVIaMfZeXgj0IxEJhYC8AeHjT+XRLcRxSVStpK+ nZ4ARSTII+GkdVn9yLEWV98cADWaLs3Kl/NBsTuY1cE24bbiwikdljXHaG/dQAdyCxxg Qa99KSDMnThjWYmCie5xVadH+hqOJVshOcM7wj8NYq7x1pO1hsemnlBEEbqMoHX70xGz jr0UQPJMVhEuN7SrT4j/CNYcIa24uy7YGj29iofTG5S2BZ1g3nOh1KGb/RYQNep/hVoE OW3Qo+MX1TxhWpZUf0tG2V6Yh6zdOtwS9bo666FEjQ6Csatziyefxrd7DByGUMlARFro yzIA== 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=P3skkHZLGnNb4o4IjNFBvtLuN+EXmgZbKt3sCXgsAjA=; b=WHZdoU1VL1egOrlqYJh6MMy9ZnQrsuACE1Ak+k/DgUNMI8UEC13qBh7Jw3QR/riAhe Hh9EyDDKOzx9D50xkzhhqswIr1FeBHCI7ryXzoMbI8Jm2xcj1ZxbpMBkG8hV+FCtpDMK T8YTF75SfSALMDhAidmBje3ft1Pvry+tYNDVTsc+RWmHZSOpSjZkyXDbLYshEoTDd/AD Z9K3DXYmRJQoThwLdxE0kcnPlv0sC7iEfatFcnUfQ6RDfITv5FLHSZj0qWTYdYuiKAEP WLuf1N2ZDBwHHEla9rfS0V93MNhUv5j2T2+RKLQEuj8FN3Zp9Xc/CKPRPAX82OBoLNYh ZCoA== X-Gm-Message-State: AOAM531zvSR65Vu1zxFBrehWw8PXHgc5LSSMu7TCSOQp0Jxtpb3yqc3m BJNMeu3DRKTHcbF3iSiFZWE= X-Google-Smtp-Source: ABdhPJyesoTBoOlJsdQFzeeDalnE9+cMIF/D+W8IOW9QPE5FGnFgw5HWDZWx8ieMAUQnRDMMlpxT/A== X-Received: by 2002:a17:90a:af8b:: with SMTP id w11mr5839797pjq.149.1619796129594; Fri, 30 Apr 2021 08:22:09 -0700 (PDT) Received: from stbsrv-and-01.and.broadcom.net ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id q128sm2543034pfb.67.2021.04.30.08.22.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Apr 2021 08:22:09 -0700 (PDT) From: Jim Quinlan To: Bjorn Helgaas , Amjad Ouled-Ameur , Philipp Zabel , linux-pci@vger.kernel.org, Nicolas Saenz Julienne , bcm-kernel-feedback-list@broadcom.com, james.quinlan@broadcom.com, jim2101024@gmail.com Cc: Jens Axboe , Florian Fainelli , Hans de Goede , linux-ide@vger.kernel.org (open list:LIBATA SUBSYSTEM (Serial and Parallel ATA drivers)), linux-kernel@vger.kernel.org (open list) Subject: [PATCH v6 2/3] ata: ahci_brcm: Fix use of BCM7216 reset controller Date: Fri, 30 Apr 2021 11:21:55 -0400 Message-Id: <20210430152156.21162-3-jim2101024@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210430152156.21162-1-jim2101024@gmail.com> References: <20210430152156.21162-1-jim2101024@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org This driver may use one of two resets controllers. Keep them in separate variables to keep things simple. The reset controller "rescal" is shared between the AHCI driver and the PCIe driver for the BrcmSTB 7216 chip. Use devm_reset_control_get_optional_shared() to handle this sharing. Fixes: 272ecd60a636 ("ata: ahci_brcm: BCM7216 reset is self de-asserting") Fixes: c345ec6a50e9 ("ata: ahci_brcm: Support BCM7216 reset controller name") Signed-off-by: Jim Quinlan Acked-by: Florian Fainelli --- drivers/ata/ahci_brcm.c | 46 ++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/drivers/ata/ahci_brcm.c b/drivers/ata/ahci_brcm.c index 5b32df5d33ad..6e9c5ade4c2e 100644 --- a/drivers/ata/ahci_brcm.c +++ b/drivers/ata/ahci_brcm.c @@ -86,7 +86,8 @@ struct brcm_ahci_priv { u32 port_mask; u32 quirks; enum brcm_ahci_version version; - struct reset_control *rcdev; + struct reset_control *rcdev_rescal; + struct reset_control *rcdev_ahci; }; static inline u32 brcm_sata_readreg(void __iomem *addr) @@ -352,8 +353,8 @@ static int brcm_ahci_suspend(struct device *dev) else ret = 0; - if (priv->version != BRCM_SATA_BCM7216) - reset_control_assert(priv->rcdev); + reset_control_assert(priv->rcdev_ahci); + reset_control_rearm(priv->rcdev_rescal); return ret; } @@ -365,10 +366,10 @@ static int __maybe_unused brcm_ahci_resume(struct device *dev) struct brcm_ahci_priv *priv = hpriv->plat_data; int ret = 0; - if (priv->version == BRCM_SATA_BCM7216) - ret = reset_control_reset(priv->rcdev); - else - ret = reset_control_deassert(priv->rcdev); + ret = reset_control_deassert(priv->rcdev_ahci); + if (ret) + return ret; + ret = reset_control_reset(priv->rcdev_rescal); if (ret) return ret; @@ -434,7 +435,6 @@ static int brcm_ahci_probe(struct platform_device *pdev) { const struct of_device_id *of_id; struct device *dev = &pdev->dev; - const char *reset_name = NULL; struct brcm_ahci_priv *priv; struct ahci_host_priv *hpriv; struct resource *res; @@ -456,15 +456,15 @@ static int brcm_ahci_probe(struct platform_device *pdev) if (IS_ERR(priv->top_ctrl)) return PTR_ERR(priv->top_ctrl); - /* Reset is optional depending on platform and named differently */ - if (priv->version == BRCM_SATA_BCM7216) - reset_name = "rescal"; - else - reset_name = "ahci"; - - priv->rcdev = devm_reset_control_get_optional(&pdev->dev, reset_name); - if (IS_ERR(priv->rcdev)) - return PTR_ERR(priv->rcdev); + if (priv->version == BRCM_SATA_BCM7216) { + priv->rcdev_rescal = devm_reset_control_get_optional_shared( + &pdev->dev, "rescal"); + if (IS_ERR(priv->rcdev_rescal)) + return PTR_ERR(priv->rcdev_rescal); + } + priv->rcdev_ahci = devm_reset_control_get_optional(&pdev->dev, "ahci"); + if (IS_ERR(priv->rcdev_ahci)) + return PTR_ERR(priv->rcdev_ahci); hpriv = ahci_platform_get_resources(pdev, 0); if (IS_ERR(hpriv)) @@ -485,10 +485,10 @@ static int brcm_ahci_probe(struct platform_device *pdev) break; } - if (priv->version == BRCM_SATA_BCM7216) - ret = reset_control_reset(priv->rcdev); - else - ret = reset_control_deassert(priv->rcdev); + ret = reset_control_reset(priv->rcdev_rescal); + if (ret) + return ret; + ret = reset_control_deassert(priv->rcdev_ahci); if (ret) return ret; @@ -539,8 +539,8 @@ static int brcm_ahci_probe(struct platform_device *pdev) out_disable_clks: ahci_platform_disable_clks(hpriv); out_reset: - if (priv->version != BRCM_SATA_BCM7216) - reset_control_assert(priv->rcdev); + reset_control_assert(priv->rcdev_ahci); + reset_control_rearm(priv->rcdev_rescal); return ret; } From patchwork Fri Apr 30 15:21:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Quinlan X-Patchwork-Id: 12233663 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 54229C433ED for ; Fri, 30 Apr 2021 15:22:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 360F260FE4 for ; Fri, 30 Apr 2021 15:22:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231314AbhD3PXF (ORCPT ); Fri, 30 Apr 2021 11:23:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59178 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231318AbhD3PXB (ORCPT ); Fri, 30 Apr 2021 11:23:01 -0400 Received: from mail-pg1-x52c.google.com (mail-pg1-x52c.google.com [IPv6:2607:f8b0:4864:20::52c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E56BDC06174A; Fri, 30 Apr 2021 08:22:12 -0700 (PDT) Received: by mail-pg1-x52c.google.com with SMTP id j189so2623506pgd.13; Fri, 30 Apr 2021 08:22:12 -0700 (PDT) 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=S1RYFyHGpmuSBGVIKtF2cRB9Rxzfh1Zoo7ktedPdj8k=; b=ijh00j9ZNOdICIFEeE+Blmg5hYFoxcaZjUS7BVCRANVXzftCwMyg1l2wjuJn6FSKxN mtKQFNFrLUIQkI+79cfkoryy6c+jjXYziq7uN31OnEZELbSRLhG7gvulAeAJH2uVz9Bs t20A6nUKrPZfc2IoNcFc9mG+/Zi+bL1FlEetVfY63TZjlfHkYWKToijLxuzK9WC4K6kV SEC3QENjgaG+mqDhc2d/+AKaShFGrOgsyvBB5s7+3FlXcPItQnUouaEt6hsAUYPBen8F UMTGrtzk1kq3MRb+KfWYkdWPq3whQSwyqbZfjXUjR4BzHW9FujJ0+QNGlqoICJKFHIga hUOg== 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=S1RYFyHGpmuSBGVIKtF2cRB9Rxzfh1Zoo7ktedPdj8k=; b=I4snRSZzaqET7KD02UDR1MflmXPa/0ea+c28aEES7u3pJF69fE8cV70GbIb6ItgYYG xWdBib+WZknCZWyHFHMu9F6Gl3J7y1CBK1RTxAB9hTFRGAn1dHbVzASFatyikHC2Ru4N 1LKqvaCrXBxD7Km/89cvs+Tz+w60WrIXAvVq1g6PnlgiVfZhtafzAASkl5QPqMa4PoE6 WEpBq3uE90Im+cNrqXRUsITUIJY+OMW8VWfaW5ZA9wOulRLcr2P+i8qukd51i9WIwsHP w4rjbsoqwzTV9ZfwaaLXKCeMro4sGRmmy8VVTS8LWilWRcKdO+fRWlsNIRr7xZv0E57T Rthg== X-Gm-Message-State: AOAM533gpgfrmfN5DeQTTe3cp91yTmKAqx/WjjXAp8VBQqgR6AwntwAJ oMomjCl80rUW7u1DZakGP8Y= X-Google-Smtp-Source: ABdhPJx21aO2czAx4J1Wd952RkDiotpIsu+3OxvKIr7dWfLKb4o/OwejjnrGvx2h0udaMDO/3pHcBw== X-Received: by 2002:a63:4442:: with SMTP id t2mr5220942pgk.232.1619796132567; Fri, 30 Apr 2021 08:22:12 -0700 (PDT) Received: from stbsrv-and-01.and.broadcom.net ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id q128sm2543034pfb.67.2021.04.30.08.22.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Apr 2021 08:22:12 -0700 (PDT) From: Jim Quinlan To: Bjorn Helgaas , Amjad Ouled-Ameur , Philipp Zabel , linux-pci@vger.kernel.org, Nicolas Saenz Julienne , bcm-kernel-feedback-list@broadcom.com, james.quinlan@broadcom.com, jim2101024@gmail.com Cc: Lorenzo Pieralisi , Rob Herring , Bjorn Helgaas , Florian Fainelli , Jim Quinlan , linux-rpi-kernel@lists.infradead.org (moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE), linux-arm-kernel@lists.infradead.org (moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE), linux-kernel@vger.kernel.org (open list) Subject: [PATCH v6 3/3] PCI: brcmstb: Use reset/rearm instead of deassert/assert Date: Fri, 30 Apr 2021 11:21:56 -0400 Message-Id: <20210430152156.21162-4-jim2101024@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210430152156.21162-1-jim2101024@gmail.com> References: <20210430152156.21162-1-jim2101024@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org The Broadcom STB PCIe RC uses a reset control "rescal" for certain chips. The "rescal" implements a "pulse reset" so using assert/deassert is wrong for this device. Instead, we use reset/rearm. We need to use rearm so that we can reset it after a suspend/resume cycle; w/o using "rearm", the "rescal" device will only ever fire once. Of course for suspend/resume to work we also need to put the reset/rearm calls in the suspend and resume routines. Fixes: 740d6c3708a9 ("PCI: brcmstb: Add control of rescal reset") Signed-off-by: Jim Quinlan Acked-by: Florian Fainelli --- drivers/pci/controller/pcie-brcmstb.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c index e330e6811f0b..3b35d629035e 100644 --- a/drivers/pci/controller/pcie-brcmstb.c +++ b/drivers/pci/controller/pcie-brcmstb.c @@ -1148,6 +1148,7 @@ static int brcm_pcie_suspend(struct device *dev) brcm_pcie_turn_off(pcie); ret = brcm_phy_stop(pcie); + reset_control_rearm(pcie->rescal); clk_disable_unprepare(pcie->clk); return ret; @@ -1163,9 +1164,13 @@ static int brcm_pcie_resume(struct device *dev) base = pcie->base; clk_prepare_enable(pcie->clk); + ret = reset_control_reset(pcie->rescal); + if (ret) + goto err_disable_clk; + ret = brcm_phy_start(pcie); if (ret) - goto err; + goto err_reset; /* Take bridge out of reset so we can access the SERDES reg */ pcie->bridge_sw_init_set(pcie, 0); @@ -1180,14 +1185,16 @@ static int brcm_pcie_resume(struct device *dev) ret = brcm_pcie_setup(pcie); if (ret) - goto err; + goto err_reset; if (pcie->msi) brcm_msi_set_regs(pcie->msi); return 0; -err: +err_reset: + reset_control_rearm(pcie->rescal); +err_disable_clk: clk_disable_unprepare(pcie->clk); return ret; } @@ -1197,7 +1204,7 @@ static void __brcm_pcie_remove(struct brcm_pcie *pcie) brcm_msi_remove(pcie); brcm_pcie_turn_off(pcie); brcm_phy_stop(pcie); - reset_control_assert(pcie->rescal); + reset_control_rearm(pcie->rescal); clk_disable_unprepare(pcie->clk); } @@ -1278,13 +1285,13 @@ static int brcm_pcie_probe(struct platform_device *pdev) return PTR_ERR(pcie->perst_reset); } - ret = reset_control_deassert(pcie->rescal); + ret = reset_control_reset(pcie->rescal); if (ret) dev_err(&pdev->dev, "failed to deassert 'rescal'\n"); ret = brcm_phy_start(pcie); if (ret) { - reset_control_assert(pcie->rescal); + reset_control_rearm(pcie->rescal); clk_disable_unprepare(pcie->clk); return ret; }