rockbox/firmware/target/arm/s5l8702/ipod6g
Cástor Muñoz b320bbaf61 iPod Classic: YUV to RGB optimizations for ARM v5+
Optimizes YUV to RGB conversion using ARMv5 multiply-accumulate
intructions for operations and data tables for saturation.

This first patch set includes the three versions i have developed.
Although iPod Classic need to use the latest version to reach 30fps,
old versions may serve other targets.

All versions are based on current SVN algorithm (round->scale->add)
using the same coefficients, so output results are identical.

Version history:

  ARMv4:
   - use all available registers to calculate four pixels within each
     loop iteration.
   - avoid LDR interlocks.

  ARMv5TE:
   - use ARMv5TE+ 1-cycle multiply-accumulate instructions.

  ARMv5TE_WST:
   - use data tables (256 bytes) for RBG565 saturation.

Benchmarks results using iPod Classic (ARM926EJ 216Mhz):

                 size    test_fps (1)    mpegplayer (2)
                 bytes   YUV  YUV1/4     average  min/max
                 -----   -----------     ------------------
  SVN-20141107   528     27.8  110.0     11035  10864/13397
  ARMv4          480     28.8  114.0      9767   9586/12126
  ARMv5TE        468     29.7  117.5      8751   8584/11118
  ARMv5TE_WST    544     33.6  133.0      6355   6316/6403

  (1) boosted
  (2) play full elephants_dream_320x240.mpg file (15693 frames) using
      mpegplayer, patched RB measures YUV to RGB565 frame conversion
      time (microseconds)

  Compared against the WST version, the ARMV5TE version w/o cached
  saturation tables is slower, but it is smaller and i have doubts
  about the power consumption.

Change-Id: I2b6a81804636658d85a1bb104ccb2055e77ac120
Reviewed-on: http://gerrit.rockbox.org/1034
Reviewed-by: Cástor Muñoz <cmvidal@gmail.com>
Tested: Cástor Muñoz <cmvidal@gmail.com>
2014-12-10 20:39:34 +01:00
..
adc-ipod6g.c New port: iPod Classic (also known as iPod 6G/6.5G/7G) 2011-01-02 23:16:27 +00:00
adc-target.h New port: iPod Classic (also known as iPod 6G/6.5G/7G) 2011-01-02 23:16:27 +00:00
audio-ipod6g.c New port: iPod Classic (also known as iPod 6G/6.5G/7G) 2011-01-02 23:16:27 +00:00
backlight-ipod6g.c IPod Classic/6G: LCD sleep (FS#12523) by Cástor Muñoz 2012-02-25 13:46:43 +01:00
backlight-target.h New port: iPod Classic (also known as iPod 6G/6.5G/7G) 2011-01-02 23:16:27 +00:00
button-target.h button-target.h : move prototypes to button.h 2012-01-08 00:07:19 +00:00
cscodec-ipod6g.c iPod Classic: Enable boosting by switching the CPU between 1x and 2x AHB clock 2011-02-09 21:45:57 +00:00
lcd-asm-ipod6g.S iPod Classic: YUV to RGB optimizations for ARM v5+ 2014-12-10 20:39:34 +01:00
lcd-ipod6g.c lcd drivers: Convert lcd_[remote_]framebuffer to a pointer 2012-02-28 11:44:59 +11:00
mmcdefs-target.h iPod Classic: HDD endianness change 2011-12-28 16:06:13 +00:00
piezo-ipod6g.c iPod Classic: configure piezo GPIO ports 2014-12-08 03:11:34 +01:00
piezo.h FS#12524 - iPod Classic/6G: hardware click support 2012-02-11 23:46:35 +01:00
pmu-ipod6g.c iPod Classic/6G: fix battery voltage ADC scale 2013-01-09 22:08:27 +01:00
pmu-target.h New port: iPod Classic (also known as iPod 6G/6.5G/7G) 2011-01-02 23:16:27 +00:00
power-ipod6g.c iPod Classic/6G: support USB suspend mode 2013-01-09 22:08:27 +01:00
powermgmt-ipod6g.c iPod Classic/6G: fix battery voltage ADC scale 2013-01-09 22:08:27 +01:00
rtc-ipod6g.c New port: iPod Classic (also known as iPod 6G/6.5G/7G) 2011-01-02 23:16:27 +00:00
storage_ata-ipod6g.c iPod Classic: fix s5l8702 cache line length. 2014-11-13 23:00:33 +01:00