Revert... stupid svn doesn't complain when passing -m twice :(

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16939 a1c6a512-1295-4272-9138-f99709370657
diff --git a/apps/SOURCES b/apps/SOURCES
index 15a59d6..b1e5cce 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -75,7 +75,6 @@
 #endif
 
 #ifdef HAVE_LCD_CHARCELLS
-player/bmp.c
 player/icons.c
 player/keyboard.c
 #endif
@@ -130,7 +129,6 @@
 metadata/mpc.c
 metadata/ogg.c
 metadata/sid.c
-metadata/mod.c
 metadata/spc.c
 metadata/vorbis.c
 metadata/wave.c
diff --git a/apps/codecs/Makefile b/apps/codecs/Makefile
index 7c066d2..5a65341 100644
--- a/apps/codecs/Makefile
+++ b/apps/codecs/Makefile
@@ -47,7 +47,6 @@
 ifndef SIMVER
 $(BUILDDIR)/%.a : % $(CODECDEPS)
 
-$(OBJDIR)/mod.elf : $(OBJDIR)/mod.o $(OBJDIR)/codec_crt0.o
 $(OBJDIR)/wav.elf : $(OBJDIR)/wav.o $(OBJDIR)/codec_crt0.o
 $(OBJDIR)/sid.elf : $(OBJDIR)/sid.o $(OBJDIR)/codec_crt0.o
 $(OBJDIR)/adx.elf : $(OBJDIR)/adx.o $(OBJDIR)/codec_crt0.o
diff --git a/apps/codecs/SOURCES b/apps/codecs/SOURCES
index 3c0118c..a93cb6c 100644
--- a/apps/codecs/SOURCES
+++ b/apps/codecs/SOURCES
@@ -13,7 +13,6 @@
 aac.c
 #endif
 ape.c
