From patchwork Wed Apr 1 14:48:02 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suman Tripathi X-Patchwork-Id: 6140591 Return-Path: X-Original-To: patchwork-linux-scsi@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 0D8E49F399 for ; Wed, 1 Apr 2015 14:49:26 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 24572202FE for ; Wed, 1 Apr 2015 14:49:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2AB2B202E6 for ; Wed, 1 Apr 2015 14:49:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753921AbbDAOtW (ORCPT ); Wed, 1 Apr 2015 10:49:22 -0400 Received: from denmail01-v4020.amcc.com ([192.195.68.30]:37323 "EHLO denmail01.apm.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1753329AbbDAOtV (ORCPT ); Wed, 1 Apr 2015 10:49:21 -0400 Received: from apm.com (pnqlwv037.amcc.com [10.48.19.137]) by denmail01.apm.com (8.13.8/8.13.8) with ESMTP id t31EmnYX023413; Wed, 1 Apr 2015 08:48:51 -0600 Received: (from stripath@localhost) by apm.com (8.13.8/8.13.8/Submit) id t31EmnMn010945; Wed, 1 Apr 2015 20:18:49 +0530 From: Suman Tripathi To: olof@lixom.net, tj@kernel.org, arnd@arndb.de Cc: linux-scsi@vger.kernel.org, linux-ide@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, mlangsdo@redhat.com, jcm@redhat.com, patches@apm.com, Suman Tripathi Subject: [PATCH v1] ata: ahci_xgene: Add AHCI Support for second generation of APM X-Gene SoC Date: Wed, 1 Apr 2015 20:18:02 +0530 Message-Id: <1427899682-10912-2-git-send-email-stripathi@apm.com> X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1427899682-10912-1-git-send-email-stripathi@apm.com> References: <1427899682-10912-1-git-send-email-stripathi@apm.com> Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch enables full AHCI feature support for APM X-Gene SoC SATA host host controller. The following errata's are removed: 1. 2a0bdff6b95 ("ahci-xgene: fix the dma state machine lockup for the IDENTIFY DEVICE PIO mode command") 2. 09c32aaa368 ("ahci_xgene: Fix the dma state machine lockup for the ATA_CMD_SMART PIO mode command") 3. 1540035da71 ("ahci_xgene: Implement the xgene_ahci_poll_reg_val to support PMP") 4. a3a84bc7c88 ("ahci_xgene: Implement the workaround to support PMP enumeration and discovery") 5. 1102407bb71 ("ahci_xgene: Fix the DMA state machine lockup for the ATA_CMD_PACKET PIO mode command") 6. 72f79f9e35b ("ahci_xgene: Removing NCQ support from the APM X-Gene SoC AHCI SATA Host Controller driver") In addition, enable PMP support for second generation APM X-Gene SoC. Signed-off-by : Suman Tripathi --- drivers/ata/ahci_xgene.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) -- 1.8.2.1 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/ata/ahci_xgene.c b/drivers/ata/ahci_xgene.c index 2e8bb60..0be47b0 100644 --- a/drivers/ata/ahci_xgene.c +++ b/drivers/ata/ahci_xgene.c @@ -28,6 +28,8 @@ #include #include #include +#include + #include "ahci.h" #define DRV_NAME "xgene-ahci" @@ -94,6 +96,11 @@ struct xgene_ahci_context { void __iomem *csr_mux; /* MUX CSR address of IP */ }; +static bool xgene_ahci_version1(void) +{ + return MIDR_VARIANT(read_cpuid_id()) == 0 ? true : false; +} + static int xgene_ahci_init_memram(struct xgene_ahci_context *ctx) { dev_dbg(ctx->dev, "Release memory from shutdown\n"); @@ -703,7 +710,19 @@ static int xgene_ahci_probe(struct platform_device *pdev) /* Configure the host controller */ xgene_ahci_hw_init(hpriv); skip_clk_phy: - hpriv->flags = AHCI_HFLAG_NO_PMP | AHCI_HFLAG_NO_NCQ; + + if (xgene_ahci_version1()) { + /* + * Override the callbacks due to + * XGENE1 ERRATA's. + */ + hpriv->flags |= AHCI_HFLAG_NO_NCQ; + xgene_ahci_ops.qc_issue = xgene_ahci_qc_issue; + xgene_ahci_ops.softreset = xgene_ahci_softreset; + xgene_ahci_ops.pmp_softreset = xgene_ahci_pmp_softreset; + } else { + hpriv->flags |= AHCI_HFLAG_YES_FBS; + } rc = ahci_platform_init_host(pdev, hpriv, &xgene_ahci_port_info, &ahci_platform_sht);