Deleted Added
full compact
mcd.c (13874) mcd.c (13886)
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-1995 by Andrey A. Chernov, Moscow, Russia
6 *
7 * Rewrote probe routine to work on newer Mitsumi drives.
8 * Additional changes (C) 1994 by Jordan K. Hubbard

--- 26 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 *
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-1995 by Andrey A. Chernov, Moscow, Russia
6 *
7 * Rewrote probe routine to work on newer Mitsumi drives.
8 * Additional changes (C) 1994 by Jordan K. Hubbard

--- 26 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 *
43 * $Id: mcd.c,v 1.68 1996/02/02 22:08:28 ache Exp $
43 * $Id: mcd.c,v 1.69 1996/02/03 00:06:49 ache Exp $
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>

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

1571 printf("mcd%d: subchan af=%d, df=%d\n", unit,
1572 sc->address_format,
1573 sc->data_format);
1574
1575 if (sc->address_format != CD_MSF_FORMAT &&
1576 sc->address_format != CD_LBA_FORMAT)
1577 return EINVAL;
1578
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>

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

1571 printf("mcd%d: subchan af=%d, df=%d\n", unit,
1572 sc->address_format,
1573 sc->data_format);
1574
1575 if (sc->address_format != CD_MSF_FORMAT &&
1576 sc->address_format != CD_LBA_FORMAT)
1577 return EINVAL;
1578
1579 if (sc->data_format != CD_CURRENT_POSITION)
1579 if (sc->data_format != CD_CURRENT_POSITION &&
1580 sc->data_format != CD_MEDIA_CATALOG)
1580 return EINVAL;
1581
1582 if (mcd_setmode(unit, MCD_MD_COOKED) != 0)
1583 return EIO;
1584
1585 if (mcd_getqchan(unit, &q) < 0)
1586 return EIO;
1587
1588 data.header.audio_status = cd->audio_status;
1589 data.what.position.data_format = sc->data_format;
1581 return EINVAL;
1582
1583 if (mcd_setmode(unit, MCD_MD_COOKED) != 0)
1584 return EIO;
1585
1586 if (mcd_getqchan(unit, &q) < 0)
1587 return EIO;
1588
1589 data.header.audio_status = cd->audio_status;
1590 data.what.position.data_format = sc->data_format;
1590 data.what.position.control = q.control;
1591 data.what.position.addr_type = q.addr_type;
1592 data.what.position.track_number = bcd2bin(q.trk_no);
1593 data.what.position.index_number = bcd2bin(q.idx_no);
1594 switch (sc->address_format) {
1595 case CD_MSF_FORMAT:
1596 data.what.position.reladdr.msf.unused = 0;
1597 data.what.position.reladdr.msf.minute = bcd2bin(q.trk_size_msf[0]);
1598 data.what.position.reladdr.msf.second = bcd2bin(q.trk_size_msf[1]);
1599 data.what.position.reladdr.msf.frame = bcd2bin(q.trk_size_msf[2]);
1600 data.what.position.absaddr.msf.unused = 0;
1601 data.what.position.absaddr.msf.minute = bcd2bin(q.hd_pos_msf[0]);
1602 data.what.position.absaddr.msf.second = bcd2bin(q.hd_pos_msf[1]);
1603 data.what.position.absaddr.msf.frame = bcd2bin(q.hd_pos_msf[2]);
1591
1592 switch (sc->data_format) {
1593 case CD_MEDIA_CATALOG:
1594 data.what.media_catalog.mc_valid = 1;
1595 data.what.media_catalog.mc_number[0] = '\0';
1604 break;
1596 break;
1605 case CD_LBA_FORMAT:
1606 lba = msf2hsg(q.trk_size_msf, 1);
1607 /*
1608 * Pre-gap has index number of 0, and decreasing MSF
1609 * address. Must be converted to negative LBA, per
1610 * SCSI spec.
1611 */
1612 if (data.what.position.index_number == 0)
1613 lba = -lba;
1614 data.what.position.reladdr.lba = htonl(lba);
1615 data.what.position.absaddr.lba = htonl(msf2hsg(q.hd_pos_msf, 0));
1597
1598 case CD_CURRENT_POSITION:
1599 data.what.position.control = q.control;
1600 data.what.position.addr_type = q.addr_type;
1601 data.what.position.track_number = bcd2bin(q.trk_no);
1602 data.what.position.index_number = bcd2bin(q.idx_no);
1603 switch (sc->address_format) {
1604 case CD_MSF_FORMAT:
1605 data.what.position.reladdr.msf.unused = 0;
1606 data.what.position.reladdr.msf.minute = bcd2bin(q.trk_size_msf[0]);
1607 data.what.position.reladdr.msf.second = bcd2bin(q.trk_size_msf[1]);
1608 data.what.position.reladdr.msf.frame = bcd2bin(q.trk_size_msf[2]);
1609 data.what.position.absaddr.msf.unused = 0;
1610 data.what.position.absaddr.msf.minute = bcd2bin(q.hd_pos_msf[0]);
1611 data.what.position.absaddr.msf.second = bcd2bin(q.hd_pos_msf[1]);
1612 data.what.position.absaddr.msf.frame = bcd2bin(q.hd_pos_msf[2]);
1613 break;
1614 case CD_LBA_FORMAT:
1615 lba = msf2hsg(q.trk_size_msf, 1);
1616 /*
1617 * Pre-gap has index number of 0, and decreasing MSF
1618 * address. Must be converted to negative LBA, per
1619 * SCSI spec.
1620 */
1621 if (data.what.position.index_number == 0)
1622 lba = -lba;
1623 data.what.position.reladdr.lba = htonl(lba);
1624 data.what.position.absaddr.lba = htonl(msf2hsg(q.hd_pos_msf, 0));
1625 break;
1626 }
1616 break;
1617 }
1618
1619 return copyout(&data, sc->data, min(sizeof(struct cd_sub_channel_info), sc->data_len));
1620}
1621
1622static int
1623mcd_playmsf(int unit, struct ioc_play_msf *p)

--- 193 unchanged lines hidden ---
1627 break;
1628 }
1629
1630 return copyout(&data, sc->data, min(sizeof(struct cd_sub_channel_info), sc->data_len));
1631}
1632
1633static int
1634mcd_playmsf(int unit, struct ioc_play_msf *p)

--- 193 unchanged lines hidden ---