svn commit: r189295 - head/sys/dev/ata/chipsets

Alexander Motin mav at FreeBSD.org
Mon Mar 2 22:39:39 PST 2009


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) {


More information about the svn-src-head mailing list