summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2012-01-03 17:04:09 +0000
committermav <mav@FreeBSD.org>2012-01-03 17:04:09 +0000
commitfdb02172b93fa5ee918acca9b500e0b2bc2a7098 (patch)
tree563304645d7f2ea88ddd06c17f5e19fe77767c03
parentdd61fe0873effbc4d17cf7dabc455d8155066adb (diff)
downloadFreeBSD-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.c10
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;
OpenPOWER on IntegriCloud