mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Changes from bugress@s069.infonet.net NOT installed (expect one
cosmetique) because we already have right things there or his changes are incorrect. Fix mcd_subchan to return position, inspired by idea from bugress@s069.infonet.net, but different implementation.
This commit is contained in:
parent
866c34f93a
commit
9c971e7df2
2 changed files with 38 additions and 20 deletions
|
|
@ -2,6 +2,7 @@
|
|||
* Copyright 1993 by Holger Veit (data part)
|
||||
* Copyright 1993 by Brian Moore (audio part)
|
||||
* Changes Copyright 1993 by Gary Clark II
|
||||
* Changes Copyright (C) 1994 by Andrew A. Chernov
|
||||
*
|
||||
* Rewrote probe routine to work on newer Mitsumi drives.
|
||||
* Additional changes (C) 1994 by Jordan K. Hubbard
|
||||
|
|
@ -39,7 +40,7 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: mcd.c,v 1.27 1994/10/27 20:44:50 jkh Exp $
|
||||
* $Id: mcd.c,v 1.28 1994/11/12 13:26:11 ache Exp $
|
||||
*/
|
||||
static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
|
||||
|
||||
|
|
@ -1298,9 +1299,11 @@ mcd_getqchan(int unit, struct mcd_qchninfo *q)
|
|||
if (mcd_get(unit, (char *) q, sizeof(struct mcd_qchninfo)) < 0)
|
||||
return -1;
|
||||
if (cd->debug) {
|
||||
printf("mcd%d: qchannel ctl=%d trk=%d ind=%d pos=%d:%d.%d\n",
|
||||
printf("mcd%d: getqchan ctl=%d trk=%d ind=%d ttm=%d:%d.%d dtm=%d:%d.%d\n",
|
||||
unit,
|
||||
q->ctrl_adr, bcd2bin(q->trk_no), bcd2bin(q->idx_no),
|
||||
bcd2bin(q->trk_size_msf[0]), bcd2bin(q->trk_size_msf[1]),
|
||||
bcd2bin(q->trk_size_msf[2]),
|
||||
bcd2bin(q->hd_pos_msf[0]), bcd2bin(q->hd_pos_msf[1]),
|
||||
bcd2bin(q->hd_pos_msf[2]));
|
||||
}
|
||||
|
|
@ -1334,8 +1337,16 @@ mcd_subchan(int unit, struct ioc_read_subchannel *sc)
|
|||
data.header.audio_status = cd->audio_status;
|
||||
data.what.position.data_format = CD_MSF_FORMAT;
|
||||
data.what.position.track_number = bcd2bin(q.trk_no);
|
||||
data.what.position.reladdr.msf.unused = 0;
|
||||
data.what.position.reladdr.msf.minute = bcd2bin(q.trk_size_msf[0]);
|
||||
data.what.position.reladdr.msf.second = bcd2bin(q.trk_size_msf[1]);
|
||||
data.what.position.reladdr.msf.frame = bcd2bin(q.trk_size_msf[2]);
|
||||
data.what.position.absaddr.msf.unused = 0;
|
||||
data.what.position.absaddr.msf.minute = bcd2bin(q.hd_pos_msf[0]);
|
||||
data.what.position.absaddr.msf.second = bcd2bin(q.hd_pos_msf[1]);
|
||||
data.what.position.absaddr.msf.frame = bcd2bin(q.hd_pos_msf[2]);
|
||||
|
||||
if (copyout(&data, sc->data, sizeof(struct cd_sub_channel_info))!=0)
|
||||
if (copyout(&data, sc->data, min(sizeof(struct cd_sub_channel_info), sc->data_len))!=0)
|
||||
return EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1365,7 +1376,7 @@ mcd_playtracks(int unit, struct ioc_play_track *pt)
|
|||
struct mcd_read2 pb;
|
||||
int a = pt->start_track;
|
||||
int z = pt->end_track;
|
||||
int rc;
|
||||
int rc, i;
|
||||
|
||||
if ((rc = mcd_read_toc(unit)) != 0)
|
||||
return rc;
|
||||
|
|
@ -1381,12 +1392,10 @@ mcd_playtracks(int unit, struct ioc_play_track *pt)
|
|||
|| z > bcd2bin(cd->volinfo.trk_high))
|
||||
return EINVAL;
|
||||
|
||||
pb.start_msf[0] = cd->toc[a].hd_pos_msf[0];
|
||||
pb.start_msf[1] = cd->toc[a].hd_pos_msf[1];
|
||||
pb.start_msf[2] = cd->toc[a].hd_pos_msf[2];
|
||||
pb.end_msf[0] = cd->toc[z+1].hd_pos_msf[0];
|
||||
pb.end_msf[1] = cd->toc[z+1].hd_pos_msf[1];
|
||||
pb.end_msf[2] = cd->toc[z+1].hd_pos_msf[2];
|
||||
for (i = 0; i < 3; i++) {
|
||||
pb.start_msf[i] = cd->toc[a].hd_pos_msf[i];
|
||||
pb.end_msf[i] = cd->toc[z+1].hd_pos_msf[i];
|
||||
}
|
||||
|
||||
return mcd_play(unit, &pb);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
* Copyright 1993 by Holger Veit (data part)
|
||||
* Copyright 1993 by Brian Moore (audio part)
|
||||
* Changes Copyright 1993 by Gary Clark II
|
||||
* Changes Copyright (C) 1994 by Andrew A. Chernov
|
||||
*
|
||||
* Rewrote probe routine to work on newer Mitsumi drives.
|
||||
* Additional changes (C) 1994 by Jordan K. Hubbard
|
||||
|
|
@ -39,7 +40,7 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: mcd.c,v 1.27 1994/10/27 20:44:50 jkh Exp $
|
||||
* $Id: mcd.c,v 1.28 1994/11/12 13:26:11 ache Exp $
|
||||
*/
|
||||
static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
|
||||
|
||||
|
|
@ -1298,9 +1299,11 @@ mcd_getqchan(int unit, struct mcd_qchninfo *q)
|
|||
if (mcd_get(unit, (char *) q, sizeof(struct mcd_qchninfo)) < 0)
|
||||
return -1;
|
||||
if (cd->debug) {
|
||||
printf("mcd%d: qchannel ctl=%d trk=%d ind=%d pos=%d:%d.%d\n",
|
||||
printf("mcd%d: getqchan ctl=%d trk=%d ind=%d ttm=%d:%d.%d dtm=%d:%d.%d\n",
|
||||
unit,
|
||||
q->ctrl_adr, bcd2bin(q->trk_no), bcd2bin(q->idx_no),
|
||||
bcd2bin(q->trk_size_msf[0]), bcd2bin(q->trk_size_msf[1]),
|
||||
bcd2bin(q->trk_size_msf[2]),
|
||||
bcd2bin(q->hd_pos_msf[0]), bcd2bin(q->hd_pos_msf[1]),
|
||||
bcd2bin(q->hd_pos_msf[2]));
|
||||
}
|
||||
|
|
@ -1334,8 +1337,16 @@ mcd_subchan(int unit, struct ioc_read_subchannel *sc)
|
|||
data.header.audio_status = cd->audio_status;
|
||||
data.what.position.data_format = CD_MSF_FORMAT;
|
||||
data.what.position.track_number = bcd2bin(q.trk_no);
|
||||
data.what.position.reladdr.msf.unused = 0;
|
||||
data.what.position.reladdr.msf.minute = bcd2bin(q.trk_size_msf[0]);
|
||||
data.what.position.reladdr.msf.second = bcd2bin(q.trk_size_msf[1]);
|
||||
data.what.position.reladdr.msf.frame = bcd2bin(q.trk_size_msf[2]);
|
||||
data.what.position.absaddr.msf.unused = 0;
|
||||
data.what.position.absaddr.msf.minute = bcd2bin(q.hd_pos_msf[0]);
|
||||
data.what.position.absaddr.msf.second = bcd2bin(q.hd_pos_msf[1]);
|
||||
data.what.position.absaddr.msf.frame = bcd2bin(q.hd_pos_msf[2]);
|
||||
|
||||
if (copyout(&data, sc->data, sizeof(struct cd_sub_channel_info))!=0)
|
||||
if (copyout(&data, sc->data, min(sizeof(struct cd_sub_channel_info), sc->data_len))!=0)
|
||||
return EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1365,7 +1376,7 @@ mcd_playtracks(int unit, struct ioc_play_track *pt)
|
|||
struct mcd_read2 pb;
|
||||
int a = pt->start_track;
|
||||
int z = pt->end_track;
|
||||
int rc;
|
||||
int rc, i;
|
||||
|
||||
if ((rc = mcd_read_toc(unit)) != 0)
|
||||
return rc;
|
||||
|
|
@ -1381,12 +1392,10 @@ mcd_playtracks(int unit, struct ioc_play_track *pt)
|
|||
|| z > bcd2bin(cd->volinfo.trk_high))
|
||||
return EINVAL;
|
||||
|
||||
pb.start_msf[0] = cd->toc[a].hd_pos_msf[0];
|
||||
pb.start_msf[1] = cd->toc[a].hd_pos_msf[1];
|
||||
pb.start_msf[2] = cd->toc[a].hd_pos_msf[2];
|
||||
pb.end_msf[0] = cd->toc[z+1].hd_pos_msf[0];
|
||||
pb.end_msf[1] = cd->toc[z+1].hd_pos_msf[1];
|
||||
pb.end_msf[2] = cd->toc[z+1].hd_pos_msf[2];
|
||||
for (i = 0; i < 3; i++) {
|
||||
pb.start_msf[i] = cd->toc[a].hd_pos_msf[i];
|
||||
pb.end_msf[i] = cd->toc[z+1].hd_pos_msf[i];
|
||||
}
|
||||
|
||||
return mcd_play(unit, &pb);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue