Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp1340029imm; Tue, 2 Oct 2018 06:47:19 -0700 (PDT) X-Google-Smtp-Source: ACcGV62CoGldB/W6vkCHKxR5OmtaLKsOFYhcEgWQk/rPgBzzX24zNpBCXXWmplw7ykSpKCbv86mZ X-Received: by 2002:a63:4c16:: with SMTP id z22-v6mr14885375pga.312.1538488039125; Tue, 02 Oct 2018 06:47:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538488039; cv=none; d=google.com; s=arc-20160816; b=gcM2nuGayp15fmHCLms8QqhhwyjZzECgizGHfeBNmLO9VXFieqDTkh7S7OLBEF5dsU UxPTSfJn5C4ZYKtjEpLZ/8XPO3tT5C2U553htEN0rqP1sYWSBHKPcfwG09k3GrjhhOOm d83wi7h48c5ig6NFgKfT0Rf8xvroopRayXeUFrmIcXzQamW9DMHnEPvV+8fcQN1t1QSK 2kfIV1DAm/iJ064VAhrskHossz/mTRbJwPQFfgplcRXluaD6F3rJ+yNiZY+/zRRhurle qVdh9+YK7DVB/QJi88qENDoCV9xIU/64xR4nDQhXI4z+Yown7yWFV751ncIBXEr5KBct ZYeQ== 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; bh=AQrHo09j+/zje19keuLrKIBOXoQ9HtkvAoz7YryIh6A=; b=V/ltFE1OxrT0zFS61FHbUs8hHxGt3D33W2D6K+FAIqjkYpHzdoxzxwCayOIWxrQrkq +Zr/YwmPGG2UJNJmy/dn2+UY6XDjHYe7NrgbcIHXMptTlo2NGzZM5xTr7OsYmOmB+qqF J6Qy19+tZczDunNXz+2oHghnqr8UV3WGT5XhUYLVwU93ZcLPrVlGXxEkZVemRmSc7hbN OCUz4522WBTeQAkfRAuXBYp0/huGvj9OVvh/2VTl0gFYayKC9G6yIZBg3RxFLJRDOAXQ SIXFR8RIy9sMpo3Z8ekz3QAoCbWR3lccNp0dkv5Ub1ojpvyN3MYyBU3h7Gibwy3EjBUN NWFQ== ARC-Authentication-Results: i=1; mx.google.com; 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 a59-v6si9688609pla.60.2018.10.02.06.47.04; Tue, 02 Oct 2018 06:47:19 -0700 (PDT) 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; 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 S1732558AbeJBUSd (ORCPT + 99 others); Tue, 2 Oct 2018 16:18:33 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:35534 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730199AbeJBUSc (ORCPT ); Tue, 2 Oct 2018 16:18:32 -0400 Received: from localhost (24-104-73-23-ip-static.hfc.comcastbusiness.net [24.104.73.23]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 8D8A0B2F; Tue, 2 Oct 2018 13:35:08 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Linus Walleij , Jens Axboe , Sasha Levin Subject: [PATCH 4.14 131/137] ata: ftide010: Add a quirk for SQ201 Date: Tue, 2 Oct 2018 06:25:32 -0700 Message-Id: <20181002132507.673315802@linuxfoundation.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181002132458.446916963@linuxfoundation.org> References: <20181002132458.446916963@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Linus Walleij [ Upstream commit 46cb52ad414ac829680d0bb8cc7090ac2b577ca7 ] The DMA is broken on this specific device for some unknown reason (probably badly designed or plain broken interface electronics) and will only work with PIO. Other users of the same hardware does not have this problem. Add a specific quirk so that this Gemini device gets DMA turned off. Also fix up some code around passing the port information around in probe while we're at it. Signed-off-by: Linus Walleij Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/ata/pata_ftide010.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) --- a/drivers/ata/pata_ftide010.c +++ b/drivers/ata/pata_ftide010.c @@ -256,14 +256,12 @@ static struct ata_port_operations pata_f .qc_issue = ftide010_qc_issue, }; -static struct ata_port_info ftide010_port_info[] = { - { - .flags = ATA_FLAG_SLAVE_POSS, - .mwdma_mask = ATA_MWDMA2, - .udma_mask = ATA_UDMA6, - .pio_mask = ATA_PIO4, - .port_ops = &pata_ftide010_port_ops, - }, +static struct ata_port_info ftide010_port_info = { + .flags = ATA_FLAG_SLAVE_POSS, + .mwdma_mask = ATA_MWDMA2, + .udma_mask = ATA_UDMA6, + .pio_mask = ATA_PIO4, + .port_ops = &pata_ftide010_port_ops, }; #if IS_ENABLED(CONFIG_SATA_GEMINI) @@ -349,6 +347,7 @@ static int pata_ftide010_gemini_cable_de } static int pata_ftide010_gemini_init(struct ftide010 *ftide, + struct ata_port_info *pi, bool is_ata1) { struct device *dev = ftide->dev; @@ -373,7 +372,13 @@ static int pata_ftide010_gemini_init(str /* Flag port as SATA-capable */ if (gemini_sata_bridge_enabled(sg, is_ata1)) - ftide010_port_info[0].flags |= ATA_FLAG_SATA; + pi->flags |= ATA_FLAG_SATA; + + /* This device has broken DMA, only PIO works */ + if (of_machine_is_compatible("itian,sq201")) { + pi->mwdma_mask = 0; + pi->udma_mask = 0; + } /* * We assume that a simple 40-wire cable is used in the PATA mode. @@ -435,6 +440,7 @@ static int pata_ftide010_gemini_init(str } #else static int pata_ftide010_gemini_init(struct ftide010 *ftide, + struct ata_port_info *pi, bool is_ata1) { return -ENOTSUPP; @@ -446,7 +452,7 @@ static int pata_ftide010_probe(struct pl { struct device *dev = &pdev->dev; struct device_node *np = dev->of_node; - const struct ata_port_info pi = ftide010_port_info[0]; + struct ata_port_info pi = ftide010_port_info; const struct ata_port_info *ppi[] = { &pi, NULL }; struct ftide010 *ftide; struct resource *res; @@ -490,6 +496,7 @@ static int pata_ftide010_probe(struct pl * are ATA0. This will also set up the cable types. */ ret = pata_ftide010_gemini_init(ftide, + &pi, (res->start == 0x63400000)); if (ret) goto err_dis_clk;