From: Mark Lord <liml@rtr.ca>
To: Jeff Garzik <jgarzik@pobox.com>,
IDE/ATA development list <linux-ide@vger.kernel.org>
Cc: Saeed Bishara <saeed@marvell.com>
Subject: [PATCH 05/07] sata_mv: workaround errata SATA#26
Date: Mon, 06 Apr 2009 15:24:57 -0400 [thread overview]
Message-ID: <49DA5709.7060005@rtr.ca> (raw)
In-Reply-To: <49DA56DE.3000200@rtr.ca>
Workaround for errata SATA#26.
Prevents accidently putting a drive to sleep when attempting COMRESET,
by ORing 0xf000 with the values written to SCR_CONTROL.
Signed-off-by: Mark Lord <mlord@pobox.com>
--- old/drivers/ata/sata_mv.c 2009-04-06 13:29:05.000000000 -0400
+++ new/drivers/ata/sata_mv.c 2009-04-06 14:20:53.000000000 -0400
@@ -1296,7 +1296,25 @@
unsigned int ofs = mv_scr_offset(sc_reg_in);
if (ofs != 0xffffffffU) {
- writelfl(val, mv_ap_base(link->ap) + ofs);
+ void __iomem *addr = mv_ap_base(link->ap) + ofs;
+ if (sc_reg_in == SCR_CONTROL) {
+ /*
+ * Workaround for 88SX60x1 FEr SATA#26:
+ *
+ * COMRESETs have to take care not to accidently
+ * put the drive to sleep when writing SCR_CONTROL.
+ * Setting bits 12..15 prevents this problem.
+ *
+ * So if we see an outbound COMMRESET, set those bits.
+ * Ditto for the followup write that clears the reset.
+ *
+ * The proprietary driver does this for
+ * all chip versions, and so do we.
+ */
+ if ((val & 0xf) == 1 || (readl(addr) & 0xf) == 1)
+ val |= 0xf000;
+ }
+ writelfl(val, addr);
return 0;
} else
return -EINVAL;
next prev parent reply other threads:[~2009-04-06 19:24 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-06 16:29 [PATCH 01/03] sata_mv: revert SoC irq breakage Mark Lord
2009-04-06 16:30 ` [PATCH 02/03] sata_mv: fix irq mask races Mark Lord
2009-04-06 16:31 ` [PATCH 03/03] sata_mv: replace 0x1f with ATA_PIO4 Mark Lord
2009-04-06 19:22 ` [PATCH 03/03] sata_mv: replace 0x1f with ATA_PIO4 (v2) Mark Lord
2009-04-06 19:24 ` [PATCH 04/07] sata_mv: workaround errata PCI#7 Mark Lord
2009-04-06 19:24 ` Mark Lord [this message]
2009-04-06 19:25 ` [PATCH 06/07] sata_mv: cosmetic renames Mark Lord
2009-04-06 19:26 ` [PATCH 07/07] sata_mv: workaround errata SATA#13 Mark Lord
2009-04-06 20:43 ` [PATCH 08/08] sata_mv: shorten register names Mark Lord
2009-04-06 19:51 ` [PATCH 06/07] sata_mv: cosmetic renames Jeff Garzik
2009-04-06 20:12 ` Mark Lord
2009-04-07 0:16 ` [PATCH 01/03] sata_mv: revert SoC irq breakage Jeff Garzik
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=49DA5709.7060005@rtr.ca \
--to=liml@rtr.ca \
--cc=jgarzik@pobox.com \
--cc=linux-ide@vger.kernel.org \
--cc=saeed@marvell.com \
/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).