Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp28105ybl; Tue, 7 Jan 2020 13:25:51 -0800 (PST) X-Google-Smtp-Source: APXvYqwQjQ4URFFZ/nJiDsrfjI8ExATQApCJo/OCMduEwPZXXA6ny1mgmOLFdEuhvx/o2PHUE1CY X-Received: by 2002:aca:481:: with SMTP id 123mr423989oie.110.1578432351708; Tue, 07 Jan 2020 13:25:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578432351; cv=none; d=google.com; s=arc-20160816; b=d/EX87URY4yQik2B3yKhq+wK+IV4DCozhAuJkAc77y1V+cqwmLms0mThk9Z0i8Sjfg PnbR3H1Q1s6Jk8j28sRCvgYkOZluCRXpNic5Qd9Vp6/u9UNHOB6gPVIW9KxBZ/YiwtLQ VE0loRyExO4XiVv0sM+KqXZtisNciRWG7ycPGMJBCZhfkADolAU3s0A/ziqF5GJ0Su82 bFIfp94JvKRNhadahjp9PHKMzYpsLkDb97TdlUnT8aN/VNV8JV6J1Jl6D1Sqt4aIkD/V 7dGr1FectIpwK4bJ7j2tfTqA0colv0FJUgzQtMbF4Vcmpdb8aRrsHxyI6S+KkWuz3IlX Z5yw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=mRTHv5ag+tMbSSNA3D2O7VhVb6sv3fbKGVXdnuU/Q88=; b=oBVcaAsaih4fhDQKDoeIVT31QjZV3Ttc39wpz4NA7FFJwNBaVb1hSooQPoSEpaCDy5 hMU4NpvxLlSQQ+Q5oVI5IJwyX75E3GYvQuAv3e7UGTEs0VveZbGJDrltl/UE4EBCFddL g4dhgDzUh0YoQGiE5cqnkYrNHTYmEYCXLP/Sv/fuY1PDbvm5zS0yYvQ0c7t1gmg89BNa zaA4tS814Kv7giGnqpAu1m78GgMmgH59HKPPkzsiZkuZ+NhkPb91pb6gTOWVnwVncRLL 3Y9qZROusfTHQ9dWEQr8g7litIj4r6j0ezSMxd0PrKrnZ9RVJavz52+SsuzSpXQ8ki+O BHig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=QgjFxgaf; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e24si586062oti.247.2020.01.07.13.25.39; Tue, 07 Jan 2020 13:25:51 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=QgjFxgaf; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729182AbgAGVYs (ORCPT + 99 others); Tue, 7 Jan 2020 16:24:48 -0500 Received: from mail.kernel.org ([198.145.29.99]:34694 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728299AbgAGVAS (ORCPT ); Tue, 7 Jan 2020 16:00:18 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A3B3824677; Tue, 7 Jan 2020 21:00:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578430817; bh=cnqALwMuRfyo5+y1ZAdyD4v7PD7Zz5NZ8hggQcZxekQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QgjFxgaf9n5dskL4GUg3vQFB5EEEKOidOe4XpsQCX8KTs2Q3YCntGa0E0SUXfrqKI siX5o8WCK37tEnNTAYgnv69Z16jrWg+sBejUt75Wk8UoLxFP3gMf5+WuPP0kO63LHP 8vpBfR58IJGnzYA0k6cob+sUVnQTSdTxgPgP75Pw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hans de Goede , Florian Fainelli , Jens Axboe Subject: [PATCH 5.4 108/191] ata: ahci_brcm: BCM7425 AHCI requires AHCI_HFLAG_DELAY_ENGINE Date: Tue, 7 Jan 2020 21:53:48 +0100 Message-Id: <20200107205338.767411951@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200107205332.984228665@linuxfoundation.org> References: <20200107205332.984228665@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Florian Fainelli commit 1a3d78cb6e20779a19388315bd8efefbd8d4a656 upstream. Set AHCI_HFLAG_DELAY_ENGINE for the BCM7425 AHCI controller thus making it conforming to the 'strict' AHCI implementation which this controller is based on. This solves long link establishment with specific hard drives (e.g.: Seagate ST1000VM002-9ZL1 SC12) that would otherwise have to complete the error recovery handling before finally establishing a succesful SATA link at the desired speed. We re-order the hpriv->flags assignment to also remove the NONCQ quirk since we can set the flag directly. Fixes: 9586114cf1e9 ("ata: ahci_brcmstb: add support MIPS-based platforms") Fixes: 423be77daabe ("ata: ahci_brcmstb: add quirk for broken ncq") Cc: stable@vger.kernel.org Reviewed-by: Hans de Goede Signed-off-by: Florian Fainelli Signed-off-by: Jens Axboe Signed-off-by: Greg Kroah-Hartman --- drivers/ata/ahci_brcm.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) --- a/drivers/ata/ahci_brcm.c +++ b/drivers/ata/ahci_brcm.c @@ -76,8 +76,7 @@ enum brcm_ahci_version { }; enum brcm_ahci_quirks { - BRCM_AHCI_QUIRK_NO_NCQ = BIT(0), - BRCM_AHCI_QUIRK_SKIP_PHY_ENABLE = BIT(1), + BRCM_AHCI_QUIRK_SKIP_PHY_ENABLE = BIT(0), }; struct brcm_ahci_priv { @@ -439,18 +438,27 @@ static int brcm_ahci_probe(struct platfo if (!IS_ERR_OR_NULL(priv->rcdev)) reset_control_deassert(priv->rcdev); - if ((priv->version == BRCM_SATA_BCM7425) || - (priv->version == BRCM_SATA_NSP)) { - priv->quirks |= BRCM_AHCI_QUIRK_NO_NCQ; - priv->quirks |= BRCM_AHCI_QUIRK_SKIP_PHY_ENABLE; - } - hpriv = ahci_platform_get_resources(pdev, 0); if (IS_ERR(hpriv)) { ret = PTR_ERR(hpriv); goto out_reset; } + hpriv->plat_data = priv; + hpriv->flags = AHCI_HFLAG_WAKE_BEFORE_STOP | AHCI_HFLAG_NO_WRITE_TO_RO; + + switch (priv->version) { + case BRCM_SATA_BCM7425: + hpriv->flags |= AHCI_HFLAG_DELAY_ENGINE; + /* fall through */ + case BRCM_SATA_NSP: + hpriv->flags |= AHCI_HFLAG_NO_NCQ; + priv->quirks |= BRCM_AHCI_QUIRK_SKIP_PHY_ENABLE; + break; + default: + break; + } + ret = ahci_platform_enable_clks(hpriv); if (ret) goto out_reset; @@ -470,15 +478,8 @@ static int brcm_ahci_probe(struct platfo /* Must be done before ahci_platform_enable_phys() */ brcm_sata_phys_enable(priv); - hpriv->plat_data = priv; - hpriv->flags = AHCI_HFLAG_WAKE_BEFORE_STOP; - brcm_sata_alpm_init(hpriv); - if (priv->quirks & BRCM_AHCI_QUIRK_NO_NCQ) - hpriv->flags |= AHCI_HFLAG_NO_NCQ; - hpriv->flags |= AHCI_HFLAG_NO_WRITE_TO_RO; - ret = ahci_platform_enable_phys(hpriv); if (ret) goto out_disable_phys;