linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
To: Kevin Hilman <khilman@kernel.org>, Sekhar Nori <nsekhar@ti.com>,
	Patrick Titiano <ptitiano@baylibre.com>,
	Michael Turquette <mturquette@baylibre.com>,
	Tejun Heo <tj@kernel.org>, Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	David Lechner <david@lechnology.com>
Cc: linux-ide@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Bartosz Golaszewski <bgolaszewski@baylibre.com>
Subject: [PATCH 06/10] sata: ahci_da850: implement a softreset quirk
Date: Fri, 13 Jan 2017 13:38:00 +0100	[thread overview]
Message-ID: <1484311084-31547-7-git-send-email-bgolaszewski@baylibre.com> (raw)
In-Reply-To: <1484311084-31547-1-git-send-email-bgolaszewski@baylibre.com>

There's an issue with the da850 SATA controller: if port multiplier
support is compiled in, but we're connecting the drive directly to
the SATA port on the board, the drive can't be detected.

To make SATA work on the da850-lcdk board: first try to softreset
with pmp - if the operation fails with -EBUSY, retry without pmp.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 drivers/ata/ahci_da850.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/ata/ahci_da850.c b/drivers/ata/ahci_da850.c
index 5930af81..bb9eb4c 100644
--- a/drivers/ata/ahci_da850.c
+++ b/drivers/ata/ahci_da850.c
@@ -54,11 +54,31 @@ static void da850_sata_init(struct device *dev, void __iomem *pwrdn_reg,
 	writel(val, ahci_base + SATA_P0PHYCR_REG);
 }
 
+static int ahci_da850_softreset(struct ata_link *link,
+				unsigned int *class, unsigned long deadline)
+{
+	int pmp, ret;
+
+	pmp = sata_srst_pmp(link);
+
+	ret = ahci_do_softreset(link, class, pmp, deadline, ahci_check_ready);
+	if (pmp && ret == -EBUSY)
+		return ahci_do_softreset(link, class, 0,
+					 deadline, ahci_check_ready);
+
+	return ret;
+}
+
+static struct ata_port_operations ahci_da850_port_ops = {
+	.inherits = &ahci_platform_ops,
+	.softreset = ahci_da850_softreset,
+};
+
 static const struct ata_port_info ahci_da850_port_info = {
 	.flags		= AHCI_FLAG_COMMON,
 	.pio_mask	= ATA_PIO4,
 	.udma_mask	= ATA_UDMA6,
-	.port_ops	= &ahci_platform_ops,
+	.port_ops	= &ahci_da850_port_ops,
 };
 
 static struct scsi_host_template ahci_platform_sht = {
-- 
2.9.3

  parent reply	other threads:[~2017-01-13 12:49 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-13 12:37 [PATCH 00/10] ARM: da850-lcdk: add SATA support Bartosz Golaszewski
2017-01-13 12:37 ` [PATCH 01/10] ARM: davinci: add a clock lookup entry for the SATA clock Bartosz Golaszewski
2017-01-13 12:37 ` [PATCH 02/10] ARM: davinci_all_defconfig: enable SATA modules Bartosz Golaszewski
2017-01-13 12:37 ` [PATCH 03/10] devicetree: bindings: add bindings for ahci-da850 Bartosz Golaszewski
2017-01-13 19:25   ` David Lechner
2017-01-16 10:13     ` Bartosz Golaszewski
2017-01-16 12:45       ` Sekhar Nori
2017-01-16 14:30         ` Bartosz Golaszewski
2017-01-16 18:47           ` David Lechner
2017-01-17 12:00             ` Sekhar Nori
2017-01-17 18:31               ` davinci common clock framework (was Re: [PATCH 03/10] devicetree: bindings: add bindings for ahci-da850) David Lechner
2017-01-13 12:37 ` [PATCH 04/10] sata: hardreset: retry if phys link is down Bartosz Golaszewski
2017-01-15 23:10   ` Tejun Heo
2017-01-16 12:28     ` Bartosz Golaszewski
2017-01-13 12:37 ` [PATCH 05/10] sata: ahci_da850: add device tree match table Bartosz Golaszewski
2017-01-13 12:38 ` Bartosz Golaszewski [this message]
2017-01-15 23:12   ` [PATCH 06/10] sata: ahci_da850: implement a softreset quirk Tejun Heo
2017-01-16 10:17     ` Bartosz Golaszewski
2017-01-13 12:38 ` [PATCH 07/10] sata: ahci_da850: add support for the da850,clk_multiplier DT property Bartosz Golaszewski
2017-01-13 19:29   ` David Lechner
2017-01-13 12:38 ` [PATCH 08/10] ARM: dts: da850: add pinmux settings for the SATA controller Bartosz Golaszewski
2017-01-13 12:38 ` [PATCH 09/10] ARM: dts: da850: add the SATA node Bartosz Golaszewski
2017-01-13 19:36   ` David Lechner
2017-01-16 10:03     ` Bartosz Golaszewski
2017-01-13 12:38 ` [PATCH 10/10] ARM: dts: da850-lcdk: enable " Bartosz Golaszewski
2017-01-13 14:32 ` [PATCH 00/10] ARM: da850-lcdk: add SATA support Sekhar Nori
2017-01-17 12:34 ` Bartosz Golaszewski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1484311084-31547-7-git-send-email-bgolaszewski@baylibre.com \
    --to=bgolaszewski@baylibre.com \
    --cc=david@lechnology.com \
    --cc=devicetree@vger.kernel.org \
    --cc=khilman@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=mturquette@baylibre.com \
    --cc=nsekhar@ti.com \
    --cc=ptitiano@baylibre.com \
    --cc=robh+dt@kernel.org \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).