aboutsummaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorRobert Göffringmann2006-06-07 07:01:21 +0000
committerRobert Göffringmann2006-06-07 07:01:21 +0000
commit36c52873a6ca9c140829b5a1da6a2942222f5181 (patch)
tree784023e81d8de01663355ae435009e87b38677eb /backends
parenta4bafca77974b6fc4ad5e1c70dafafdae9a04720 (diff)
downloadscummvm-rg350-36c52873a6ca9c140829b5a1da6a2942222f5181.tar.gz
scummvm-rg350-36c52873a6ca9c140829b5a1da6a2942222f5181.tar.bz2
scummvm-rg350-36c52873a6ca9c140829b5a1da6a2942222f5181.zip
EE RPC part of the cdvd driver...
svn-id: r22976
Diffstat (limited to 'backends')
-rw-r--r--backends/ps2/eecodyvdfs.c67
-rw-r--r--backends/ps2/eecodyvdfs.h52
2 files changed, 119 insertions, 0 deletions
diff --git a/backends/ps2/eecodyvdfs.c b/backends/ps2/eecodyvdfs.c
new file mode 100644
index 0000000000..655b5b941c
--- /dev/null
+++ b/backends/ps2/eecodyvdfs.c
@@ -0,0 +1,67 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2005-2006 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include <tamtypes.h>
+#include <kernel.h>
+#include <sifrpc.h>
+#include "eecodyvdfs.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+static SifRpcClientData_t cd0;
+static unsigned sbuff[64] __attribute__((aligned (64)));
+
+int driveStopped;
+
+int initCdvdFs(void) {
+ int res;
+ while(((res = SifBindRpc(&cd0, CDVDFS_IRX_ID, 0)) >= 0) && (cd0.server == NULL))
+ nopdelay();
+ driveStopped = 0;
+ return res;
+}
+
+void readRTC(struct CdClock *dest) {
+ SifCallRpc(&cd0, READ_RTC, 0, (void *)sbuff, 0, (void *)sbuff, 8, 0, 0);
+ memcpy(dest, sbuff, 8);
+}
+
+int driveStop(void) {
+ if (driveStopped)
+ return 0;
+ SifCallRpc(&cd0, DRIVE_STOP, 0, (void *)sbuff, 0, (void *)sbuff, 4, 0, 0);
+ if (*(int *)sbuff == 0)
+ driveStopped = 1;
+ return *(int *)sbuff;
+}
+
+int driveStandby(void) {
+ if (!driveStopped)
+ return 0;
+ SifCallRpc(&cd0, DRIVE_STANDBY, 0, (void *)sbuff, 0, (void *)sbuff, 4, 0, 0);
+ if (*(int *)sbuff == 0)
+ driveStopped = 0;
+ return *(int *)sbuff;
+}
+
+
diff --git a/backends/ps2/eecodyvdfs.h b/backends/ps2/eecodyvdfs.h
new file mode 100644
index 0000000000..9e58d35687
--- /dev/null
+++ b/backends/ps2/eecodyvdfs.h
@@ -0,0 +1,52 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2005-2006 The ScummVM project
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#ifndef EECDVDFS_H
+#define EECDVDFS_H
+
+#include <tamtypes.h>
+#include "iop/CoDyVDfs/common/codyvdirx.h"
+
+struct CdClock {
+ u8 stat;
+ u8 second;
+ u8 minute;
+ u8 hour;
+ u8 padding;
+ u8 day;
+ u8 month;
+ u8 year;
+} __attribute__((packed));
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+ int initCdvdFs(void);
+ void readRTC(struct CdClock *dest);
+ int driveStop(void);
+ int driveStandby(void);
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+