Commit graph

125 commits

Author SHA1 Message Date
Miika Pekkarinen
66258a30a4 Make scheduler functions thread safe core wise. A big step towards playback running on COP (not yet possible because more protection on file system level is necessary).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12926 a1c6a512-1295-4272-9138-f99709370657
2007-03-26 16:55:17 +00:00
Michael Sevakis
165f62d0cd Fix a hole in the scheduler where collisions between waking blocked threads in mutexes with interrupts waking blocked threads in message queues can occur. Queue posts will put the threads on a separate list that is then added to the running list with IRQs disabled on the next task switch or CPU wakeup. Basically no overhead for other operations. Seems a likely cause of my occasional observation of the backlight fade causing playback threads to stop running and a recently reported blocking violation upon USB plugging. Time will tell but banging the backlight on and off frequently hasn't hiccuped again for me on H120.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12915 a1c6a512-1295-4272-9138-f99709370657
2007-03-26 03:24:36 +00:00
Tomasz Malesinski
cd630c9e0a PNX0101 changes:
Make PNX0101-specific system.c and crt0.S.
Add new register names from LPC2880 user manual.
Add support for timer.
Enable CPU frequency changing. 


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12904 a1c6a512-1295-4272-9138-f99709370657
2007-03-24 19:26:13 +00:00
Michael Sevakis
6d87513aa2 In reponse to a report of a blocking violation, give sync queues a going over and catch any old, obscure leftover issues. A couple spots needed interrupt stopage where there could be confict if an IRQ post wakes a waiting thread because the queue is overflowing. There does appear to be an issue with wakeup_thread, interrupts and running list modification in general.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12895 a1c6a512-1295-4272-9138-f99709370657
2007-03-23 01:00:13 +00:00
Michael Sevakis
0caf3b8cae Update sync queues to use a statically allocated return value in order to facilitate upcoming COP updates.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12881 a1c6a512-1295-4272-9138-f99709370657
2007-03-21 22:58:53 +00:00
Barry Wardell
2370998a87 Disable bootloader messages in the H10 and Sansa bootloaders unless the PLAY (on H10) or RIGHT (on Sansa) button is being held. Messages are still displayed if an error occurs. This has already been implemented for iPod bootloaders, but still needs implementing for the other bootloaders.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12742 a1c6a512-1295-4272-9138-f99709370657
2007-03-12 22:12:20 +00:00
Miika Pekkarinen
2eefb5acb8 Optimized the gui list code performance, including automatic frame dropping and cpu boosting when button events are getting queued. Improved scrollwheel acceleration code is needed to notice a real change.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12721 a1c6a512-1295-4272-9138-f99709370657
2007-03-11 10:52:36 +00:00
Michael Sevakis
dee43ece20 Put an end to priority inversion in the ata driver. Gave up trying to have fully atomic dual use mutexes so just replaced the ata driver locking with spins. Maybe I'll have better luck later. Things should run smoothly with database updates and such happening in the background.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12688 a1c6a512-1295-4272-9138-f99709370657
2007-03-09 08:03:18 +00:00
Daniel Ankers
82f9056988 Dual core support for PP502x players (iPod G4 and later, iriver h10, Sansa - iPod G3 will be coming soon.) This allows threads to be run on either core provided that all communications between the cores is done using uncached memory. There should be no significant change in battery life from doing this. Documentation (on the RockboxKernel wiki page) will follow shortly.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12601 a1c6a512-1295-4272-9138-f99709370657
2007-03-04 20:06:41 +00:00
Marcoen Hirschberg
295367686e merge a big part of the unofficial gigabeat cvs back. Includes working bootloader and rockbox with audio.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11850 a1c6a512-1295-4272-9138-f99709370657
2006-12-29 02:49:12 +00:00
Michael Sevakis
4b902679cc Convert queues to use intptr_t for event data and return values as most of the time pointer are not passed and it should make some things a bit cleaner.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11818 a1c6a512-1295-4272-9138-f99709370657
2006-12-19 16:50:07 +00:00
Michael Sevakis
43c15921e4 Add queue_send synchronous message sending. Right now only for SWCODEC. Actual usage to be added to playback and recording shortly in upcoming commits.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11776 a1c6a512-1295-4272-9138-f99709370657
2006-12-16 18:35:12 +00:00
Daniel Ankers
242cbd5cd7 Change if CONFIG_CPU==PP50XX to ifdef CPU_PP where appropriate
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11569 a1c6a512-1295-4272-9138-f99709370657
2006-11-22 00:41:30 +00:00
Brandon Low
8a82892e52 Thread API enhancements.
1) block_thread -> block_thread + block_thread_w_tmo -- this call was always used in distinct ways so having one call with a conditional was ugly.
2) enhance Slasheri's scheduler controlled boost concept.  now any thread may trigger a boost which will last until that thread next sleeps.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11509 a1c6a512-1295-4272-9138-f99709370657
2006-11-11 05:33:24 +00:00
Jens Arnold
780f79e7a4 Removed the Gmini 120 and Gmini SP code. These ports are dead, unfortunately.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11504 a1c6a512-1295-4272-9138-f99709370657
2006-11-10 20:26:01 +00:00
Linus Nielsen Feltzing
4950b55837 Patch #6052 - More responsive skip on Archos
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11273 a1c6a512-1295-4272-9138-f99709370657
2006-10-19 11:43:13 +00:00
Miika Pekkarinen
a85044bf9e New scheduler, with priorities for swcodec platforms. Frequent task
switching should be more efficient and tasks are stored in linked
lists to eliminate unnecessary task switching to improve performance.
Audio should no longer skip on swcodec targets caused by too CPU
hungry UI thread or background threads.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10958 a1c6a512-1295-4272-9138-f99709370657
2006-09-16 16:18:11 +00:00
Jens Arnold
1bb8657a8f Fixed an off-by-one error in the portalplayer timer handling.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10837 a1c6a512-1295-4272-9138-f99709370657
2006-09-01 06:13:33 +00:00
Dave Chapman
657dcb5165 Initial commit of work for port to the Tatung Elio TPJ-1022 - yet another PortalPlayer PP5020 target.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10828 a1c6a512-1295-4272-9138-f99709370657
2006-08-31 19:19:35 +00:00
Marcoen Hirschberg
0a0682474e initial gigabeat bootloader (only test code)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10536 a1c6a512-1295-4272-9138-f99709370657
2006-08-12 08:27:48 +00:00
Marcoen Hirschberg
dd754886f5 update the gigabeat code and move to target_tree
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10535 a1c6a512-1295-4272-9138-f99709370657
2006-08-12 08:01:54 +00:00
Daniel Stenberg
6a8aebbce7 better check for portalplayer targets
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10407 a1c6a512-1295-4272-9138-f99709370657
2006-08-02 09:46:51 +00:00
Daniel Stenberg
0fc30d1174 added mostly dummy changes to allow building of a Sansa e200 bootloader
without functionality


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10399 a1c6a512-1295-4272-9138-f99709370657
2006-08-01 22:28:14 +00:00
Dave Chapman
987879b958 Further iPod 3G work from Seven Le Mesle
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8583 a1c6a512-1295-4272-9138-f99709370657
2006-02-05 17:34:49 +00:00
Thom Johansen
22e6c02f8e Removed PP5020_ prefix from register defines and added/renamed some
defines.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8438 a1c6a512-1295-4272-9138-f99709370657
2006-01-24 22:31:57 +00:00
Thom Johansen
289ec0164b Properly configurable tick timer for PP5020.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8437 a1c6a512-1295-4272-9138-f99709370657
2006-01-24 22:16:27 +00:00
Linus Nielsen Feltzing
dacc6f3821 Slightly safer version of queue_delete()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8425 a1c6a512-1295-4272-9138-f99709370657
2006-01-23 10:59:07 +00:00
Linus Nielsen Feltzing
765e0f89d8 New kernel function, queue_delete(struct event_queue *q)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8424 a1c6a512-1295-4272-9138-f99709370657
2006-01-23 10:53:47 +00:00
Dave Chapman
d83e929f3f Work-in-progress iriver iFP-7xx port by Tomasz Malesinski
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8342 a1c6a512-1295-4272-9138-f99709370657
2006-01-12 00:35:50 +00:00
Dave Chapman
cb7e695ef9 iPod: Fix the bootloader so it can load and run the original Apple firmware again. The Rockbox firmware was doing too much to the hardware so we remove most of the initialisation.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8301 a1c6a512-1295-4272-9138-f99709370657
2006-01-05 17:02:48 +00:00
Thom Johansen
544b03cf9a Add interrupt handler for iPod. Add timer tick support. Remove temporary thread sleep solution. Remove temporary iPod current_tick solution.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8224 a1c6a512-1295-4272-9138-f99709370657
2005-12-12 13:53:22 +00:00
Thom Johansen
52e91de5d3 First attempt at iPod threading.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7852 a1c6a512-1295-4272-9138-f99709370657
2005-11-13 23:47:38 +00:00
Dave Chapman
622f9334db Use ICODE_ATTR instead of __attribute__ ((section(".icode")))
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7820 a1c6a512-1295-4272-9138-f99709370657
2005-11-12 14:48:52 +00:00
Dave Chapman
d31a32c501 iPod: Code cleanup - the bootloader now compiles with zero warnings
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7812 a1c6a512-1295-4272-9138-f99709370657
2005-11-11 17:51:35 +00:00
Dave Chapman
77372d1218 Initial commit of work-in-progress iPod port
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7781 a1c6a512-1295-4272-9138-f99709370657
2005-11-07 23:07:19 +00:00
Jens Arnold
72f98786a0 Fixup of the MCF5249 memory mapped register definitions.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7755 a1c6a512-1295-4272-9138-f99709370657
2005-11-05 03:28:20 +00:00
Jens Arnold
cfb073c452 Coldfire: New timer handling on CPU frequency change, adjusting the prescaler on the fly, for both tick and user timer. Precondition is that the higher frequencies are integer multiples of the base: now NORMAL is 45 MHz and MAX is 124 MHz. Removes the need for applications with longer timer periods (>= 10 ms) to boost the CPU all the time, e.g. the grayscale lib. Timer counts are now always based on the base frequency (CPU_FREQ). * Adjusted the RAM refresh timers to the new frequencies (all frequencies for H100) * All: Fixed the tick timer count being off by one.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7576 a1c6a512-1295-4272-9138-f99709370657
2005-10-03 09:24:36 +00:00
Christian Gmeiner
c6ff1f5eb5 Added CPU_COLDFIRE define - one step closer to iAudio-port
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7186 a1c6a512-1295-4272-9138-f99709370657
2005-07-18 12:40:29 +00:00
Linus Nielsen Feltzing
76620fbe5b Export tick_start() to allow for tick timer reinit when changing CPU frequency
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6092 a1c6a512-1295-4272-9138-f99709370657
2005-03-01 14:33:45 +00:00
Jean-Philippe Bernardy
fc19445ba0 more long policy
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6065 a1c6a512-1295-4272-9138-f99709370657
2005-02-25 18:50:16 +00:00
Daniel Stenberg
22b7701fe7 Build cleanup and general fixes. fprintf() is now fdprintf(), the separation
between uisimulator files and firmware/apps files are better done.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6031 a1c6a512-1295-4272-9138-f99709370657
2005-02-22 12:19:12 +00:00
Jean-Philippe Bernardy
a3ed6e9c7a Gmini
* advances in the handling of the smsc chip
 * moved stuff to where it belongs


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6023 a1c6a512-1295-4272-9138-f99709370657
2005-02-19 21:34:03 +00:00
Jean-Philippe Bernardy
8ec05779e3 Gmini work:
* Better USB
* Better comments
* Better coding style


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6022 a1c6a512-1295-4272-9138-f99709370657
2005-02-19 17:49:58 +00:00
Jean-Philippe Bernardy
3f818ac594 Gmini keep alive implemented
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5938 a1c6a512-1295-4272-9138-f99709370657
2005-02-13 17:06:35 +00:00
Jean-Philippe Bernardy
8a77317e9c long policy
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5716 a1c6a512-1295-4272-9138-f99709370657
2005-01-30 15:40:25 +00:00
Jean-Philippe Bernardy
34d2a71fdd More int -> long
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5654 a1c6a512-1295-4272-9138-f99709370657
2005-01-24 14:26:24 +00:00
Daniel Stenberg
01c484c5d2 Jean-Philippe Bernardy: minor correction
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5558 a1c6a512-1295-4272-9138-f99709370657
2005-01-10 22:20:46 +00:00
Daniel Stenberg
fe79cd8fa9 Jean-Philippe Bernardy: ported to gmini120
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5545 a1c6a512-1295-4272-9138-f99709370657
2005-01-09 23:24:02 +00:00
Linus Nielsen Feltzing
9c4423f010 Coldfire: System tick at 10ms
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5367 a1c6a512-1295-4272-9138-f99709370657
2004-10-27 07:07:54 +00:00
Linus Nielsen Feltzing
cc0552877b Made queue_clear() atomic, and made the argument non-const
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5030 a1c6a512-1295-4272-9138-f99709370657
2004-09-01 06:24:05 +00:00
Linus Nielsen Feltzing
9872fead25 New kernel function: queue_clear()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5029 a1c6a512-1295-4272-9138-f99709370657
2004-09-01 06:20:21 +00:00
Jens Arnold
c76c568b35 Const policed pointer arguments to functions, part 1
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4995 a1c6a512-1295-4272-9138-f99709370657
2004-08-16 23:37:23 +00:00
Daniel Stenberg
7ba7ffd843 remove extra ';'
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4754 a1c6a512-1295-4272-9138-f99709370657
2004-06-16 11:30:28 +00:00
Linus Nielsen Feltzing
111a972b65 Made set_irq_level() an inline function, and optimized it by removing the bit shifts
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4330 a1c6a512-1295-4272-9138-f99709370657
2004-03-02 11:32:59 +00:00
Linus Nielsen Feltzing
f9c780ccc1 The cli()/sti() functions are not safe. We should have removed them long ago.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4314 a1c6a512-1295-4272-9138-f99709370657
2004-02-25 13:00:36 +00:00
Björn Stenberg
c4d8d970f6 The power-saving SLEEP patch by Simon Elén.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3259 a1c6a512-1295-4272-9138-f99709370657
2003-02-14 09:44:34 +00:00
Björn Stenberg
c3fd67c6c9 Killed a dozen global variables
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3015 a1c6a512-1295-4272-9138-f99709370657
2002-12-18 14:57:45 +00:00
Markus Braun
88098be7e3 Enable status bar in usb mode.
Moved usb_display_info() to screens.c
Added functions queue_wait_w_tmo() and usb_wait_for_disconnect_w_tmo().


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2574 a1c6a512-1295-4272-9138-f99709370657
2002-10-11 08:56:23 +00:00
Linus Nielsen Feltzing
9f1c82e6cc More accurate tick period calculation
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2539 a1c6a512-1295-4272-9138-f99709370657
2002-10-09 06:35:29 +00:00
Linus Nielsen Feltzing
1f4613df6c sleep() and queue_wait() moved to internal RAM
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1499 a1c6a512-1295-4272-9138-f99709370657
2002-08-01 08:14:01 +00:00
Linus Nielsen Feltzing
5421181c77 Added panicf() call in tick_add_task()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1254 a1c6a512-1295-4272-9138-f99709370657
2002-06-29 21:30:42 +00:00
Linus Nielsen Feltzing
2a73cec69b Added queue_broadcast()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1253 a1c6a512-1295-4272-9138-f99709370657
2002-06-29 21:19:55 +00:00
Linus Nielsen Feltzing
9430a0b7d6 Added init_threads function
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@920 a1c6a512-1295-4272-9138-f99709370657
2002-06-07 14:56:10 +00:00
Linus Nielsen Feltzing
80f8b22357 Clarified the mutex code, renamed the NUM_TICK_TASKS macro
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@885 a1c6a512-1295-4272-9138-f99709370657
2002-06-04 12:47:39 +00:00
Linus Nielsen Feltzing
150c5a7cef Moved NUM_TICK_TASKS definition
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@884 a1c6a512-1295-4272-9138-f99709370657
2002-06-04 12:25:53 +00:00
Björn Stenberg
29f80283e9 Added queue_empty()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@658 a1c6a512-1295-4272-9138-f99709370657
2002-05-23 09:22:07 +00:00
Linus Nielsen Feltzing
7361340ab5 Changed queue API. Added mutex functions
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@601 a1c6a512-1295-4272-9138-f99709370657
2002-05-16 20:57:32 +00:00
Linus Nielsen Feltzing
e48a45a11a The set_irq_level function was braindead
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@545 a1c6a512-1295-4272-9138-f99709370657
2002-05-11 21:44:04 +00:00
Linus Nielsen Feltzing
b7104fcd48 Made set_irq_level() and queue_post() interrupt safe
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@521 a1c6a512-1295-4272-9138-f99709370657
2002-05-08 22:07:41 +00:00
Linus Nielsen Feltzing
48d38d918f sleep() always sleeps at least one tick
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@509 a1c6a512-1295-4272-9138-f99709370657
2002-05-08 08:41:19 +00:00
Linus Nielsen Feltzing
9566349db6 tick_start() now uses HZ
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@502 a1c6a512-1295-4272-9138-f99709370657
2002-05-07 23:01:42 +00:00
Linus Nielsen Feltzing
9e142daa83 Added tick and interrupt level functions
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@449 a1c6a512-1295-4272-9138-f99709370657
2002-05-05 18:34:06 +00:00
Linus Nielsen Feltzing
bd2561dcbb Added queue handling stuff - NOT INTERRUPT SAFE
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@315 a1c6a512-1295-4272-9138-f99709370657
2002-04-29 14:25:44 +00:00
Linus Nielsen Feltzing
7b9581a131 Not yet working
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@220 a1c6a512-1295-4272-9138-f99709370657
2002-04-25 00:15:04 +00:00
Björn Stenberg
1acfd6b39d Alan's ATA code, or what's left of it after I have laid my grubby little hands
on it. :-) It compiles, but it probably doesn't work...
Also, a stub for future kernel code. A sleep() and a dummy yield(), just so we
can start to use them in other code.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@163 a1c6a512-1295-4272-9138-f99709370657
2002-04-21 22:06:12 +00:00