freebsd-src/sys/dev/usb
Kenneth D. Merry 56eac725a3 Fix ATAPI/USB/Firewire CDROM drive handling in cd(4) and hopefully fix
a number of related problems along the way.

 - Automatically detect CDROM drives that can't handle 6 byte mode
   sense and mode select, and adjust our command size accordingly.
   We have to handle this in the cd(4) driver (where the buffers are
   allocated), since the parameter list length is different for the
   6 and 10 byte mode sense commands.

 - Remove MODE_SENSE and MODE_SELECT translation removed in ATAPICAM
   and in the umass(4) driver, since there's no way for that to work
   properly.

 - Add a quirk entry for CDROM drives that just hang when they get a 6
   byte mode sense or mode select.  The reason for the quirk must be
   documented in a PR, and all quirks must be approved by
   ken@FreeBSD.org.  This is to make sure that we fully understand why
   each quirk is needed.  Once the CAM_NEW_TRAN_CODE is finished, we
   should be able to remove any such quirks, since we'll know what
   protocol the drive speaks (SCSI, ATAPI, etc.) and therefore whether
   we should use 6 or 10 byte mode sense/select commands.

 - Change the way the da(4) handles the no_6_byte sysctl.  There is
   now a per-drive sysctl to set the minimum command size for that
   particular disk.  (Since you could have multiple disks with
   multiple requirements in one system.)

 - Loader tunable support for all the sysctls in the da(4) and cd(4)
   drivers.

 - Add a CDIOCCLOSE ioctl for cd(4) (bde pointed this out a long
   time ago).

 - Add a media validation routine (cdcheckmedia()) to the cd(4)
   driver, to fix some problems bde pointed out a long time ago.  We
   now allow open() to succeed no matter what, but if we don't detect
   valid media, the user can only issue CDIOCCLOSE or CDIOCEJECT
   ioctls.

 - The media validation routine also reads the table of contents off
   the drive.  We use the table of contents to implement the
   CDIOCPLAYTRACKS ioctl using the PLAY AUDIO MSF command.  The
   PLAY AUDIO TRACK INDEX command that we previously used was
   deprecated after SCSI-2.  It works in every SCSI CDROM I've tried,
   but doesn't seem to work on ATAPI CDROM drives.  We still use the
   play audio track index command if we don't have a valid TOC, but
   I suppose it'll fail anyway in that case.

 - Add _len() versions of scsi_mode_sense() and scsi_mode_select() so
   that we can specify the minimum command length.

 - Fix a couple of formatting problems in the sense printing code.

MFC after: 	4 weeks
2003-02-21 06:19:38 +00:00
..
devlist2h.awk
dsbr100io.h
FILES
hid.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
hid.h
if_aue.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
if_auereg.h network interface driver changes: 2002-11-14 23:54:55 +00:00
if_cue.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
if_cuereg.h network interface driver changes: 2002-11-14 23:54:55 +00:00
if_kue.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
if_kuereg.h network interface driver changes: 2002-11-14 23:54:55 +00:00
kue_fw.h
Makefile.usbdevs
ohci.c Fix two bugs in the DMA chaining code for OHCI. The first bug is that 2002-12-20 18:47:39 +00:00
ohci_pci.c
ohcireg.h
ohcivar.h
rio500_usb.h
ubsa.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
ucom.c Fix a typo in a console message. 2002-11-17 13:33:55 +00:00
ucomvar.h
udbp.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
udbp.h
ufm.c There's no need for a locally defined usb_proc_t when we've got 2002-11-06 14:29:27 +00:00
uftdi.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
uftdireg.h
ugen.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
ugraphire_rdesc.h
uhci.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
uhci_pci.c
uhcireg.h
uhcivar.h
uhid.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
uhub.c
ukbd.c
ulpt.c Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup, 2003-01-01 18:49:04 +00:00
umass.c Fix ATAPI/USB/Firewire CDROM drive handling in cd(4) and hopefully fix 2003-02-21 06:19:38 +00:00
umodem.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
ums.c
uplcom.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
urio.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
usb.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
usb.h Packed structures are defined differently in older gcc's, like the one 2002-11-06 21:37:21 +00:00
usb_ethersubr.c network interface driver changes: 2002-11-14 23:54:55 +00:00
usb_ethersubr.h
usb_if.m
usb_mem.h
usb_port.h
usb_quirks.c Add support YAMAHA NetVolante Routers 2003-02-12 13:20:39 +00:00
usb_quirks.h
usb_subr.c Some USB devices are not prepared to deal with a single byte string 2003-01-14 23:07:43 +00:00
usbcdc.h Merge from NetBSD and arrange for FreeBSD's slight differences in 2003-01-09 04:24:28 +00:00
usbdevs Add support SUNTAC Ir-Trinity IS96U 2003-02-13 12:55:18 +00:00
usbdevs.h Sync to 1.114 of usbdevs 2003-02-13 12:57:24 +00:00
usbdevs_data.h Sync to 1.114 of usbdevs 2003-02-13 12:57:24 +00:00
usbdi.c
usbdi.h
usbdi_util.c
usbdi_util.h
usbdivar.h
usbhid.h
uscanner.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
uvisor.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
uvscom.c Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00