OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [Documentation/] [cdrom/] [cdu31a] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1625 jcastillo
 
2
                CDU31A/CDU33A Driver Info
3
                -------------------------
4
 
5
Information on the Sony CDU31A/CDU33A CDROM driver for the Linux
6
kernel.
7
 
8
   Corey Minyard (minyard@metronet.com)
9
 
10
   Colossians 3:17
11
 
12
Crude Table of Contents
13
-----------------------
14
 
15
  Setting Up the Hardware
16
  Configuring the Kernel
17
  Configuring as a Module
18
  Driver Special Features
19
 
20
 
21
This device driver handles Sony CDU31A/CDU33A CDROM drives and
22
provides a complete block-level interface as well as an ioctl()
23
interface as specified in include/linux/cdrom.h).  With this
24
interface, CDROMs can be accessed, standard audio CDs can be played
25
back normally, and CD audio information can be read off the drive.
26
 
27
Note that this will only work for CDU31A/CDU33A drives.  Some vendors
28
market their drives as CDU31A compatible.  They lie.  Their drives are
29
really CDU31A hardware interface compatible (they can plug into the
30
same card).  They are not software compatible.
31
 
32
Setting Up the Hardware
33
-----------------------
34
 
35
The CDU31A driver in unable to safely tell if an interface card is
36
present that it can use because the interface card does not announce
37
its presence in any way besides placing 4 I/O locations in memory.  It
38
used to just probe memory and attempt commands, but Linus wisely asked
39
me to remove that because it could really screw up other hardware in
40
the system.
41
 
42
Because of this, you must tell the kernel where the drive interface
43
is, what interrupts are used, and possibly if you are on a PAS-16
44
soundcard.
45
 
46
If you have the Sony CDU31A/CDU33A drive interface card, the following
47
diagram will help you set it up.  If You have another card, you are on
48
your own.  You need to make sure that the I/O address and interrupt is
49
not used by another card in the system.  You will need to know the I/O
50
address and interrupt you have set.  Note that use of interrupts is
51
highly recommended, if possible, it really cuts down on CPU used.
52
Unfortunately, most soundcards do not support interrupts for their
53
CDROM interfaces.  By default, the Sony interface card comes with
54
interrupts disabled.
55
 
56
        +----------+-----------------+----------------------+
57
        |  JP1     |  34 Pin Conn    |                      |
58
        |  JP2     +-----------------+                      |
59
        |  JP3                                              |
60
        |  JP4                                              |
61
        |                                                   +--+
62
        |                                                   |  +-+
63
        |                                                   |  | |  External
64
        |                                                   |  | |  Connector
65
        |                                                   |  | |
66
        |                                                   |  +-+
67
        |                                                   +--+
68
        |                                                   |
69
        |                                          +--------+
70
        |                                          |
71
        +------------------------------------------+
72
 
73
      JP1 sets the Base Address, using the following settings:
74
 
75
        Address         Pin 1           Pin 2
76
        -------         -----           -----
77
        0x320           Short           Short
78
        0x330           Short           Open
79
        0x340           Open            Short
80
        0x360           Open            Open
81
 
82
      JP2 and JP3 configure the DMA channel; they must be set the same.
83
 
84
        DMA             Pin 1           Pin 2           Pin 3
85
        ---             -----           -----           -----
86
        1               On              Off             On
87
        2               Off             On              Off
88
        3               Off             Off             On
89
 
90
      JP4 Configures the IRQ:
91
 
92
        IRQ     Pin 1           Pin 2           Pin 3           Pin 4
93
        ---     -----           -----           -----           -----
94
        3       Off             Off             On              Off
95
        4       Off             Off*            Off             On
96
        5       On              Off             Off             Off
97
        6       Off             On              Off             Off
98
 
99
                  The documentation states to set this for interrupt
100
                  4, but I think that is a mistake.
101
 
102
Note that if you have another interface card, you will need to look at
103
the documentation to find the I/O base address.  This is specified to
104
the SLCD.SYS driver for DOS with the /B: parameter, so you can look at
105
you DOS driver setup to find the address, if necessary.
106
 
107
Configuring the Kernel
108
----------------------
109
 
110
You must tell the kernel where the drive is at boot time.  This can be
111
done at the Linux boot prompt, by using LILO, or by using Bootlin.
112
Note that this is no substitute for HOWTOs and LILO documentation, if
113
you are confused please read those for info on bootline configuration
114
and LILO.
115
 
116
At the linux boot prompt, press the ALT key and add the following line
117
after the boot name (you can let the kernel boot, it will tell you the
118
default boot name while booting):
119
 
120
        cdu31a=,[,PAS]
121
 
122
The base address needs to have "0x" in front of it, since it is in
123
hex.  For instance, to configure a drive at address 320 on interrupt 5,
124
use the following:
125
 
126
        cdu31a=0x320,5
127
 
128
I use the following boot line:
129
 
130
        cdu31a=0x1f88,0,PAS
131
 
132
because I have a PAS-16 which does not support interrupt for the
133
CDU31A interface.
134
 
135
Adding this as an append line at the beginning of the /etc/lilo.conf
136
file will set it for lilo configurations.  I have the following as the
137
first line in my lilo.conf file:
138
 
139
        append="cdu31a=0x1f88,0"
140
 
141
I'm not sure how to set up Bootlin (I have never used it), if someone
142
would like to fill in this section please do.
143
 
144
 
145
Configuring as a Module
146
-----------------------
147
 
148
The driver supports loading as a module.  However, you must specify
149
the boot address and interrupt on the boot line to insmod.  You can't
150
use modprobe to load it, since modprobe doesn't support setting
151
variables.
152
 
153
Anyway, I use the following line to load my driver as a module
154
 
155
  /sbin/insmod /lib/modules/`uname -r`/misc/cdu31a.o cdu31a_port=0x1f88
156
 
157
You can set the following variables in the driver:
158
 
159
  cdu31a_port= - sets the base I/O.  If hex, put 0x in
160
                              front of it.  This must be specified.
161
 
162
  cdu31a_irq= - Sets the interrupt number.  Leaving this
163
                           off will turn interrupts off.
164
 
165
 
166
Driver Special Features
167
-----------------------
168
 
169
This section describes features beyond the normal audio and CD-ROM
170
functions of the drive.
171
 
172
2048 byte buffer mode
173
 
174
If a disk is mounted with -o block=2048, data is copied straight from
175
the drive data port to the buffer.  Otherwise, the readahead buffer
176
must be involved to hold the other 1K of data when a 1K block
177
operation is done.  Note that with 2048 byte blocks you cannot execute
178
files from the CD.
179
 
180
XA compatibility
181
 
182
The driver should support XA disks for both the CDU31A and CDU33A.  It
183
does this transparently, the using program doesn't need to set it.
184
 
185
Multi-Session
186
 
187
A multi-session disk looks just like a normal disk to the user.  Just
188
mount one normally, and all the data should be there.  A special
189
thanks to Koen for help with this!
190
 
191
Raw sector I/O
192
 
193
Using the CDROMREADAUDIO it is possible to read raw audio and data
194
tracks.  Both operations return 2352 bytes per sector.  On the data
195
tracks, the first 12 bytes is not returned by the drive and the value
196
of that data is indeterminate.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.