From owner-FreeBSD-users-jp@jp.FreeBSD.org Wed Sep  4 21:26:45 2002
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id g84CQje98131;
	Wed, 4 Sep 2002 21:26:45 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from nagato-gw.x.inetd.co.jp (inetd-katsushika.as.wakwak.ne.jp [219.103.210.15])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with ESMTP/inet id g84CQi398126
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Wed, 4 Sep 2002 21:26:44 +0900 (JST)
	(envelope-from zensyo@inetd.co.jp)
Received: from localhost by nagato-gw.x.inetd.co.jp (8.11.3/3.7W01112022) id g84CR0s43727; Wed, 4 Sep 2002 21:27:00 +0900 (JST)
To: FreeBSD-users-jp@jp.FreeBSD.org
From: zensyo@ann.tama.kawasaki.jp
In-Reply-To: <001501c253be$fbd977a0$0201a8c0@heaven>
References: <020904014317.M0105322@mistral.imasy.or.jp>
	<001501c253be$fbd977a0$0201a8c0@heaven>
X-Mailer: Mew version 1.94.2 on Emacs 19.34 / Mule 2.3 (SUETSUMUHANA)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Message-Id: <20020904212659N.zensyo@inetd.co.jp>
X-Dispatcher: imput version 20000228(IM140)
Lines: 96
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Wed, 04 Sep 2002 21:26:59 +0900
X-Sequence: FreeBSD-users-jp 70601
Subject: [FreeBSD-users-jp 70601] Re: atacontrol
 =?ISO-2022-JP?B?GyRCJEgbKEI=?= DMA
 =?ISO-2022-JP?B?GyRCJWIhPCVJGyhC?= 
Errors-To: owner-FreeBSD-users-jp@jp.FreeBSD.org
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: zensyo@inetd.co.jp
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+020902

