summaryrefslogtreecommitdiff
path: root/plugins/dfcdrom/cdr-linux.c
diff options
context:
space:
mode:
authorSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2009-11-26 15:29:20 +0000
committerSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2009-11-26 15:29:20 +0000
commit24054df7ea8081b4a4b9875344b37458ec8502a5 (patch)
tree5bfa94e8ac0899b30a8456f5faf188392a78d1ce /plugins/dfcdrom/cdr-linux.c
parent93e34824a3aaa71b3d9f423311c7ca1f67f4fd73 (diff)
downloadpcsxr-24054df7ea8081b4a4b9875344b37458ec8502a5.tar.gz
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@38278 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'plugins/dfcdrom/cdr-linux.c')
-rw-r--r--plugins/dfcdrom/cdr-linux.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/plugins/dfcdrom/cdr-linux.c b/plugins/dfcdrom/cdr-linux.c
index 66905cbf..7860e920 100644
--- a/plugins/dfcdrom/cdr-linux.c
+++ b/plugins/dfcdrom/cdr-linux.c
@@ -17,6 +17,10 @@
#include "cdr.h"
+#ifndef CDROMSETSPINDOWN
+#define CDROMSETSPINDOWN 0x531e
+#endif
+
static inline int msf_to_lba(char m, char s, char f) {
return (((m * CD_SECS) + s) * CD_FRAMES + f) - CD_MSF_OFFSET;
}
@@ -55,6 +59,8 @@ long CDRshutdown(void) {
}
long CDRopen(void) {
+ char spindown;
+
LoadConf();
if (cdHandle > 0)
@@ -64,6 +70,9 @@ long CDRopen(void) {
ioctl(cdHandle, CDROM_LOCKDOOR, 0);
// ioctl(cdHandle, CDROMSTART, NULL);
+ spindown = (char)SpinDown;
+ ioctl(cdHandle, CDROMSETSPINDOWN, &spindown);
+
ioctl(cdHandle, CDROM_SELECT_SPEED, CdrSpeed);
} else {
fprintf(stderr, "CDR: Could not open %s\n", CdromDev);
@@ -101,9 +110,13 @@ long CDRopen(void) {
}
long CDRclose(void) {
+ char spindown;
+
if (cdHandle < 1) return 0;
if (playing) CDRstop();
+ spindown = SPINDOWN_VENDOR_SPECIFIC;
+ ioctl(cdHandle, CDROMSETSPINDOWN, &spindown);
close(cdHandle);
cdHandle = -1;
@@ -419,6 +432,7 @@ long CDRgetStatus(struct CdrStat *stat) {
struct cdrom_subchnl sc;
int ret;
static time_t to;
+ char spindown;
if (cdHandle < 1)
return -1;
@@ -460,6 +474,8 @@ long CDRgetStatus(struct CdrStat *stat) {
stat->Status |= 0x10;
break;
default:
+ spindown = (char)SpinDown;
+ ioctl(cdHandle, CDROMSETSPINDOWN, &spindown);
ioctl(cdHandle, CDROM_LOCKDOOR, 0);
break;
}
@@ -554,7 +570,6 @@ void ExecCfg(char *arg) {
long CDRconfigure() {
ExecCfg("configure");
-
return 0;
}