Deleted Added
full compact
scd.c (137046) scd.c (141031)
1/*-
2 * Copyright (c) 1995 Mikael Hybsch
3 * All rights reserved.
4 *
5 * Portions of this file are copied from mcd.c
6 * which has the following copyrights:
7 *
8 * Copyright 1993 by Holger Veit (data part)

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

36 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
39 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 *
41 */
42
43#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1995 Mikael Hybsch
3 * All rights reserved.
4 *
5 * Portions of this file are copied from mcd.c
6 * which has the following copyrights:
7 *
8 * Copyright 1993 by Holger Veit (data part)

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

36 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
39 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 *
41 */
42
43#include <sys/cdefs.h>
44__FBSDID("$FreeBSD: head/sys/dev/scd/scd.c 137046 2004-10-29 11:09:50Z phk $");
44__FBSDID("$FreeBSD: head/sys/dev/scd/scd.c 141031 2005-01-30 08:12:37Z sobomax $");
45
46
47#undef SCD_DEBUG
48
49#include <sys/param.h>
50#include <sys/systm.h>
51#include <sys/kernel.h>
52#include <sys/conf.h>

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

126
127static int scd_eject(struct scd_softc *);
128static int scd_stop(struct scd_softc *);
129static int scd_pause(struct scd_softc *);
130static int scd_resume(struct scd_softc *);
131static int scd_playtracks(struct scd_softc *, struct ioc_play_track *pt);
132static int scd_playmsf(struct scd_softc *, struct ioc_play_msf *msf);
133static int scd_play(struct scd_softc *, struct ioc_play_msf *msf);
45
46
47#undef SCD_DEBUG
48
49#include <sys/param.h>
50#include <sys/systm.h>
51#include <sys/kernel.h>
52#include <sys/conf.h>

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

126
127static int scd_eject(struct scd_softc *);
128static int scd_stop(struct scd_softc *);
129static int scd_pause(struct scd_softc *);
130static int scd_resume(struct scd_softc *);
131static int scd_playtracks(struct scd_softc *, struct ioc_play_track *pt);
132static int scd_playmsf(struct scd_softc *, struct ioc_play_msf *msf);
133static int scd_play(struct scd_softc *, struct ioc_play_msf *msf);
134static int scd_subchan(struct scd_softc *, struct ioc_read_subchannel *sch);
134static int scd_subchan(struct scd_softc *, struct ioc_read_subchannel *sch, int nocopyout);
135static int read_subcode(struct scd_softc *, struct sony_subchannel_position_data *sch);
136
137/* for xcdplayer */
138static int scd_toc_header(struct scd_softc *, struct ioc_toc_header *th);
139static int scd_toc_entrys(struct scd_softc *, struct ioc_read_toc_entry *te);
140static int scd_toc_entry(struct scd_softc *, struct ioc_read_toc_single_entry *te);
141#define SCD_LASTPLUS1 170 /* don't ask, xcdplayer passes this in */
142

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

345 return (0);
346 break;
347 case CDIOCPLAYTRACKS:
348 return scd_playtracks(sc, (struct ioc_play_track *) addr);
349 case CDIOCPLAYBLOCKS:
350 return (EINVAL);
351 case CDIOCPLAYMSF:
352 return scd_playmsf(sc, (struct ioc_play_msf *) addr);
135static int read_subcode(struct scd_softc *, struct sony_subchannel_position_data *sch);
136
137/* for xcdplayer */
138static int scd_toc_header(struct scd_softc *, struct ioc_toc_header *th);
139static int scd_toc_entrys(struct scd_softc *, struct ioc_read_toc_entry *te);
140static int scd_toc_entry(struct scd_softc *, struct ioc_read_toc_single_entry *te);
141#define SCD_LASTPLUS1 170 /* don't ask, xcdplayer passes this in */
142

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