$BNkLZ!w(BANN-NET$B$H?=$7$^$9!#(B


From: "T.Funada" <t-f@co.xdsl.ne.jp>
Subject: [FreeBSD-users-jp 70593] Re: atacontrol $B$H(B DMA $B%b!<%I(B 
Date: Wed, 4 Sep 2002 11:58:41 +0900
Message-ID: <001501c253be$fbd977a0$0201a8c0@heaven>

> >   $B$3$N(B ACS7500 $B$H$$$&(B RAID $B%3%s%H%m!<%i$O(B
> > http://www.soho-jp.com/goods/pcparts/acs7500.htm
> > $B$r$_$k$H(B ATA100 $BBP1~$N$h$&$G$9!#(B82C686a $B<+BN$O(BATA100$BBP1~$G!"(B
> > ACS7500$B$b(BATA100$BBP1~$J$N$G!"(BATA100 $B$GG'<1$5$l$k$N$O@5$7$$$H;W$$$^$9!#(B
> 
> $BHNGdE9$K3NG'$7$?$H$3$m!"!V(BACS7500$B$O(BATA66$B$G$9!W$H$N$3$H$@$C$?$N$G$9$,!"(B
> ATA100$B$b2D$N$h$&$G$9$M(B($B5nG/$N$"$k;~4|$+$i(BATA100$B$KBP1~$7$?$h$&$G$9(B)$B!#(B
> $B$H$j$"$($:<+J,$,$b$C$F$k@=IJ$N(BRevision$B$r3NG'$9$kI,MW$,$"$j$=$&$G$9!#(B

$B$&$A$N$O$A$g$C$H8E$a$J$N$G(BATA-66$BBP1~$J$N$G$9$,!"$d$O$j(BATA100$B$GG'<1$5$l(B
$B$F$7$^$C$?;H$$$b$N$K$J$j$^$;$s$G$7$?!#(B

$B$=$3$G(Bata$B%I%i%$%P$+$i(BATA100$BBP1~$r:o=|$9$k$3$H$G$`$j$d$j(BATA66$B$H$7$F;H$C(B
$B$F$$$^$9!#(BICH2$B$@$H$=$l$GLdBj$O$G$J$+$C$?$N$G$9$,:#;H$C$F$$$k(BCMD$B$N%A%C(B
$B%W$G$O(BPIO$B$K$3$=$J$j$^$;$s$,$A$g$C$HIi2Y$r$+$1$k$H(B ICRC error $B$,=P$k$h(B
$B$&$G$9!#(B

$B0J2<$O(BFreeBSD-4.3$B$N(B /sys/dev/ata/ata-dma.c $B$KBP$9$k%Q%C%A$G$9!#$3$l$r(B
$B;29M$K=$@5$7$F$_$k$HNI$$$+$bCN$l$^$;$s!#(B
----
*** ata-dma.c.orig	Wed Apr 18 16:06:47 2001
--- ata-dma.c	Mon Jun  3 00:06:22 2002
***************
*** 110,144 ****
  
      case 0x244a8086:	/* Intel ICH2 mobile */ 
      case 0x244b8086:	/* Intel ICH2 */
- 	if (udmamode >= 5) {
- 	    int32_t mask48, new48;
- 	    int16_t word54;
- 
- 	    word54 = pci_read_config(parent, 0x54, 2);
- 	    if (word54 & (0x10 << devno)) {
- 	        error = ata_command(scp, device, ATA_C_SETFEATURES, 0, 0, 0,
- 				    ATA_UDMA5,  ATA_C_F_SETXFER,ATA_WAIT_READY);
- 	    	if (bootverbose)
- 		    ata_printf(scp, device,
- 			       "%s setting UDMA5 on Intel chip\n",
- 			       (error) ? "failed" : "success");
- 		if (!error) {
- 		    mask48 = (1 << devno) + (3 << (16 + (devno << 2)));
- 		    new48 = (1 << devno) + (1 << (16 + (devno << 2)));
- 		    pci_write_config(parent, 0x48,
- 				     (pci_read_config(parent, 0x48, 4) &
- 				     ~mask48) | new48, 4);
- 	    	    pci_write_config(parent, 0x54, word54 | (0x1000<<devno), 2);
- 		    scp->mode[ATA_DEV(device)] = ATA_UDMA5;
- 		    return;
- 		}
- 	    }
- 	}
- 	/* make sure eventual ATA100 mode from the BIOS is disabled */
- 	pci_write_config(parent, 0x54, 
- 			 pci_read_config(parent, 0x54, 2) & ~(0x1000<<devno),2);
- 	/* FALLTHROUGH */
- 
      case 0x24118086:    /* Intel ICH */
  	if (udmamode >= 4) {
  	    int32_t mask48, new48;
--- 110,115 ----
***************
*** 524,548 ****
  	break;
  
      case 0x06491095:	/* CMD 649 ATA100 controller */
- 	if (udmamode >= 5) {
- 	    u_int8_t umode;
- 
- 	    error = ata_command(scp, device, ATA_C_SETFEATURES, 0, 0, 0,
- 				ATA_UDMA5, ATA_C_F_SETXFER, ATA_WAIT_READY);
- 	    if (bootverbose)
- 		ata_printf(scp, device, "%s setting UDMA5 on CMD chip\n",
- 			   (error) ? "failed" : "success");
- 	    if (!error) {
- 		umode = pci_read_config(parent, scp->channel ? 0x7b : 0x73, 1);
- 		umode &= ~(device == ATA_MASTER ? 0x35 : 0xca);
- 		umode |= (device == ATA_MASTER ? 0x05 : 0x0a);
- 		pci_write_config(parent, scp->channel ? 0x7b : 0x73, umode, 1);
- 		scp->mode[ATA_DEV(device)] = ATA_UDMA5;
- 		return;
- 	    }
- 	}
- 	/* FALLTHROUGH */
- 
      case 0x06481095:	/* CMD 648 ATA66 controller */
  	if (udmamode >= 4) {
  	    u_int8_t umode;
--- 495,500 ----
