diff options
| author | veego <veego@NetBSD.org> | 2001-12-09 22:56:10 +0000 |
|---|---|---|
| committer | veego <veego@NetBSD.org> | 2001-12-09 22:56:10 +0000 |
| commit | 9d39bbf3a8edf4a003d7b466cba114079ec99786 (patch) | |
| tree | 976e7b8847bfcc940c80c672f2dac34686472991 /sys/dev | |
| parent | f36a75214ef5e7a4c485da7b78f26dc39faa02f8 (diff) | |
Support for dvd region code (RPC).
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/scsipi/cd.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/sys/dev/scsipi/cd.c b/sys/dev/scsipi/cd.c index 8f9be59ce1c..af2002ca33f 100644 --- a/sys/dev/scsipi/cd.c +++ b/sys/dev/scsipi/cd.c @@ -1,4 +1,4 @@ -/* $NetBSD: cd.c,v 1.160 2001/11/15 09:48:16 lukem Exp $ */ +/* $NetBSD: cd.c,v 1.161 2001/12/09 22:56:10 veego Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -54,7 +54,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.160 2001/11/15 09:48:16 lukem Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.161 2001/12/09 22:56:10 veego Exp $"); #include "rnd.h" @@ -1893,6 +1893,35 @@ dvd_auth(cd, a) return (error); return (0); + case DVD_LU_SEND_RPC_STATE: + cmd.opcode = GPCMD_REPORT_KEY; + cmd.bytes[8] = 8; + cmd.bytes[9] = 8 | (0 << 6); + error = scsipi_command(cd->sc_periph, &cmd, 12, buf, 8, + CDRETRIES, 30000, NULL, + XS_CTL_DATA_IN|XS_CTL_DATA_ONSTACK); + if (error) + return (error); + a->lrpcs.type = (buf[8] >> 6) & 3; + a->lrpcs.vra = (buf[8] >> 3) & 7; + a->lrpcs.ucca = (buf[8]) & 7; + a->lrpcs.region_mask = buf[9]; + a->lrpcs.rpc_scheme = buf[10]; + return (0); + + case DVD_HOST_SEND_RPC_STATE: + cmd.opcode = GPCMD_SEND_KEY; + cmd.bytes[8] = 8; + cmd.bytes[9] = 6 | (0 << 6); + buf[1] = 6; + buf[4] = a->hrpcs.pdrc; + error = scsipi_command(cd->sc_periph, &cmd, 12, buf, 8, + CDRETRIES, 30000, NULL, + XS_CTL_DATA_OUT|XS_CTL_DATA_ONSTACK); + if (error) + return (error); + return (0); + default: return (ENOTTY); } |
