Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Mar 2009 06:39:38 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r189295 - head/sys/dev/ata/chipsets
Message-ID:  <200903030639.n236dcYs000461@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Tue Mar  3 06:39:38 2009
New Revision: 189295
URL: http://svn.freebsd.org/changeset/base/189295

Log:
  Set PortMultiplier port only for SATA2 channels, where it is applicable.
  Doing it on old SATA controllers like Promise PDC20375 SATA150 breaks
  their operation.
  
  Tested by:	marcus on PDC20375

Modified:
  head/sys/dev/ata/chipsets/ata-promise.c

Modified: head/sys/dev/ata/chipsets/ata-promise.c
==============================================================================
--- head/sys/dev/ata/chipsets/ata-promise.c	Tue Mar  3 03:33:25 2009	(r189294)
+++ head/sys/dev/ata/chipsets/ata-promise.c	Tue Mar  3 06:39:38 2009	(r189295)
@@ -690,8 +690,11 @@ ata_promise_mio_command(struct ata_reque
 
     ATA_OUTL(ctlr->r_res2, (ch->unit + 1) << 2, 0x00000001);
 
-    /* set portmultiplier port */
-    ATA_OUTB(ctlr->r_res2, 0x4e8 + (ch->unit << 8), atadev->unit & 0x0f);
+    if ((ctlr->chip->cfg2 == PR_SATA2) ||
+        ((ctlr->chip->cfg2 == PR_CMBO2) && (ch->unit < 2))) {
+	/* set portmultiplier port */
+	ATA_OUTB(ctlr->r_res2, 0x4e8 + (ch->unit << 8), atadev->unit & 0x0f);
+    }
 
     /* XXX SOS add ATAPI commands support later */
     switch (request->u.ata.command) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200903030639.n236dcYs000461>