From owner-FreeBSD-tech-jp@jp.FreeBSD.org Sat Jan  3 12:27:48 2004
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id i033RmH00556;
	Sat, 3 Jan 2004 12:27:48 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from smtp.fancy.ocn.ne.jp (fancy.ocn.ne.jp [210.190.142.179])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id i033RmC00551
	for <FreeBSD-tech-jp@jp.freebsd.org>; Sat, 3 Jan 2004 12:27:48 +0900 (JST)
	(envelope-from chi@bd.mbn.or.jp)
Received: from chino.localhost (p034-dnb28tutuji.miyagi.ocn.ne.jp [61.208.245.162])
	by smtp.fancy.ocn.ne.jp (Postfix) with ESMTP
	id 2416052A0; Sat,  3 Jan 2004 12:27:45 +0900 (JST)
Posted-Date: Sat, 03 Jan 2004 12:25:54 JST
To: FreeBSD-tech-jp@jp.FreeBSD.org
Cc: chi@bd.mbn.or.jp
From: chi@bd.mbn.or.jp (Chiharu Shibata)
X-Mailer: mnews [version 1.22] 1999-12/19(Sun)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="-=-mnews-multipart-=-"
Message-Id: <20040103032745.2416052A0@m-kg282p.ocn.ne.jp>
Reply-To: FreeBSD-tech-jp@jp.FreeBSD.org
Precedence: list
Date: Sat, 3 Jan 2004 12:27:45 +0900
X-Sequence: FreeBSD-tech-jp 3417
Subject: [FreeBSD-tech-jp 3417] ATAPI CD-ROM patches
Sender: owner-FreeBSD-tech-jp@jp.FreeBSD.org
X-Originator: chi@bd.mbn.or.jp
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+031216


---=-mnews-multipart-=-
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

$B$3$s$K$A$O!"<FED$G$9!#(B
$B:#2s$O(B[FreeBSD-users-jp 74432]$B$r2?$H$+$7$?$$$H$$$&OC$G$9!#(B

