Index: firmware/export/config/gigabeats.h
===================================================================
--- firmware/export/config/gigabeats.h (revision 30260)
+++ firmware/export/config/gigabeats.h (working copy)
@@ -75,6 +75,8 @@
that needs spinups and can cause skips when shaked */
#define HAVE_DISK_STORAGE
+#define HAVE_MULTIVOLUME
+
/* Define this if you have a software controlled poweroff */
#define HAVE_SW_POWEROFF
Index: firmware/usbstack/usb_storage.c
===================================================================
--- firmware/usbstack/usb_storage.c (revision 30260)
+++ firmware/usbstack/usb_storage.c (working copy)
@@ -1256,5 +1256,5 @@
tb.inquiry->Versions = 4; /* SPC-2 */
tb.inquiry->Format = 2; /* SPC-2/3 inquiry format */
- tb.inquiry->DeviceTypeModifier = DEVICE_REMOVABLE;
+ tb.inquiry->DeviceTypeModifier = 0;
}
Index: firmware/target/arm/imx31/gigabeat-s/usb-target.h
===================================================================
--- firmware/target/arm/imx31/gigabeat-s/usb-target.h (revision 30260)
+++ firmware/target/arm/imx31/gigabeat-s/usb-target.h (working copy)
@@ -33,14 +33,6 @@
/** Sector read/write filters **/
/* Filter some things in the MBR - see usb-gigabeat-s.c */
-void usb_fix_mbr(unsigned char *mbr);
-#define USBSTOR_READ_SECTORS_FILTER() \
- ({ if (cur_cmd.sector == 0) \
- usb_fix_mbr(cur_cmd.data[cur_cmd.data_select]); \
- 0; })
-/* Disallow MBR writes entirely since it was "fixed" in usb_fix_mbr */
-#define USBSTOR_WRITE_SECTORS_FILTER() \
- ({ cur_cmd.sector != 0 ? 0 : -1; })
#endif /* USB_TARGET */
Index: firmware/common/disk.c
===================================================================
--- firmware/common/disk.c (revision 30260)
+++ firmware/common/disk.c (working copy)
@@ -49,6 +49,7 @@
static const unsigned char fat_partition_types[] = {
0x0b, 0x1b, /* FAT32 + hidden variant */
0x0c, 0x1c, /* FAT32 (LBA) + hidden variant */
+ 0xff, /* added to support extra-well hidden partitions on gigabeat S */
#ifdef HAVE_FAT16SUPPORT
0x04, 0x14, /* FAT16 <= 32MB + hidden variant */
0x06, 0x16, /* FAT16 > 32MB + hidden variant */