Commit graph

74 commits

Author SHA1 Message Date
Jens Arnold
32bd0f8ab1 Greyscale library: Optionally put the greyscale ISR on COP on portalplayertargets (only use with the grey_info structure in IRAM atm\!). This speeds up doom by ~50%, and makes mpegplayer work without stuttering audio on targets using it (measured on iPod 2nd Gen and Mini 2nd Gen). It needs corelocking certain functions in the LCD driver on 1st/2nd Gen.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16973 a1c6a512-1295-4272-9138-f99709370657
2008-04-04 22:13:53 +00:00
Jens Arnold
8399749412 1st/2nd Gen: Backlight inversion needs to be protected from interrupts, because it can happen any time, even while the greyscale lib or something else is writing to the LCD from an ISR. Also make backlight inversion only hit the LCD if necessary. * Use register definition in the 1st..3rd Gen backlight drivers.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16962 a1c6a512-1295-4272-9138-f99709370657
2008-04-04 17:33:39 +00:00
Jens Arnold
b073f0cfc1 LCD driver tweaks for greyscale iPods: * Use 1/7 bias, 5x step-up and the highest step-up frequency on all 1st..3rd gen iPods, simplifying the driver this way. The default contrast for those iPods has changed - reset settings in case the display becomes unreadable. * Set n-line inversion drive to 9 lines, improving image quality on 1st..3rd gen iPods somewhat.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16932 a1c6a512-1295-4272-9138-f99709370657
2008-04-02 19:01:16 +00:00
Jens Arnold
1f75bd5a8e Use a better place to enable the interrupts.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16918 a1c6a512-1295-4272-9138-f99709370657
2008-04-01 18:53:34 +00:00
Jens Arnold
e249ecc85b iPod 1st..3rd Gen and Mini 1st Gen fixes/improvements: * Remove the unnecessary 'reverse' parameter from handle_scroll_wheel() (a remnant from IPL that's not needed in rockbox), and make it static. * Wheel power saving on 1st Gen needs to disable the respective GPIO interrupts as well, otherwise every wheel check might fire interrupts. Make wheel power saving more self-contained as well.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16916 a1c6a512-1295-4272-9138-f99709370657
2008-04-01 17:52:22 +00:00
Jens Arnold
567105b219 Stop saving more registers than necessary.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16866 a1c6a512-1295-4272-9138-f99709370657
2008-03-28 18:56:50 +00:00
Marcoen Hirschberg
82c52302bd split boot.lds and move it into the target tree
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16855 a1c6a512-1295-4272-9138-f99709370657
2008-03-27 23:58:03 +00:00
Andree Buschmann
2364bc213c Save a few registers in assembler routines for iPod 5Gs LCD driver and YUV conversion.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16840 a1c6a512-1295-4272-9138-f99709370657
2008-03-27 07:46:04 +00:00
Michael Sevakis
af395f4db6 Do core interrupt masking in a less general fashion and save some instructions to decrease size and speed things up a little bit. Small fix to a few places where interrupts would get enabled again where they shouldn't have been (context switching calls when disabled).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16811 a1c6a512-1295-4272-9138-f99709370657
2008-03-26 01:50:41 +00:00
Jens Arnold
68a21689ae Consistent naming scheme the various blit functions. * Removed lcd_blit_mono() for colour targets. Plugin API became incompatible, so sort, clean up & bump. * Implemented lcd_blit_mono() for M3.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16775 a1c6a512-1295-4272-9138-f99709370657
2008-03-24 00:35:53 +00:00
Karl Kurbjun
ef62d6891a Split up app.lds to the respective target directories. The portalplayer devices replicate app.lds since their target tree doesn't follow a syntax typical to the newer arm targets - the portalplayers could be cleaned up further. boot.lds and plugin.lds still need to be cleaned up.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16651 a1c6a512-1295-4272-9138-f99709370657
2008-03-13 03:48:23 +00:00
Robert Keevil
746ff30003 Revert LCD changes - make sure the backlight remains on as a visible sign that the unit has powered off
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16314 a1c6a512-1295-4272-9138-f99709370657
2008-02-14 20:48:17 +00:00
Robert Keevil
15581e8ad5 Fix red
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16312 a1c6a512-1295-4272-9138-f99709370657
2008-02-14 15:24:31 +00:00
Robert Keevil
5d6994ee99 Prevent the screen flashing white when shutting down colour ipods - fixes FS#7755
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16311 a1c6a512-1295-4272-9138-f99709370657
2008-02-14 15:02:06 +00:00
Michael Giacomelli
054447f9e6 Commit FS#8379 by Andree Buschmann. Disables much of the remaining unneeded hardware on PP50xx targets (Ipods, Sansa, H10s, etc) resulting in a large savings in power and consequent increase in battery life. Results vary from target to target and from codec to codec, but we now approach the OF runtime on several PP devices. For now, leave base CPU clock at 30MHz, although further savings is possible with some codecs if clock is reduced. Additionally, fix battery capacity on c200 and use my measurements to improve runtime estimation for Sandisk targets.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16259 a1c6a512-1295-4272-9138-f99709370657
2008-02-10 05:39:20 +00:00
Michael Giacomelli
31b6eb57b0 Commit FS#8387 by Adam Gashlin. Enables detection of firewire devices for charging on various Ipods. Note that charging itself is not yet implemented on these devices.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16124 a1c6a512-1295-4272-9138-f99709370657
2008-01-20 23:03:23 +00:00
Michael Sevakis
6a8379674c Finally, out goes struct spinlock for anything but mutiprocessor targets where it becomes a reenterable corelock.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16105 a1c6a512-1295-4272-9138-f99709370657
2008-01-18 13:12:33 +00:00
Jens Arnold
28cd26c471 Some cleanup for readability. No code change.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16076 a1c6a512-1295-4272-9138-f99709370657
2008-01-13 13:58:18 +00:00
Jens Arnold
41cd44caa7 Greyscale ipod lcd driver: * Assembler optimised low level functions. PP5002 targets benefit most (lcd_update() speedup >50%, and the greyscale overlay no longer makes mp3 playback skip). * Consistent brace placement style.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16060 a1c6a512-1295-4272-9138-f99709370657
2008-01-12 00:59:18 +00:00
Jens Arnold
6a56c14e17 Greyscale library: Changed the internal data format once more (separated pixel values and phases), allowing for further optimisation of drawing, scrolling etc. * Optimised grey phase blitting in the core reduces CPU load on all architectures, most significantly on coldfire. Previous version was too slow to keep up at 45MHz, leading to unwanted graininess (update frequency was halved). Also fixed screendump on 2bpp targets with vertical pixel packing.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16043 a1c6a512-1295-4272-9138-f99709370657
2008-01-09 23:48:26 +00:00
Jens Arnold
feb5b15e9b All-new greyscale library, replacing the old one. Features: (1) Drawing/updating is faster than the old grayscale lib at full depth. (2) Always 129 shades instead of 2..33 shades. (3) No graininess caused by frequent updates (mpegplayer, doom, ...). (4) Needs less memory than the old grayscale lib at full depth. * The tradeoff is slightly higher CPU load in the ISR (frames are calculated 'live') and an extra function in the core. * Ported all plugins which used the graylib to use the new one. * Some slight optimisations for archos and H1x0 LCD update.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15998 a1c6a512-1295-4272-9138-f99709370657
2008-01-04 23:42:38 +00:00
Michael Sevakis
7126d64820 Further lockdown of multipart i2c operations that must be done without intrusion.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15823 a1c6a512-1295-4272-9138-f99709370657
2007-11-27 00:35:41 +00:00
Jens Arnold
120fb4f319 Speed up YUV blitting on iPod Video by ~8% (FS #8075 by Andree Buschmann).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15820 a1c6a512-1295-4272-9138-f99709370657
2007-11-26 23:48:23 +00:00
Linus Nielsen Feltzing
e75327b332 FS#7738 - Scroll wheel acceleration for iPod
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15681 a1c6a512-1295-4272-9138-f99709370657
2007-11-19 11:05:54 +00:00
Jens Arnold
940fe31f81 Move 4th Gen (grayscale and color) backlight init where it belongs.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15661 a1c6a512-1295-4272-9138-f99709370657
2007-11-18 14:01:58 +00:00
Jens Arnold
6ef2db2c11 Significant LCD speedup for all greyscale iPods and Sansa c200 (c200, 4th Gen, Mini 1st Gen: >3.3x speedup, 1st..3rd Gen: ~2x speedup, Mini 2nd Gen: ~30% speedup).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15655 a1c6a512-1295-4272-9138-f99709370657
2007-11-18 12:49:24 +00:00
Jens Arnold
f4c5c6aa62 Fix bootloaders, and the backlight-modded Ondio build.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15600 a1c6a512-1295-4272-9138-f99709370657
2007-11-12 19:19:38 +00:00
Jens Arnold
ef12b3b5c6 Hardware controlled backlight brightness for iPod Video and Nano, retaining the software PWM fade in/ fade out. * Backlight handling cleanup, getting rid of one layer of 'lowlevelness'. * Use atomic GPIO bit manipulation for PP502x backlight handling.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15599 a1c6a512-1295-4272-9138-f99709370657
2007-11-12 18:49:53 +00:00
Jens Arnold
20a39f485a Get rid of some more inl/outl, and use the new macros for bitwise GPIO manipulation. No functional change.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15492 a1c6a512-1295-4272-9138-f99709370657
2007-11-06 00:36:39 +00:00
Barry Wardell
03dd35db0e Get rid of some more inl/outl. 0x70000084 seems to be GPO32_ENABLE.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15477 a1c6a512-1295-4272-9138-f99709370657
2007-11-05 17:19:00 +00:00
Barry Wardell
4ef3e821cb Fix red.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15476 a1c6a512-1295-4272-9138-f99709370657
2007-11-05 16:12:13 +00:00
Barry Wardell
2d95fd524d Get rid of some more inl/outl and use the new GPO32 define instead.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15474 a1c6a512-1295-4272-9138-f99709370657
2007-11-05 15:48:59 +00:00
Jens Arnold
6fb4c53fb9 The GPIO interrupts are split into several port groups on all PP502x versions, so move those definitions into pp5020.h, and add the missing group. Make microSD hotswap detection work on Sansa c200. Note that microSD access itself does not work yet.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15460 a1c6a512-1295-4272-9138-f99709370657
2007-11-04 13:22:17 +00:00
Jens Arnold
015f6286a8 Finally: HDD power control for all PP502x iPods (4th gen Grayscale, Color, Minis, Video). * Wait a short time after powering on the HDD on all disk based targets, as that seems like a good idea. Shorten the excessive wait on initial power on.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15444 a1c6a512-1295-4272-9138-f99709370657
2007-11-03 23:57:24 +00:00
Jens Arnold
9daf658ef1 iPod Video LCD driver: Reintroduce the simple method of waiting for update completion for use in the bootloader, because bootloaders don't enable interrupts and hence the tick task won't work. Slower than the full driver, but still faster than the old one, because it first transfers the data, and then polls the BCM.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15399 a1c6a512-1295-4272-9138-f99709370657
2007-11-02 01:18:14 +00:00
Jens Arnold
c888a9bebe Bootloaders are single core... (aka fix red)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15398 a1c6a512-1295-4272-9138-f99709370657
2007-11-02 00:24:20 +00:00
Jens Arnold
ef8a7eaf2a Major speedup of the iPod Video LCD driver. The internal update procedure of the BCM chip is now completely shadowed, handled by a tick task as necessary. Also fixes the occasional UI freezes due to stalled BCM updates by re-kicking it after a timeout.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15397 a1c6a512-1295-4272-9138-f99709370657
2007-11-02 00:07:45 +00:00
Jens Arnold
b05066de12 iPod Video: Further optimised LCD data transfer (5..6% speedup, but increase in FPS measured with test_fps is less), making use of the fact that the low address bits aren't decoded by the BCM. Major cleanup of the driver, and introduced register names.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15341 a1c6a512-1295-4272-9138-f99709370657
2007-10-28 12:09:46 +00:00
Jens Arnold
3c1b9d9d70 Assembler optimised lcd_yuv_blit() for iPod Video (Fs #7951 by Andree Buschmann, adapted and separated into an .S file by me).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15257 a1c6a512-1295-4272-9138-f99709370657
2007-10-22 00:37:50 +00:00
Thom Johansen
b5f779b2ef Parts of FS #7951 by Andree Buschmann. Faster YUV BLIT (means faster mpegplayer) for Ipods Nano and Video while we're waiting for the assembler ones.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15147 a1c6a512-1295-4272-9138-f99709370657
2007-10-16 19:47:15 +00:00
Michael Sevakis
a9b2fb5ee3 Finally full multicore support for PortalPlayer 502x targets with an eye towards the possibility of other types. All SVN targets the low-lag code to speed up blocking operations. Most files are modified here simple due to a name change to actually support a real event object and a param change to create_thread. Add some use of new features but just sit on things for a bit and leave full integration for later. Work will continue on to address size on sensitive targets and simplify things if possible. Any PP target having problems with SWP can easily be changed to sw corelocks with one #define change in config.h though only PP5020 has shown an issue and seems to work without any difficulties.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15134 a1c6a512-1295-4272-9138-f99709370657
2007-10-16 01:25:17 +00:00
Jens Arnold
8aeed2d32e PP LCD drivers: * Optimised and cleaned up PP colour LCD drivers. Immeasurable speedup on iPod Color, huge speedup on small H10 (a factor of 3). Should be a bit faster on big H10 too. * Big H10 changed bitmap format, so needs reconfiguring + full rebuild. * Better register naming for the mono LCD bridge. Register names for the colour LCD bridge.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15082 a1c6a512-1295-4272-9138-f99709370657
2007-10-12 00:28:57 +00:00
Jens Arnold
1f0d06f085 * Use proper definitions for the PP (mono) LCD bridge. * Clean up pp5002.h a bit.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15018 a1c6a512-1295-4272-9138-f99709370657
2007-10-07 16:44:55 +00:00
Nicolas Pennequin
f548336e27 Fix the LCD line remaining active after shutdown on grayscale ipods (FS#5199). Original patch by Tomasz Mon, modified by me.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14907 a1c6a512-1295-4272-9138-f99709370657
2007-09-29 20:56:07 +00:00
Thom Johansen
d6ad3fbeb5 FS #7763 by Andree Buschmann. Speed up video rendering for Ipod Video.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14882 a1c6a512-1295-4272-9138-f99709370657
2007-09-28 11:25:02 +00:00
Jens Arnold
f265ee9cd5 * Don't touch the backlight(s) (and buttonlight) at backlight init in order to avoid a short flash when the lights are both disabled in the bootloader and in rockbox settings. * Properly reflect the backlight state set by the 1st/2nd gen bootloader.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14679 a1c6a512-1295-4272-9138-f99709370657
2007-09-12 22:24:58 +00:00
Jens Arnold
7c37c54ce5 iPod 1st Gen: Dynamic wheel enable. This reduces wheel power consumption to about 0.5% when hold is not enabled and there is no activity, and keeps it disabled on hold.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14386 a1c6a512-1295-4272-9138-f99709370657
2007-08-18 09:47:19 +00:00
Jens Arnold
347b351e8a iPod 1st Gen: Electronically disable the wheel when hold is enabled, saving quite some power.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14383 a1c6a512-1295-4272-9138-f99709370657
2007-08-18 08:14:07 +00:00
Jens Arnold
0fac492c3d First step of powermanagement rework: * Move target specific stuff into target tree, starting with battery voltage tables and voltage reading. (This revealed some incorrect percent_to_voltage_charging mappings). * Voltage reading on 1st gen ipods is now correct. * Clean up obsolete config #defines.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14375 a1c6a512-1295-4272-9138-f99709370657
2007-08-17 06:45:18 +00:00
Jens Arnold
c68e3cc3d6 Make the wheel work on 1st gen iPod.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14359 a1c6a512-1295-4272-9138-f99709370657
2007-08-15 17:53:23 +00:00