$B8D?ME*$K$O$^$A$,$$$J$/M-1W$@$H;W$C$F$$$k$N$G$9$,!"$3$l$@$1B?NL$N=$@5$r0l(B
$B5$$KF~$l$k$N$OFq$7$$$@$m$&$HM=A[$7$F$*$j$^$9!#(B
$B!tF0:nJs9p$,$b$&>/$7B?$1$l$P6/$/%W%C%7%e$G$-$k$N$G$7$g$&$,(B
$B$J$N$G!"$$$/$D$+$NMWAG$KJ,2r$7$F!"$=$l$>$l$r8DJL$K(Bcommit$B$7$F$b$i$&J}K!$r(B
$B9M$($^$7$?!#(B

[FreeBSD-users-jp 74432]$B$O(B
(1)bswap()$B$,ITMW$J%b%G%kL>$NH=Dj$N6/2=(B
   $B$*$h$S(Bmodel/revision/serial$B$r%;%C%H$GBP>]$H$9$k(B
(2)CD-Extra$B$,(Bmount$B=PMh$J$$LdBj$N=$@5(B
(3)$B0lIt$N(BATAPI CD-ROM$B$G(B/dev/acd?t*$B$K$h$k(BCD-DA$B$N5[$$=P$7$,=PMh$J$$LdBj$N(B
   $B=$@5(B
(4)ATAPI CD-ROM quirk$B$NF3F~(B
   $B$*$h$S$=$l$rMxMQ$7$?(BNEC PC-CD60D$B$H(BSONY CDU700$B%7%j!<%:$X$N8DJLBP1~(B
(5)CD-Extra$B$N:G=*2;3Z%H%i%C%/$N%G!<%?D9$,D9$$$3$H$K5/0x$9$k3F<oLdBj$X$N(B
   $B%+!<%M%k%l%Y%k$G$NBP1~(B
$B$N(B5$B$D$KJ,$1$i$l$^$9!#(B

$B$3$N$&$AHf3SE*5DO@$N>/$J$$$H$3$m$G$"$m$&(B(3)$B$^$G$r:NMQ$7$F$b$i$$$?$$$H$$(B
$B$&$N$,EvLL$N4uK>$G$9!#E:IU%U%!%$%k$O$=$l$>$l(B
ata-all.diff   : (1)
atapi-cd.diff  : (2)
atapi-cd2.diff : (3)
$B$KBP1~$7$F$$$^$9!#(B

$BG0$N$?$aJdB-$7$F$*$/$H!"(B(1)$B$K$D$$$F$OFC$K!":#8=:_(Bmodel$B$7$+(Bbswap()$BITMW$H(B
$B$7$F$$$J$$$N$O4V0c$$$G!"(Bmodel/revision/serial$B$O%;%C%H$G07$o$J$1$l$P$J$j(B
$B$^$;$s!#(B
$B$3$l$O(BFreeBSD-users-jp$B$d(Bbsd-nomads$B$N2a5n%a!<%k$N(Bdmesg$B$r5y$k$H!"$$$/$i$G(B
$B$b<BNc$,=P$F$-$^$9!#$^$?(BNetBSD$B$d(BLinux$B$b%;%C%H$G07$C$F$$$^$9!#(B
FreeBSD$B<+BN$b(B2.2.x$B;~Be$O%;%C%H$G07$C$F$$$?$N$,!"$$$D$N4V$K$+(Bmodel$B$@$1$K(B
$B$J$C$F$7$^$C$F$$$?$N$G!"$I$3$+$G%(%s%P%0$7$F$7$^$C$?$N$G$7$g$&!#(B

(2)$B$K$D$$$F$O!"%G!<%?%H%i%C%/$r;H$&>l9g(B"cdp->block_size"$B$O(B2048$B$G$J$1$l$P(B
$B$J$i$J$$$N$G$9$,!"$=$l$r@hF,%H%i%C%/$N$_$GH=Dj$7$F$7$^$C$F$$$k$N$,%@%a$@(B
$B$H$$$&$3$H$G$9!#(B

(3)$B$,$A$g$C$H0z$C$+$+$k$H$3$m$@$H;W$$$^$9!#8=:_<+J,$,GD0.$7$F$$$k!V0lIt(B
$B$N(BATAPI CD-ROM$B!W$H$$$&$N$O(BSONY CDU76E$B$@$1$G!"(B(4)$B$NLdBj$K$D$$$F$OA4$/F1$8(B
$B?6Iq$$$r$9$k(BSONY CDU701$B$G$5$($b!"(B(3)$B$K$D$$$F$O8=>u$N%3!<%I$N$^$^F0:n$9$k(B
$B$H$N$3$H$G$9!#(B
$B$J$N$G!"$3$l$r$9$Y$F$N(BCD-ROM$B$,;H$&%Q%i%a!<%?$r$$$8$k$3$H$K$h$C$F2r7h$9$k(B
$B$N$O$*$+$7$$!a(B(4)$B$N(Bquirk$B$K$b$C$F$$$/$Y$-!"$H$$$&9M$(J}$O$"$k$G$7$g$&!#(B
$B$?$@!"8=>u$N%3!<%I$K$*$$$F$b!"(Bioctl()$B7PM3$G$N(BCD-DA$B5[$$=P$7$K$D$$$F$O(B
"ccb[1] = 4;"$B$H$$$&%Q%i%a!<%?$r@_Dj$7$F$$$k$3$H$+$i!"$3$NBP=h$G$bLdBj$J(B
$B$$$N$G$O!)$H$$$&$N$,<+J,$N9M$($G$9!#(B
-- 
$B<FED(B $B@i=U(B($B!i(B) chi@bd.mbn.or.jp
    $B%[!<%`%Z!<%8$N(BURL$B$,JQ$o$j$^$9(B! <http://www32.ocn.ne.jp/~chi/>
---=-mnews-multipart-=-
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Description: ata-all.diff
Content-Disposition: attachment; filename="ata-all.diff"

--- ata-all.c	2004/01/02 12:01:20	1.1
+++ ata-all.c	2004/01/02 12:01:23
@@ -495,16 +495,18 @@
 	     sizeof(struct ata_params)/sizeof(int16_t));
 
     if (command == ATA_C_ATA_IDENTIFY ||
-	!((ata_parm->model[0] == 'N' && ata_parm->model[1] == 'E') ||
-	  (ata_parm->model[0] == 'F' && ata_parm->model[1] == 'X') ||
-	  (ata_parm->model[0] == 'P' && ata_parm->model[1] == 'i')))
+	!(!strncmp(ata_parm->model, "NEC", 3) ||
+	  !strncmp(ata_parm->model, "FX", 2) ||		/* Mitsumi */
+	  !strncmp(ata_parm->model, "Pioneer", 7) ||
+	  !strncmp(ata_parm->model, "SHARP", 5))) {
 	bswap(ata_parm->model, sizeof(ata_parm->model));
+	bswap(ata_parm->revision, sizeof(ata_parm->revision));
+	bswap(ata_parm->serial, sizeof(ata_parm->serial));
+    }
     btrim(ata_parm->model, sizeof(ata_parm->model));
     bpack(ata_parm->model, ata_parm->model, sizeof(ata_parm->model));
-    bswap(ata_parm->revision, sizeof(ata_parm->revision));
     btrim(ata_parm->revision, sizeof(ata_parm->revision));
     bpack(ata_parm->revision, ata_parm->revision, sizeof(ata_parm->revision));
-    bswap(ata_parm->serial, sizeof(ata_parm->serial));
     btrim(ata_parm->serial, sizeof(ata_parm->serial));
     bpack(ata_parm->serial, ata_parm->serial, sizeof(ata_parm->serial));
     atadev->param = ata_parm;

---=-mnews-multipart-=-
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Description: atapi-cd.diff
Content-Disposition: attachment; filename="atapi-cd.diff"

--- atapi-cd.c	2004/01/02 12:01:13	1.1
+++ atapi-cd.c	2004/01/02 12:06:00	1.2
@@ -1308,7 +1308,13 @@
     }
     cdp->toc.hdr.len = ntohs(cdp->toc.hdr.len);
 
-    cdp->block_size = (cdp->toc.tab[0].control & 4) ? 2048 : 2352;
+    cdp->block_size = 2352;
+    for (track = 0; track < ntracks; track++) {
+	if (cdp->toc.tab[track].control & 4) {
+	    cdp->block_size = 2048;
+	    break;
+	}
+    }
     acd_set_ioparm(cdp);
     bzero(ccb, sizeof(ccb));
     ccb[0] = ATAPI_READ_CAPACITY;

---=-mnews-multipart-=-
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Description: atapi-cd2.diff
Content-Disposition: attachment; filename="atapi-cd2.diff"

--- atapi-cd.c	2004/01/02 12:06:00	1.2
+++ atapi-cd.c	2004/01/02 12:11:03
@@ -1203,6 +1203,7 @@
     }
     count = bp->b_bcount / blocksize;
 
+    ccb[1] = 0;
     if (bp->b_flags & B_READ) {
 	/* if transfer goes beyond range adjust it to be within limits */
 	if (lba + count > lastlba) {
@@ -1221,6 +1222,7 @@
 
 	case 2352: 
 	    ccb[0] = ATAPI_READ_CD;
+	    ccb[1] = 4;
 	    ccb[9] = 0xf8;
 	    break;
 
@@ -1232,7 +1234,6 @@
     else 
 	ccb[0] = ATAPI_WRITE_BIG;
     
-    ccb[1] = 0;
     ccb[2] = lba>>24;
     ccb[3] = lba>>16;
     ccb[4] = lba>>8;

---=-mnews-multipart-=---
