diff --git a/sys/dev/scsipi/cd.c b/sys/dev/scsipi/cd.c index 8f9be59ce1c8..af2002ca33fa 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 -__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); }