Support for dvd region code (RPC).

This commit is contained in:
veego 2001-12-09 22:56:10 +00:00
parent f36a75214e
commit 9d39bbf3a8
1 changed files with 31 additions and 2 deletions

View File

@ -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);
}