Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Nov 2007 16:39:40 +0900
From:      Watanabe Kazuhiro <CQG00620@nifty.ne.jp>
To:        freebsd-current <freebsd-current@freebsd.org>
Subject:   An ATAPI CD-ROM drive doesn't work with 7.0-BETA2, but it works with 7.0-BETA1 and 6.3-BETA1
Message-ID:  <20071111073940.E35C74AE2D@mail.asahi-net.or.jp>

next in thread | raw e-mail | index | archive | help
Hi, all.

I've tried to install FreeBSD/pc98 7.0-BETA2 to PC-9821Xa9 via FTP.
Installation is finished sucessfully.  
But cannot use the internal ATAPI CD-ROM drive.

aries# uname -a
FreeBSD aries.sign.local 7.0-BETA2 FreeBSD 7.0-BETA2 #1: Sun Nov 11 00:16:42
JST 2007     nabe@aries.sign.local:/usr/src/sys/pc98/compile/GENERIC  pc98
aries# dmesg | grep ^acd
acd0: <CD-ROM CDU76E-NE/1.0d> CDROM drive at ata1 as master
acd0: read 689KB/s (689KB/s), 256KB buffer, PIO2
acd0: Reads: CDDA stream
acd0: Writes:
acd0: Audio: play, 256 volume levels
acd0: Mechanism: ejectable tray, unlocked
acd0: Medium: CD-ROM unknown
aries# mount_cd9660 -v /dev/acd0 /mnt
could not determine starting sector, using very first session
mount_cd9660: /dev/acd0: Input/output error
aries# cdcontrol info
cdcontrol: /dev/acd0: Input/output error
aries# cdcontrol status
cdcontrol: /dev/acd0: Input/output error
aries# 

The CD-ROM drive works well with 7.0-BETA1 and 6.3-BETA1.

To use the CD-ROM drive with 7.0-BETA2, I have to apply a quick patch
described below and recompile the kernel:

--- sys/dev/ata/atapi-cd.c.orig 2007-11-01 04:59:53.000000000 +0900
+++ sys/dev/ata/atapi-cd.c      2007-11-11 00:15:21.000000000 +0900
@@ -696,12 +696,16 @@
        if (!acd_mode_sense(dev, ATAPI_CDROM_CAP_PAGE,
                            (caddr_t)&cdp->cap, sizeof(cdp->cap)) &&
                            cdp->cap.page_code == ATAPI_CDROM_CAP_PAGE) {
+#if 0
            if ((cdp->cap.medium_type == MST_FMT_NONE) ||
                (cdp->cap.medium_type == MST_NO_DISC) ||
                (cdp->cap.medium_type == MST_DOOR_OPEN) ||
                (cdp->cap.medium_type == MST_FMT_ERROR))
                return EIO;
            else
+#else
+           printf("cap.medium_type:%d\n", cdp->cap.medium_type);
+#endif
                break;
        }
        pause("acdld", hz / 2);

The value of cdp->cap.medium_type is 0 (MST_FMT_NONE).
---
Watanabe Kazuhiro (CQG00620@nifty.ne.jp)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071111073940.E35C74AE2D>