Deleted Added
full compact
mcd.c (4389) mcd.c (4390)
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
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 * Changes Copyright (C) 1994 by Andrew A. Chernov
5 *
6 * Rewrote probe routine to work on newer Mitsumi drives.
7 * Additional changes (C) 1994 by Jordan K. Hubbard
8 *
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions

--- 21 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 *
6 *
7 * Rewrote probe routine to work on newer Mitsumi drives.
8 * Additional changes (C) 1994 by Jordan K. Hubbard
9 *
10 * All rights reserved.
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions

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

35 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
36 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
37 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
38 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
39 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
40 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
41 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42 *
42 * $Id: mcd.c,v 1.27 1994/10/27 20:44:50 jkh Exp $
43 * $Id: mcd.c,v 1.28 1994/11/12 13:26:11 ache 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>

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

1293{
1294 struct mcd_data *cd = mcd_data + unit;
1295
1296 if (mcd_send(unit, MCD_CMDGETQCHN, MCD_RETRYS) < 0)
1297 return -1;
1298 if (mcd_get(unit, (char *) q, sizeof(struct mcd_qchninfo)) < 0)
1299 return -1;
1300 if (cd->debug) {
44 */
45static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
46
47#include "mcd.h"
48#if NMCD > 0
49#include <sys/types.h>
50#include <sys/param.h>
51#include <sys/systm.h>

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

1294{
1295 struct mcd_data *cd = mcd_data + unit;
1296
1297 if (mcd_send(unit, MCD_CMDGETQCHN, MCD_RETRYS) < 0)
1298 return -1;
1299 if (mcd_get(unit, (char *) q, sizeof(struct mcd_qchninfo)) < 0)
1300 return -1;
1301 if (cd->debug) {
1301 printf("mcd%d: qchannel ctl=%d trk=%d ind=%d pos=%d:%d.%d\n",
1302 printf("mcd%d: getqchan ctl=%d trk=%d ind=%d ttm=%d:%d.%d dtm=%d:%d.%d\n",
1302 unit,
1303 q->ctrl_adr, bcd2bin(q->trk_no), bcd2bin(q->idx_no),
1303 unit,
1304 q->ctrl_adr, bcd2bin(q->trk_no), bcd2bin(q->idx_no),
1305 bcd2bin(q->trk_size_msf[0]), bcd2bin(q->trk_size_msf[1]),
1306 bcd2bin(q->trk_size_msf[2]),
1304 bcd2bin(q->hd_pos_msf[0]), bcd2bin(q->hd_pos_msf[1]),
1305 bcd2bin(q->hd_pos_msf[2]));
1306 }
1307 return 0;
1308}
1309
1310static int
1311mcd_subchan(int unit, struct ioc_read_subchannel *sc)

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

1329 return EIO;
1330
1331 if (mcd_getqchan(unit, &q) < 0)
1332 return EIO;
1333
1334 data.header.audio_status = cd->audio_status;
1335 data.what.position.data_format = CD_MSF_FORMAT;
1336 data.what.position.track_number = bcd2bin(q.trk_no);
1307 bcd2bin(q->hd_pos_msf[0]), bcd2bin(q->hd_pos_msf[1]),
1308 bcd2bin(q->hd_pos_msf[2]));
1309 }
1310 return 0;
1311}
1312
1313static int
1314mcd_subchan(int unit, struct ioc_read_subchannel *sc)

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

