aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgermeier <germeier>2003-09-22 19:15:37 +0000
committergermeier <germeier>2003-09-22 19:15:37 +0000
commitce401721a26259112c7d0be8f90bb344b296b32d (patch)
tree1ae1c67b9b63a0b124d2b7086eb8fb44399e960c
parent4e70fad8a3472f7d8d95a32160de477ca3ea311a (diff)
downloadmpiosh-ce401721a26259112c7d0be8f90bb344b296b32d.tar.gz
mpiosh-ce401721a26259112c7d0be8f90bb344b296b32d.tar.bz2
mpiosh-ce401721a26259112c7d0be8f90bb344b296b32d.zip
added Johns patch to support the VirginPulse VP-01 player
assume VirginPulse VP-02 player is a FL100 clone small fix
-rw-r--r--ChangeLog9
-rw-r--r--kernel/mpio.c11
-rw-r--r--libmpio/defs.h6
-rw-r--r--libmpio/src/mpio.c18
4 files changed, 39 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index aed82cc..d3000dd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2003-09-22 Markus Germeier <mager@tzi.de>
+ * added Johns patch to support the VirginPulse
+ VP-01 player. (Thanks!)
+ * small fixes to John patch
+ * assumed the upcoming VP-02 is a FL100 clone
+ so updated the code accordingly
+ * small and dirty hack for '.' in firmware
+ release numbers
+
2003-08-01 Markus Germeier <mager@tzi.de>
* configure.in: bumped version to 0.7.0
diff --git a/kernel/mpio.c b/kernel/mpio.c
index d1e5440..79c3bad 100644
--- a/kernel/mpio.c
+++ b/kernel/mpio.c
@@ -8,6 +8,7 @@
* additions by Markus Germeier (mager@tzi.de):
* - small adaptions for Kernel 2.4.x support
* - find endpoints automagically (needed for newer players)
+ * - added ID for VirginPulse branded players
*
* based on rio500.c by Cesar Miquel (miquel@df.uba.ar)
*
@@ -58,7 +59,7 @@
/*
* Version Information
*/
-#define DRIVER_VERSION "0.0.3"
+#define DRIVER_VERSION "0.7.0"
#define DRIVER_AUTHOR "Yuji Touya <salmoon@users.sourceforge.net>"
#define DRIVER_DESC "USB MPIO driver"
@@ -307,12 +308,17 @@ static void *probe_mpio(struct usb_device *dev, unsigned int ifnum)
return NULL;
}
- if (dev->descriptor.idProduct != 0x1 /* MPIO all models??? */ ) {
+ if ((dev->descriptor.idProduct != 0x1 /* MPIO all models??? */ )
+ /* Virgin VP-01 (FY100 clone),
+ probably all VirginPulse/MPIO players */
+ && (dev->descriptor.idProduct != 0x71)) {
warn(KERN_INFO "MPIO player model not supported/tested.");
return NULL;
}
info("USB MPIO found at address %d", dev->devnum);
+ if (dev->descriptor.idProduct == 0x71)
+ info("player is a VirginPulse branded player");
as = dev->config->interface->altsetting;
mpio->bulk_in_ep = mpio->bulk_out_ep = 0;
@@ -392,6 +398,7 @@ static void disconnect_mpio(struct usb_device *dev, void *ptr)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
static struct usb_device_id mpio_table [] = {
{ USB_DEVICE(0x2735, 1) }, /* MPIO-* (all models?) */
+ { USB_DEVICE(0x2735, 0x71) }, /* Virgin VP-01 (FY100?) */
{ } /* Terminating entry */
};
diff --git a/libmpio/defs.h b/libmpio/defs.h
index 10033b3..819ca88 100644
--- a/libmpio/defs.h
+++ b/libmpio/defs.h
@@ -1,5 +1,5 @@
/*
- * $Id: defs.h,v 1.29 2003/07/24 16:17:30 germeier Exp $
+ * $Id: defs.h,v 1.30 2003/09/22 19:15:37 germeier Exp $
*
* libmpio - a library for accessing Digit@lways MPIO players
* Copyright (C) 2002, 2003 Markus Germeier
@@ -50,7 +50,9 @@ typedef enum { MPIO_MODEL_DME = 0x00,
MPIO_MODEL_FD100 = 0x06,
MPIO_MODEL_FL100 = 0x07,
MPIO_MODEL_FY100 = 0x08,
- MPIO_MODEL_UNKNOWN = 0x09 } mpio_model_t;
+ MPIO_MODEL_VP_01 = 0x09,
+ MPIO_MODEL_VP_02 = 0x0a,
+ MPIO_MODEL_UNKNOWN = 0x0b } mpio_model_t;
/* USB commands */
typedef enum { GET_VERSION = 0x01,
diff --git a/libmpio/src/mpio.c b/libmpio/src/mpio.c
index 99d747a..ce96087 100644
--- a/libmpio/src/mpio.c
+++ b/libmpio/src/mpio.c
@@ -1,5 +1,5 @@
/*
- * $Id: mpio.c,v 1.7 2003/07/24 16:17:30 germeier Exp $
+ * $Id: mpio.c,v 1.8 2003/09/22 19:15:37 germeier Exp $
*
* libmpio - a library for accessing Digit@lways MPIO players
* Copyright (C) 2002, 2003 Markus Germeier
@@ -63,6 +63,8 @@ static BYTE *mpio_model_name[] = {
"MPIO-FD100",
"MPIO-FL100",
"MPIO-FY100",
+ "VirginPulse VP-01",
+ "VirginPulse VP-02",
"unknown"
};
@@ -233,6 +235,7 @@ mpio_init_external(mpio_t *m)
e_offset++;
if ((mpio_id_valid(m->version[e_offset])) &&
+ (m->model != MPIO_MODEL_VP_02) &&
(m->model != MPIO_MODEL_FL100)) /* ignore external memory ATM until
we know how to support it! */
{
@@ -309,6 +312,8 @@ mpio_init(mpio_callback_init_t progress_callback)
if (new_mpio->version[i] == 0x00)
new_mpio->version[i]=' ';
snprintf(new_mpio->firmware.major, 3, "%s", new_mpio->version + 0x0c);
+ if (new_mpio->firmware.major[1] == '.') /* small and dirty hack */
+ new_mpio->firmware.major[1]=0x00;
snprintf(new_mpio->firmware.minor, 3, "%s", new_mpio->version + 0x0e);
snprintf(new_mpio->firmware.year, 5, "%s", new_mpio->version + 0x10);
snprintf(new_mpio->firmware.month, 3, "%s", new_mpio->version + 0x14);
@@ -358,6 +363,17 @@ mpio_init(mpio_callback_init_t progress_callback)
look at a FY100 firmware yet. -mager */
debug("FY100 found: Beware, this model is not tested and we don't know"
" if it does work!\n");
+ } else if (strncmp(new_mpio->version, "VP-01", 5) == 0) {
+ /* This is a FY100 clone! */
+ new_mpio->model = MPIO_MODEL_VP_01;
+ } else if (strncmp(new_mpio->version, "VP-02", 5) == 0) {
+ new_mpio->model = MPIO_MODEL_VP_02;
+ /* We assume that this is a FL100 clone -mager */
+ debug("VP-02 found: Beware, this model is not tested and we don't know"
+ " if it does work!\n");
+ debug("This model is assumed to be a FL100 clone, so:\n");
+ debug("External memory is ignored, because we don't know how"
+ " to support it at the moment (MultiMediaCards instead of SmartMedia)\n");
} else {
new_mpio->model = MPIO_MODEL_UNKNOWN;
}