-mod.c
 shorten.c
 aiff.c
 speex.c
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 9dff553..5c8a7f9 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -1144,7 +1144,7 @@
 
     while(1)
     {
-        line = 0;             
+        line = 0;
         lcd_puts(0, line++, "GPIO STATES:");
         snprintf(buf, sizeof(buf), "A: %02x  E: %02x  I: %02x",
                                    (unsigned int)GPIOA_INPUT_VAL,
diff --git a/apps/filetypes.c b/apps/filetypes.c
index 694bb0a..1ef136d 100644
--- a/apps/filetypes.c
+++ b/apps/filetypes.c
@@ -69,7 +69,6 @@
     { "m4a", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA },
     { "m4b", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA },
     { "mp4", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA },
-    { "mod", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA },
     { "shn", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA },
     { "aif", FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA },
     { "aiff",FILE_ATTR_AUDIO, Icon_Audio, VOICE_EXT_MPA },
diff --git a/apps/metadata.c b/apps/metadata.c
index 303fafc..3abbd74 100644
--- a/apps/metadata.c
+++ b/apps/metadata.c
@@ -183,14 +183,6 @@
 
         break;
 
-    case AFMT_MOD:
-        if (!get_mod_metadata(fd, id3))
-        {
-            return false;
-        }
-
-        break;
-
     case AFMT_SHN:
         id3->vbr = true;
         id3->filesize = filesize(fd);
diff --git a/apps/metadata/metadata_parsers.h b/apps/metadata/metadata_parsers.h
index b34d09f..c3265f8 100644
--- a/apps/metadata/metadata_parsers.h
+++ b/apps/metadata/metadata_parsers.h
@@ -25,7 +25,6 @@
 bool get_monkeys_metadata(int fd, struct mp3entry* id3);
 bool get_musepack_metadata(int fd, struct mp3entry *id3);
 bool get_sid_metadata(int fd, struct mp3entry* id3);
-bool get_mod_metadata(int fd, struct mp3entry* id3);
 bool get_spc_metadata(int fd, struct mp3entry* id3);
 bool get_ogg_metadata(int fd, struct mp3entry* id3);
 bool get_wave_metadata(int fd, struct mp3entry* id3);
diff --git a/apps/plugins/CATEGORIES b/apps/plugins/CATEGORIES
index c2ad75e..4b267c1 100644
--- a/apps/plugins/CATEGORIES
+++ b/apps/plugins/CATEGORIES
@@ -80,7 +80,6 @@
 test_codec,viewers
 test_disk,apps
 test_fps,apps
-test_grey,apps
 test_sampr,apps
 test_scanrate,apps
 test_viewports,apps
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES
index fbfb380..b6603a4 100644
--- a/apps/plugins/SOURCES
+++ b/apps/plugins/SOURCES
@@ -19,7 +19,6 @@
 stopwatch.c
 vbrfix.c
 viewer.c
-test_disk.c
 
 #ifdef OLYMPUS_MROBE_500
 /* remove these once the plugins before it are compileable */
@@ -48,9 +47,6 @@
 brickmania.c
 maze.c
 mazezam.c      
-greyscale.c
-test_fps.c
-test_scanrate.c
 text_editor.c
 wavview.c
 robotfindskitten.c
@@ -61,10 +57,6 @@
 mandelbrot.c
 plasma.c
 
-#if LCD_DEPTH < 4
-test_grey.c
-#endif
-
 blackjack.c
 bounce.c
 bubbles.c
@@ -124,7 +116,6 @@
 
 #if CONFIG_CODEC == SWCODEC        /* software codec platforms */
 mp3_encoder.c
-test_codec.c
 wav2wv.c
 #else                              /* hardware codec platforms */
 #ifndef HAVE_MMC                   /* not for Ondio, has no remote control pin */
diff --git a/apps/plugins/test_scanrate.c b/apps/plugins/test_scanrate.c
index aabc623..63ab97d 100644
--- a/apps/plugins/test_scanrate.c
+++ b/apps/plugins/test_scanrate.c
@@ -56,29 +56,24 @@
 #endif
 
 /* Default refresh rates in 1/10 Hz */
-#if defined ARCHOS_RECORDER   || defined ARCHOS_FMRECORDER  \
- || defined ARCHOS_RECORDERV2 || defined ARCHOS_ONDIOFM     \
- || defined ARCHOS_ONDIOSP
+#if CONFIG_LCD == LCD_SSD1815
 #define DEFAULT_SCAN_RATE 670
-#elif defined IAUDIO_M3
-#define DEFAULT_SCAN_RATE 1500
+#elif CONFIG_LCD == LCD_S1D15E06
+#define DEFAULT_SCAN_RATE 700
+#elif CONFIG_LCD == LCD_IPOD2BPP
+#define DEFAULT_SCAN_RATE 800
+#elif CONFIG_LCD == LCD_IPODMINI
+#define DEFAULT_SCAN_RATE 880
+#elif CONFIG_LCD == LCD_TL0350A
+#define DEFAULT_SCAN_RATE 1480
 #define HORIZ_SCAN /* LCD controller updates the panel sideways */
 #define NEED_BOOST
-#elif defined IAUDIO_M5
-#define DEFAULT_SCAN_RATE 730
-#elif defined IPOD_1G2G
-#define DEFAULT_SCAN_RATE 960
-#elif defined IPOD_MINI2G  || defined IPOD_MINI  \
-   || defined IPOD_3G      || defined IPOD_4G
-#define DEFAULT_SCAN_RATE 870
-#elif defined IRIVER_H100_SERIES
-#define DEFAULT_SCAN_RATE 700
 #else
 #define DEFAULT_SCAN_RATE 700
 #warning Generic default scanrate
 #endif
 
-#ifdef HORIZ_SCAN
+#ifdef HORIZ_SCAN 
 #define TEXT_X 0
 #if LCD_PIXELFORMAT == HORIZONTAL_PACKING
 #define BUF_WIDTH  ((LCD_WIDTH+7)/8)
diff --git a/bootloader/ipod.c b/bootloader/ipod.c
index bafcb49..b3ff7bc 100644
--- a/bootloader/ipod.c
+++ b/bootloader/ipod.c
@@ -56,49 +56,6 @@
 /* Bootloader version */
 char version[] = APPSVERSION;
 
-struct sysinfo 
-{
-    unsigned IsyS;  /* == "IsyS" */
-    unsigned len;
-    char BoardHwName[16];
-    char pszSerialNumber[32];
-    char pu8FirewireGuid[16];
-    unsigned boardHwRev;
-    unsigned bootLoaderImageRev;
-    unsigned diskModeImageRev;
-    unsigned diagImageRev;
-    unsigned osImageRev;
-    unsigned iram_perhaps;
-    unsigned Flsh;
-    unsigned flash_zero;
-    unsigned flash_base;
-    unsigned flash_size;
-    unsigned flash_zero2;
-    unsigned Sdrm;
-    unsigned sdram_zero;
-    unsigned sdram_base;
-    unsigned sdram_size;
-    unsigned sdram_zero2;
-    unsigned Frwr;
-    unsigned frwr_zero;
-    unsigned frwr_base;
-    unsigned frwr_size;
-    unsigned frwr_zero2;
-    unsigned Iram;
-    unsigned iram_zero;
-    unsigned iram_base;
-    unsigned iram_size;
-    unsigned iram_zero2;
-    char pad7[120];
-    unsigned boardHwSwInterfaceRev;
-
-    /* added in V3 */
-    char HddFirmwareRev[10];
-    unsigned short RegionCode;
-    unsigned PolicyFlags;
-    char ModelNumStr[16];
-};
-
 #define BUTTON_LEFT  1
 #define BUTTON_MENU  2
 #define BUTTON_RIGHT 3
@@ -263,24 +220,6 @@
 
 }
 
-static struct sysinfo ** const sysinfo_ptr =
-#if CONFIG_CPU == PP5002 || CONFIG_CPU == PP5020
-                      0x40017f1c;
-#elif CONFIG_CPU == PP5022 || CONFIG_CPU == PP5024
-                      0x4001ff1c;
-#endif
-
-static unsigned ipod_get_hwrev_sysinfo(void)
-{
-    if ( (*sysinfo_ptr)->IsyS == *(unsigned *)"IsyS" )
-    {
-        if ((*sysinfo_ptr)->len == 0xf8)
-            return (*sysinfo_ptr)->sdram_zero2;
-        else
-            return (*sysinfo_ptr)->boardHwSwInterfaceRev;
-    }
-    return 0xffffffff; /* unknown */
-}
 
 void* main(void)
 {
@@ -331,9 +270,6 @@
     printf("Rockbox boot loader");
     printf("Version: %s", version);
     printf("IPOD version: 0x%08x", IPOD_HW_REVISION);
-    
-    printf("SysI ptr: %08x", *sysinfo_ptr);
-    printf("SysI HWR: %08x", ipod_get_hwrev_sysinfo());
 
     i=ata_init();
     if (i==0) {
diff --git a/firmware/export/config-player.h b/firmware/export/config-player.h
index 26a643f..94d5edf 100644
--- a/firmware/export/config-player.h
+++ b/firmware/export/config-player.h
@@ -49,7 +49,7 @@
 
 /* Uncomment this if you want to enable ATA power-off control.
  * Attention, some players crash when ATA power-off is enabled! */
-#define HAVE_ATA_POWER_OFF
+//#define HAVE_ATA_POWER_OFF
 
 /* Define this if you control ata power player style
    (with PB4, new player only) */
diff --git a/firmware/export/id3.h b/firmware/export/id3.h
index 3145ee7..8b2d02e 100644
--- a/firmware/export/id3.h
+++ b/firmware/export/id3.h
@@ -49,7 +49,6 @@
     AFMT_WAVPACK,      /* WavPack */
     AFMT_ALAC,         /* Apple Lossless Audio Codec */
     AFMT_AAC,          /* Advanced Audio Coding (AAC) in M4A container */
-    AFMT_MOD,          /* MOD File Format */
     AFMT_SHN,          /* Shorten */
     AFMT_SID,          /* SID File Format */
     AFMT_ADX,          /* ADX File Format */
diff --git a/firmware/id3.c b/firmware/id3.c
index c750fff..d63acbb 100644
--- a/firmware/id3.c
+++ b/firmware/id3.c
@@ -90,9 +90,6 @@
     [AFMT_AAC] =
         AFMT_ENTRY("AAC",  "aac",     NULL,          "mp4\0"      ),
     /* Shorten */
-    [AFMT_MOD] =
-        AFMT_ENTRY("MOD",  "mod",     NULL,          "mod\0"      ),
-    /* Shorten */
     [AFMT_SHN] =
         AFMT_ENTRY("SHN",  "shorten", NULL,          "shn\0"      ),
     /* SID File Format */
diff --git a/firmware/target/arm/iriver/h10/lcd-h10_5gb.c b/firmware/target/arm/iriver/h10/lcd-h10_5gb.c
index 669654f..5b022e0 100644
--- a/firmware/target/arm/iriver/h10/lcd-h10_5gb.c
+++ b/firmware/target/arm/iriver/h10/lcd-h10_5gb.c
@@ -108,7 +108,6 @@
 {  
     CLCD_CLOCK_SRC |= 0xc0000000; /* Set LCD interface clock to PLL */
     /* H10 LCD is initialised by the bootloader */
-    lcd_write_reg(R_ENTRY_MODE, 0x1030); /* BGR =1, ID1 = 1, ID0 = 1 */
 }
 
 /*** update functions ***/
@@ -276,51 +275,88 @@
 
 
 /* Update a fraction of the display. */
-void lcd_update_rect(int x, int y, int width, int height)
+void lcd_update_rect(int x0, int y0, int width, int height)
 {
-    const fb_data *addr;
-    int bytes_to_write;
-    
-    if (x + width >= LCD_WIDTH)
-        width = LCD_WIDTH - x;
-    if (y + height >= LCD_HEIGHT)
-        height = LCD_HEIGHT - y;
-        
-    if ((width <= 0) || (height <= 0))
-        return; /* Nothing left to do. 0 would hang the transfer. */
-        
-    /* Ensure x and width are both even, so we can read
-     * 32-bit aligned data from the framebuffer */
-    width = (width + (x & 1) + 1) & ~1;
-    x &= ~1;
+    int x1, y1;
+    int newx,newwidth;
+    unsigned long *addr;
 
-    lcd_write_reg(R_VERT_RAM_ADDR_POS, (LCD_HEIGHT-1) << 8);
-    lcd_write_reg(R_HORIZ_RAM_ADDR_POS, ((x + width - 1) << 8) | x);
-    lcd_write_reg(R_RAM_ADDR_SET, (y << 8) | x);
+    /* Ensure x and width are both even - so we can read 32-bit aligned 
+       data from lcd_framebuffer */
+    newx=x0&~1;
+    newwidth=width&~1;
+    if (newx+newwidth < x0+width) { newwidth+=2; }
+    x0=newx; width=newwidth;
 
+    /* calculate the drawing region */
+    y1 = (y0 + height) - 1;           /* max vert */
+    x1 = (x0 + width) - 1;          /* max horiz */
+
+
+    /* swap max horiz < start horiz */
+    if (y1 < y0) {
+        int t;
+        t = y0;
+        y0 = y1;
+        y1 = t;
+    }
+
+    /* swap max vert < start vert */
+    if (x1 < x0) {
+        int t;
+        t = x0;
+        x0 = x1;
+        x1 = t;
+    }
+
+    /* max horiz << 8 | start horiz */
+    lcd_write_reg(R_HORIZ_RAM_ADDR_POS, (x1 << 8) | x0);
+
+    /* max vert << 8 | start vert */
+    lcd_write_reg(R_VERT_RAM_ADDR_POS, (y1 << 8) | y0);
+
+    /* start vert << 8 | start horiz */
+    lcd_write_reg(R_RAM_ADDR_SET, (y0 << 8) | x0);
+
+    /* start drawing */
     lcd_send_cmd(R_WRITE_DATA_2_GRAM);
 
-    addr = &lcd_framebuffer[y][x];
-    bytes_to_write = width * height * sizeof(fb_data);  
-    /* must be <= 0x10000, but that's guaranteed on H10. */
+    addr = (unsigned long*)&lcd_framebuffer[y0][x0];
 
-    LCD2_BLOCK_CTRL   = 0x10000080;
-    LCD2_BLOCK_CONFIG = 0xc0010000 | (bytes_to_write - 1);
-    LCD2_BLOCK_CTRL   = 0x34000000;
-    
-    do
-    {
-        int w = width >> 1;
-        do
-        {
-            while (!(LCD2_BLOCK_CTRL & LCD2_BLOCK_TXOK));
-            LCD2_BLOCK_DATA = *(unsigned long*)addr;  /* output 2 pixels */
-            addr += 2;
+    while (height > 0) {
+        int c, r;
+        int h, pixels_to_write;
+
+        pixels_to_write = (width * height) * 2;
+        h = height;
+
+        /* calculate how much we can do in one go */
+        if (pixels_to_write > 0x10000) {
+            h = (0x10000/2) / width;
+            pixels_to_write = (width * h) * 2;
         }
-        while (--w > 0);
-        addr += LCD_WIDTH - width;
+
+        LCD2_BLOCK_CTRL = 0x10000080;
+        LCD2_BLOCK_CONFIG = 0xc0010000 | (pixels_to_write - 1);
+        LCD2_BLOCK_CTRL = 0x34000000;
+
+        /* for each row */
+        for (r = 0; r < h; r++) {
+            /* for each column */
+            for (c = 0; c < width; c += 2) {
+                while (!(LCD2_BLOCK_CTRL & LCD2_BLOCK_TXOK));
+
+                /* output 2 pixels */
+                LCD2_BLOCK_DATA = *addr++;
+            }
+            addr += (LCD_WIDTH - width)/2;
+        }
+
+        while (!(LCD2_BLOCK_CTRL & LCD2_BLOCK_READY));
+        LCD2_BLOCK_CONFIG = 0;
+
+        height -= h;
     }
-    while (--height > 0);
 }
 
 /* Update the display.