1332 return EIO;
1333
1334 if (mcd_getqchan(unit, &q) < 0)
1335 return EIO;
1336
1337 data.header.audio_status = cd->audio_status;
1338 data.what.position.data_format = CD_MSF_FORMAT;
1339 data.what.position.track_number = bcd2bin(q.trk_no);
1340 data.what.position.reladdr.msf.unused = 0;
1341 data.what.position.reladdr.msf.minute = bcd2bin(q.trk_size_msf[0]);
1342 data.what.position.reladdr.msf.second = bcd2bin(q.trk_size_msf[1]);
1343 data.what.position.reladdr.msf.frame = bcd2bin(q.trk_size_msf[2]);
1344 data.what.position.absaddr.msf.unused = 0;
1345 data.what.position.absaddr.msf.minute = bcd2bin(q.hd_pos_msf[0]);
1346 data.what.position.absaddr.msf.second = bcd2bin(q.hd_pos_msf[1]);
1347 data.what.position.absaddr.msf.frame = bcd2bin(q.hd_pos_msf[2]);
1337
1348
1338 if (copyout(&data, sc->data, sizeof(struct cd_sub_channel_info))!=0)
1349 if (copyout(&data, sc->data, min(sizeof(struct cd_sub_channel_info), sc->data_len))!=0)
1339 return EFAULT;
1340 return 0;
1341}
1342
1343static int
1344mcd_playmsf(int unit, struct ioc_play_msf *pt)
1345{
1346 struct mcd_read2 pb;

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

1360
1361static int
1362mcd_playtracks(int unit, struct ioc_play_track *pt)
1363{
1364 struct mcd_data *cd = mcd_data + unit;
1365 struct mcd_read2 pb;
1366 int a = pt->start_track;
1367 int z = pt->end_track;
1350 return EFAULT;
1351 return 0;
1352}
1353
1354static int
1355mcd_playmsf(int unit, struct ioc_play_msf *pt)
1356{
1357 struct mcd_read2 pb;

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

1371
1372static int
1373mcd_playtracks(int unit, struct ioc_play_track *pt)
1374{
1375 struct mcd_data *cd = mcd_data + unit;
1376 struct mcd_read2 pb;
1377 int a = pt->start_track;
1378 int z = pt->end_track;
1368 int rc;
1379 int rc, i;
1369
1370 if ((rc = mcd_read_toc(unit)) != 0)
1371 return rc;
1372
1373 if (cd->debug)
1374 printf("mcd%d: playtracks from %d:%d to %d:%d\n", unit,
1375 a, pt->start_index, z, pt->end_index);
1376
1377 if ( a < bcd2bin(cd->volinfo.trk_low)
1378 || a > bcd2bin(cd->volinfo.trk_high)
1379 || a > z
1380 || z < bcd2bin(cd->volinfo.trk_low)
1381 || z > bcd2bin(cd->volinfo.trk_high))
1382 return EINVAL;
1383
1380
1381 if ((rc = mcd_read_toc(unit)) != 0)
1382 return rc;
1383
1384 if (cd->debug)
1385 printf("mcd%d: playtracks from %d:%d to %d:%d\n", unit,
1386 a, pt->start_index, z, pt->end_index);
1387
1388 if ( a < bcd2bin(cd->volinfo.trk_low)
1389 || a > bcd2bin(cd->volinfo.trk_high)
1390 || a > z
1391 || z < bcd2bin(cd->volinfo.trk_low)
1392 || z > bcd2bin(cd->volinfo.trk_high))
1393 return EINVAL;
1394
1384 pb.start_msf[0] = cd->toc[a].hd_pos_msf[0];
1385 pb.start_msf[1] = cd->toc[a].hd_pos_msf[1];
1386 pb.start_msf[2] = cd->toc[a].hd_pos_msf[2];
1387 pb.end_msf[0] = cd->toc[z+1].hd_pos_msf[0];
1388 pb.end_msf[1] = cd->toc[z+1].hd_pos_msf[1];
1389 pb.end_msf[2] = cd->toc[z+1].hd_pos_msf[2];
1395 for (i = 0; i < 3; i++) {
1396 pb.start_msf[i] = cd->toc[a].hd_pos_msf[i];
1397 pb.end_msf[i] = cd->toc[z+1].hd_pos_msf[i];
1398 }
1390
1391 return mcd_play(unit, &pb);
1392}
1393
1394static int
1395mcd_play(int unit, struct mcd_read2 *pb)
1396{
1397 struct mcd_data *cd = mcd_data + unit;

--- 78 unchanged lines hidden ---
1399
1400 return mcd_play(unit, &pb);
1401}
1402
1403static int
1404mcd_play(int unit, struct mcd_read2 *pb)
1405{
1406 struct mcd_data *cd = mcd_data + unit;

--- 78 unchanged lines hidden ---