diff options
author | mav <mav@FreeBSD.org> | 2012-01-03 17:04:09 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2012-01-03 17:04:09 +0000 |
commit | fdb02172b93fa5ee918acca9b500e0b2bc2a7098 (patch) | |
tree | 563304645d7f2ea88ddd06c17f5e19fe77767c03 | |
parent | dd61fe0873effbc4d17cf7dabc455d8155066adb (diff) | |
download | FreeBSD-src-fdb02172b93fa5ee918acca9b500e0b2bc2a7098.zip FreeBSD-src-fdb02172b93fa5ee918acca9b500e0b2bc2a7098.tar.gz |
Add support for CDRIOCGETBLOCKSIZE and CDRIOCSETBLOCKSIZE IOCTLs to control
sector size same as acd driver does. Together with r228808 and r228847 this
allows existing multimedia/vlc to play Audio CDs via CAM cd driver.
PR: ports/162190
MFC after: 1 week
-rw-r--r-- | sys/cam/scsi/scsi_cd.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/cam/scsi/scsi_cd.c b/sys/cam/scsi/scsi_cd.c index 06823f2..5e88a97 100644 --- a/sys/cam/scsi/scsi_cd.c +++ b/sys/cam/scsi/scsi_cd.c @@ -2685,6 +2685,16 @@ cdioctl(struct disk *dp, u_long cmd, void *addr, int flag, struct thread *td) error = cdsetspeed(periph, CDR_MAX_SPEED, *(u_int32_t *)addr); cam_periph_unlock(periph); break; + case CDRIOCGETBLOCKSIZE: + *(int *)addr = softc->params.blksize; + break; + case CDRIOCSETBLOCKSIZE: + if (*(int *)addr <= 0) { + error = EINVAL; + break; + } + softc->disk->d_sectorsize = softc->params.blksize = *(int *)addr; + break; case DVDIOCSENDKEY: case DVDIOCREPORTKEY: { struct dvd_authinfo *authinfo; |