Deleted Added
full compact
mcd.c (2526) mcd.c (2762)
1/*
2 * Copyright 1993 by Holger Veit (data part)
3 * Copyright 1993 by Brian Moore (audio part)
4 * Changes Copyright 1993 by Gary Clark II
5 *
6 * Rewrote probe routine to work on newer Mitsumi drives.
7 * Additional changes (C) 1994 by Jordan K. Hubbard
8 *

--- 25 unchanged lines hidden (view full) ---

34 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
35 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
36 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
37 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
38 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
39 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
40 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41 *
1/*
2 * Copyright 1993 by Holger Veit (data part)
3 * Copyright 1993 by Brian Moore (audio part)
4 * Changes Copyright 1993 by Gary Clark II
5 *
6 * Rewrote probe routine to work on newer Mitsumi drives.
7 * Additional changes (C) 1994 by Jordan K. Hubbard
8 *

--- 25 unchanged lines hidden (view full) ---

34 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
35 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
36 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
37 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
38 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
39 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
40 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41 *
42 * $Id: mcd.c,v 1.23 1994/09/03 16:48:12 ache Exp $
42 * $Id: mcd.c,v 1.24 1994/09/06 21:56:09 se Exp $
43 */
44static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
45
46#include "mcd.h"
47#if NMCD > 0
48#include <sys/types.h>
49#include <sys/param.h>
50#include <sys/systm.h>

--- 139 unchanged lines hidden (view full) ---

190#define MCDRBLK 2352 /* for raw mode */
191
192/* several delays */
193#define RDELAY_WAITSTAT 300
194#define RDELAY_WAITMODE 300
195#define RDELAY_WAITREAD 800
196
197#define MIN_DELAY 15
43 */
44static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
45
46#include "mcd.h"
47#if NMCD > 0
48#include <sys/types.h>
49#include <sys/param.h>
50#include <sys/systm.h>

--- 139 unchanged lines hidden (view full) ---

190#define MCDRBLK 2352 /* for raw mode */
191
192/* several delays */
193#define RDELAY_WAITSTAT 300
194#define RDELAY_WAITMODE 300
195#define RDELAY_WAITREAD 800
196
197#define MIN_DELAY 15
198#define DELAY_GETREPLY 1200000
198#define DELAY_GETREPLY 1300000
199
200int mcd_attach(struct isa_device *dev)
201{
202 struct mcd_data *cd = mcd_data + dev->id_unit;
203 int i;
204
205 cd->iobase = dev->id_iobase;
206 cd->flags |= MCDINIT;

--- 740 unchanged lines hidden (view full) ---

947 mcd_put(com_port,rbuf.start_msf[0]);
948 mcd_put(com_port,rbuf.start_msf[1]);
949 mcd_put(com_port,rbuf.start_msf[2]);
950 mcd_put(com_port,0);
951 mcd_put(com_port,0);
952 mcd_put(com_port,1);
953 enable_intr();
954
199
200int mcd_attach(struct isa_device *dev)
201{
202 struct mcd_data *cd = mcd_data + dev->id_unit;
203 int i;
204
205 cd->iobase = dev->id_iobase;
206 cd->flags |= MCDINIT;

--- 740 unchanged lines hidden (view full) ---

947 mcd_put(com_port,rbuf.start_msf[0]);
948 mcd_put(com_port,rbuf.start_msf[1]);
949 mcd_put(com_port,rbuf.start_msf[2]);
950 mcd_put(com_port,0);
951 mcd_put(com_port,0);
952 mcd_put(com_port,1);
953 enable_intr();
954
955 /* Spin briefly (<= 2ms) to avoid missing next block */
956 for (i = 0; i < 20; i++) {
957 k = inb(port+mcd_xfer);
958 if (!(k & 2))
959 goto got_it;
960 DELAY(100);
961 }
962
955 mbx->count = RDELAY_WAITREAD;
956 timeout((timeout_func_t)mcd_doread,
957 (caddr_t)MCD_S_WAITREAD,hz/100); /* XXX */
958 return;
959 case MCD_S_WAITREAD:
960 untimeout((timeout_func_t)mcd_doread,(caddr_t)MCD_S_WAITREAD);
961 if (mbx->count-- > 0) {
962 k = inb(port+mcd_xfer);
963 if (!(k & 2)) { /* XXX */
964 MCD_TRACE("got data delay=%d\n",
965 RDELAY_WAITREAD-mbx->count,0,0,0);
963 mbx->count = RDELAY_WAITREAD;
964 timeout((timeout_func_t)mcd_doread,
965 (caddr_t)MCD_S_WAITREAD,hz/100); /* XXX */
966 return;
967 case MCD_S_WAITREAD:
968 untimeout((timeout_func_t)mcd_doread,(caddr_t)MCD_S_WAITREAD);
969 if (mbx->count-- > 0) {
970 k = inb(port+mcd_xfer);
971 if (!(k & 2)) { /* XXX */
972 MCD_TRACE("got data delay=%d\n",
973 RDELAY_WAITREAD-mbx->count,0,0,0);
974 got_it:
966 /* data is ready */
967 addr = bp->b_un.b_addr + mbx->skip;
968
969 outb(port+mcd_ctl2,0x04); /* XXX */
970 for (i=0; i<mbx->sz; i++)
971 *addr++ = inb(data_port);
972 outb(port+mcd_ctl2,0x0c); /* XXX */
973

--- 473 unchanged lines hidden ---
975 /* data is ready */
976 addr = bp->b_un.b_addr + mbx->skip;
977
978 outb(port+mcd_ctl2,0x04); /* XXX */
979 for (i=0; i<mbx->sz; i++)
980 *addr++ = inb(data_port);
981 outb(port+mcd_ctl2,0x0c); /* XXX */
982

--- 473 unchanged lines hidden ---