345 return (0);
346 break;
347 case CDIOCPLAYTRACKS:
348 return scd_playtracks(sc, (struct ioc_play_track *) addr);
349 case CDIOCPLAYBLOCKS:
350 return (EINVAL);
351 case CDIOCPLAYMSF:
352 return scd_playmsf(sc, (struct ioc_play_msf *) addr);
353 case CDIOCREADSUBCHANNEL_SYSSPACE:
354 return scd_subchan(sc, (struct ioc_read_subchannel *) addr, 1);
353 case CDIOCREADSUBCHANNEL:
355 case CDIOCREADSUBCHANNEL:
354 return scd_subchan(sc, (struct ioc_read_subchannel *) addr);
356 return scd_subchan(sc, (struct ioc_read_subchannel *) addr, 0);
355 case CDIOREADTOCHEADER:
356 return scd_toc_header (sc, (struct ioc_toc_header *) addr);
357 case CDIOREADTOCENTRYS:
358 return scd_toc_entrys (sc, (struct ioc_read_toc_entry*) addr);
359 case CDIOREADTOCENTRY:
360 return scd_toc_entry (sc, (struct ioc_read_toc_single_entry*) addr);
361 case CDIOCSETPATCH:
362 case CDIOCGETVOL:

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

539 send_cmd(sc, CMD_EJECT, 0) != 0)
540 {
541 return (EIO);
542 }
543 return (0);
544}
545
546static int
357 case CDIOREADTOCHEADER:
358 return scd_toc_header (sc, (struct ioc_toc_header *) addr);
359 case CDIOREADTOCENTRYS:
360 return scd_toc_entrys (sc, (struct ioc_read_toc_entry*) addr);
361 case CDIOREADTOCENTRY:
362 return scd_toc_entry (sc, (struct ioc_read_toc_single_entry*) addr);
363 case CDIOCSETPATCH:
364 case CDIOCGETVOL:

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

541 send_cmd(sc, CMD_EJECT, 0) != 0)
542 {
543 return (EIO);
544 }
545 return (0);
546}
547
548static int
547scd_subchan(struct scd_softc *sc, struct ioc_read_subchannel *sch)
549scd_subchan(struct scd_softc *sc, struct ioc_read_subchannel *sch, int nocopyout)
548{
549 struct sony_subchannel_position_data q;
550 struct cd_sub_channel_info data;
551
552 XDEBUG(sc, 1, "subchan af=%d, df=%d\n",
553 sch->address_format, sch->data_format);
554
555 if (sch->address_format != CD_MSF_FORMAT)

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

568 data.what.position.reladdr.msf.minute = bcd2bin(q.rel_msf[0]);
569 data.what.position.reladdr.msf.second = bcd2bin(q.rel_msf[1]);
570 data.what.position.reladdr.msf.frame = bcd2bin(q.rel_msf[2]);
571 data.what.position.absaddr.msf.unused = 0;
572 data.what.position.absaddr.msf.minute = bcd2bin(q.abs_msf[0]);
573 data.what.position.absaddr.msf.second = bcd2bin(q.abs_msf[1]);
574 data.what.position.absaddr.msf.frame = bcd2bin(q.abs_msf[2]);
575
550{
551 struct sony_subchannel_position_data q;
552 struct cd_sub_channel_info data;
553
554 XDEBUG(sc, 1, "subchan af=%d, df=%d\n",
555 sch->address_format, sch->data_format);
556
557 if (sch->address_format != CD_MSF_FORMAT)

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

570 data.what.position.reladdr.msf.minute = bcd2bin(q.rel_msf[0]);
571 data.what.position.reladdr.msf.second = bcd2bin(q.rel_msf[1]);
572 data.what.position.reladdr.msf.frame = bcd2bin(q.rel_msf[2]);
573 data.what.position.absaddr.msf.unused = 0;
574 data.what.position.absaddr.msf.minute = bcd2bin(q.abs_msf[0]);
575 data.what.position.absaddr.msf.second = bcd2bin(q.abs_msf[1]);
576 data.what.position.absaddr.msf.frame = bcd2bin(q.abs_msf[2]);
577
576 if (copyout(&data, sch->data, min(sizeof(struct cd_sub_channel_info), sch->data_len))!=0)
577 return (EFAULT);
578 if (nocopyout == 0) {
579 if (copyout(&data, sch->data, min(sizeof(struct cd_sub_channel_info), sch->data_len))!=0)
580 return (EFAULT);
581 } else {
582 bcopy(&data, sch->data, min(sizeof(struct cd_sub_channel_info), sch->data_len));
583 }
578 return (0);
579}
580
581int
582scd_probe(struct scd_softc *sc)
583{
584 struct sony_drive_configuration drive_config;
585 int rc;

--- 820 unchanged lines hidden ---
584 return (0);
585}
586
587int
588scd_probe(struct scd_softc *sc)
589{
590 struct sony_drive_configuration drive_config;
591 int rc;

--- 820 unchanged lines hidden ---