Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!simtel!news.sprintlink.net!EU.net!sun4nl!news.iaf.nl!iafnl.iaf.nl!fozzie.sun3.iaf.nl!root
From: geert@sun3.iaf.nl (Geert Bosch)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: Panasonic 52x CDROM support
Date: 20 Sep 1995 01:18:51 GMT
Organization: La Calandre Infortunee
Lines: 186
Message-ID: <43nq5r$bbu@fozzie.sun3.iaf.nl>
References: <DF12ux.8r@nemesis.lonestar.org>
Reply-To: geert@sun3.iaf.nl
NNTP-Posting-Host: fozzie.sun3.iaf.nl
:The problem is that there is no documentation on what the 522/523 command
:set *is*. All we know is that it is different, mainly because Matsushita
:says so and the 562/563 DOS drivers don't work on 522/523 hardware.
This night I browsed through the Linux sources (which include support for the 52x as well as
the 56x drives) and I noticed that the Linux driver was much less readable than the
FreeBSD driver. I made the following table which outlines the CD-ROM commands used in
the Linux and the BSD driver:
Drive Commands: CR-52x CR-56x
0 1
Seek 01 01
Read Data READ 02 10
Read XA-Data 03
Read Header 04
Spin Up 05 02
Spin Down DOOROPEN 06 06
Diagnostic 07
Read UPC 08 88?
Read ISRC 09
Play Audio 0A PLAYTRKS?
Play Audio MSF PLAYBLOCKS 0B 0E
Play Audio Track/Index 0C
Reset 0A
LockCtl LOCK 0C
TrayCtl DOORCLOSE 07
SubChanInf? 11
- ABORT 08
- PLAYTRKS 0F
Status Commands:
Read Status NOP 81 05?
Read Error READERROR 82 82
Read Drive Version READID 83 83
Mode Select (set mode) MODESELECT 84 09
Mode Sense (get mode) MODESENSE 85 84
Set XA Parameter 86
Read XA Parameter 87
Read Capacity 88 85
Read SUB_Q READSUBQ 89 87
Read Disc Code 8A
Read Disc Information READDINFO 8B 8B
Read TOC READTOC 8C 8C
Pause/Resume PAUSE 8D 0D
Read Packet 8E 8E
MultiSession 8D
Read Path Check 00
/*
* bits of the CDi_status register:
*/
#define s_not_result_ready 0x04 /* 0: "result ready" */
#define s_not_data_ready 0x02 /* 0: "data ready" */
#define s_attention 0x01 /* 1: "attention required", */
/*
* "generation specific" defs of the status_byte:
*/
/* CR-52x */
#define p0_door_closed 0x80
#define p0_caddy_in 0x40
#define p0_spinning 0x20
#define p0_check 0x10
#define p0_success 0x08 /* unused */
#define p0_busy 0x04
#define p0_bit_1 0x02 /* unused */
#define p0_disk_ok 0x01
/* CR-56x */
#define p1_door_closed 0x80
#define p1_disk_in 0x40
#define p1_spinning 0x20
#define p1_check 0x10
#define p1_busy 0x08
#define p1_door_locked 0x04
#define p1_bit_1 0x02 /* unused */
#define p1_disk_ok 0x01
:There may be differences in addition to the command set, such as how the commands
:and data transfers handshake, length of commands, timing, etc.
There appeared to be a difference in reading the results of a command: for the 52x
it is neccessary to wait for (inb(port + 1) & 0x04) to become zero, before reading
each byte of the result.
:The Creative interface is pretty stupid and without interrupts or DMA, it is up to the
:driver to know when it has waited "long enough".
The advantage of a stupid interface without interrupts and DMA is that it is (should be)
easier to program for.
:
:The TEAC CD55A is a similar problem. It connects to the Creative interface,
:but has a completely different command structure than the 562/563 (10 bytes
:versus 7), and the CD55A uses the control signals differently than the
:562/563 drives do.
The TEAC drive implementation isn't complete in the Linux driver: the driver is
only recognized.
The 52x drives use the same command length: only the command codes are
different, the parameters appear to be identical. The status results are also
a little different.
:Also like the 522/523, the CD55A has no published command set. So a lot of
:effort has to go into finding out how to operate the hardware.
The Linux sources do contain the commands needed to use the 52x, but as
I'm a novice on the subject of Unix driver hacking it wasn't easy to browse
through a device driver source of 130 kB (the Linux one). Implementing
the changes needed to at least recognize the 52x turned out to be very
hard too: I didn't succeed in doing it this night, maybe somebody can help.
I'll include the diff's I made until now with this posting.
:
:If you have information on the 522/523 command set and precise programming
:details, that will help getting support added for those drives.
Precise details are a little hard, but I hope somebody can help me sort things out.
Greetings,
Geert
--
E-Mail: geert@sun3.iaf.nl
Phone: +31-53-303054
begin 666 matcd.diff.Z
M'YV0*@*":!.&SA@R7][(27/&Q9@$5-#4 :&DCAL0(&* D"%#APP<'F%DS)&C
MAH(6* <6/.@PP94R9$!,*0-GHT@8,W34Z!CCQLB2"@(*'4I415"!,63 D,$B
M:0P;((8JP)CT09-[ D?-&3!D45:_"44B'15@0!Q?:*9-B*H@];A-8G,/0
M#4RT:,+(0=N&S)8F0; ,:4)D2A(M778H" '"[8@T9LB4,0-"2I$I1:@\<2+D
MR1,J<;/**3.G#!T48^6439MF;8H="1*\4"&%M&D0=_)>;<,0S56O(-[4V2O9
M3IHQ952\<%SG((&9;QJR9LV<JRN,*IR,&-=D54) $P<P"QNO8LWD\]7&D
MCMXP5LN4 3&'3L$Z<T# R5LZ.\8$>I3!U1=C](5"@62\%A>"6\#010]./ $%
M;.BI$ 0(HX4QQQMNA"$&&WF D)<<;;!!6GYCO-$&0<ZY$%=L"?R'441IH*@B
MBS'=D08;;(!@1A@[@A"&&70(^&)L,NKWQAT"ME!'30H)2:2 &-I&APL@1%30
M"?D]L81_(#P6V62579;99IU]%A=T*+1957>IT;'"%%0$04454Z0 @@D@H$ $
M%44XP0>=@::@9P@]]/EGH(,"ZH2A(/#!!T;IK0=FC!CU^:9WJJU A)U!')HH
M#'B888:ALJF@G@T^9(=2"QDIQ512-,P PJLMN'565EMU]=59<9IE%5IDJ,66
M6W#]-U===XTQ(E]^ 288888AIAAC8DI&V1!2[(3%8B#(Y09=9]@5D[-Z8550
M&%LDE1BX"9R5!@L@Z'%MF&6P49ICD&E;)G5H7A>:0E9RNEJQK;%%H716XJ;;
M0+W]-I]PQ)5A'')@CM#<<Y1)9V9U:6*WW KX.@?=;-QZFQW)"I"<+9DIR_ M
MR0 *^ :!!B*H(,T,.@A"HI8%04014DCQA!2*T4R000C-P<:2"!I,+PSTLK96
MU7WM'.[2!WVQ51EAD"$U"#G02\:Z6B=PAFE?U%?0V%8KW'*X<]<\8-0Z)QUN
MSUW\7*;021"A=P)GV]=@WZ/B 0,,@W/=]--W1!TL"%03:RS6"3:^$D)?ASUV
M4F:C/;@>?J]-1]OVG39YW%J_3-G00E1QA(2!UIW 5F&9@8((CNL A'K@G#&
M&U?=H2$()>"!O/+)+^]\\QB)P(+MF59?.+L.LG!]NUUHO^X6,G2OKN$S=+\]
M#>9_7T,7:=^^D%6ZB^ V'?B!($8>12[/A1O2Z]'ZQI!)%>QD1SLGK"Q<V\,!
MXBBG.,;5#7?PVUWO?F<L$- A#W"83XV0-P<7[$]ZXPO#_TS6,17$# N7V@Z<
MOA.>\12A/.=)U:K8XQXYP*=(\YE?_?:CH>0LYS\!NEO.LJ:8__ -0A*B4*HN
ME*$-=>A#(1I1B4Z$EAO!APPN^@^,DD0C&ZWHBKC948]^%*0A%4D.1\(4IL;"
M)#DX"4I[,2.51E.:*V5)-UP"@9<.R*\Q468Z9[*.FO[#)C>Y886=HI.=\*0G
M/OG)48TJE*@4!4E"/4I/DJ*4JBSUPW!5#RR'-)BG0#5)4ID*595B57:*PLJ
M'$4%&:'!4IHBRQQ$12AQ(4(2@C"[*E#!3[L\ A2.1H7RX"$'YEF8"J: AB4Y
M3$#S89*01I,Q )90E[P<IA1$YA9PA<:&59$<65@0-Q:P 6&N@<ULFA"&->1P
M./,10_TVF"$>A2@-9#!1QOI%I@$>83!$6! >>C &.!0Q7!"D0_P<5P(R^,X(
M&KK*3)RC)-4XKS0]:F@5OTC1YGF4>2!]'AX^.+U7Q5(&98M!K7R"JUP&\PF^
M!&8VB6E,9,9P-LQT9FZ@B9OYZ,6'S"%A=%2 36$2$TS@$I-S8-8MF7T32&X0
MIVK(B<XRF+.JYUEG.]\Y&OO-,S_U!!$(\*G/D96,8T,]X3[]^+LBQ.Z?A!$H
M00T:EX0N=',-?6A$9;*QBEZE>1A%WKFLV-&0?E2D^N/?]%K)RE>>= :TG(%&
MI&)2E=8@!K2\ 0YN]2JW(/4_9H@26'K N+'R 4V@($*DC"%(,1N"DM @A9>
M,]85K$!/<'$99):ZK:9^2XND2Q0H$2DG1=XI3XVD)*,LJ2 MLHETB%*NH)BK
M)S%D: UZTYB^RF"[X&HJE'&:4YV."RE'D@H&-&C?<W\VJNI>-[O6C$L?YN8Z
M$)QP;G.;C4M\VE4W.+,,:: #&JA4%2&%,#A[T6%^>%@:>AVMIQ9,0QM@TH+M
MN("/-%MO=,WS%OKR\W5NE1U ;6=7">+5H?8E;$SH(.$R5+@.="#I.8TU0K3.
MQI\ /6!L1D,_.;@!!2V(0=KFFV'*H""X[>TPS1+ X^'\6,B#(S*^MMM-3>YW
MFO/Q[QU & !$_@B83APE!2L'_Y858]2@#"+)TR&%U\)J8PMBF-5.@,<T)(&
M/I$*(8T,W40MZE$=UF*3?8P"*,LW+H/^<3+=,E^,G*0QFL25I"=-Z4I;^M*8
MSG1G_^.XMD$.0;<"01+F,(<Z^'2C.++@&RPX8*P8JYN5I0$.:D#+'-" LRA9
M$Y]!$-T_X_9%B2YT<\,E98T)%66^O52P%XV11D-ZJ)J.MK2G3>VX=-II4.M+
MJ$==ZE.GB*,K7K6779VP;L:9*'.N@0ULT)0:W,!6E$W)4V( V:?,0 :XSA5&
M[/ &?*J$:5[+D-B -<ZQ#BM%%BD+")95KF8]"Y;7:PM&DA6NL,0KNQ^V+Q&\
M53>+JV%P##<77M)5'_B2L,KA"NU>1EO:-/ X5;906UOJ^0P97P(&W<JS53>
M)S7T8 :+6YS,U<#K40T=)6VA66[#E8#Z^&U3<0(!R0R]9#:% 5.Y]-YT^M>
ML&&W;GT8')N(WH,DV[5/O-N<[]9<ANT8_-]=ZQP9/ECCDYDPYRCL9&Q4<#W;
0/AV\WP'HL!/@;":;QLF* =N<
end