rockbox/firmware/SOURCES

1991 lines
56 KiB
Text
Raw Normal View History

#undef unix /* causes problems with some files */
#undef linux
ata_idle_notify.c
events.c
backlight.c
buflib.c
core_alloc.c
general.c
powermgmt.c
#if (CONFIG_PLATFORM & PLATFORM_HOSTED)
#ifdef __linux__
target/hosted/cpuinfo-linux.c
target/hosted/cpufreq-linux.c
#endif
#if !defined(SAMSUNG_YPR0) || defined(SIMULATOR) /* uses as3514 rtc */
target/hosted/rtc.c
#endif
#if (CONFIG_PLATFORM & PLATFORM_ANDROID) == 0 && \
iBasso DX50/DX90: Major code cleanup and reorganization. Reorganization - Separated iBasso devices from PLATFORM_ANDROID. These are now standlone hosted targets. Most device specific code is in the firmware/target/hosted/ibasso directory. - No dependency on Android SDK, only the Android NDK is needed. 32 bit Android NDK and Android API Level 16. - Separate implementation for each device where feasible. Code cleanup - Rewrite of existing code, from simple reformat to complete reimplementation. - New backlight interface, seperating backlight from touchscreen. - Rewrite of device button handler, removing unneeded code and fixing memory leaks. - New Debug messages interface logging to Android adb logcat (DEBUGF, panicf, logf). - Rewrite of lcd device handler, removing unneeded code and fixing memory leaks. - Rewrite of audiohw device handler/pcm interface, removing unneeded code and fixing memory leaks, enabling 44.1/48kHz pthreaded playback. - Rewrite of power and powermng, proper shutdown, using batterylog results (see http://gerrit.rockbox.org/r/#/c/1047/). - Rewrite of configure (Android NDK) and device specific config. - Rewrite of the Android NDK specific Makefile. Misc - All plugins/games/demos activated. - Update tinyalsa to latest from https://github.com/tinyalsa/tinyalsa. Includes - http://gerrit.rockbox.org/r/#/c/993/ - http://gerrit.rockbox.org/r/#/c/1010/ - http://gerrit.rockbox.org/r/#/c/1035/ Does not include http://gerrit.rockbox.org/r/#/c/1007/ due to new backlight interface and new option for hold switch, touchscreen, physical button interaction. Rockbox needs the iBasso DX50/DX90 loader for startup, see http://gerrit.rockbox.org/r/#/c/1099/ The loader expects Rockbox to be installed in /mnt/sdcard/.rockbox/. If /mnt/sdcard/ is accessed as USB mass storage device, Rockbox will exit gracefully and the loader will restart Rockbox on USB disconnect. Tested on iBasso DX50. Compiled (not tested) for iBasso DX90. Compiled (not tested) for PLATFORM_ANDROID. Change-Id: I5f5e22e68f5b4cf29c28e2b40b2c265f2beb7ab7
2015-02-02 20:44:29 +00:00
!defined(DX50) && !defined(DX90) && \
(defined(DEBUG) || defined(SIMULATOR)) /* sim should define DEBUG instead */
target/hosted/debug-hosted.c
#endif
#endif
system.c
usb.c
#if defined(ROCKBOX_HAS_LOGF) || defined(ROCKBOX_HAS_LOGDISKF)
logf.c
#endif /* ROCKBOX_HAS_LOGF */
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
load_code.c
linuxboot.c
#ifdef RB_PROFILE
profile.c
#endif /* RB_PROFILE */
#if !defined(RKW_FORMAT) && !defined(MI4_FORMAT) && defined(MODEL_NUMBER)
common/rb-loader.c
#endif
#if !defined(BOOTLOADER)
rolo.c
#endif /* !defined(BOOTLOADER) */
timer.c
debug.c
#endif /* PLATFORM_NATIVE */
panic.c
#if (CONFIG_PLATFORM & PLATFORM_HOSTED) && defined(BOOTFILE)
target/hosted/rolo.c
#endif
#if defined(HAVE_BOOTDATA) || defined(HAVE_MULTIBOOT)
common/multiboot.c
#endif
#ifdef HAVE_SDL
target/hosted/sdl/button-sdl.c
target/hosted/sdl/kernel-sdl.c
target/hosted/sdl/lcd-bitmap.c
#ifdef HAVE_REMOTE_LCD
target/hosted/sdl/lcd-remote-bitmap.c
#endif
target/hosted/sdl/lcd-sdl.c
target/hosted/sdl/system-sdl.c
#ifdef HAVE_SDL_THREADS
Rewrite filesystem code (WIP) This patch redoes the filesystem code from the FAT driver up to the clipboard code in onplay.c. Not every aspect of this is finished therefore it is still "WIP". I don't wish to do too much at once (haha!). What is left to do is get dircache back in the sim and find an implementation for the dircache indicies in the tagcache and playlist code or do something else that has the same benefit. Leaving these out for now does not make anything unusable. All the basics are done. Phone app code should probably get vetted (and app path handling just plain rewritten as environment expansions); the SDL app and Android run well. Main things addressed: 1) Thread safety: There is none right now in the trunk code. Most of what currently works is luck when multiple threads are involved or multiple descriptors to the same file are open. 2) POSIX compliance: Many of the functions behave nothing like their counterparts on a host system. This leads to inconsistent code or very different behavior from native to hosted. One huge offender was rename(). Going point by point would fill a book. 3) Actual running RAM usage: Many targets will use less RAM and less stack space (some more RAM because I upped the number of cache buffers for large memory). There's very little memory lying fallow in rarely-used areas (see 'Key core changes' below). Also, all targets may open the same number of directory streams whereas before those with less than 8MB RAM were limited to 8, not 12 implying those targets will save slightly less. 4) Performance: The test_disk plugin shows markedly improved performance, particularly in the area of (uncached) directory scanning, due partly to more optimal directory reading and to a better sector cache algorithm. Uncached times tend to be better while there is a bit of a slowdown in dircache due to it being a bit heavier of an implementation. It's not noticeable by a human as far as I can say. Key core changes: 1) Files and directories share core code and data structures. 2) The filesystem code knows which descriptors refer to same file. This ensures that changes from one stream are appropriately reflected in every open descriptor for that file (fileobj_mgr.c). 3) File and directory cache buffers are borrowed from the main sector cache. This means that when they are not in use by a file, they are not wasted, but used for the cache. Most of the time, only a few of them are needed. It also means that adding more file and directory handles is less expensive. All one must do in ensure a large enough cache to borrow from. 4) Relative path components are supported and the namespace is unified. It does not support full relative paths to an implied current directory; what is does support is use of "." and "..". Adding the former would not be very difficult. The namespace is unified in the sense that volumes may be specified several times along with relative parts, e.g.: "/<0>/foo/../../<1>/bar" :<=> "/<1>/bar". 5) Stack usage is down due to sharing of data, static allocation and less duplication of strings on the stack. This requires more serialization than I would like but since the number of threads is limited to a low number, the tradoff in favor of the stack seems reasonable. 6) Separates and heirarchicalizes (sic) the SIM and APP filesystem code. SIM path and volume handling is just like the target. Some aspects of the APP file code get more straightforward (e.g. no path hashing is needed). Dircache: Deserves its own section. Dircache is new but pays homage to the old. The old one was not compatible and so it, since it got redone, does all the stuff it always should have done such as: 1) It may be update and used at any time during the build process. No longer has one to wait for it to finish building to do basic file management (create, remove, rename, etc.). 2) It does not need to be either fully scanned or completely disabled; it can be incomplete (i.e. overfilled, missing paths), still be of benefit and be correct. 3) Handles mounting and dismounting of individual volumes which means a full rebuild is not needed just because you pop a new SD card in the slot. Now, because it reuses its freed entry data, may rebuild only that volume. 4) Much more fundamental to the file code. When it is built, it is the keeper of the master file list whether enabled or not ("disabled" is just a state of the cache). Its must always to ready to be started and bind all streams opened prior to being enabled. 5) Maintains any short filenames in OEM format which means that it does not need to be rebuilt when changing the default codepage. Miscellaneous Compatibility: 1) Update any other code that would otherwise not work such as the hotswap mounting code in various card drivers. 2) File management: Clipboard needed updating because of the behavioral changes. Still needs a little more work on some finer points. 3) Remove now-obsolete functionality such as the mutex's "no preempt" flag (which was only for the prior FAT driver). 4) struct dirinfo uses time_t rather than raw FAT directory entry time fields. I plan to follow up on genericizing everything there (i.e. no FAT attributes). 5) unicode.c needed some redoing so that the file code does not try try to load codepages during a scan, which is actually a problem with the current code. The default codepage, if any is required, is now kept in RAM separarately (bufalloced) from codepages specified to iso_decode() (which must not be bufalloced because the conversion may be done by playback threads). Brings with it some additional reusable core code: 1) Revised file functions: Reusable code that does things such as safe path concatenation and parsing without buffer limitations or data duplication. Variants that copy or alter the input path may be based off these. To do: 1) Put dircache functionality back in the sim. Treating it internally as a different kind of file system seems the best approach at this time. 2) Restore use of dircache indexes in the playlist and database or something effectively the same. Since the cache doesn't have to be complete in order to be used, not getting a hit on the cache doesn't unambiguously say if the path exists or not. Change-Id: Ia30f3082a136253e3a0eae0784e3091d138915c8 Reviewed-on: http://gerrit.rockbox.org/566 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
2013-08-06 02:02:45 +00:00
target/hosted/sdl/filesystem-sdl.c
#endif
Rewrite filesystem code (WIP) This patch redoes the filesystem code from the FAT driver up to the clipboard code in onplay.c. Not every aspect of this is finished therefore it is still "WIP". I don't wish to do too much at once (haha!). What is left to do is get dircache back in the sim and find an implementation for the dircache indicies in the tagcache and playlist code or do something else that has the same benefit. Leaving these out for now does not make anything unusable. All the basics are done. Phone app code should probably get vetted (and app path handling just plain rewritten as environment expansions); the SDL app and Android run well. Main things addressed: 1) Thread safety: There is none right now in the trunk code. Most of what currently works is luck when multiple threads are involved or multiple descriptors to the same file are open. 2) POSIX compliance: Many of the functions behave nothing like their counterparts on a host system. This leads to inconsistent code or very different behavior from native to hosted. One huge offender was rename(). Going point by point would fill a book. 3) Actual running RAM usage: Many targets will use less RAM and less stack space (some more RAM because I upped the number of cache buffers for large memory). There's very little memory lying fallow in rarely-used areas (see 'Key core changes' below). Also, all targets may open the same number of directory streams whereas before those with less than 8MB RAM were limited to 8, not 12 implying those targets will save slightly less. 4) Performance: The test_disk plugin shows markedly improved performance, particularly in the area of (uncached) directory scanning, due partly to more optimal directory reading and to a better sector cache algorithm. Uncached times tend to be better while there is a bit of a slowdown in dircache due to it being a bit heavier of an implementation. It's not noticeable by a human as far as I can say. Key core changes: 1) Files and directories share core code and data structures. 2) The filesystem code knows which descriptors refer to same file. This ensures that changes from one stream are appropriately reflected in every open descriptor for that file (fileobj_mgr.c). 3) File and directory cache buffers are borrowed from the main sector cache. This means that when they are not in use by a file, they are not wasted, but used for the cache. Most of the time, only a few of them are needed. It also means that adding more file and directory handles is less expensive. All one must do in ensure a large enough cache to borrow from. 4) Relative path components are supported and the namespace is unified. It does not support full relative paths to an implied current directory; what is does support is use of "." and "..". Adding the former would not be very difficult. The namespace is unified in the sense that volumes may be specified several times along with relative parts, e.g.: "/<0>/foo/../../<1>/bar" :<=> "/<1>/bar". 5) Stack usage is down due to sharing of data, static allocation and less duplication of strings on the stack. This requires more serialization than I would like but since the number of threads is limited to a low number, the tradoff in favor of the stack seems reasonable. 6) Separates and heirarchicalizes (sic) the SIM and APP filesystem code. SIM path and volume handling is just like the target. Some aspects of the APP file code get more straightforward (e.g. no path hashing is needed). Dircache: Deserves its own section. Dircache is new but pays homage to the old. The old one was not compatible and so it, since it got redone, does all the stuff it always should have done such as: 1) It may be update and used at any time during the build process. No longer has one to wait for it to finish building to do basic file management (create, remove, rename, etc.). 2) It does not need to be either fully scanned or completely disabled; it can be incomplete (i.e. overfilled, missing paths), still be of benefit and be correct. 3) Handles mounting and dismounting of individual volumes which means a full rebuild is not needed just because you pop a new SD card in the slot. Now, because it reuses its freed entry data, may rebuild only that volume. 4) Much more fundamental to the file code. When it is built, it is the keeper of the master file list whether enabled or not ("disabled" is just a state of the cache). Its must always to ready to be started and bind all streams opened prior to being enabled. 5) Maintains any short filenames in OEM format which means that it does not need to be rebuilt when changing the default codepage. Miscellaneous Compatibility: 1) Update any other code that would otherwise not work such as the hotswap mounting code in various card drivers. 2) File management: Clipboard needed updating because of the behavioral changes. Still needs a little more work on some finer points. 3) Remove now-obsolete functionality such as the mutex's "no preempt" flag (which was only for the prior FAT driver). 4) struct dirinfo uses time_t rather than raw FAT directory entry time fields. I plan to follow up on genericizing everything there (i.e. no FAT attributes). 5) unicode.c needed some redoing so that the file code does not try try to load codepages during a scan, which is actually a problem with the current code. The default codepage, if any is required, is now kept in RAM separarately (bufalloced) from codepages specified to iso_decode() (which must not be bufalloced because the conversion may be done by playback threads). Brings with it some additional reusable core code: 1) Revised file functions: Reusable code that does things such as safe path concatenation and parsing without buffer limitations or data duplication. Variants that copy or alter the input path may be based off these. To do: 1) Put dircache functionality back in the sim. Treating it internally as a different kind of file system seems the best approach at this time. 2) Restore use of dircache indexes in the playlist and database or something effectively the same. Since the cache doesn't have to be complete in order to be used, not getting a hit on the cache doesn't unambiguously say if the path exists or not. Change-Id: Ia30f3082a136253e3a0eae0784e3091d138915c8 Reviewed-on: http://gerrit.rockbox.org/566 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
2013-08-06 02:02:45 +00:00
target/hosted/sdl/load_code-sdl.c
target/hosted/sdl/timer-sdl.c
#ifdef HAVE_TOUCHSCREEN
target/hosted/sdl/key_to_touch-sdl.c
#endif
#ifdef APPLICATION
Rewrite filesystem code (WIP) This patch redoes the filesystem code from the FAT driver up to the clipboard code in onplay.c. Not every aspect of this is finished therefore it is still "WIP". I don't wish to do too much at once (haha!). What is left to do is get dircache back in the sim and find an implementation for the dircache indicies in the tagcache and playlist code or do something else that has the same benefit. Leaving these out for now does not make anything unusable. All the basics are done. Phone app code should probably get vetted (and app path handling just plain rewritten as environment expansions); the SDL app and Android run well. Main things addressed: 1) Thread safety: There is none right now in the trunk code. Most of what currently works is luck when multiple threads are involved or multiple descriptors to the same file are open. 2) POSIX compliance: Many of the functions behave nothing like their counterparts on a host system. This leads to inconsistent code or very different behavior from native to hosted. One huge offender was rename(). Going point by point would fill a book. 3) Actual running RAM usage: Many targets will use less RAM and less stack space (some more RAM because I upped the number of cache buffers for large memory). There's very little memory lying fallow in rarely-used areas (see 'Key core changes' below). Also, all targets may open the same number of directory streams whereas before those with less than 8MB RAM were limited to 8, not 12 implying those targets will save slightly less. 4) Performance: The test_disk plugin shows markedly improved performance, particularly in the area of (uncached) directory scanning, due partly to more optimal directory reading and to a better sector cache algorithm. Uncached times tend to be better while there is a bit of a slowdown in dircache due to it being a bit heavier of an implementation. It's not noticeable by a human as far as I can say. Key core changes: 1) Files and directories share core code and data structures. 2) The filesystem code knows which descriptors refer to same file. This ensures that changes from one stream are appropriately reflected in every open descriptor for that file (fileobj_mgr.c). 3) File and directory cache buffers are borrowed from the main sector cache. This means that when they are not in use by a file, they are not wasted, but used for the cache. Most of the time, only a few of them are needed. It also means that adding more file and directory handles is less expensive. All one must do in ensure a large enough cache to borrow from. 4) Relative path components are supported and the namespace is unified. It does not support full relative paths to an implied current directory; what is does support is use of "." and "..". Adding the former would not be very difficult. The namespace is unified in the sense that volumes may be specified several times along with relative parts, e.g.: "/<0>/foo/../../<1>/bar" :<=> "/<1>/bar". 5) Stack usage is down due to sharing of data, static allocation and less duplication of strings on the stack. This requires more serialization than I would like but since the number of threads is limited to a low number, the tradoff in favor of the stack seems reasonable. 6) Separates and heirarchicalizes (sic) the SIM and APP filesystem code. SIM path and volume handling is just like the target. Some aspects of the APP file code get more straightforward (e.g. no path hashing is needed). Dircache: Deserves its own section. Dircache is new but pays homage to the old. The old one was not compatible and so it, since it got redone, does all the stuff it always should have done such as: 1) It may be update and used at any time during the build process. No longer has one to wait for it to finish building to do basic file management (create, remove, rename, etc.). 2) It does not need to be either fully scanned or completely disabled; it can be incomplete (i.e. overfilled, missing paths), still be of benefit and be correct. 3) Handles mounting and dismounting of individual volumes which means a full rebuild is not needed just because you pop a new SD card in the slot. Now, because it reuses its freed entry data, may rebuild only that volume. 4) Much more fundamental to the file code. When it is built, it is the keeper of the master file list whether enabled or not ("disabled" is just a state of the cache). Its must always to ready to be started and bind all streams opened prior to being enabled. 5) Maintains any short filenames in OEM format which means that it does not need to be rebuilt when changing the default codepage. Miscellaneous Compatibility: 1) Update any other code that would otherwise not work such as the hotswap mounting code in various card drivers. 2) File management: Clipboard needed updating because of the behavioral changes. Still needs a little more work on some finer points. 3) Remove now-obsolete functionality such as the mutex's "no preempt" flag (which was only for the prior FAT driver). 4) struct dirinfo uses time_t rather than raw FAT directory entry time fields. I plan to follow up on genericizing everything there (i.e. no FAT attributes). 5) unicode.c needed some redoing so that the file code does not try try to load codepages during a scan, which is actually a problem with the current code. The default codepage, if any is required, is now kept in RAM separarately (bufalloced) from codepages specified to iso_decode() (which must not be bufalloced because the conversion may be done by playback threads). Brings with it some additional reusable core code: 1) Revised file functions: Reusable code that does things such as safe path concatenation and parsing without buffer limitations or data duplication. Variants that copy or alter the input path may be based off these. To do: 1) Put dircache functionality back in the sim. Treating it internally as a different kind of file system seems the best approach at this time. 2) Restore use of dircache indexes in the playlist and database or something effectively the same. Since the cache doesn't have to be complete in order to be used, not getting a hit on the cache doesn't unambiguously say if the path exists or not. Change-Id: Ia30f3082a136253e3a0eae0784e3091d138915c8 Reviewed-on: http://gerrit.rockbox.org/566 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
2013-08-06 02:02:45 +00:00
target/hosted/sdl/app/load_code-sdl-app.c
target/hosted/sdl/app/button-application.c
Rewrite filesystem code (WIP) This patch redoes the filesystem code from the FAT driver up to the clipboard code in onplay.c. Not every aspect of this is finished therefore it is still "WIP". I don't wish to do too much at once (haha!). What is left to do is get dircache back in the sim and find an implementation for the dircache indicies in the tagcache and playlist code or do something else that has the same benefit. Leaving these out for now does not make anything unusable. All the basics are done. Phone app code should probably get vetted (and app path handling just plain rewritten as environment expansions); the SDL app and Android run well. Main things addressed: 1) Thread safety: There is none right now in the trunk code. Most of what currently works is luck when multiple threads are involved or multiple descriptors to the same file are open. 2) POSIX compliance: Many of the functions behave nothing like their counterparts on a host system. This leads to inconsistent code or very different behavior from native to hosted. One huge offender was rename(). Going point by point would fill a book. 3) Actual running RAM usage: Many targets will use less RAM and less stack space (some more RAM because I upped the number of cache buffers for large memory). There's very little memory lying fallow in rarely-used areas (see 'Key core changes' below). Also, all targets may open the same number of directory streams whereas before those with less than 8MB RAM were limited to 8, not 12 implying those targets will save slightly less. 4) Performance: The test_disk plugin shows markedly improved performance, particularly in the area of (uncached) directory scanning, due partly to more optimal directory reading and to a better sector cache algorithm. Uncached times tend to be better while there is a bit of a slowdown in dircache due to it being a bit heavier of an implementation. It's not noticeable by a human as far as I can say. Key core changes: 1) Files and directories share core code and data structures. 2) The filesystem code knows which descriptors refer to same file. This ensures that changes from one stream are appropriately reflected in every open descriptor for that file (fileobj_mgr.c). 3) File and directory cache buffers are borrowed from the main sector cache. This means that when they are not in use by a file, they are not wasted, but used for the cache. Most of the time, only a few of them are needed. It also means that adding more file and directory handles is less expensive. All one must do in ensure a large enough cache to borrow from. 4) Relative path components are supported and the namespace is unified. It does not support full relative paths to an implied current directory; what is does support is use of "." and "..". Adding the former would not be very difficult. The namespace is unified in the sense that volumes may be specified several times along with relative parts, e.g.: "/<0>/foo/../../<1>/bar" :<=> "/<1>/bar". 5) Stack usage is down due to sharing of data, static allocation and less duplication of strings on the stack. This requires more serialization than I would like but since the number of threads is limited to a low number, the tradoff in favor of the stack seems reasonable. 6) Separates and heirarchicalizes (sic) the SIM and APP filesystem code. SIM path and volume handling is just like the target. Some aspects of the APP file code get more straightforward (e.g. no path hashing is needed). Dircache: Deserves its own section. Dircache is new but pays homage to the old. The old one was not compatible and so it, since it got redone, does all the stuff it always should have done such as: 1) It may be update and used at any time during the build process. No longer has one to wait for it to finish building to do basic file management (create, remove, rename, etc.). 2) It does not need to be either fully scanned or completely disabled; it can be incomplete (i.e. overfilled, missing paths), still be of benefit and be correct. 3) Handles mounting and dismounting of individual volumes which means a full rebuild is not needed just because you pop a new SD card in the slot. Now, because it reuses its freed entry data, may rebuild only that volume. 4) Much more fundamental to the file code. When it is built, it is the keeper of the master file list whether enabled or not ("disabled" is just a state of the cache). Its must always to ready to be started and bind all streams opened prior to being enabled. 5) Maintains any short filenames in OEM format which means that it does not need to be rebuilt when changing the default codepage. Miscellaneous Compatibility: 1) Update any other code that would otherwise not work such as the hotswap mounting code in various card drivers. 2) File management: Clipboard needed updating because of the behavioral changes. Still needs a little more work on some finer points. 3) Remove now-obsolete functionality such as the mutex's "no preempt" flag (which was only for the prior FAT driver). 4) struct dirinfo uses time_t rather than raw FAT directory entry time fields. I plan to follow up on genericizing everything there (i.e. no FAT attributes). 5) unicode.c needed some redoing so that the file code does not try try to load codepages during a scan, which is actually a problem with the current code. The default codepage, if any is required, is now kept in RAM separarately (bufalloced) from codepages specified to iso_decode() (which must not be bufalloced because the conversion may be done by playback threads). Brings with it some additional reusable core code: 1) Revised file functions: Reusable code that does things such as safe path concatenation and parsing without buffer limitations or data duplication. Variants that copy or alter the input path may be based off these. To do: 1) Put dircache functionality back in the sim. Treating it internally as a different kind of file system seems the best approach at this time. 2) Restore use of dircache indexes in the playlist and database or something effectively the same. Since the cache doesn't have to be complete in order to be used, not getting a hit on the cache doesn't unambiguously say if the path exists or not. Change-Id: Ia30f3082a136253e3a0eae0784e3091d138915c8 Reviewed-on: http://gerrit.rockbox.org/566 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
2013-08-06 02:02:45 +00:00
#ifdef WIN32
target/hosted/filesystem-win32.c
#else /* !WIN32 */
target/hosted/filesystem-unix.c
#endif /* WIN32 */
#endif /* APPLICATION */
#endif /* HAVE_SDL */
#ifdef APPLICATION
target/hosted/filesystem-app.c
#endif /* APPLICATION */
#if defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1)
target/hosted/kernel-unix.c
target/hosted/filesystem-unix.c
#ifndef SIMULATOR
target/hosted/lc-unix.c
drivers/lcd-memframe.c
target/hosted/samsungypr/lcd-ypr.c
#endif
target/hosted/samsungypr/gpio-ypr.c
#if CONFIG_TUNER
target/hosted/samsungypr/radio-ypr.c
#endif
#endif
#if defined(SONY_NWZ_LINUX) && !defined(SIMULATOR)
target/hosted/backtrace-glibc.c
target/hosted/kernel-unix.c
target/hosted/filesystem-unix.c
target/hosted/lc-unix.c
target/hosted/sonynwz/lcd-nwz.c
target/hosted/sonynwz/button-nwz.c
target/hosted/sonynwz/system-nwz.c
target/hosted/sonynwz/powermgmt-nwz.c
target/hosted/sonynwz/power-nwz.c
target/hosted/sonynwz/adc-nwz.c
target/hosted/sonynwz/radio-nwz.c
target/hosted/sonynwz/audio-nwz.c
target/hosted/sonynwz/debug-nwz.c
target/hosted/sonynwz/nvp-nwz.c
target/hosted/sonynwz/nwz-db.c
#endif
#if ((defined(HIBY_LINUX) || defined(FIIO_M3K_LINUX)) && !defined(SIMULATOR))
drivers/lcd-memframe.c
target/hosted/alsa-controls.c
target/hosted/pcm-alsa.c
target/hosted/backtrace-glibc.c
target/hosted/filesystem-unix.c
target/hosted/kernel-unix.c
target/hosted/lc-unix.c
target/hosted/sysfs.c
target/hosted/backlight-unix.c
target/hosted/system-hosted.c
target/hosted/lcd-linuxfb.c
target/hosted/power-linux.c
#endif
#if defined(AGPTEK_ROCKER) && !defined(SIMULATOR)
target/hosted/agptek/button-agptek.c
target/hosted/agptek/debug-agptek.c
target/hosted/agptek/power-agptek.c
target/hosted/agptek/powermgmt-agptek.c
#endif
#if (defined(XDUOO_X3II) || defined(XDUOO_X20)) && !defined(SIMULATOR)
target/hosted/xduoo/button-xduoo.c
target/hosted/xduoo/debug-xduoo.c
target/hosted/xduoo/power-xduoo.c
target/hosted/xduoo/powermgmt-xduoo.c
#endif
#if defined(HIBY_LINUX) && !defined(SIMULATOR)
target/hosted/usb-hiby.c
target/hosted/button-devinput.c
#endif
#if (defined(FIIO_M3K_LINUX)) && !defined(SIMULATOR)
target/hosted/fiio/buttonlight-fiio.c
target/hosted/fiio/button-fiio.c
target/hosted/fiio/debug-fiio.c
target/hosted/fiio/power-fiio.c
target/hosted/fiio/powermgmt-fiio.c
target/hosted/fiio/system-fiio.c
target/hosted/fiio/usb-fiio.c
#endif
#if (defined(EROS_Q)) && !defined(SIMULATOR)
target/hosted/aigo/button-erosq.c
target/hosted/aigo/debug-erosq.c
target/hosted/aigo/power-erosq.c
target/hosted/aigo/powermgmt-erosq.c
#endif
#if defined(SAMSUNG_YPR0) && !defined(SIMULATOR)
drivers/adc-as3514.c
#if (CONFIG_RTC == RTC_AS3514)
drivers/rtc/rtc_as3514.c
#else
target/hosted/rtc.c
#endif
target/hosted/samsungypr/ypr0/button-ypr0.c
target/hosted/samsungypr/ypr0/system-ypr0.c
#ifdef HAVE_BACKLIGHT
target/hosted/samsungypr/ypr0/backlight-ypr0.c
#endif
target/hosted/samsungypr/ypr0/ascodec-ypr0.c
target/hosted/samsungypr/ypr0/powermgmt-ypr0.c
target/hosted/samsungypr/ypr0/audio-ypr0.c
#endif
#if defined(SAMSUNG_YPR1) && !defined(SIMULATOR)
target/hosted/samsungypr/ypr1/mcs5000-ypr1.c
target/hosted/samsungypr/ypr1/button-ypr1.c
target/hosted/samsungypr/ypr1/system-ypr1.c
#ifdef HAVE_BACKLIGHT
target/hosted/samsungypr/ypr1/backlight-ypr1.c
#endif
target/hosted/samsungypr/ypr1/powermgmt-ypr1.c
target/hosted/samsungypr/ypr1/audio-ypr1.c
target/hosted/samsungypr/ypr1/pmu-ypr1.c
target/hosted/samsungypr/ypr1/wmcodec-ypr1.c
#endif
/* Maemo specific files */
#if (CONFIG_PLATFORM & PLATFORM_MAEMO)
target/hosted/maemo/maemo-thread.c
#endif
/* Standard library */
#if (CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(__MINGW32__) || defined(__CYGWIN__)
libc/strtok.c
#endif /* PLATFORM_NATIVE || __MINGW32__ || __CYGWIN__ */
#if (CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(HAVE_ROCKBOX_C_LIBRARY)
libc/atoi.c
libc/errno.c
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
/* our ctype.[ch] comes from newlib and is incompitble with most desktop's ctype */
libc/ctype.c
/* alsa on linux requires a more advanced sprintf, i.e. not ours */
libc/sprintf.c
#endif
libc/memchr.c
libc/memcmp.c
libc/qsort.c
libc/random.c
libc/strcat.c
libc/strchr.c
libc/strcmp.c
libc/strcpy.c
libc/strncmp.c
libc/strrchr.c
libc/strstr.c
libc/mktime.c
libc/gmtime.c
#endif /* CONFIG_PLATFORM || HAVE_ROCKBOX_C_LIBRARY */
/* Common */
#ifndef BOOTLOADER
common/ap_int.c
#endif
common/version.c
common/config.c
common/crc32.c
#ifdef MODEL_NUMBER
common/loader_strerror.c
#endif
#ifdef RKW_FORMAT
common/crc32-rkw.c
#endif
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
Rewrite filesystem code (WIP) This patch redoes the filesystem code from the FAT driver up to the clipboard code in onplay.c. Not every aspect of this is finished therefore it is still "WIP". I don't wish to do too much at once (haha!). What is left to do is get dircache back in the sim and find an implementation for the dircache indicies in the tagcache and playlist code or do something else that has the same benefit. Leaving these out for now does not make anything unusable. All the basics are done. Phone app code should probably get vetted (and app path handling just plain rewritten as environment expansions); the SDL app and Android run well. Main things addressed: 1) Thread safety: There is none right now in the trunk code. Most of what currently works is luck when multiple threads are involved or multiple descriptors to the same file are open. 2) POSIX compliance: Many of the functions behave nothing like their counterparts on a host system. This leads to inconsistent code or very different behavior from native to hosted. One huge offender was rename(). Going point by point would fill a book. 3) Actual running RAM usage: Many targets will use less RAM and less stack space (some more RAM because I upped the number of cache buffers for large memory). There's very little memory lying fallow in rarely-used areas (see 'Key core changes' below). Also, all targets may open the same number of directory streams whereas before those with less than 8MB RAM were limited to 8, not 12 implying those targets will save slightly less. 4) Performance: The test_disk plugin shows markedly improved performance, particularly in the area of (uncached) directory scanning, due partly to more optimal directory reading and to a better sector cache algorithm. Uncached times tend to be better while there is a bit of a slowdown in dircache due to it being a bit heavier of an implementation. It's not noticeable by a human as far as I can say. Key core changes: 1) Files and directories share core code and data structures. 2) The filesystem code knows which descriptors refer to same file. This ensures that changes from one stream are appropriately reflected in every open descriptor for that file (fileobj_mgr.c). 3) File and directory cache buffers are borrowed from the main sector cache. This means that when they are not in use by a file, they are not wasted, but used for the cache. Most of the time, only a few of them are needed. It also means that adding more file and directory handles is less expensive. All one must do in ensure a large enough cache to borrow from. 4) Relative path components are supported and the namespace is unified. It does not support full relative paths to an implied current directory; what is does support is use of "." and "..". Adding the former would not be very difficult. The namespace is unified in the sense that volumes may be specified several times along with relative parts, e.g.: "/<0>/foo/../../<1>/bar" :<=> "/<1>/bar". 5) Stack usage is down due to sharing of data, static allocation and less duplication of strings on the stack. This requires more serialization than I would like but since the number of threads is limited to a low number, the tradoff in favor of the stack seems reasonable. 6) Separates and heirarchicalizes (sic) the SIM and APP filesystem code. SIM path and volume handling is just like the target. Some aspects of the APP file code get more straightforward (e.g. no path hashing is needed). Dircache: Deserves its own section. Dircache is new but pays homage to the old. The old one was not compatible and so it, since it got redone, does all the stuff it always should have done such as: 1) It may be update and used at any time during the build process. No longer has one to wait for it to finish building to do basic file management (create, remove, rename, etc.). 2) It does not need to be either fully scanned or completely disabled; it can be incomplete (i.e. overfilled, missing paths), still be of benefit and be correct. 3) Handles mounting and dismounting of individual volumes which means a full rebuild is not needed just because you pop a new SD card in the slot. Now, because it reuses its freed entry data, may rebuild only that volume. 4) Much more fundamental to the file code. When it is built, it is the keeper of the master file list whether enabled or not ("disabled" is just a state of the cache). Its must always to ready to be started and bind all streams opened prior to being enabled. 5) Maintains any short filenames in OEM format which means that it does not need to be rebuilt when changing the default codepage. Miscellaneous Compatibility: 1) Update any other code that would otherwise not work such as the hotswap mounting code in various card drivers. 2) File management: Clipboard needed updating because of the behavioral changes. Still needs a little more work on some finer points. 3) Remove now-obsolete functionality such as the mutex's "no preempt" flag (which was only for the prior FAT driver). 4) struct dirinfo uses time_t rather than raw FAT directory entry time fields. I plan to follow up on genericizing everything there (i.e. no FAT attributes). 5) unicode.c needed some redoing so that the file code does not try try to load codepages during a scan, which is actually a problem with the current code. The default codepage, if any is required, is now kept in RAM separarately (bufalloced) from codepages specified to iso_decode() (which must not be bufalloced because the conversion may be done by playback threads). Brings with it some additional reusable core code: 1) Revised file functions: Reusable code that does things such as safe path concatenation and parsing without buffer limitations or data duplication. Variants that copy or alter the input path may be based off these. To do: 1) Put dircache functionality back in the sim. Treating it internally as a different kind of file system seems the best approach at this time. 2) Restore use of dircache indexes in the playlist and database or something effectively the same. Since the cache doesn't have to be complete in order to be used, not getting a hit on the cache doesn't unambiguously say if the path exists or not. Change-Id: Ia30f3082a136253e3a0eae0784e3091d138915c8 Reviewed-on: http://gerrit.rockbox.org/566 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
2013-08-06 02:02:45 +00:00
common/dir.c
common/disk_cache.c
common/file.c
Rewrite filesystem code (WIP) This patch redoes the filesystem code from the FAT driver up to the clipboard code in onplay.c. Not every aspect of this is finished therefore it is still "WIP". I don't wish to do too much at once (haha!). What is left to do is get dircache back in the sim and find an implementation for the dircache indicies in the tagcache and playlist code or do something else that has the same benefit. Leaving these out for now does not make anything unusable. All the basics are done. Phone app code should probably get vetted (and app path handling just plain rewritten as environment expansions); the SDL app and Android run well. Main things addressed: 1) Thread safety: There is none right now in the trunk code. Most of what currently works is luck when multiple threads are involved or multiple descriptors to the same file are open. 2) POSIX compliance: Many of the functions behave nothing like their counterparts on a host system. This leads to inconsistent code or very different behavior from native to hosted. One huge offender was rename(). Going point by point would fill a book. 3) Actual running RAM usage: Many targets will use less RAM and less stack space (some more RAM because I upped the number of cache buffers for large memory). There's very little memory lying fallow in rarely-used areas (see 'Key core changes' below). Also, all targets may open the same number of directory streams whereas before those with less than 8MB RAM were limited to 8, not 12 implying those targets will save slightly less. 4) Performance: The test_disk plugin shows markedly improved performance, particularly in the area of (uncached) directory scanning, due partly to more optimal directory reading and to a better sector cache algorithm. Uncached times tend to be better while there is a bit of a slowdown in dircache due to it being a bit heavier of an implementation. It's not noticeable by a human as far as I can say. Key core changes: 1) Files and directories share core code and data structures. 2) The filesystem code knows which descriptors refer to same file. This ensures that changes from one stream are appropriately reflected in every open descriptor for that file (fileobj_mgr.c). 3) File and directory cache buffers are borrowed from the main sector cache. This means that when they are not in use by a file, they are not wasted, but used for the cache. Most of the time, only a few of them are needed. It also means that adding more file and directory handles is less expensive. All one must do in ensure a large enough cache to borrow from. 4) Relative path components are supported and the namespace is unified. It does not support full relative paths to an implied current directory; what is does support is use of "." and "..". Adding the former would not be very difficult. The namespace is unified in the sense that volumes may be specified several times along with relative parts, e.g.: "/<0>/foo/../../<1>/bar" :<=> "/<1>/bar". 5) Stack usage is down due to sharing of data, static allocation and less duplication of strings on the stack. This requires more serialization than I would like but since the number of threads is limited to a low number, the tradoff in favor of the stack seems reasonable. 6) Separates and heirarchicalizes (sic) the SIM and APP filesystem code. SIM path and volume handling is just like the target. Some aspects of the APP file code get more straightforward (e.g. no path hashing is needed). Dircache: Deserves its own section. Dircache is new but pays homage to the old. The old one was not compatible and so it, since it got redone, does all the stuff it always should have done such as: 1) It may be update and used at any time during the build process. No longer has one to wait for it to finish building to do basic file management (create, remove, rename, etc.). 2) It does not need to be either fully scanned or completely disabled; it can be incomplete (i.e. overfilled, missing paths), still be of benefit and be correct. 3) Handles mounting and dismounting of individual volumes which means a full rebuild is not needed just because you pop a new SD card in the slot. Now, because it reuses its freed entry data, may rebuild only that volume. 4) Much more fundamental to the file code. When it is built, it is the keeper of the master file list whether enabled or not ("disabled" is just a state of the cache). Its must always to ready to be started and bind all streams opened prior to being enabled. 5) Maintains any short filenames in OEM format which means that it does not need to be rebuilt when changing the default codepage. Miscellaneous Compatibility: 1) Update any other code that would otherwise not work such as the hotswap mounting code in various card drivers. 2) File management: Clipboard needed updating because of the behavioral changes. Still needs a little more work on some finer points. 3) Remove now-obsolete functionality such as the mutex's "no preempt" flag (which was only for the prior FAT driver). 4) struct dirinfo uses time_t rather than raw FAT directory entry time fields. I plan to follow up on genericizing everything there (i.e. no FAT attributes). 5) unicode.c needed some redoing so that the file code does not try try to load codepages during a scan, which is actually a problem with the current code. The default codepage, if any is required, is now kept in RAM separarately (bufalloced) from codepages specified to iso_decode() (which must not be bufalloced because the conversion may be done by playback threads). Brings with it some additional reusable core code: 1) Revised file functions: Reusable code that does things such as safe path concatenation and parsing without buffer limitations or data duplication. Variants that copy or alter the input path may be based off these. To do: 1) Put dircache functionality back in the sim. Treating it internally as a different kind of file system seems the best approach at this time. 2) Restore use of dircache indexes in the playlist and database or something effectively the same. Since the cache doesn't have to be complete in order to be used, not getting a hit on the cache doesn't unambiguously say if the path exists or not. Change-Id: Ia30f3082a136253e3a0eae0784e3091d138915c8 Reviewed-on: http://gerrit.rockbox.org/566 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
2013-08-06 02:02:45 +00:00
common/file_internal.c
common/disk.c
Rewrite filesystem code (WIP) This patch redoes the filesystem code from the FAT driver up to the clipboard code in onplay.c. Not every aspect of this is finished therefore it is still "WIP". I don't wish to do too much at once (haha!). What is left to do is get dircache back in the sim and find an implementation for the dircache indicies in the tagcache and playlist code or do something else that has the same benefit. Leaving these out for now does not make anything unusable. All the basics are done. Phone app code should probably get vetted (and app path handling just plain rewritten as environment expansions); the SDL app and Android run well. Main things addressed: 1) Thread safety: There is none right now in the trunk code. Most of what currently works is luck when multiple threads are involved or multiple descriptors to the same file are open. 2) POSIX compliance: Many of the functions behave nothing like their counterparts on a host system. This leads to inconsistent code or very different behavior from native to hosted. One huge offender was rename(). Going point by point would fill a book. 3) Actual running RAM usage: Many targets will use less RAM and less stack space (some more RAM because I upped the number of cache buffers for large memory). There's very little memory lying fallow in rarely-used areas (see 'Key core changes' below). Also, all targets may open the same number of directory streams whereas before those with less than 8MB RAM were limited to 8, not 12 implying those targets will save slightly less. 4) Performance: The test_disk plugin shows markedly improved performance, particularly in the area of (uncached) directory scanning, due partly to more optimal directory reading and to a better sector cache algorithm. Uncached times tend to be better while there is a bit of a slowdown in dircache due to it being a bit heavier of an implementation. It's not noticeable by a human as far as I can say. Key core changes: 1) Files and directories share core code and data structures. 2) The filesystem code knows which descriptors refer to same file. This ensures that changes from one stream are appropriately reflected in every open descriptor for that file (fileobj_mgr.c). 3) File and directory cache buffers are borrowed from the main sector cache. This means that when they are not in use by a file, they are not wasted, but used for the cache. Most of the time, only a few of them are needed. It also means that adding more file and directory handles is less expensive. All one must do in ensure a large enough cache to borrow from. 4) Relative path components are supported and the namespace is unified. It does not support full relative paths to an implied current directory; what is does support is use of "." and "..". Adding the former would not be very difficult. The namespace is unified in the sense that volumes may be specified several times along with relative parts, e.g.: "/<0>/foo/../../<1>/bar" :<=> "/<1>/bar". 5) Stack usage is down due to sharing of data, static allocation and less duplication of strings on the stack. This requires more serialization than I would like but since the number of threads is limited to a low number, the tradoff in favor of the stack seems reasonable. 6) Separates and heirarchicalizes (sic) the SIM and APP filesystem code. SIM path and volume handling is just like the target. Some aspects of the APP file code get more straightforward (e.g. no path hashing is needed). Dircache: Deserves its own section. Dircache is new but pays homage to the old. The old one was not compatible and so it, since it got redone, does all the stuff it always should have done such as: 1) It may be update and used at any time during the build process. No longer has one to wait for it to finish building to do basic file management (create, remove, rename, etc.). 2) It does not need to be either fully scanned or completely disabled; it can be incomplete (i.e. overfilled, missing paths), still be of benefit and be correct. 3) Handles mounting and dismounting of individual volumes which means a full rebuild is not needed just because you pop a new SD card in the slot. Now, because it reuses its freed entry data, may rebuild only that volume. 4) Much more fundamental to the file code. When it is built, it is the keeper of the master file list whether enabled or not ("disabled" is just a state of the cache). Its must always to ready to be started and bind all streams opened prior to being enabled. 5) Maintains any short filenames in OEM format which means that it does not need to be rebuilt when changing the default codepage. Miscellaneous Compatibility: 1) Update any other code that would otherwise not work such as the hotswap mounting code in various card drivers. 2) File management: Clipboard needed updating because of the behavioral changes. Still needs a little more work on some finer points. 3) Remove now-obsolete functionality such as the mutex's "no preempt" flag (which was only for the prior FAT driver). 4) struct dirinfo uses time_t rather than raw FAT directory entry time fields. I plan to follow up on genericizing everything there (i.e. no FAT attributes). 5) unicode.c needed some redoing so that the file code does not try try to load codepages during a scan, which is actually a problem with the current code. The default codepage, if any is required, is now kept in RAM separarately (bufalloced) from codepages specified to iso_decode() (which must not be bufalloced because the conversion may be done by playback threads). Brings with it some additional reusable core code: 1) Revised file functions: Reusable code that does things such as safe path concatenation and parsing without buffer limitations or data duplication. Variants that copy or alter the input path may be based off these. To do: 1) Put dircache functionality back in the sim. Treating it internally as a different kind of file system seems the best approach at this time. 2) Restore use of dircache indexes in the playlist and database or something effectively the same. Since the cache doesn't have to be complete in order to be used, not getting a hit on the cache doesn't unambiguously say if the path exists or not. Change-Id: Ia30f3082a136253e3a0eae0784e3091d138915c8 Reviewed-on: http://gerrit.rockbox.org/566 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
2013-08-06 02:02:45 +00:00
common/fileobj_mgr.c
#endif /* PLATFORM_NATIVE */
#ifdef HAVE_DIRCACHE
common/dircache.c
#endif /* HAVE_DIRCACHE */
Rewrite filesystem code (WIP) This patch redoes the filesystem code from the FAT driver up to the clipboard code in onplay.c. Not every aspect of this is finished therefore it is still "WIP". I don't wish to do too much at once (haha!). What is left to do is get dircache back in the sim and find an implementation for the dircache indicies in the tagcache and playlist code or do something else that has the same benefit. Leaving these out for now does not make anything unusable. All the basics are done. Phone app code should probably get vetted (and app path handling just plain rewritten as environment expansions); the SDL app and Android run well. Main things addressed: 1) Thread safety: There is none right now in the trunk code. Most of what currently works is luck when multiple threads are involved or multiple descriptors to the same file are open. 2) POSIX compliance: Many of the functions behave nothing like their counterparts on a host system. This leads to inconsistent code or very different behavior from native to hosted. One huge offender was rename(). Going point by point would fill a book. 3) Actual running RAM usage: Many targets will use less RAM and less stack space (some more RAM because I upped the number of cache buffers for large memory). There's very little memory lying fallow in rarely-used areas (see 'Key core changes' below). Also, all targets may open the same number of directory streams whereas before those with less than 8MB RAM were limited to 8, not 12 implying those targets will save slightly less. 4) Performance: The test_disk plugin shows markedly improved performance, particularly in the area of (uncached) directory scanning, due partly to more optimal directory reading and to a better sector cache algorithm. Uncached times tend to be better while there is a bit of a slowdown in dircache due to it being a bit heavier of an implementation. It's not noticeable by a human as far as I can say. Key core changes: 1) Files and directories share core code and data structures. 2) The filesystem code knows which descriptors refer to same file. This ensures that changes from one stream are appropriately reflected in every open descriptor for that file (fileobj_mgr.c). 3) File and directory cache buffers are borrowed from the main sector cache. This means that when they are not in use by a file, they are not wasted, but used for the cache. Most of the time, only a few of them are needed. It also means that adding more file and directory handles is less expensive. All one must do in ensure a large enough cache to borrow from. 4) Relative path components are supported and the namespace is unified. It does not support full relative paths to an implied current directory; what is does support is use of "." and "..". Adding the former would not be very difficult. The namespace is unified in the sense that volumes may be specified several times along with relative parts, e.g.: "/<0>/foo/../../<1>/bar" :<=> "/<1>/bar". 5) Stack usage is down due to sharing of data, static allocation and less duplication of strings on the stack. This requires more serialization than I would like but since the number of threads is limited to a low number, the tradoff in favor of the stack seems reasonable. 6) Separates and heirarchicalizes (sic) the SIM and APP filesystem code. SIM path and volume handling is just like the target. Some aspects of the APP file code get more straightforward (e.g. no path hashing is needed). Dircache: Deserves its own section. Dircache is new but pays homage to the old. The old one was not compatible and so it, since it got redone, does all the stuff it always should have done such as: 1) It may be update and used at any time during the build process. No longer has one to wait for it to finish building to do basic file management (create, remove, rename, etc.). 2) It does not need to be either fully scanned or completely disabled; it can be incomplete (i.e. overfilled, missing paths), still be of benefit and be correct. 3) Handles mounting and dismounting of individual volumes which means a full rebuild is not needed just because you pop a new SD card in the slot. Now, because it reuses its freed entry data, may rebuild only that volume. 4) Much more fundamental to the file code. When it is built, it is the keeper of the master file list whether enabled or not ("disabled" is just a state of the cache). Its must always to ready to be started and bind all streams opened prior to being enabled. 5) Maintains any short filenames in OEM format which means that it does not need to be rebuilt when changing the default codepage. Miscellaneous Compatibility: 1) Update any other code that would otherwise not work such as the hotswap mounting code in various card drivers. 2) File management: Clipboard needed updating because of the behavioral changes. Still needs a little more work on some finer points. 3) Remove now-obsolete functionality such as the mutex's "no preempt" flag (which was only for the prior FAT driver). 4) struct dirinfo uses time_t rather than raw FAT directory entry time fields. I plan to follow up on genericizing everything there (i.e. no FAT attributes). 5) unicode.c needed some redoing so that the file code does not try try to load codepages during a scan, which is actually a problem with the current code. The default codepage, if any is required, is now kept in RAM separarately (bufalloced) from codepages specified to iso_decode() (which must not be bufalloced because the conversion may be done by playback threads). Brings with it some additional reusable core code: 1) Revised file functions: Reusable code that does things such as safe path concatenation and parsing without buffer limitations or data duplication. Variants that copy or alter the input path may be based off these. To do: 1) Put dircache functionality back in the sim. Treating it internally as a different kind of file system seems the best approach at this time. 2) Restore use of dircache indexes in the playlist and database or something effectively the same. Since the cache doesn't have to be complete in order to be used, not getting a hit on the cache doesn't unambiguously say if the path exists or not. Change-Id: Ia30f3082a136253e3a0eae0784e3091d138915c8 Reviewed-on: http://gerrit.rockbox.org/566 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
2013-08-06 02:02:45 +00:00
common/pathfuncs.c
common/fdprintf.c
common/linked_list.c
common/rb_namespace.c
common/strcasecmp.c
common/strcasestr.c
common/strnatcmp.c
common/strlcat.c
common/strlcpy.c
common/structec.c
common/timefuncs.c
common/unicode.c
common/vuprintf.c
common/zip.c
common/adler32.c
common/inflate.c
/* Display */
scroll_engine.c
arabjoin.c
bidi.c
font_cache.c
font.c
hangul.c
lru.c
#ifndef BOOTLOADER
screendump.c
#endif
#if LCD_DEPTH == 1
drivers/lcd-1bit-vert.c
#elif LCD_DEPTH == 2
#if LCD_PIXELFORMAT == HORIZONTAL_PACKING
drivers/lcd-2bit-horz.c
#elif LCD_PIXELFORMAT == VERTICAL_PACKING
drivers/lcd-2bit-vert.c
#elif LCD_PIXELFORMAT == VERTICAL_INTERLEAVED
drivers/lcd-2bit-vi.c
#endif /* LCD_PIXELFORMAT */
#elif LCD_DEPTH == 16
#if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE
drivers/lcd-16bit-vert.c
#else
drivers/lcd-16bit.c
#endif
#elif (LCD_DEPTH == 24) || (LCD_PIXELFORMAT == XRGB8888)
drivers/lcd-24bit.c
#endif /* LCD_DEPTH */
common/diacritic.c
#ifdef HAVE_REMOTE_LCD
#if LCD_REMOTE_DEPTH == 1
drivers/lcd-remote-1bit-v.c
#elif LCD_REMOTE_DEPTH == 2
drivers/lcd-remote-2bit-vi.c
#endif /* LCD_REMOTE_DEPTH */
#endif /* HAVE_REMOTE_LCD */
#if (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_SETTING) \
|| (CONFIG_BACKLIGHT_FADING == BACKLIGHT_FADING_SW_HW_REG)
backlight-sw-fading.c
#endif /* CONFIG_BACKLIGHT_FADING */
/* Misc. */
drivers/led.c
drivers/button.c
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
#ifdef HAVE_DAC3550A
drivers/audio/dac3550a.c
#endif
#ifdef HAVE_SERIAL
drivers/serial.c
#endif
#endif /* PLATFORM_NATIVE */
#ifdef HAVE_TOUCHSCREEN
drivers/touchscreen.c
#endif
/* Storage */
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
#if (CONFIG_STORAGE & STORAGE_NAND) && (CONFIG_NAND == NAND_TCC)
target/arm/ata-nand-telechips.c
#endif
#if (CONFIG_STORAGE & STORAGE_NAND) && (CONFIG_NAND == NAND_SAMSUNG)
target/arm/s5l8700/ata-nand-s5l8700.c
#endif
#if (CONFIG_STORAGE & STORAGE_NAND) && (CONFIG_NAND == NAND_RK27XX)
target/arm/rk27xx/ata-nand-rk27xx.c
#endif
#if (CONFIG_STORAGE & STORAGE_ATA) && !defined(IPOD_6G)
drivers/ata.c
#endif
#if (CONFIG_STORAGE & STORAGE_SD)
drivers/sd.c
#endif
#if (CONFIG_STORAGE & STORAGE_RAMDISK)
drivers/ramdisk.c
#endif
storage.c
drivers/fat.c
#if (CONFIG_STORAGE & STORAGE_MMC) || (CONFIG_STORAGE & STORAGE_SD)
sdmmc.c
#endif
#endif /* PLATFORM_NATIVE */
/* EEPROM */
#ifdef HAVE_EEPROM
drivers/eeprom_24cxx.c
#ifdef HAVE_EEPROM_SETTINGS
eeprom_settings.c
#endif /* HAVE_EEPROM_SETTINGS */
#endif /* HAVE_EEPROM */
/* RTC */
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
#if (CONFIG_RTC == RTC_PCF50606)
drivers/rtc/rtc_pcf50606.c
#elif (CONFIG_RTC == RTC_PCF50605)
drivers/rtc/rtc_pcf50605.c
#elif (CONFIG_RTC == RTC_E8564)
drivers/rtc/rtc_e8564.c
#elif (CONFIG_RTC == RTC_DS1339_DS3231)
drivers/rtc/rtc_ds1339_ds3231.c
#elif (CONFIG_RTC == RTC_S3C2440)
drivers/rtc/rtc_s3c2440.c
#elif (CONFIG_RTC == RTC_AS3514)
drivers/rtc/rtc_as3514.c
#elif (CONFIG_RTC == RTC_RX5X348AB)
drivers/rtc/rtc_rx5x348ab.c
#elif (CONFIG_RTC == RTC_MR100)
drivers/rtc/rtc_mr100.c
#elif (CONFIG_RTC == RTC_MC13783)
drivers/rtc/rtc_mc13783.c
#elif (CONFIG_RTC == RTC_JZ4740)
drivers/rtc/rtc_jz4740.c
#elif (CONFIG_RTC == RTC_JZ4760)
drivers/rtc/rtc_jz4760.c
#elif (CONFIG_RTC == RTC_X1000)
drivers/rtc/rtc_x1000.c
#elif (CONFIG_RTC == RTC_S35390A)
drivers/rtc/rtc_s35390a.c
#elif (CONFIG_RTC == RTC_S35380A)
drivers/rtc/rtc_s35380a.c
#elif (CONFIG_RTC == RTC_D2)
drivers/rtc/rtc_d2.c
#elif (CONFIG_RTC == RTC_IMX233)
drivers/rtc/rtc_imx233.c
#endif /* (CONFIG_RTC == RTC_) */
#endif /* PLATFORM_NATIVE */
#ifndef BOOTLOADER
/* Tuner */
#if CONFIG_TUNER
tuner.c
#if ((CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) || defined(SONY_NWZ_LINUX))
#if (CONFIG_TUNER & LV24020LP)
drivers/tuner/lv24020lp.c
#endif /* (CONFIG_TUNER & LV24020LP) */
#if (CONFIG_TUNER & TEA5760)
drivers/tuner/tea5760uk.c
#endif
#if (CONFIG_TUNER & TEA5767)
drivers/tuner/tea5767.c
#endif /* (CONFIG_TUNER & TEA5767) */
#if (CONFIG_TUNER & SI4700)
drivers/tuner/si4700.c
#endif /* (CONFIG_TUNER & SI4700) */
#if (CONFIG_TUNER & IPOD_REMOTE_TUNER)
drivers/tuner/ipod_remote_tuner.c
#endif /* (CONFIG_TUNER & IPOD_REMOTE_TUNER) */
#if (CONFIG_TUNER & RDA5802)
drivers/tuner/rda5802.c
#endif /* (CONFIG_TUNER & RDA5802) */
#if (CONFIG_TUNER & STFM1000)
drivers/tuner/stfm1000.c
#endif /* (CONFIG_TUNER & STFM1000) */
#if defined(HAVE_RDS_CAP)
drivers/rds.c
#endif /* HAVE_RDS_CAP */
#endif /* PLATFORM_NATIVE */
#endif /* CONFIG_TUNER */
#endif /* BOOTLOADER */
/* Sound */
sound.c
#ifndef BOOTLOADER
pcm_sampr.c
pcm.c
pcm_mixer.c
#ifdef HAVE_SW_VOLUME_CONTROL
pcm_sw_volume.c
#endif /* HAVE_SW_VOLUME_CONTROL */
#ifdef HAVE_RECORDING
enc_base.c
#endif /* HAVE_RECORDING */
drivers/audio/audiohw-swcodec.c
#endif /* BOOTLOADER */
/* Audio codec */
#if !defined(BOOTLOADER)
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
#if defined(HAVE_UDA1380)
drivers/audio/uda1380.c
#elif defined(HAVE_WM8740)
drivers/audio/wm8740.c
#elif defined(HAVE_WM8751) \
|| defined(HAVE_WM8750)
drivers/audio/wm8751.c
#elif defined(HAVE_WM8978)
drivers/audio/wm8978.c
#elif defined(HAVE_WM8975)
drivers/audio/wm8975.c
#elif defined(HAVE_WM8985)
drivers/audio/wm8985.c
#elif defined(HAVE_WM8758)
drivers/audio/wm8758.c
#elif defined(HAVE_WM8711) \
|| defined(HAVE_WM8721) \
|| defined(HAVE_WM8731)
drivers/audio/wm8731.c
#elif defined(HAVE_AS3514)
drivers/audio/as3514.c
#elif defined(HAVE_TLV320)
drivers/audio/tlv320.c
#elif defined(HAVE_AK4537)
drivers/audio/ak4537.c
#elif defined(HAVE_AK4376)
drivers/audio/ak4376.c
#elif defined(HAVE_UDA1341)
drivers/audio/uda1341.c
#elif defined(HAVE_CS42L55)
drivers/audio/cs42l55.c
#elif defined (HAVE_RK27XX_CODEC)
drivers/audio/rk27xx_codec.c
#elif defined(HAVE_AIC3X)
drivers/audio/aic3x.c
#elif defined (HAVE_DUMMY_CODEC)
drivers/audio/dummy_codec.c
#elif defined (HAVE_DF1704_CODEC)
drivers/audio/df1704.c
#elif defined (HAVE_PCM1792_CODEC)
drivers/audio/pcm1792.c
#elif defined (HAVE_CS4398)
drivers/audio/cs4398.c
#elif defined (HAVE_ES9018)
drivers/audio/es9018.c
#elif defined (HAVE_ES9218)
drivers/audio/es9218.c
#elif defined (HAVE_EROS_QN_CODEC)
drivers/audio/eros_qn_codec.c
#endif /* defined(HAVE_*) */
#else /* PLATFORM_HOSTED */
#if defined(SAMSUNG_YPR0) && defined(HAVE_AS3514)
drivers/audio/as3514.c
target/hosted/pcm-alsa.c
#elif defined(SAMSUNG_YPR1) && defined(HAVE_WM8978)
drivers/audio/wm8978.c
target/hosted/pcm-alsa.c
#elif defined(HAVE_NWZ_LINUX_CODEC)
drivers/audio/nwzlinux-codec.c
target/hosted/alsa-controls.c
target/hosted/pcm-alsa.c
#elif defined(HAVE_ROCKER_CODEC) && !defined(SIMULATOR)
drivers/audio/rocker_codec.c
#elif defined(HAVE_XDUOO_LINUX_CODEC) && !defined(SIMULATOR)
drivers/audio/xduoolinux_codec.c
#elif defined(HAVE_FIIO_LINUX_CODEC) && !defined(SIMULATOR)
drivers/audio/fiiolinux_codec.c
#elif defined(HAVE_EROSQ_LINUX_CODEC) && !defined(SIMULATOR)
drivers/audio/erosqlinux_codec.c
#elif defined(HAVE_SDL_AUDIO)
drivers/audio/sdl.c
#if (CONFIG_PLATFORM & PLATFORM_MAEMO5)
target/hosted/maemo/pcm-gstreamer.c
#else
target/hosted/sdl/pcm-sdl.c
#endif /* (CONFIG_PLATFORM & PLATFORM_MAEMO) */
#endif
#endif /* (CONFIG_PLATFORM & PLATFORM_NATIVE) */
#endif /* !defined(BOOTLOADER) */
/* WiFi */
#if !defined(BOOTLOADER)
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
#if defined(HAVE_W8686_SPI)
drivers/libertas/if_spi.c
#endif
#endif /* (CONFIG_PLATFORM & PLATFORM_NATIVE) */
#endif /* !defined(BOOTLOADER) */
/* CPU Specific - By class then particular chip if applicable */
#if defined(CPU_COLDFIRE)
target/coldfire/crt0.S
target/coldfire/kernel-coldfire.c
target/coldfire/system-coldfire.c
target/coldfire/timer-coldfire.c
#ifndef BOOTLOADER
target/coldfire/pcm-coldfire.c
target/coldfire/debug-coldfire.c
#endif /* BOOTLOADER */
#if CONFIG_I2C == I2C_COLDFIRE
target/coldfire/i2c-coldfire.c
#endif /* CONFIG_I2C == I2C_COLDFIRE */
#if CONFIG_STORAGE & STORAGE_ATA
target/coldfire/ata-as-coldfire.S
#endif
#elif defined(CPU_PP) || (defined(CPU_ARM) && (CONFIG_PLATFORM & PLATFORM_NATIVE))
/* CPU_PP => CPU_ARM, CPU_ARM !=> CPU_PP */
# if ARM_ARCH < 6
target/arm/bits-armv4.S
# if CONFIG_CPU == IMX233 || CONFIG_CPU == DM320 \
|| CONFIG_CPU == AS3525 || CONFIG_CPU == AS3525v2 \
|| CONFIG_CPU == S3C2440 || CONFIG_CPU == TCC7801 \
|| defined(CPU_S5L870X)
target/arm/mmu-arm.S
# endif
# endif
target/arm/system-arm.c
#if CONFIG_STORAGE & STORAGE_ATA
# ifdef CPU_PP502x
target/arm/pp/ata-pp5020.c
# endif
# if CONFIG_CPU == DM320 || defined(CPU_PP502x)
target/arm/ata-as-arm.S
# endif
#endif
#if defined(CPU_PP) && defined(IPOD_ARCH)
target/arm/ipod/power-ipod.c
# if LCD_DEPTH == 2
target/arm/ipod/lcd-as-gray.S
# endif
# ifndef IPOD_1G2G
# ifndef IPOD_3G
target/arm/ipod/piezo.c
# endif /* IPOD_3G */
drivers/pcf50605.c
target/arm/ipod/powermgmt-ipod-pcf.c
# endif /* IPOD_1G2G */
#endif /* CPU_PP && IPOD_ARCH */
#if CONFIG_I2C == I2C_PP5024 || CONFIG_I2C == I2C_PP5020 || CONFIG_I2C == I2C_PP5002
target/arm/pp/i2c-pp.c
#elif CONFIG_I2C == I2C_PNX0101
target/arm/pnx0101/i2c-pnx0101.c
#elif CONFIG_I2C == I2C_TCC780X
target/arm/i2c-telechips.c
#elif CONFIG_I2C == I2C_S3C2440
target/arm/s3c2440/i2c-s3c2440.c
#elif CONFIG_I2C == I2C_S5L8700
target/arm/s5l8700/i2c-s5l8700.c
#elif CONFIG_I2C == I2C_S5L8702
target/arm/s5l8702/i2c-s5l8702.c
#elif CONFIG_I2C == I2C_RK27XX
target/arm/rk27xx/i2c-rk27xx.c
#elif CONFIG_I2C == I2C_IMX233
target/arm/imx233/i2c-imx233.c
#endif
#if CONFIG_CPU == PNX0101
target/arm/pnx0101/kernel-pnx0101.c
target/arm/pnx0101/system-pnx0101.c
target/arm/pnx0101/timer-pnx0101.c
#endif
#if CONFIG_CPU == IMX233
target/arm/imx233/lcdif-imx233.c
target/arm/imx233/clkctrl-imx233.c
target/arm/imx233/system-imx233.c
target/arm/imx233/timrot-imx233.c
target/arm/imx233/kernel-imx233.c
# if (CONFIG_STORAGE & (STORAGE_SD | STORAGE_MMC))
target/arm/imx233/sdmmc-imx233.c
# endif
# if (CONFIG_STORAGE & (STORAGE_ATA))
target/arm/imx233/ata-imx233.c
# endif
target/arm/imx233/partitions-imx233.c
target/arm/imx233/ssp-imx233.c
target/arm/imx233/dma-imx233.c
target/arm/imx233/icoll-imx233.c
target/arm/imx233/pinctrl-imx233.c
target/arm/imx233/power-imx233.c
target/arm/imx233/powermgmt-imx233.c
target/arm/imx233/adc-imx233.c
target/arm/imx233/lradc-imx233.c
target/arm/imx233/pwm-imx233.c
target/arm/imx233/rtc-imx233.c
target/arm/imx233/dualboot-imx233.c
target/arm/imx233/button-imx233.c
#if IMX233_SUBTARGET >= 3700
target/arm/imx233/dcp-imx233.c
#endif
target/arm/imx233/emi-imx233.c
target/arm/imx233/uartdbg-imx233.c
# if defined(HAVE_TOUCHSCREEN) || defined(HAVE_TOUCHPAD_IMX233)
target/arm/imx233/touchscreen-imx233.c
# endif
#ifndef BOOTLOADER
target/arm/imx233/debug-imx233.c
#endif
#if !defined(BOOTLOADER) || defined(HAVE_BOOTLOADER_USB_MODE)
target/arm/imx233/usb-imx233.c
target/arm/imx233/led-imx233.c
#endif
#ifndef BOOTLOADER
#ifdef HAVE_IMX233_CODEC
target/arm/imx233/audioout-imx233.c
target/arm/imx233/audioin-imx233.c
target/arm/imx233/audio-imx233.c
target/arm/imx233/pcm-imx233.c
drivers/audio/imx233-codec.c
#endif
target/arm/imx233/timer-imx233.c
#endif
#endif /* IMX233 */
#if CONFIG_CPU == AS3525 || CONFIG_CPU == AS3525v2
target/arm/as3525/system-as3525.c
target/arm/as3525/memory-init.S
target/arm/as3525/kernel-as3525.c
target/arm/as3525/timer-as3525.c
#if CONFIG_CPU == AS3525
target/arm/as3525/sd-as3525.c
#ifdef HAVE_SCROLLWHEEL
target/arm/as3525/scrollwheel-as3525.c
#endif /* HAVE_SCROLLWHEEL */
#else /* AS3535v2 */
target/arm/as3525/tuner-as3525v2.c
target/arm/as3525/sd-as3525v2.c
#endif
target/arm/as3525/power-as3525.c
target/arm/as3525/usb-as3525.c
target/arm/as3525/dma-pl081.c
target/arm/as3525/ascodec-as3525.c
#ifndef BOOTLOADER
drivers/generic_i2c.c
target/arm/as3525/audio-as3525.c
target/arm/as3525/debug-as3525.c
#if CONFIG_TUNER
target/arm/as3525/fmradio-i2c-as3525.c
#endif /* CONFIG_TUNER */
target/arm/as3525/pcm-as3525.c
#endif /* BOOTLOADER */
#endif /* CONFIG_CPU == AS3525 */
#if defined(CPU_PP)
target/arm/pp/i2s-pp.c
target/arm/pp/kernel-pp.c
target/arm/pp/timer-pp.c
target/arm/pp/mi4-loader.c
# if CONFIG_STORAGE & STORAGE_SD
target/arm/pp/ata-sd-pp.c
# endif
# if !defined(HAVE_AS3514) && !defined(HAVE_AK4537)
target/arm/pp/wmcodec-pp.c
# endif
#if CONFIG_CPU == PP5002
target/arm/pp/system-pp5002.c
target/arm/pp/usb-fw-pp5002.c
target/arm/pp/ata-pp5002.c
# ifdef HAVE_SERIAL
target/arm/pp/uart-pp.c
# endif /* HAVE_SERIAL */
#elif defined CPU_PP502x
target/arm/pp/usb-fw-pp502x.c
target/arm/pp/system-pp502x.c
# ifdef HAVE_SERIAL
target/arm/pp/uart-pp.c
# endif /* HAVE_SERIAL */
#endif /* (CONFIG_CPU==PP5002) || CPU_PP502x */
Add working dual-boot bootloaders for H10 and Sansa, which allow booting the OF and Rockbox. Rolo also works. Changes made: Combine bootloader/h10.c and bootloader/e200.c into a common bootloader file (bootloader/main-pp.c) to be used by all mi4 based PortalPlayer targets. The file bootloader/main-pp.c is based off the old bootloader/h10.c with some minor changes to allow it to work on the Sansa too. This effectively adds a Sansa bootloader. Define MODEL_NAME string in config-*.h for use in bootloader. Split crt0-pp.S into separate files for bootloader and normal builds. Bootloader code is now in crt0-pp-bl.S while normal build code stays in crt0-pp.S. Improvements to crt0-pp.S and crt0-pp-bl.S (mostly to make it more multiprocessor safe): * Leave space in bootloader at 0xe0-0xeb since scramble writes over there when it creates the mi4 file (don't leave space for iPods since it's not needed and all code in crt0-pp-bl.S needs to fit before the boot_table at 0x100). * Remove unused DEBUG and STUB code from crt0-pp.S. * Make CPU wait for COP to be sleeping when we put the COP to sleep. * Invalidate COP cache when COP wakes * Flush CPU cache before waking COP * Make sure only the CPU clears the BSS (not the COP) * Make sure only the CPU sets up its own stack (not the COP) Rolo works on H10, so enable it. Make Sansa e200 use rockbox.e200 rather than PP5022.mi4 for 'Normal' builds. This makes updating rockbox simpler as we don't need to go through the firmware update procedure, but rather just put a new rockbox.e200 on the device. rockbox.e200 uses a simple 'add' checksum. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11815 a1c6a512-1295-4272-9138-f99709370657
2006-12-19 11:33:53 +00:00
#ifdef BOOTLOADER
#ifdef HAVE_BOOTLOADER_USB_MODE
target/arm/pp/crt0-pp502x-bl-usb.S
Add working dual-boot bootloaders for H10 and Sansa, which allow booting the OF and Rockbox. Rolo also works. Changes made: Combine bootloader/h10.c and bootloader/e200.c into a common bootloader file (bootloader/main-pp.c) to be used by all mi4 based PortalPlayer targets. The file bootloader/main-pp.c is based off the old bootloader/h10.c with some minor changes to allow it to work on the Sansa too. This effectively adds a Sansa bootloader. Define MODEL_NAME string in config-*.h for use in bootloader. Split crt0-pp.S into separate files for bootloader and normal builds. Bootloader code is now in crt0-pp-bl.S while normal build code stays in crt0-pp.S. Improvements to crt0-pp.S and crt0-pp-bl.S (mostly to make it more multiprocessor safe): * Leave space in bootloader at 0xe0-0xeb since scramble writes over there when it creates the mi4 file (don't leave space for iPods since it's not needed and all code in crt0-pp-bl.S needs to fit before the boot_table at 0x100). * Remove unused DEBUG and STUB code from crt0-pp.S. * Make CPU wait for COP to be sleeping when we put the COP to sleep. * Invalidate COP cache when COP wakes * Flush CPU cache before waking COP * Make sure only the CPU clears the BSS (not the COP) * Make sure only the CPU sets up its own stack (not the COP) Rolo works on H10, so enable it. Make Sansa e200 use rockbox.e200 rather than PP5022.mi4 for 'Normal' builds. This makes updating rockbox simpler as we don't need to go through the firmware update procedure, but rather just put a new rockbox.e200 on the device. rockbox.e200 uses a simple 'add' checksum. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11815 a1c6a512-1295-4272-9138-f99709370657
2006-12-19 11:33:53 +00:00
#else
target/arm/pp/crt0-pp-bl.S
#endif /* HAVE_BOOTLOADER_USB_MODE */
#else /* !BOOTLOADER */
target/arm/pp/pcm-pp.c
target/arm/pp/debug-pp.c
#if !defined(SANSA_E200) && !defined(SANSA_C200)
target/arm/pp/audio-pp.c
#endif /* SANSA_E200 */
target/arm/pp/crt0-pp.S
Add working dual-boot bootloaders for H10 and Sansa, which allow booting the OF and Rockbox. Rolo also works. Changes made: Combine bootloader/h10.c and bootloader/e200.c into a common bootloader file (bootloader/main-pp.c) to be used by all mi4 based PortalPlayer targets. The file bootloader/main-pp.c is based off the old bootloader/h10.c with some minor changes to allow it to work on the Sansa too. This effectively adds a Sansa bootloader. Define MODEL_NAME string in config-*.h for use in bootloader. Split crt0-pp.S into separate files for bootloader and normal builds. Bootloader code is now in crt0-pp-bl.S while normal build code stays in crt0-pp.S. Improvements to crt0-pp.S and crt0-pp-bl.S (mostly to make it more multiprocessor safe): * Leave space in bootloader at 0xe0-0xeb since scramble writes over there when it creates the mi4 file (don't leave space for iPods since it's not needed and all code in crt0-pp-bl.S needs to fit before the boot_table at 0x100). * Remove unused DEBUG and STUB code from crt0-pp.S. * Make CPU wait for COP to be sleeping when we put the COP to sleep. * Invalidate COP cache when COP wakes * Flush CPU cache before waking COP * Make sure only the CPU clears the BSS (not the COP) * Make sure only the CPU sets up its own stack (not the COP) Rolo works on H10, so enable it. Make Sansa e200 use rockbox.e200 rather than PP5022.mi4 for 'Normal' builds. This makes updating rockbox simpler as we don't need to go through the firmware update procedure, but rather just put a new rockbox.e200 on the device. rockbox.e200 uses a simple 'add' checksum. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11815 a1c6a512-1295-4272-9138-f99709370657
2006-12-19 11:33:53 +00:00
#endif
#elif CONFIG_CPU == PNX0101
target/arm/pnx0101/crt0-pnx0101.S
#elif CONFIG_CPU==DM320
target/arm/tms320dm320/crt0.S
#elif CONFIG_CPU==S3C2440
target/arm/s3c2440/crt0.S
#elif defined(CPU_TCC780X)
target/arm/tcc780x/crt0.S
#elif CONFIG_CPU==IMX31L
target/arm/imx31/crt0.S
#elif CONFIG_CPU==S5L8700 || CONFIG_CPU==S5L8701
target/arm/s5l8700/crt0.S
#elif CONFIG_CPU==S5L8702
target/arm/s5l8702/crt0.S
#elif CONFIG_CPU==IMX233
target/arm/imx233/crt0.S
#elif CONFIG_CPU==RK27XX
target/arm/rk27xx/crt0.S
#elif defined(CPU_ARM)
target/arm/crt0.S
#endif /* defined(CPU_*) */
#elif defined(CPU_MIPS) && (CONFIG_PLATFORM & PLATFORM_NATIVE)
target/mips/mmu-mips.c
#if CONFIG_CPU==JZ4732 || CONFIG_CPU==JZ4760B
target/mips/ingenic_jz47xx/crt0.S
#endif /* CONFIG_CPU == JZ4732 || JZ4760B */
#else
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
crt0.S
drivers/i2c.c
#endif /* PLATFORM_NATIVE */
#endif /* defined(CPU_*) */
#if !defined(SIMULATOR)
/* target code */
/* LCD driver */
#if CONFIG_LCD == LCD_SSD1303
target/arm/as3525/lcd-ssd1303.c
#elif CONFIG_LCD == LCD_SSD1815
target/arm/lcd-ssd1815.c
#elif CONFIG_LCD == LCD_HX8340B
target/arm/rk27xx/lcd-hifiman.c
#elif CONFIG_LCD == LCD_C200
target/arm/lcd-c200_c200v2.c
#elif CONFIG_LCD == LCD_FUZE
target/arm/as3525/lcd-fuze.c
#elif CONFIG_LCD == LCD_IPODCOLOR || CONFIG_LCD == LCD_IPODNANO
target/arm/ipod/lcd-color_nano.c
#elif CONFIG_LCD == LCD_IPODMINI || CONFIG_LCD == LCD_IPOD2BPP
target/arm/ipod/lcd-gray.c
#elif CONFIG_LCD == LCD_GIGABEATS
target/arm/imx31/gigabeat-s/lcd-gigabeat-s.c
#elif CONFIG_LCD == LCD_GIGABEAT || CONFIG_LCD == LCD_MINI2440
target/arm/s3c2440/lcd-s3c2440.c
#elif CONFIG_LCD == LCD_ILI9342 || CONFIG_LCD == LCD_ILI9342C
target/arm/rk27xx/ma/lcd-ma.c
#elif CONFIG_LCD == LCD_IHIFI
target/arm/rk27xx/ihifi/lcd-ihifi.c
#elif CONFIG_LCD == LCD_IHIFI770
target/arm/rk27xx/ihifi2/lcd-ihifi770.c
#elif CONFIG_LCD == LCD_IHIFI770C
target/arm/rk27xx/ihifi2/lcd-ihifi770c.c
#elif CONFIG_LCD == LCD_IHIFI800
target/arm/rk27xx/ihifi2/lcd-ihifi800.c
#endif
/* USB Stack */
#ifdef HAVE_USBSTACK
usbstack/usb_core.c
#ifdef USB_ENABLE_STORAGE
usbstack/usb_storage.c
#endif
#ifdef USB_ENABLE_SERIAL
usbstack/usb_serial.c
#endif
#ifdef USB_ENABLE_CHARGING_ONLY
usbstack/usb_charging_only.c
#endif
#ifdef USB_ENABLE_HID
usbstack/usb_hid.c
#endif
#if CONFIG_USBOTG == USBOTG_M66591
drivers/m66591.c
#elif CONFIG_USBOTG == USBOTG_ARC
target/arm/usb-drv-arc.c
#elif CONFIG_USBOTG == USBOTG_AS3525
target/arm/as3525/usb-drv-as3525.c
#elif CONFIG_USBOTG == USBOTG_S3C6400X
target/arm/usb-s3c6400x.c
#elif CONFIG_USBOTG == USBOTG_DESIGNWARE
drivers/usb-designware.c
#elif CONFIG_USBOTG == USBOTG_ISP1583
drivers/isp1583.c
#elif CONFIG_USBOTG == USBOTG_RK27XX
target/arm/rk27xx/usb-drv-rk27xx.c
#endif
#else /* !defined(HAVE_USBSTACK) */
#if CONFIG_USBOTG == USBOTG_ISP1362
drivers/isp1362.c
#elif CONFIG_USBOTG == USBOTG_M5636
drivers/m5636.c
#endif
#endif /* !defined(HAVE_USBSTACK) */
/* Other Random Hardware */
#ifdef HAVE_TSC2100
drivers/tsc2100.c
drivers/audio/tsc2100.c
#endif
#ifdef HAVE_AS3514
# ifdef CPU_PP
target/arm/pp/ascodec-pp.c
# endif
# if !defined(BOOTLOADER) || defined(CPU_PP)
drivers/adc-as3514.c
# if !defined(SANSA_M200V4) && !defined(SAMSUNG_YPR0)
target/arm/powermgmt-ascodec.c
# endif
# endif
#endif
#if CONFIG_I2C == I2C_PP5020
# ifdef IPOD_ARCH
target/arm/ipod/adc-ipod-pcf.c
# else
target/arm/pp/adc-pp5020.c
# endif /* IPOD_ARCH */
#elif CONFIG_I2C == I2C_PP5002
# ifdef IPOD_1G2G
target/arm/ipod/1g2g/adc-ipod-1g2g.c
# else
target/arm/ipod/adc-ipod-pcf.c
# endif /* IPOD_1G2G */
#elif CONFIG_I2C == I2C_S3C2440
target/arm/s3c2440/adc-s3c2440.c
#elif CONFIG_I2C == I2C_S5L8700
# ifdef IPOD_NANO2G
target/arm/s5l8700/ipodnano2g/adc-nano2g.c
# else
target/arm/s5l8700/adc-s5l8700.c
# endif
#endif /* CONFIG_I2C */
#if CONFIG_CPU == S5L8700 || CONFIG_CPU == S5L8701
target/arm/s5l8700/kernel-s5l8700.c
target/arm/s5l8700/system-s5l8700.c
target/arm/s5l8700/dma-s5l8700.c
# ifndef BOOTLOADER
target/arm/s5l8700/wmcodec-s5l8700.c
target/arm/s5l8700/timer-s5l8700.c
target/arm/s5l8700/pcm-s5l8700.c
target/arm/s5l8700/debug-s5l8700.c
# endif
#endif /* S5L8700 || S5L8701 */
#if CONFIG_CPU == S3C2440
target/arm/s3c2440/debug-s3c2440.c
target/arm/s3c2440/kernel-s3c2440.c
target/arm/s3c2440/system-s3c2440.c
# ifndef BOOTLOADER
target/arm/s3c2440/gigabeat-fx/timer-meg-fx.c
# endif
#endif /* CONFIG_CPU == S3C2440 */
#if defined(SANSA_E200) || defined(SANSA_C200)
target/arm/sandisk/backlight-c200_e200.c
target/arm/sandisk/power-c200_e200.c
#ifndef BOOTLOADER
target/arm/sandisk/audio-c200_e200.c
#endif /* BOOTLOADER */
#endif /* SANSA_E200 || SANSA_C200 */
#ifdef SANSA_E200
drivers/lcd-memframe.c
target/arm/sandisk/sansa-e200/lcd-e200.c
target/arm/sandisk/sansa-e200/button-e200.c
target/arm/sandisk/sansa-e200/powermgmt-e200.c
#endif /* SANSA_E200 */
#ifdef SANSA_C200
target/arm/sandisk/sansa-c200/lcd-as-c200.S
target/arm/sandisk/sansa-c200/button-c200.c
target/arm/sandisk/sansa-c200/powermgmt-c200.c
#endif /* SANSA_C200 */
#ifdef SANSA_VIEW
target/arm/sandisk/sansa-view/backlight-view.c
target/arm/sandisk/sansa-view/adc-view.c
target/arm/sandisk/sansa-view/power-view.c
target/arm/sandisk/sansa-view/lcd-view.c
target/arm/sandisk/sansa-view/button-view.c
target/arm/sandisk/sansa-view/powermgmt-view.c
#ifndef BOOTLOADER
/* target/arm/sandisk/audio-view.c */
#endif /* BOOTLOADER */
#endif /* SANSA_VIEW */
#ifdef PHILIPS_SA9200
#ifndef BOOTLOADER
drivers/synaptics-mep.c
target/arm/philips/piezo.c
#endif /* BOOTLOADER */
target/arm/philips/sa9200/backlight-sa9200.c
target/arm/philips/sa9200/button-sa9200.c
target/arm/philips/sa9200/lcd-sa9200.c
target/arm/philips/sa9200/lcd-as-sa9200.S
target/arm/philips/sa9200/power-sa9200.c
target/arm/philips/sa9200/powermgmt-sa9200.c
#endif /* PHILIPS_SA9200 */
#if defined(PHILIPS_HDD1630) || defined(PHILIPS_HDD6330)
#ifndef BOOTLOADER
drivers/synaptics-mep.c
target/arm/philips/piezo.c
#endif /* BOOTLOADER */
target/arm/philips/power-hdd.c
target/arm/philips/fmradio_i2c-hdd.c
#endif /* PHILIPS_HDD1630 || PHILIPS_HDD6330 */
#ifdef PHILIPS_HDD1630
target/arm/philips/hdd1630/backlight-hdd1630.c
target/arm/philips/hdd1630/button-hdd1630.c
target/arm/philips/hdd1630/lcd-hdd1630.c
target/arm/philips/hdd1630/lcd-as-hdd1630.S
target/arm/philips/hdd1630/powermgmt-hdd1630.c
#endif /* PHILIPS_HDD1630 */
#ifdef PHILIPS_HDD6330
target/arm/philips/hdd6330/backlight-hdd6330.c
target/arm/philips/hdd6330/button-hdd6330.c
target/arm/philips/hdd6330/lcd-hdd6330.c
target/arm/philips/hdd6330/lcd-as-hdd6330.S
target/arm/philips/hdd6330/powermgmt-hdd6330.c
#endif /* PHILIPS_HDD6330 */
#if defined(IAUDIO_X5) || defined(IAUDIO_M5)
target/coldfire/pcf50606-coldfire.c
target/coldfire/iaudio/adc-iaudio.c
target/coldfire/iaudio/ata-iaudio.c
#ifdef HAVE_FMRADIO_IN
target/coldfire/iaudio/fmradio_i2c-iaudio.c
#endif
target/coldfire/iaudio/lcd-remote-as-iaudio.S
target/coldfire/iaudio/lcd-remote-iaudio.c
target/coldfire/iaudio/pcf50606-iaudio.c
target/coldfire/iaudio/power-x5m5.c
target/coldfire/iaudio/powermgmt-iaudio.c
target/coldfire/iaudio/system-iaudio.c
target/coldfire/iaudio/usb-iaudio.c
#ifndef BOOTLOADER
target/coldfire/iaudio/audio-iaudio.c
#endif
#endif /* IAUDIO_X5 || IAUDIO_M5 */
#ifdef IAUDIO_X5
target/coldfire/iaudio/x5/backlight-x5.c
target/coldfire/iaudio/x5/button-x5.c
target/coldfire/iaudio/x5/ds2411-x5.c
target/coldfire/iaudio/x5/lcd-as-x5.S
target/coldfire/iaudio/x5/lcd-x5.c
target/coldfire/iaudio/x5/m5636-x5.c
#endif /* IAUDIO_X5 */
#ifdef IAUDIO_M5
target/coldfire/iaudio/m5/backlight-m5.c
target/coldfire/iaudio/m5/button-m5.c
target/coldfire/iaudio/m5/lcd-as-m5.S
target/coldfire/iaudio/m5/lcd-m5.c
#endif /* IAUDIO_M5 */
#ifdef IAUDIO_M3
target/coldfire/iaudio/fmradio_i2c-iaudio.c
target/coldfire/iaudio/m3/adc-m3.c
target/coldfire/iaudio/m3/ata-m3.c
target/coldfire/iaudio/m3/backlight-m3.c
target/coldfire/iaudio/m3/button-m3.c
target/coldfire/iaudio/m3/lcd-m3.c
target/coldfire/iaudio/m3/lcd-as-m3.S
target/coldfire/iaudio/m3/power-m3.c
target/coldfire/iaudio/m3/powermgmt-m3.c
target/coldfire/iaudio/m3/system-m3.c
target/coldfire/iaudio/m3/usb-m3.c
#ifndef BOOTLOADER
target/coldfire/iaudio/audio-iaudio.c
#endif
#endif /* IAUDIO_M3 */
#ifdef STUB
libc/sscanf.c
#endif /* STUB */
#if defined(IRIVER_H300_SERIES) || defined(IRIVER_H100_SERIES)
target/coldfire/iriver/ata-iriver.c
target/coldfire/iriver/lcd-remote-iriver.c
target/coldfire/iriver/lcd-remote-as-iriver.S
target/coldfire/iriver/system-iriver.c
target/coldfire/iriver/fmradio_i2c-iriver.c
#ifndef BOOTLOADER
target/coldfire/iriver/audio-iriver.c
target/coldfire/iriver/udacodec-iriver.c
#endif
#endif /* IRIVER_H300_SERIES || IRIVER_H100_SERIES */
#ifdef IRIVER_H300_SERIES
target/coldfire/pcf50606-coldfire.c
target/coldfire/iriver/h300/sw_i2c-h300.c
target/coldfire/iriver/h300/adc-h300.c
target/coldfire/iriver/h300/backlight-h300.c
target/coldfire/iriver/h300/button-h300.c
target/coldfire/iriver/h300/pcf50606-h300.c
target/coldfire/iriver/h300/lcd-as-h300.S
target/coldfire/iriver/h300/lcd-h300.c
target/coldfire/iriver/h300/power-h300.c
target/coldfire/iriver/h300/powermgmt-h300.c
target/coldfire/iriver/h300/usb-h300.c
#endif /* IRIVER_H300_SERIES */
#ifdef IRIVER_H100_SERIES
drivers/sw_i2c.c
target/coldfire/uart-coldfire.c
target/coldfire/iriver/h100/adc-h100.c
target/coldfire/iriver/h100/backlight-h100.c
target/coldfire/iriver/h100/button-h100.c
target/coldfire/iriver/h100/lcd-as-h100.S
target/coldfire/iriver/h100/lcd-h100.c
target/coldfire/iriver/h100/power-h100.c
target/coldfire/iriver/h100/powermgmt-h100.c
#ifndef BOOTLOADER
target/coldfire/iriver/h100/spdif-h100.c
#endif
target/coldfire/iriver/h100/usb-h100.c
#endif /* IRIVER_H100_SERIES */
#if defined(IRIVER_H10) || defined(IRIVER_H10_5GB)
target/arm/iriver/h10/backlight-h10.c
target/arm/iriver/h10/button-h10.c
target/arm/iriver/h10/fmradio_i2c-h10.c
target/arm/iriver/h10/power-h10.c
target/arm/iriver/h10/powermgmt-h10.c
#endif /* IRIVER_H10 || IRIVER_H10_5GB */
#ifdef IRIVER_H10
target/arm/iriver/h10/lcd-h10_20gb.c
target/arm/iriver/h10/lcd-as-h10.S
#endif /* IRIVER_H10 */
#ifdef IRIVER_H10_5GB
target/arm/iriver/h10/lcd-h10_5gb.c
#endif /* IRIVER_H10_5GB */
#ifdef GIGABEAT_F
drivers/lcd-memframe.c
target/arm/s3c2440/gigabeat-fx/ata-meg-fx.c
target/arm/s3c2440/gigabeat-fx/backlight-meg-fx.c
target/arm/s3c2440/gigabeat-fx/button-meg-fx.c
target/arm/s3c2440/gigabeat-fx/power-meg-fx.c
target/arm/s3c2440/gigabeat-fx/sc606-meg-fx.c
target/arm/s3c2440/gigabeat-fx/usb-meg-fx.c
#ifndef BOOTLOADER
target/arm/s3c2440/gigabeat-fx/pcm-meg-fx.c
target/arm/s3c2440/gigabeat-fx/powermgmt-meg-fx.c
target/arm/s3c2440/gigabeat-fx/wmcodec-meg-fx.c
#endif
#endif /* GIGABEAT_F */
#ifdef GIGABEAT_S
drivers/lcd-memframe.c
target/arm/bits-armv6.S
target/arm/mmu-armv6.S
target/arm/imx31/ata-imx31.c
target/arm/imx31/avic-imx31.c
target/arm/imx31/ccm-imx31.c
target/arm/imx31/debug-imx31.c
target/arm/imx31/dvfs_dptc-imx31.c
target/arm/imx31/gpio-imx31.c
target/arm/imx31/i2c-imx31.c
target/arm/imx31/iomuxc-imx31.c
target/arm/imx31/mc13783-imx31.c
target/arm/imx31/mmu-imx31.c
target/arm/imx31/rolo_restart_firmware.S
target/arm/imx31/sdma-imx31.c
target/arm/imx31/spi-imx31.c
target/arm/imx31/uart-imx31.c
target/arm/imx31/gigabeat-s/adc-gigabeat-s.c
target/arm/imx31/gigabeat-s/backlight-gigabeat-s.c
target/arm/imx31/gigabeat-s/button-gigabeat-s.c
target/arm/imx31/gigabeat-s/kernel-gigabeat-s.c
target/arm/imx31/gigabeat-s/i2s-gigabeat-s.c
target/arm/imx31/gigabeat-s/power-gigabeat-s.c
target/arm/imx31/gigabeat-s/powermgmt-gigabeat-s.c
target/arm/imx31/gigabeat-s/system-gigabeat-s.c
target/arm/imx31/gigabeat-s/usb-gigabeat-s.c
target/arm/imx31/gigabeat-s/wmcodec-gigabeat-s.c
#ifndef BOOTLOADER
target/arm/imx31/gigabeat-s/audio-gigabeat-s.c
target/arm/imx31/gigabeat-s/fmradio-i2c-gigabeat-s.c
target/arm/imx31/gigabeat-s/headphone-gigabeat-s.c
target/arm/imx31/gigabeat-s/pcm-gigabeat-s.c
target/arm/imx31/gigabeat-s/timer-gigabeat-s.c
#endif
#endif /* GIGABEAT_S */
#if CONFIG_CPU == DM320
target/arm/tms320dm320/debug-dm320.c
target/arm/tms320dm320/dsp-dm320.c
target/arm/tms320dm320/i2c-dm320.c
#ifdef HAVE_SOFTWARE_I2C
drivers/generic_i2c.c
#endif
target/arm/tms320dm320/kernel-dm320.c
target/arm/tms320dm320/spi-dm320.c
target/arm/tms320dm320/system-dm320.c
target/arm/tms320dm320/timer-dm320.c
target/arm/tms320dm320/uart-dm320.c
#endif /* CONFIG_CPU == DM320 */
#ifdef MROBE_500
target/arm/tms320dm320/mrobe-500/crt0-board.S
target/arm/tms320dm320/mrobe-500/adc-mr500.c
target/arm/tms320dm320/mrobe-500/ata-mr500.c
target/arm/tms320dm320/mrobe-500/backlight-mr500.c
target/arm/tms320dm320/mrobe-500/button-mr500.c
target/arm/tms320dm320/mrobe-500/dm320codec-mr500.c
target/arm/tms320dm320/mrobe-500/lcd-mr500.c
#if defined(HAVE_REMOTE_LCD)
target/arm/tms320dm320/mrobe-500/lcd-remote-mr500.c
#endif
target/arm/tms320dm320/mrobe-500/pcm-mr500.c
target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c
target/arm/tms320dm320/mrobe-500/power-mr500.c
target/arm/tms320dm320/mrobe-500/usb-mr500.c
#endif /* MROBE_500 */
#ifdef CREATIVE_ZVx
drivers/lcd-memframe.c
target/arm/tms320dm320/creative-zvm/adc-creativezvm.c
target/arm/tms320dm320/creative-zvm/ata-creativezvm.c
target/arm/tms320dm320/creative-zvm/dma-creativezvm.c
target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c
target/arm/tms320dm320/creative-zvm/pcm-creativezvm.c
target/arm/tms320dm320/creative-zvm/pic-creativezvm.c
target/arm/tms320dm320/creative-zvm/power-creativezvm.c
target/arm/tms320dm320/creative-zvm/powermgmt-creativezvm.c
target/arm/tms320dm320/creative-zvm/usb-creativezvm.c
#endif /* CREATIVE_ZVx */
#if defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI) || defined(CREATIVE_ZENMOZAIC) \
|| defined(CREATIVE_ZENV) || defined(CREATIVE_ZENXFISTYLE)
#ifndef BOOTLOADER
target/arm/imx233/fmradio-imx233.c
#endif
target/arm/imx233/creative-zen/backlight-zen.c
# if defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI)
drivers/lcd-memframe.c
target/arm/imx233/creative-zen/lcd-zen.c
# elif defined(CREATIVE_ZENMOZAIC)
target/arm/imx233/creative-zen/lcd-zenmozaic.c
# elif defined(CREATIVE_ZENV)
target/arm/imx233/creative-zen/lcd-zenv.c
# elif defined(CREATIVE_ZENXFISTYLE)
target/arm/imx233/creative-zen/lcd-zenxfistyle.c
#endif
target/arm/imx233/creative-zen/button-zen.c
target/arm/imx233/creative-zen/debug-zen.c
target/arm/imx233/creative-zen/power-zen.c
target/arm/imx233/creative-zen/powermgmt-zen.c
#endif
#ifdef CREATIVE_ZENXFI2
#ifndef BOOTLOADER
target/arm/imx233/fmradio-imx233.c
#endif
target/arm/imx233/creative-zenxfi2/backlight-zenxfi2.c
target/arm/imx233/creative-zenxfi2/lcd-zenxfi2.c
target/arm/imx233/creative-zenxfi2/button-zenxfi2.c
target/arm/imx233/creative-zenxfi2/debug-zenxfi2.c
target/arm/imx233/creative-zenxfi2/powermgmt-zenxfi2.c
#endif
#ifdef CREATIVE_ZENXFI3
#ifndef BOOTLOADER
target/arm/imx233/fmradio-imx233.c
#endif
target/arm/imx233/creative-zenxfi3/mpr121-zenxfi3.c
target/arm/imx233/creative-zenxfi3/backlight-zenxfi3.c
target/arm/imx233/creative-zenxfi3/lcd-zenxfi3.c
target/arm/imx233/creative-zenxfi3/button-zenxfi3.c
target/arm/imx233/creative-zenxfi3/debug-zenxfi3.c
target/arm/imx233/creative-zenxfi3/powermgmt-zenxfi3.c
#endif
#if defined(SONY_NWZE360) || defined(SONY_NWZE370)
#ifndef BOOTLOADER
target/arm/imx233/fmradio-imx233.c
#endif
target/arm/imx233/sony-nwz/backlight-nwz.c
target/arm/imx233/sony-nwz/button-nwz.c
target/arm/imx233/sony-nwz/debug-nwz.c
# if defined(SONY_NWZE360)
target/arm/imx233/sony-nwz/lcd-nwze360.c
target/arm/imx233/sony-nwz/powermgmt-nwze360.c
# elif defined(SONY_NWZE370)
target/arm/imx233/sony-nwz/lcd-nwze370.c
target/arm/imx233/sony-nwz/powermgmt-nwze370.c
# endif
#endif
#ifdef SANSA_CONNECT
drivers/lcd-memframe.c
target/arm/tms320dm320/sdmmc-dm320.c
target/arm/tms320dm320/sansa-connect/crt0-board.S
target/arm/tms320dm320/sansa-connect/lcd-sansaconnect.c
target/arm/tms320dm320/sansa-connect/adc-sansaconnect.c
target/arm/tms320dm320/sansa-connect/power-sansaconnect.c
target/arm/tms320dm320/sansa-connect/tnetv105_cppi.c
target/arm/tms320dm320/sansa-connect/tnetv105_usb_drv.c
target/arm/tms320dm320/sansa-connect/usb-sansaconnect.c
target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c
target/arm/tms320dm320/sansa-connect/cryptomem-sansaconnect.c
target/arm/tms320dm320/sansa-connect/backlight-sansaconnect.c
target/arm/tms320dm320/sansa-connect/pcm-sansaconnect.c
target/arm/tms320dm320/sansa-connect/wifi-sansaconnect.c
target/arm/tms320dm320/dma-dm320.c
#endif /* SANSA_CONNECT */
#ifdef MROBE_100
#ifndef BOOTLOADER
drivers/synaptics-mep.c
target/arm/olympus/mrobe-100/lcd-remote-mr100.c
#endif /* BOOTLOADER */
drivers/sw_i2c.c
target/arm/olympus/mrobe-100/backlight-mr100.c
target/arm/olympus/mrobe-100/button-mr100.c
target/arm/olympus/mrobe-100/lcd-mr100.c
target/arm/olympus/mrobe-100/lcd-as-mr100.S
target/arm/olympus/mrobe-100/power-mr100.c
target/arm/olympus/mrobe-100/powermgmt-mr100.c
#endif /* MROBE_100 */
#ifdef IPOD_4G
target/arm/ipod/backlight-4g_color.c
target/arm/ipod/button-clickwheel.c
#endif /* IPOD_4G */
#ifdef IPOD_COLOR
target/arm/ipod/backlight-4g_color.c
target/arm/ipod/button-clickwheel.c
target/arm/ipod/lcd-as-color-nano.S
#endif /* IPOD_COLOR */
#ifdef IPOD_NANO
target/arm/ipod/backlight-nano_video.c
target/arm/ipod/button-clickwheel.c
target/arm/ipod/lcd-as-color-nano.S
#endif /* IPOD_NANO */
#ifdef IPOD_VIDEO
target/arm/ipod/backlight-nano_video.c
target/arm/ipod/button-clickwheel.c
target/arm/ipod/video/lcd-as-video.S
target/arm/ipod/video/lcd-video.c
#ifndef BOOTLOADER
target/arm/ipod/video/battery-video.c
#endif /* BOOTLOADER */
#endif /* IPOD_VIDEO */
#ifdef IPOD_3G
target/arm/ipod/3g/backlight-3g.c
target/arm/ipod/button-1g-3g.c
#endif /* IPOD_3G */
#ifdef IPOD_1G2G
target/arm/ipod/1g2g/backlight-1g2g.c
target/arm/ipod/1g2g/powermgmt-1g2g.c
target/arm/ipod/button-1g-3g.c
#endif /* IPOD_1G2G */
#if defined(IPOD_MINI) || defined(IPOD_MINI2G)
target/arm/ipod/backlight-mini1g_mini2g.c
#endif
#ifdef IPOD_MINI
target/arm/ipod/button-mini1g.c
#endif /* IPOD_MINI */
#ifdef IPOD_MINI2G
target/arm/ipod/button-clickwheel.c
#endif /* IPOD_MINI2G */
#ifdef SANSA_CLIPPLUS
target/arm/as3525/sansa-clipplus/lcd-clip-plus.c
target/arm/as3525/sansa-clipplus/button-clip.c
target/arm/as3525/sansa-clipplus/backlight-clip.c
#ifndef BOOTLOADER
target/arm/as3525/sansa-clipplus/powermgmt-clipplus.c
target/arm/as3525/sansa-clipplus/lcd-as-clip-plus.S
#endif /* !BOOTLOADER */
#endif /* SANSA_CLIPPLUS */
#ifdef SANSA_CLIPV2
target/arm/as3525/sansa-clipv2/lcd-clipv2.c
target/arm/as3525/button-clip.c
target/arm/as3525/sansa-clipv2/backlight-clipv2.c
#ifndef BOOTLOADER
target/arm/as3525/sansa-clipv2/powermgmt-clipv2.c
target/arm/as3525/sansa-clipv2/lcd-as-clipv2.S
#endif /* !BOOTLOADER */
#endif /* SANSA_CLIPV2 */
#ifdef SANSA_CLIP
target/arm/as3525/sansa-clip/lcd-clip.c
target/arm/as3525/button-clip.c
#ifndef BOOTLOADER
target/arm/as3525/sansa-clip/powermgmt-clip.c
target/arm/as3525/sansa-clip/lcd-as-clip.S
#endif /* !BOOTLOADER */
#endif /* SANSA_CLIP */
#ifdef SANSA_E200V2
target/arm/as3525/sansa-e200v2/lcd-e200v2.c
target/arm/as3525/button-e200v2-fuze.c
target/arm/as3525/backlight-e200v2-fuze.c
target/arm/as3525/dbop-as3525.c
#ifndef BOOTLOADER
target/arm/as3525/sansa-e200v2/powermgmt-e200v2.c
target/arm/as3525/lcd-as-e200v2-fuze-fuzev2.S
#endif /* !BOOTLOADER */
#endif /* SANSA_E200V2 */
#ifdef SANSA_C200V2
target/arm/as3525/sansa-c200v2/button-c200v2.c
target/arm/as3525/sansa-c200v2/backlight-c200v2.c
target/arm/as3525/dbop-as3525.c
#ifndef BOOTLOADER
target/arm/as3525/sansa-c200v2/powermgmt-c200v2.c
#endif /* !BOOTLOADER */
#endif /* SANSA_E200V2 */
#ifdef SANSA_M200V4
target/arm/as3525/sansa-m200v4/button-m200v4.c
#ifndef BOOTLOADER
target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c
#endif /* !BOOTLOADER */
#endif /* SANSA_M200V4 */
#ifdef SANSA_FUZE
target/arm/as3525/button-e200v2-fuze.c
target/arm/as3525/sansa-fuze/lcd-fuzev1.c
target/arm/as3525/backlight-e200v2-fuze.c
target/arm/as3525/dbop-as3525.c
#ifndef BOOTLOADER
target/arm/as3525/sansa-fuze/powermgmt-fuze.c
target/arm/as3525/lcd-as-e200v2-fuze-fuzev2.S
#endif /* !BOOTLOADER */
#endif /* SANSA_FUZE */
#ifdef SANSA_FUZEV2
target/arm/as3525/sansa-fuzev2/lcd-fuzev2.c
target/arm/as3525/sansa-fuzev2/backlight-fuzev2.c
target/arm/as3525/sansa-fuzev2/button-fuzev2.c
target/arm/as3525/dbop-as3525.c
#ifndef BOOTLOADER
target/arm/as3525/sansa-fuzev2/powermgmt-fuzev2.c
target/arm/as3525/lcd-as-e200v2-fuze-fuzev2.S
#endif /* !BOOTLOADER */
#endif /* SANSA_FUZEV2 */
#ifdef SANSA_FUZEPLUS
#ifndef BOOTLOADER
drivers/generic_i2c.c
target/arm/imx233/fmradio-imx233.c
#endif
target/arm/imx233/sansa-fuzeplus/fmradio-i2c-fuzeplus.c
target/arm/imx233/sansa-fuzeplus/backlight-fuzeplus.c
target/arm/imx233/sansa-fuzeplus/lcd-fuzeplus.c
target/arm/imx233/sansa-fuzeplus/button-fuzeplus.c
target/arm/imx233/sansa-fuzeplus/debug-fuzeplus.c
target/arm/imx233/sansa-fuzeplus/powermgmt-fuzeplus.c
#endif
#ifdef SANSA_CLIPZIP
target/arm/as3525/sansa-clipzip/lcd-clipzip.c
target/arm/as3525/sansa-clipzip/button-clipzip.c
target/arm/as3525/sansa-clipzip/backlight-clipzip.c
#ifndef BOOTLOADER
target/arm/as3525/sansa-clipzip/powermgmt-clipzip.c
#endif /* !BOOTLOADER */
#endif /* SANSA_CLIPZIP */
#ifdef COWON_D2
drivers/lcd-memframe.c
drivers/nand_id.c
drivers/pcf50606.c
drivers/pcf50635.c
drivers/tsc200x.c
target/arm/tcc780x/adc-tcc780x.c
target/arm/tcc780x/system-tcc780x.c
target/arm/tcc780x/kernel-tcc780x.c
target/arm/tcc780x/sd-tcc780x.c
target/arm/tcc780x/cowond2/button-cowond2.c
target/arm/tcc780x/cowond2/touchscreen-cowond2.c
target/arm/tcc780x/cowond2/lcd-cowond2.c
target/arm/tcc780x/cowond2/power-cowond2.c
target/arm/tcc780x/cowond2/powermgmt-cowond2.c
target/arm/tcc780x/cowond2/backlight-cowond2.c
target/arm/usb-tcc.c
#ifndef BOOTLOADER
target/arm/tcc780x/timer-tcc780x.c
target/arm/wmcodec-telechips.c
target/arm/tcc780x/debug-tcc780x.c
target/arm/pcm-telechips.c
target/arm/tcc780x/cowond2/audio-cowond2.c
#endif /* BOOTLOADER */
#endif /* COWON_D2 */
#ifdef MEIZU_M6SL
target/arm/s5l8700/meizu-m6sl/lcd-m6sl.c
drivers/qt1106.c
#endif /* MEIZU_M6SL */
#ifdef MEIZU_M6SP
target/arm/s5l8700/backlight-meizu.c
target/arm/s5l8700/power-meizu.c
target/arm/s5l8700/meizu-m6sp/button-m6sp.c
target/arm/s5l8700/meizu-m6sp/lcd-m6sp.c
#ifndef BOOTLOADER
drivers/generic_i2c.c
drivers/rtc/rtc_s35390a.c
target/arm/s5l8700/audio-meizu.c
target/arm/s5l8700/ftl-meizu.c
target/arm/s5l8700/nand-meizu.c
target/arm/s5l8700/fmradio-i2c-meizu.c
target/arm/s5l8700/powermgmt-meizu.c
target/arm/s5l8700/usb-s5l8700.c
#endif /* BOOTLOADER */
#endif /* MEIZU_M6SP */
#ifdef MEIZU_M3
target/arm/s5l8700/backlight-meizu.c
target/arm/s5l8700/meizu-m3/lcd-m3.c
drivers/qt1106.c
#ifndef BOOTLOADER
target/arm/s5l8700/udacodec-meizu.c
#endif /* BOOTLOADER */
#endif /* MEIZU_M3 */
#ifdef IPOD_NANO2G
target/arm/ipod/button-clickwheel.c
target/arm/s5l8700/postmortemstub.S
target/arm/s5l8700/ipodnano2g/backlight-nano2g.c
target/arm/s5l8700/ipodnano2g/lcd-nano2g.c
target/arm/s5l8700/ipodnano2g/lcd-asm-nano2g.S
target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c
target/arm/s5l8700/ipodnano2g/power-nano2g.c
target/arm/s5l8700/ipodnano2g/ftl-nano2g.c
target/arm/s5l8700/ipodnano2g/nand-nano2g.c
target/arm/s5l8700/ipodnano2g/pmu-nano2g.c
target/arm/s5l8700/ipodnano2g/rtc-nano2g.c
target/arm/s5l8700/usb-s5l8701.c
#ifdef HAVE_SERIAL
target/arm/uc870x.c
target/arm/s5l8700/uart-s5l8701.c
target/arm/s5l8700/ipodnano2g/serial-nano2g.c
#endif
#ifndef BOOTLOADER
target/arm/s5l8700/ipodnano2g/audio-nano2g.c
target/arm/s5l8700/ipodnano2g/piezo-nano2g.c
#endif
#endif
#ifdef IPOD_6G
target/arm/ipod/button-clickwheel.c
target/arm/s5l8702/ipod6g/storage_ata-6g.c
target/arm/s5l8702/ipod6g/backlight-6g.c
target/arm/s5l8702/ipod6g/powermgmt-6g.c
target/arm/s5l8702/ipod6g/power-6g.c
target/arm/s5l8702/kernel-s5l8702.c
target/arm/s5l8702/system-s5l8702.c
target/arm/s5l8702/timer-s5l8702.c
target/arm/s5l8702/gpio-s5l8702.c
iPod Classic: introduce PL080 DMA controller driver Motivation: This driver began as a set of functions to help to test and experiment with different DMA configurations. It is cumbersome, time consuming, and leads to mistakes to handle LLIs and DMA registers dispersed along the code. Later, i decided to adapt an old DMA queue driver written in the past for a similar (scatter-gather) controller, all task/queue code is based on the old driver. Finally, some cleaning and dmac_ch_get_info() function was added to complete RB needs. Description: - Generic, can be used by other targets including the same controller. Not difficult to adapt for other similar controllers if necesary. - Easy to experiment and compare results using different setups and/or queue algorithms: Multi-controller and fully configurable from an unique place. All task and LLI management is done by the driver, user only has to (statically) allocate them. - Two queue modes: QUEUE_NORMAL: each task in the queue is launched using a new DMA transfer once previous task is finished. QUEUE_LINK: when a task is queued, it is linked with the last queued task, creating a single continuous DMA transfer. New tasks must be queued while the channel is running, otherwise the continuous DMA transfer will be broken. On Classic, QUEUE_LINK mode is needed for I2S continuous transfers, QUEUE_NORMAL is used for LCD and could be useful in the future for I2C or UART (non-blocking serial debug) if necessary. - Robust DMA transfer progress info (peak meter), needs final testing, see below. Technical details about DMA progress: There are comments in the code related to the method actually used (sequence method), it reads progress without halting the DMA transfer. Althought the datasheet does not recommend to do that, the sequence method seems to be robust, I ran tests calling dmac_ch_get_info() millions of times and the results were always as expected (tests done at 2:1 CPU/AHB clock ratio, no other ratios were tried but probably sequence method will work for any typical ratio). This controller allows to halt the transfer and drain the DMAC FIFO, DMA requests are ignored when the DMA channel is halted. This method is not suitable for playback because FIFO is never drained to I2S peripheral (who raises the DMA requests). This method probably works for capture, the FIFO is drained to memory before halting. Another way is to disable (stop) the playback channel. When the channel is disabled, all FIFO data is lost. It is unknown how much the FIFO was filled when it was cleared, SRCADDR counter includes the lost data, therefore the only useful information is LINK and COUNT, that is the same information disponible when using the sequence method. At this point we must procced in the same way as in sequence method, in addition the playback channel should be relaunched (configure + start) after calculating real SRCADDR. The stop+relaunch method should work, it is a bit complicated, and not valid for all peripheral FIFO configurations (depending on stream rate). Moreover, due to the way the COUNT register is implemented in HW, I suspect that this method will fail when source and destination bus widths doesn't match. And more important, it is not easy to garantize that no sample is lost here or there, using the sequence method we can always be sure that playback is ok. Change-Id: Ib12a1e2992e2b6da4fc68431128c793a21b4b540
2014-12-06 17:33:11 +00:00
target/arm/s5l8702/pl080.c
target/arm/s5l8702/dma-s5l8702.c
target/arm/s5l8702/clocking-s5l8702.c
target/arm/s5l8702/ipod6g/lcd-6g.c
target/arm/s5l8702/ipod6g/lcd-asm-6g.S
target/arm/s5l8702/ipod6g/piezo-6g.c
#if 0 //TODO
target/arm/s5l8702/postmortemstub.S
#endif
target/arm/s5l8702/ipod6g/pmu-6g.c
target/arm/s5l8702/ipod6g/rtc-6g.c
target/arm/s5l8702/ipod6g/adc-6g.c
#if !defined(BOOTLOADER) || defined(HAVE_BOOTLOADER_USB_MODE)
target/arm/s5l8702/usb-s5l8702.c
#endif
#ifdef HAVE_SERIAL
target/arm/uc870x.c
target/arm/s5l8702/uart-s5l8702.c
target/arm/s5l8702/ipod6g/serial-6g.c
#endif
#ifndef BOOTLOADER
target/arm/s5l8702/debug-s5l8702.c
target/arm/s5l8702/pcm-s5l8702.c
target/arm/s5l8702/ipod6g/audio-6g.c
target/arm/s5l8702/ipod6g/cscodec-6g.c
#else
target/arm/s5l8702/spi-s5l8702.c
target/arm/s5l8702/crypto-s5l8702.c
target/arm/s5l8702/nor-s5l8702.c
#endif /* BOOTLOADER */
#endif /* IPOD_6G */
#if CONFIG_CPU == RK27XX
target/arm/rk27xx/audio-rk27xx.c
target/arm/rk27xx/kernel-rk27xx.c
target/arm/rk27xx/system-rk27xx.c
target/arm/rk27xx/backlight-rk27xx.c
target/arm/rk27xx/adc-rk27xx.c
target/arm/rk27xx/sd-rk27xx.c
target/arm/rk27xx/ftl-rk27xx.c
target/arm/rk27xx/nand-rk27xx.c
target/arm/rk27xx/usb-rk27xx.c
target/arm/rk27xx/lcdif-rk27xx.c
target/arm/rk27xx/rkw-loader.c
#ifndef BOOTLOADER
target/arm/rk27xx/timer-rk27xx.c
target/arm/rk27xx/rolo_restart.S
target/arm/rk27xx/pcm-rk27xx.c
target/arm/rk27xx/debug-rk27xx.c
#endif
#endif
#if defined(RK27_GENERIC)
target/arm/rk27xx/rk27generic/button-rk27generic.c
target/arm/rk27xx/rk27generic/powermgmt-rk27generic.c
target/arm/rk27xx/rk27generic/power-rk27generic.c
target/arm/rk27xx/rk27generic/lcd-rk27generic.c
target/arm/rk27xx/rk27generic/fmradio-i2c-rk27generic.c
#endif
#if CONFIG_CPU == JZ4732
target/mips/ingenic_jz47xx/ata-nand-jz4740.c
target/mips/ingenic_jz47xx/ata-sd-jz4740.c
target/mips/ingenic_jz47xx/debug-jz4740.c
target/mips/ingenic_jz47xx/fmradio-i2c-jz4740.c
target/mips/ingenic_jz47xx/kernel-jz4740.c
target/mips/ingenic_jz47xx/i2c-jz4740.c
target/mips/ingenic_jz47xx/lcd-jz4740.c
target/mips/ingenic_jz47xx/system-jz4740.c
target/mips/ingenic_jz47xx/usb-jz4740.c
target/mips/ingenic_jz47xx/timer-jz4740.c
#ifndef BOOTLOADER
target/mips/ingenic_jz47xx/codec-jz4740.c
target/mips/ingenic_jz47xx/pcm-jz4740.c
#endif /* BOOTLOADER */
drivers/nand_id.c
#endif /* CONFIG_CPU == JZ4732 */
#if CONFIG_CPU == JZ4760B
target/mips/ingenic_jz47xx/dma_acc-jz4760.c
target/mips/ingenic_jz47xx/ata-nand-jz4760.c
target/mips/ingenic_jz47xx/ata-sd-jz4760.c
target/mips/ingenic_jz47xx/debug-jz4760.c
target/mips/ingenic_jz47xx/kernel-jz4760.c
target/mips/ingenic_jz47xx/i2c-jz4760.c
target/mips/ingenic_jz47xx/lcd-jz4760.c
target/mips/ingenic_jz47xx/system-jz4760.c
target/mips/ingenic_jz47xx/usb-jz4760.c
target/mips/ingenic_jz47xx/timer-jz4760.c
#ifndef BOOTLOADER
target/mips/ingenic_jz47xx/codec-jz4760.c
target/mips/ingenic_jz47xx/pcm-jz4760.c
#endif /* BOOTLOADER */
drivers/nand_id.c
#endif /* CONFIG_CPU == JZ4760B */
#if CONFIG_CPU == X1000
target/mips/ingenic_x1000/crt0.S
target/mips/ingenic_x1000/aic-x1000.c
target/mips/ingenic_x1000/boot-x1000.c
target/mips/ingenic_x1000/clk-x1000.c
target/mips/ingenic_x1000/debug-x1000.c
target/mips/ingenic_x1000/dma-x1000.c
target/mips/ingenic_x1000/gpio-x1000.c
target/mips/ingenic_x1000/i2c-x1000.c
target/mips/ingenic_x1000/kernel-x1000.c
target/mips/ingenic_x1000/lcd-x1000.c
target/mips/ingenic_x1000/nand-x1000.c
target/mips/ingenic_x1000/pcm-x1000.c
target/mips/ingenic_x1000/pwm-x1000.c
target/mips/ingenic_x1000/sfc-x1000.c
target/mips/ingenic_x1000/system-x1000.c
target/mips/ingenic_x1000/timer-x1000.c
#ifndef USB_NONE
target/mips/ingenic_x1000/usb-x1000.c
#endif
#if (CONFIG_STORAGE & (STORAGE_SD|STORAGE_MMC|STORAGE_ATA))
target/mips/ingenic_x1000/msc-x1000.c
#endif
#if (CONFIG_STORAGE & STORAGE_SD)
target/mips/ingenic_x1000/sd-x1000.c
#endif
#ifdef BOOTLOADER
target/mips/ingenic_x1000/installer-x1000.c
target/mips/ingenic_x1000/spl-start.S
target/mips/ingenic_x1000/spl-x1000.c
common/ucl_decompress.c
#endif
#if (defined(HAVE_X1000_ICODEC_PLAY) || defined(HAVE_X1000_ICODEC_REC)) \
&& !defined(BOOTLOADER)
drivers/audio/x1000-codec.c
#endif
#endif /* CONFIG_CPU == X1000 */
#if defined(ONDA_VX747) || defined(ONDA_VX747P) || defined(ONDA_VX777)
target/mips/ingenic_jz47xx/onda_vx747/backlight-onda_vx7X7.c
target/mips/ingenic_jz47xx/onda_vx747/lcd-onda_vx747.c
target/mips/ingenic_jz47xx/onda_vx747/power-onda_vx747.c
target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c
target/mips/ingenic_jz47xx/onda_vx747/speaker-onda_vx747.c
#endif /* ONDA_VX747 || ONDA_VX747P || ONDA_VX777 */
#ifdef ONDA_VX767
target/mips/ingenic_jz47xx/onda_vx747/backlight-onda_vx7X7.c
target/mips/ingenic_jz47xx/onda_vx767/button-onda_vx767.c
target/mips/ingenic_jz47xx/onda_vx767/lcd-onda_vx767.c
target/mips/ingenic_jz47xx/onda_vx767/power-onda_vx767.c
target/mips/ingenic_jz47xx/onda_vx767/sadc-onda_vx767.c
#endif /* ONDA_VX767 */
#if defined(XDUOO_X3)
target/mips/ingenic_jz47xx/xduoo_x3/backlight-xduoo_x3.c
target/mips/ingenic_jz47xx/xduoo_x3/lcd-xduoo_x3.c
target/mips/ingenic_jz47xx/xduoo_x3/power-xduoo_x3.c
target/mips/ingenic_jz47xx/xduoo_x3/sadc-xduoo_x3.c
#endif /* XDUOO_X3 */
#if defined(FIIO_M3K)
target/mips/ingenic_x1000/fiiom3k/audiohw-fiiom3k.c
target/mips/ingenic_x1000/fiiom3k/backlight-fiiom3k.c
target/mips/ingenic_x1000/fiiom3k/button-fiiom3k.c
target/mips/ingenic_x1000/fiiom3k/lcd-fiiom3k.c
target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c
target/mips/ingenic_x1000/fiiom3k/spl-fiiom3k.c
#endif /* FIIO_M3K */
#if defined(SHANLING_Q1)
target/mips/ingenic_x1000/shanlingq1/audiohw-shanlingq1.c
target/mips/ingenic_x1000/shanlingq1/backlight-shanlingq1.c
target/mips/ingenic_x1000/shanlingq1/button-shanlingq1.c
target/mips/ingenic_x1000/shanlingq1/lcd-shanlingq1.c
target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c
target/mips/ingenic_x1000/shanlingq1/spl-shanlingq1.c
#endif /* SHANLING_Q1 */
#if defined(EROS_QN)
target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c
target/mips/ingenic_x1000/erosqnative/backlight-erosqnative.c
target/mips/ingenic_x1000/erosqnative/button-erosqnative.c
target/mips/ingenic_x1000/erosqnative/lcd-erosqnative.c
target/mips/ingenic_x1000/erosqnative/power-erosqnative.c
target/mips/ingenic_x1000/erosqnative/spl-erosqnative.c
#endif /* EROS_QN */
#if defined(LYRE_PROTO1)
target/arm/at91sam/lyre_proto1/adc-lyre_proto1.c
target/arm/at91sam/lyre_proto1/backlight-lyre_proto1.c
target/arm/at91sam/lyre_proto1/button-lyre_proto1.c
target/arm/at91sam/lyre_proto1/crt0.S
target/arm/at91sam/lyre_proto1/debug-lyre_proto1.c
target/arm/at91sam/lyre_proto1/kernel-lyre_proto1.c
target/arm/at91sam/lyre_proto1/lcd-lyre_proto1.c
target/arm/at91sam/lyre_proto1/system-lyre_proto1.c
target/arm/at91sam/lyre_proto1/timer-lyre_proto1.c
#endif
#if defined(MINI2440)
drivers/lcd-memframe.c
target/arm/s3c2440/dma-s3c2440.c
target/arm/s3c2440/sd-s3c2440.c
target/arm/s3c2440/uart-s3c2440.c
target/arm/s3c2440/mini2440/backlight-mini2440.c
target/arm/s3c2440/mini2440/button-mini2440.c
target/arm/s3c2440/mini2440/led-mini2440.c
target/arm/s3c2440/mini2440/power-mini2440.c
target/arm/s3c2440/mini2440/touchscreen-mini2440.c
#ifndef BOOTLOADER
target/arm/s3c2440/mini2440/powermgmt-mini2440.c
target/arm/s3c2440/mini2440/pcm-mini2440.c
#endif
#endif /* MINI2440 */
#if defined(SAMSUNG_YH820) || defined(SAMSUNG_YH920) || defined(SAMSUNG_YH925)
target/arm/samsung/akcodec-yh82x_yh92x.c
target/arm/samsung/button-yh82x_yh92x.c
target/arm/samsung/power-yh82x_yh92x.c
#endif /* SAMSUNG_YH820 || SAMSUNG_YH920 || SAMSUNG_YH925 */
#ifdef SAMSUNG_YH820
target/arm/samsung/yh820/backlight-yh820.c
target/arm/samsung/yh820/lcd-yh820.c
target/arm/samsung/yh820/lcd-as-yh820.S
target/arm/samsung/yh820/powermgmt-yh820.c
#endif /* SAMSUNG_YH820 */
#ifdef SAMSUNG_YH920
target/arm/samsung/yh920/backlight-yh920.c
target/arm/samsung/yh920/lcd-yh920.c
target/arm/samsung/yh920/lcd-as-yh920.S
target/arm/samsung/yh920/powermgmt-yh920.c
target/arm/samsung/fmradio-yh92x.c
#endif /* SAMSUNG_YH920 */
#ifdef SAMSUNG_YH925
target/arm/samsung/yh925/backlight-yh925.c
target/arm/samsung/yh925/lcd-yh925.c
target/arm/samsung/yh925/lcd-as-yh925.S
target/arm/samsung/yh925/powermgmt-yh925.c
#endif /* SAMSUNG_YH925 */
#ifdef SAMSUNG_YPS3
target/arm/s5l8700/yps3/button-yps3.c
target/arm/s5l8700/yps3/lcd-yps3.c
target/arm/s5l8700/yps3/fmradio-i2c-yps3.c
target/arm/s5l8700/yps3/backlight-yps3.c
target/arm/s5l8700/yps3/nand-yps3.c
target/arm/s5l8700/yps3/power-yps3.c
#endif /* SAMSUNG_YPS3 */
#ifdef PBELL_VIBE500
drivers/synaptics-mep.c
target/arm/pbell/vibe500/lcd-vibe500.c
target/arm/pbell/vibe500/button-vibe500.c
target/arm/pbell/vibe500/power-vibe500.c
target/arm/pbell/vibe500/backlight-vibe500.c
target/arm/pbell/vibe500/lcd-as-vibe500.S
target/arm/pbell/vibe500/powermgmt-vibe500.c
#endif
#if defined(MPIO_HD200) || defined(MPIO_HD300)
target/coldfire/wmcodec-coldfire.c
target/coldfire/mpio/system-mpio.c
target/coldfire/mpio/power-mpio.c
target/coldfire/mpio/backlight-mpio.c
target/coldfire/mpio/usb-mpio.c
target/coldfire/mpio/ata-mpio.c
target/coldfire/mpio/adc-mpio.c
#ifndef BOOTLOADER
target/coldfire/mpio/audio-mpio.c
target/coldfire/mpio/fmradio_i2c-mpio.c
#endif /* BOOTLOADER */
#endif
#ifdef MPIO_HD200
target/coldfire/mpio/hd200/button-hd200.c
target/coldfire/mpio/hd200/lcd-hd200.c
target/coldfire/mpio/hd200/lcd-as-hd200.S
target/coldfire/mpio/hd200/powermgmt-hd200.c
#endif
#ifdef MPIO_HD300
target/coldfire/mpio/hd300/button-hd300.c
target/coldfire/mpio/hd300/lcd-hd300.c
target/coldfire/mpio/hd300/lcd-as-hd300.S
target/coldfire/mpio/hd300/powermgmt-hd300.c
#endif
#if defined(HM60X)
target/arm/rk27xx/hm60x/button-hm60x.c
target/arm/rk27xx/hm60x/powermgmt-hm60x.c
target/arm/rk27xx/hm60x/power-hm60x.c
#endif
#if defined(HM801)
target/arm/rk27xx/hm801/button-hm801.c
target/arm/rk27xx/hm801/powermgmt-hm801.c
target/arm/rk27xx/hm801/power-hm801.c
#endif
#if defined(MA9) || defined(MA9C) || defined(MA8) || defined(MA8C)
target/arm/rk27xx/ma/button-ma.c
target/arm/rk27xx/ma/powermgmt-ma.c
target/arm/rk27xx/ma/power-ma.c
drivers/pca9555.c
target/arm/rk27xx/ma/pca9555-ma.c
target/arm/rk27xx/ma/audio-ma.c
#endif
#if defined(IHIFI760) || defined(IHIFI960)
target/arm/rk27xx/ihifi/button-ihifi.c
target/arm/rk27xx/ihifi/power-ihifi.c
#if defined(IHIFI760)
target/arm/rk27xx/ihifi/powermgmt-ihifi760.c
#else
target/arm/rk27xx/ihifi/powermgmt-ihifi960.c
#endif
#endif
#if defined(IHIFI770) || defined(IHIFI770C) || defined(IHIFI800)
target/arm/rk27xx/ihifi2/button-ihifi.c
target/arm/rk27xx/ihifi2/power-ihifi.c
#if defined(IHIFI770)
target/arm/rk27xx/ihifi2/powermgmt-ihifi770.c
target/arm/rk27xx/ihifi2/audio-ihifi770.c
#elif defined(IHIFI770C)
target/arm/rk27xx/ihifi2/powermgmt-ihifi770c.c
target/arm/rk27xx/ihifi2/audio-ihifi770.c
#elif defined(IHIFI800)
target/arm/rk27xx/ihifi2/powermgmt-ihifi800.c
target/arm/rk27xx/ihifi2/audio-ihifi800.c
#endif
#endif
#if (CONFIG_PLATFORM & PLATFORM_ANDROID)
target/hosted/kernel-unix.c
target/hosted/filesystem-unix.c
target/hosted/lc-unix.c
target/hosted/android/lcd-android.c
target/hosted/android/button-android.c
iBasso DX50/DX90: Major code cleanup and reorganization. Reorganization - Separated iBasso devices from PLATFORM_ANDROID. These are now standlone hosted targets. Most device specific code is in the firmware/target/hosted/ibasso directory. - No dependency on Android SDK, only the Android NDK is needed. 32 bit Android NDK and Android API Level 16. - Separate implementation for each device where feasible. Code cleanup - Rewrite of existing code, from simple reformat to complete reimplementation. - New backlight interface, seperating backlight from touchscreen. - Rewrite of device button handler, removing unneeded code and fixing memory leaks. - New Debug messages interface logging to Android adb logcat (DEBUGF, panicf, logf). - Rewrite of lcd device handler, removing unneeded code and fixing memory leaks. - Rewrite of audiohw device handler/pcm interface, removing unneeded code and fixing memory leaks, enabling 44.1/48kHz pthreaded playback. - Rewrite of power and powermng, proper shutdown, using batterylog results (see http://gerrit.rockbox.org/r/#/c/1047/). - Rewrite of configure (Android NDK) and device specific config. - Rewrite of the Android NDK specific Makefile. Misc - All plugins/games/demos activated. - Update tinyalsa to latest from https://github.com/tinyalsa/tinyalsa. Includes - http://gerrit.rockbox.org/r/#/c/993/ - http://gerrit.rockbox.org/r/#/c/1010/ - http://gerrit.rockbox.org/r/#/c/1035/ Does not include http://gerrit.rockbox.org/r/#/c/1007/ due to new backlight interface and new option for hold switch, touchscreen, physical button interaction. Rockbox needs the iBasso DX50/DX90 loader for startup, see http://gerrit.rockbox.org/r/#/c/1099/ The loader expects Rockbox to be installed in /mnt/sdcard/.rockbox/. If /mnt/sdcard/ is accessed as USB mass storage device, Rockbox will exit gracefully and the loader will restart Rockbox on USB disconnect. Tested on iBasso DX50. Compiled (not tested) for iBasso DX90. Compiled (not tested) for PLATFORM_ANDROID. Change-Id: I5f5e22e68f5b4cf29c28e2b40b2c265f2beb7ab7
2015-02-02 20:44:29 +00:00
#ifdef DEBUG
target/hosted/android/debug-android.c
#endif
target/hosted/android/pcm-android.c
target/hosted/android/powermgmt-android.c
iBasso DX50/DX90: Major code cleanup and reorganization. Reorganization - Separated iBasso devices from PLATFORM_ANDROID. These are now standlone hosted targets. Most device specific code is in the firmware/target/hosted/ibasso directory. - No dependency on Android SDK, only the Android NDK is needed. 32 bit Android NDK and Android API Level 16. - Separate implementation for each device where feasible. Code cleanup - Rewrite of existing code, from simple reformat to complete reimplementation. - New backlight interface, seperating backlight from touchscreen. - Rewrite of device button handler, removing unneeded code and fixing memory leaks. - New Debug messages interface logging to Android adb logcat (DEBUGF, panicf, logf). - Rewrite of lcd device handler, removing unneeded code and fixing memory leaks. - Rewrite of audiohw device handler/pcm interface, removing unneeded code and fixing memory leaks, enabling 44.1/48kHz pthreaded playback. - Rewrite of power and powermng, proper shutdown, using batterylog results (see http://gerrit.rockbox.org/r/#/c/1047/). - Rewrite of configure (Android NDK) and device specific config. - Rewrite of the Android NDK specific Makefile. Misc - All plugins/games/demos activated. - Update tinyalsa to latest from https://github.com/tinyalsa/tinyalsa. Includes - http://gerrit.rockbox.org/r/#/c/993/ - http://gerrit.rockbox.org/r/#/c/1010/ - http://gerrit.rockbox.org/r/#/c/1035/ Does not include http://gerrit.rockbox.org/r/#/c/1007/ due to new backlight interface and new option for hold switch, touchscreen, physical button interaction. Rockbox needs the iBasso DX50/DX90 loader for startup, see http://gerrit.rockbox.org/r/#/c/1099/ The loader expects Rockbox to be installed in /mnt/sdcard/.rockbox/. If /mnt/sdcard/ is accessed as USB mass storage device, Rockbox will exit gracefully and the loader will restart Rockbox on USB disconnect. Tested on iBasso DX50. Compiled (not tested) for iBasso DX90. Compiled (not tested) for PLATFORM_ANDROID. Change-Id: I5f5e22e68f5b4cf29c28e2b40b2c265f2beb7ab7
2015-02-02 20:44:29 +00:00
target/hosted/android/system-android.c
target/hosted/android/telephony-android.c
#ifdef APPLICATION
target/hosted/android/app/button-application.c
#endif
iBasso DX50/DX90: Major code cleanup and reorganization. Reorganization - Separated iBasso devices from PLATFORM_ANDROID. These are now standlone hosted targets. Most device specific code is in the firmware/target/hosted/ibasso directory. - No dependency on Android SDK, only the Android NDK is needed. 32 bit Android NDK and Android API Level 16. - Separate implementation for each device where feasible. Code cleanup - Rewrite of existing code, from simple reformat to complete reimplementation. - New backlight interface, seperating backlight from touchscreen. - Rewrite of device button handler, removing unneeded code and fixing memory leaks. - New Debug messages interface logging to Android adb logcat (DEBUGF, panicf, logf). - Rewrite of lcd device handler, removing unneeded code and fixing memory leaks. - Rewrite of audiohw device handler/pcm interface, removing unneeded code and fixing memory leaks, enabling 44.1/48kHz pthreaded playback. - Rewrite of power and powermng, proper shutdown, using batterylog results (see http://gerrit.rockbox.org/r/#/c/1047/). - Rewrite of configure (Android NDK) and device specific config. - Rewrite of the Android NDK specific Makefile. Misc - All plugins/games/demos activated. - Update tinyalsa to latest from https://github.com/tinyalsa/tinyalsa. Includes - http://gerrit.rockbox.org/r/#/c/993/ - http://gerrit.rockbox.org/r/#/c/1010/ - http://gerrit.rockbox.org/r/#/c/1035/ Does not include http://gerrit.rockbox.org/r/#/c/1007/ due to new backlight interface and new option for hold switch, touchscreen, physical button interaction. Rockbox needs the iBasso DX50/DX90 loader for startup, see http://gerrit.rockbox.org/r/#/c/1099/ The loader expects Rockbox to be installed in /mnt/sdcard/.rockbox/. If /mnt/sdcard/ is accessed as USB mass storage device, Rockbox will exit gracefully and the loader will restart Rockbox on USB disconnect. Tested on iBasso DX50. Compiled (not tested) for iBasso DX90. Compiled (not tested) for PLATFORM_ANDROID. Change-Id: I5f5e22e68f5b4cf29c28e2b40b2c265f2beb7ab7
2015-02-02 20:44:29 +00:00
drivers/audio/android.c
Introducing Targets iBasso DX50 & iBasso DX90 The port to for this two targets has been entirely developped by Ilia Sergachev (alias Il or xzcc). His source can be found at https://bitbucket.org/isergachev/rockbox . The few necesary modifications for the DX90 port was done by headwhacker form head-fi.org. Unfortunately i could not try out the final state of the DX90 port. The port is hosted on android (without java) as standalone app. The official Firmware is required to run this port. Ilia did modify the source files for the "android" target in the rockbox source to make the DX port work. The work I did was to separate the code for DX50 (&DX90) from the android target. On this Target Ilia used source from tinyalsa from AOSP. I did not touch that part of the code because I do not understand it. What else I changed from Ilias sources besides the separation from the target "android": * removed a dirty hack to keep backlight off * changed value battery meter to voltage battery meter * made all plugins compile (named target as "standalone") and added keymaps * i added the graphics for the manual but did not do anything else for the manual yet * minor optimizations known bugs: * timers are slowed donw when playback is active (tinyalsa related?) * some minor bugs Things to do: * The main prolem will be how to install the app correctly. A guy called DOC2008 added a CWM (by androtab.info) to the official firmware and Ilia made a CWM installation script and a dualboot selector (rbutils/ibassoboot, build with ndk-build). We will have to find a way to install rockbox in a proper way without breaking any copyrights. Maybe ADB is an option but it is not enable with OF by default. Patching the OF is probably the way to go. * All the wiki and manual to build: needed: android ndk installed, android sdk installed with additional build-tools 19.1.0 installed ./tools/configure select iBasso DX50 or iBasso DX90 make -j apk the content of rockbox.zip/.rockbox needs to be copied to /system/rockbox/app_rockbox/rockbox/ (rockbox app not needed) the content of libs/armeabi to /system/rockbox/lib/ (rockbox app needed) The boot selector is needed as /system/bin/MangoPlayer and the iBasso app as /system/bin/MangoPlayer_original. There is also the "vold" file. The one from OF does not work with DX50 rockbox (DX90 works!?), the one from Ilia is necessary. Until we have found a proper way to install it, it can only be installed following the instructions of Ilia on his bitbucket page, using the CWM-OF and his installation script package. Change-Id: Ic4faaf84824c162aabcc08e492cee6e0068719d0 Reviewed-on: http://gerrit.rockbox.org/941 Tested: Chiwen Chang <rock1104.tw@yahoo.com.tw> Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
2014-08-30 11:15:53 +00:00
#endif
iBasso DX50/DX90: Major code cleanup and reorganization. Reorganization - Separated iBasso devices from PLATFORM_ANDROID. These are now standlone hosted targets. Most device specific code is in the firmware/target/hosted/ibasso directory. - No dependency on Android SDK, only the Android NDK is needed. 32 bit Android NDK and Android API Level 16. - Separate implementation for each device where feasible. Code cleanup - Rewrite of existing code, from simple reformat to complete reimplementation. - New backlight interface, seperating backlight from touchscreen. - Rewrite of device button handler, removing unneeded code and fixing memory leaks. - New Debug messages interface logging to Android adb logcat (DEBUGF, panicf, logf). - Rewrite of lcd device handler, removing unneeded code and fixing memory leaks. - Rewrite of audiohw device handler/pcm interface, removing unneeded code and fixing memory leaks, enabling 44.1/48kHz pthreaded playback. - Rewrite of power and powermng, proper shutdown, using batterylog results (see http://gerrit.rockbox.org/r/#/c/1047/). - Rewrite of configure (Android NDK) and device specific config. - Rewrite of the Android NDK specific Makefile. Misc - All plugins/games/demos activated. - Update tinyalsa to latest from https://github.com/tinyalsa/tinyalsa. Includes - http://gerrit.rockbox.org/r/#/c/993/ - http://gerrit.rockbox.org/r/#/c/1010/ - http://gerrit.rockbox.org/r/#/c/1035/ Does not include http://gerrit.rockbox.org/r/#/c/1007/ due to new backlight interface and new option for hold switch, touchscreen, physical button interaction. Rockbox needs the iBasso DX50/DX90 loader for startup, see http://gerrit.rockbox.org/r/#/c/1099/ The loader expects Rockbox to be installed in /mnt/sdcard/.rockbox/. If /mnt/sdcard/ is accessed as USB mass storage device, Rockbox will exit gracefully and the loader will restart Rockbox on USB disconnect. Tested on iBasso DX50. Compiled (not tested) for iBasso DX90. Compiled (not tested) for PLATFORM_ANDROID. Change-Id: I5f5e22e68f5b4cf29c28e2b40b2c265f2beb7ab7
2015-02-02 20:44:29 +00:00
#if defined(DX50) || defined(DX90)
drivers/lcd-memframe.c
target/hosted/kernel-unix.c
target/hosted/filesystem-unix.c
target/hosted/lc-unix.c
target/hosted/ibasso/audiohw-ibasso.c
target/hosted/ibasso/backlight-ibasso.c
target/hosted/ibasso/button-ibasso.c
target/hosted/power-linux.c
Introducing Targets iBasso DX50 & iBasso DX90 The port to for this two targets has been entirely developped by Ilia Sergachev (alias Il or xzcc). His source can be found at https://bitbucket.org/isergachev/rockbox . The few necesary modifications for the DX90 port was done by headwhacker form head-fi.org. Unfortunately i could not try out the final state of the DX90 port. The port is hosted on android (without java) as standalone app. The official Firmware is required to run this port. Ilia did modify the source files for the "android" target in the rockbox source to make the DX port work. The work I did was to separate the code for DX50 (&DX90) from the android target. On this Target Ilia used source from tinyalsa from AOSP. I did not touch that part of the code because I do not understand it. What else I changed from Ilias sources besides the separation from the target "android": * removed a dirty hack to keep backlight off * changed value battery meter to voltage battery meter * made all plugins compile (named target as "standalone") and added keymaps * i added the graphics for the manual but did not do anything else for the manual yet * minor optimizations known bugs: * timers are slowed donw when playback is active (tinyalsa related?) * some minor bugs Things to do: * The main prolem will be how to install the app correctly. A guy called DOC2008 added a CWM (by androtab.info) to the official firmware and Ilia made a CWM installation script and a dualboot selector (rbutils/ibassoboot, build with ndk-build). We will have to find a way to install rockbox in a proper way without breaking any copyrights. Maybe ADB is an option but it is not enable with OF by default. Patching the OF is probably the way to go. * All the wiki and manual to build: needed: android ndk installed, android sdk installed with additional build-tools 19.1.0 installed ./tools/configure select iBasso DX50 or iBasso DX90 make -j apk the content of rockbox.zip/.rockbox needs to be copied to /system/rockbox/app_rockbox/rockbox/ (rockbox app not needed) the content of libs/armeabi to /system/rockbox/lib/ (rockbox app needed) The boot selector is needed as /system/bin/MangoPlayer and the iBasso app as /system/bin/MangoPlayer_original. There is also the "vold" file. The one from OF does not work with DX50 rockbox (DX90 works!?), the one from Ilia is necessary. Until we have found a proper way to install it, it can only be installed following the instructions of Ilia on his bitbucket page, using the CWM-OF and his installation script package. Change-Id: Ic4faaf84824c162aabcc08e492cee6e0068719d0 Reviewed-on: http://gerrit.rockbox.org/941 Tested: Chiwen Chang <rock1104.tw@yahoo.com.tw> Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
2014-08-30 11:15:53 +00:00
#ifdef DEBUG
iBasso DX50/DX90: Major code cleanup and reorganization. Reorganization - Separated iBasso devices from PLATFORM_ANDROID. These are now standlone hosted targets. Most device specific code is in the firmware/target/hosted/ibasso directory. - No dependency on Android SDK, only the Android NDK is needed. 32 bit Android NDK and Android API Level 16. - Separate implementation for each device where feasible. Code cleanup - Rewrite of existing code, from simple reformat to complete reimplementation. - New backlight interface, seperating backlight from touchscreen. - Rewrite of device button handler, removing unneeded code and fixing memory leaks. - New Debug messages interface logging to Android adb logcat (DEBUGF, panicf, logf). - Rewrite of lcd device handler, removing unneeded code and fixing memory leaks. - Rewrite of audiohw device handler/pcm interface, removing unneeded code and fixing memory leaks, enabling 44.1/48kHz pthreaded playback. - Rewrite of power and powermng, proper shutdown, using batterylog results (see http://gerrit.rockbox.org/r/#/c/1047/). - Rewrite of configure (Android NDK) and device specific config. - Rewrite of the Android NDK specific Makefile. Misc - All plugins/games/demos activated. - Update tinyalsa to latest from https://github.com/tinyalsa/tinyalsa. Includes - http://gerrit.rockbox.org/r/#/c/993/ - http://gerrit.rockbox.org/r/#/c/1010/ - http://gerrit.rockbox.org/r/#/c/1035/ Does not include http://gerrit.rockbox.org/r/#/c/1007/ due to new backlight interface and new option for hold switch, touchscreen, physical button interaction. Rockbox needs the iBasso DX50/DX90 loader for startup, see http://gerrit.rockbox.org/r/#/c/1099/ The loader expects Rockbox to be installed in /mnt/sdcard/.rockbox/. If /mnt/sdcard/ is accessed as USB mass storage device, Rockbox will exit gracefully and the loader will restart Rockbox on USB disconnect. Tested on iBasso DX50. Compiled (not tested) for iBasso DX90. Compiled (not tested) for PLATFORM_ANDROID. Change-Id: I5f5e22e68f5b4cf29c28e2b40b2c265f2beb7ab7
2015-02-02 20:44:29 +00:00
target/hosted/ibasso/debug-ibasso.c
#endif
target/hosted/ibasso/governor-ibasso.c
iBasso DX50/DX90: Major code cleanup and reorganization. Reorganization - Separated iBasso devices from PLATFORM_ANDROID. These are now standlone hosted targets. Most device specific code is in the firmware/target/hosted/ibasso directory. - No dependency on Android SDK, only the Android NDK is needed. 32 bit Android NDK and Android API Level 16. - Separate implementation for each device where feasible. Code cleanup - Rewrite of existing code, from simple reformat to complete reimplementation. - New backlight interface, seperating backlight from touchscreen. - Rewrite of device button handler, removing unneeded code and fixing memory leaks. - New Debug messages interface logging to Android adb logcat (DEBUGF, panicf, logf). - Rewrite of lcd device handler, removing unneeded code and fixing memory leaks. - Rewrite of audiohw device handler/pcm interface, removing unneeded code and fixing memory leaks, enabling 44.1/48kHz pthreaded playback. - Rewrite of power and powermng, proper shutdown, using batterylog results (see http://gerrit.rockbox.org/r/#/c/1047/). - Rewrite of configure (Android NDK) and device specific config. - Rewrite of the Android NDK specific Makefile. Misc - All plugins/games/demos activated. - Update tinyalsa to latest from https://github.com/tinyalsa/tinyalsa. Includes - http://gerrit.rockbox.org/r/#/c/993/ - http://gerrit.rockbox.org/r/#/c/1010/ - http://gerrit.rockbox.org/r/#/c/1035/ Does not include http://gerrit.rockbox.org/r/#/c/1007/ due to new backlight interface and new option for hold switch, touchscreen, physical button interaction. Rockbox needs the iBasso DX50/DX90 loader for startup, see http://gerrit.rockbox.org/r/#/c/1099/ The loader expects Rockbox to be installed in /mnt/sdcard/.rockbox/. If /mnt/sdcard/ is accessed as USB mass storage device, Rockbox will exit gracefully and the loader will restart Rockbox on USB disconnect. Tested on iBasso DX50. Compiled (not tested) for iBasso DX90. Compiled (not tested) for PLATFORM_ANDROID. Change-Id: I5f5e22e68f5b4cf29c28e2b40b2c265f2beb7ab7
2015-02-02 20:44:29 +00:00
target/hosted/ibasso/hostfs-ibasso.c
target/hosted/ibasso/lcd-ibasso.c
target/hosted/ibasso/pcm-ibasso.c
target/hosted/ibasso/power-ibasso.c
target/hosted/ibasso/powermgmt-ibasso.c
target/hosted/ibasso/sysfs-ibasso.c
target/hosted/ibasso/system-ibasso.c
target/hosted/ibasso/usb-ibasso.c
target/hosted/ibasso/vold-ibasso.c
target/hosted/ibasso/tinyalsa/mixer.c
target/hosted/ibasso/tinyalsa/pcm.c
#ifdef DX50
target/hosted/ibasso/dx50/audiohw-dx50.c
target/hosted/ibasso/dx50/button-dx50.c
#endif
#ifdef DX90
target/hosted/ibasso/dx90/audiohw-dx90.c
target/hosted/ibasso/dx90/button-dx90.c
Introducing Targets iBasso DX50 & iBasso DX90 The port to for this two targets has been entirely developped by Ilia Sergachev (alias Il or xzcc). His source can be found at https://bitbucket.org/isergachev/rockbox . The few necesary modifications for the DX90 port was done by headwhacker form head-fi.org. Unfortunately i could not try out the final state of the DX90 port. The port is hosted on android (without java) as standalone app. The official Firmware is required to run this port. Ilia did modify the source files for the "android" target in the rockbox source to make the DX port work. The work I did was to separate the code for DX50 (&DX90) from the android target. On this Target Ilia used source from tinyalsa from AOSP. I did not touch that part of the code because I do not understand it. What else I changed from Ilias sources besides the separation from the target "android": * removed a dirty hack to keep backlight off * changed value battery meter to voltage battery meter * made all plugins compile (named target as "standalone") and added keymaps * i added the graphics for the manual but did not do anything else for the manual yet * minor optimizations known bugs: * timers are slowed donw when playback is active (tinyalsa related?) * some minor bugs Things to do: * The main prolem will be how to install the app correctly. A guy called DOC2008 added a CWM (by androtab.info) to the official firmware and Ilia made a CWM installation script and a dualboot selector (rbutils/ibassoboot, build with ndk-build). We will have to find a way to install rockbox in a proper way without breaking any copyrights. Maybe ADB is an option but it is not enable with OF by default. Patching the OF is probably the way to go. * All the wiki and manual to build: needed: android ndk installed, android sdk installed with additional build-tools 19.1.0 installed ./tools/configure select iBasso DX50 or iBasso DX90 make -j apk the content of rockbox.zip/.rockbox needs to be copied to /system/rockbox/app_rockbox/rockbox/ (rockbox app not needed) the content of libs/armeabi to /system/rockbox/lib/ (rockbox app needed) The boot selector is needed as /system/bin/MangoPlayer and the iBasso app as /system/bin/MangoPlayer_original. There is also the "vold" file. The one from OF does not work with DX50 rockbox (DX90 works!?), the one from Ilia is necessary. Until we have found a proper way to install it, it can only be installed following the instructions of Ilia on his bitbucket page, using the CWM-OF and his installation script package. Change-Id: Ic4faaf84824c162aabcc08e492cee6e0068719d0 Reviewed-on: http://gerrit.rockbox.org/941 Tested: Chiwen Chang <rock1104.tw@yahoo.com.tw> Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
2014-08-30 11:15:53 +00:00
#endif
#endif
Rewrite filesystem code (WIP) This patch redoes the filesystem code from the FAT driver up to the clipboard code in onplay.c. Not every aspect of this is finished therefore it is still "WIP". I don't wish to do too much at once (haha!). What is left to do is get dircache back in the sim and find an implementation for the dircache indicies in the tagcache and playlist code or do something else that has the same benefit. Leaving these out for now does not make anything unusable. All the basics are done. Phone app code should probably get vetted (and app path handling just plain rewritten as environment expansions); the SDL app and Android run well. Main things addressed: 1) Thread safety: There is none right now in the trunk code. Most of what currently works is luck when multiple threads are involved or multiple descriptors to the same file are open. 2) POSIX compliance: Many of the functions behave nothing like their counterparts on a host system. This leads to inconsistent code or very different behavior from native to hosted. One huge offender was rename(). Going point by point would fill a book. 3) Actual running RAM usage: Many targets will use less RAM and less stack space (some more RAM because I upped the number of cache buffers for large memory). There's very little memory lying fallow in rarely-used areas (see 'Key core changes' below). Also, all targets may open the same number of directory streams whereas before those with less than 8MB RAM were limited to 8, not 12 implying those targets will save slightly less. 4) Performance: The test_disk plugin shows markedly improved performance, particularly in the area of (uncached) directory scanning, due partly to more optimal directory reading and to a better sector cache algorithm. Uncached times tend to be better while there is a bit of a slowdown in dircache due to it being a bit heavier of an implementation. It's not noticeable by a human as far as I can say. Key core changes: 1) Files and directories share core code and data structures. 2) The filesystem code knows which descriptors refer to same file. This ensures that changes from one stream are appropriately reflected in every open descriptor for that file (fileobj_mgr.c). 3) File and directory cache buffers are borrowed from the main sector cache. This means that when they are not in use by a file, they are not wasted, but used for the cache. Most of the time, only a few of them are needed. It also means that adding more file and directory handles is less expensive. All one must do in ensure a large enough cache to borrow from. 4) Relative path components are supported and the namespace is unified. It does not support full relative paths to an implied current directory; what is does support is use of "." and "..". Adding the former would not be very difficult. The namespace is unified in the sense that volumes may be specified several times along with relative parts, e.g.: "/<0>/foo/../../<1>/bar" :<=> "/<1>/bar". 5) Stack usage is down due to sharing of data, static allocation and less duplication of strings on the stack. This requires more serialization than I would like but since the number of threads is limited to a low number, the tradoff in favor of the stack seems reasonable. 6) Separates and heirarchicalizes (sic) the SIM and APP filesystem code. SIM path and volume handling is just like the target. Some aspects of the APP file code get more straightforward (e.g. no path hashing is needed). Dircache: Deserves its own section. Dircache is new but pays homage to the old. The old one was not compatible and so it, since it got redone, does all the stuff it always should have done such as: 1) It may be update and used at any time during the build process. No longer has one to wait for it to finish building to do basic file management (create, remove, rename, etc.). 2) It does not need to be either fully scanned or completely disabled; it can be incomplete (i.e. overfilled, missing paths), still be of benefit and be correct. 3) Handles mounting and dismounting of individual volumes which means a full rebuild is not needed just because you pop a new SD card in the slot. Now, because it reuses its freed entry data, may rebuild only that volume. 4) Much more fundamental to the file code. When it is built, it is the keeper of the master file list whether enabled or not ("disabled" is just a state of the cache). Its must always to ready to be started and bind all streams opened prior to being enabled. 5) Maintains any short filenames in OEM format which means that it does not need to be rebuilt when changing the default codepage. Miscellaneous Compatibility: 1) Update any other code that would otherwise not work such as the hotswap mounting code in various card drivers. 2) File management: Clipboard needed updating because of the behavioral changes. Still needs a little more work on some finer points. 3) Remove now-obsolete functionality such as the mutex's "no preempt" flag (which was only for the prior FAT driver). 4) struct dirinfo uses time_t rather than raw FAT directory entry time fields. I plan to follow up on genericizing everything there (i.e. no FAT attributes). 5) unicode.c needed some redoing so that the file code does not try try to load codepages during a scan, which is actually a problem with the current code. The default codepage, if any is required, is now kept in RAM separarately (bufalloced) from codepages specified to iso_decode() (which must not be bufalloced because the conversion may be done by playback threads). Brings with it some additional reusable core code: 1) Revised file functions: Reusable code that does things such as safe path concatenation and parsing without buffer limitations or data duplication. Variants that copy or alter the input path may be based off these. To do: 1) Put dircache functionality back in the sim. Treating it internally as a different kind of file system seems the best approach at this time. 2) Restore use of dircache indexes in the playlist and database or something effectively the same. Since the cache doesn't have to be complete in order to be used, not getting a hit on the cache doesn't unambiguously say if the path exists or not. Change-Id: Ia30f3082a136253e3a0eae0784e3091d138915c8 Reviewed-on: http://gerrit.rockbox.org/566 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
2013-08-06 02:02:45 +00:00
#else /* defined(SIMULATOR) */
#ifdef WIN32
asm/mempcpy.c
target/hosted/filesystem-win32.c
#else /* !WIN32 */
Rewrite filesystem code (WIP) This patch redoes the filesystem code from the FAT driver up to the clipboard code in onplay.c. Not every aspect of this is finished therefore it is still "WIP". I don't wish to do too much at once (haha!). What is left to do is get dircache back in the sim and find an implementation for the dircache indicies in the tagcache and playlist code or do something else that has the same benefit. Leaving these out for now does not make anything unusable. All the basics are done. Phone app code should probably get vetted (and app path handling just plain rewritten as environment expansions); the SDL app and Android run well. Main things addressed: 1) Thread safety: There is none right now in the trunk code. Most of what currently works is luck when multiple threads are involved or multiple descriptors to the same file are open. 2) POSIX compliance: Many of the functions behave nothing like their counterparts on a host system. This leads to inconsistent code or very different behavior from native to hosted. One huge offender was rename(). Going point by point would fill a book. 3) Actual running RAM usage: Many targets will use less RAM and less stack space (some more RAM because I upped the number of cache buffers for large memory). There's very little memory lying fallow in rarely-used areas (see 'Key core changes' below). Also, all targets may open the same number of directory streams whereas before those with less than 8MB RAM were limited to 8, not 12 implying those targets will save slightly less. 4) Performance: The test_disk plugin shows markedly improved performance, particularly in the area of (uncached) directory scanning, due partly to more optimal directory reading and to a better sector cache algorithm. Uncached times tend to be better while there is a bit of a slowdown in dircache due to it being a bit heavier of an implementation. It's not noticeable by a human as far as I can say. Key core changes: 1) Files and directories share core code and data structures. 2) The filesystem code knows which descriptors refer to same file. This ensures that changes from one stream are appropriately reflected in every open descriptor for that file (fileobj_mgr.c). 3) File and directory cache buffers are borrowed from the main sector cache. This means that when they are not in use by a file, they are not wasted, but used for the cache. Most of the time, only a few of them are needed. It also means that adding more file and directory handles is less expensive. All one must do in ensure a large enough cache to borrow from. 4) Relative path components are supported and the namespace is unified. It does not support full relative paths to an implied current directory; what is does support is use of "." and "..". Adding the former would not be very difficult. The namespace is unified in the sense that volumes may be specified several times along with relative parts, e.g.: "/<0>/foo/../../<1>/bar" :<=> "/<1>/bar". 5) Stack usage is down due to sharing of data, static allocation and less duplication of strings on the stack. This requires more serialization than I would like but since the number of threads is limited to a low number, the tradoff in favor of the stack seems reasonable. 6) Separates and heirarchicalizes (sic) the SIM and APP filesystem code. SIM path and volume handling is just like the target. Some aspects of the APP file code get more straightforward (e.g. no path hashing is needed). Dircache: Deserves its own section. Dircache is new but pays homage to the old. The old one was not compatible and so it, since it got redone, does all the stuff it always should have done such as: 1) It may be update and used at any time during the build process. No longer has one to wait for it to finish building to do basic file management (create, remove, rename, etc.). 2) It does not need to be either fully scanned or completely disabled; it can be incomplete (i.e. overfilled, missing paths), still be of benefit and be correct. 3) Handles mounting and dismounting of individual volumes which means a full rebuild is not needed just because you pop a new SD card in the slot. Now, because it reuses its freed entry data, may rebuild only that volume. 4) Much more fundamental to the file code. When it is built, it is the keeper of the master file list whether enabled or not ("disabled" is just a state of the cache). Its must always to ready to be started and bind all streams opened prior to being enabled. 5) Maintains any short filenames in OEM format which means that it does not need to be rebuilt when changing the default codepage. Miscellaneous Compatibility: 1) Update any other code that would otherwise not work such as the hotswap mounting code in various card drivers. 2) File management: Clipboard needed updating because of the behavioral changes. Still needs a little more work on some finer points. 3) Remove now-obsolete functionality such as the mutex's "no preempt" flag (which was only for the prior FAT driver). 4) struct dirinfo uses time_t rather than raw FAT directory entry time fields. I plan to follow up on genericizing everything there (i.e. no FAT attributes). 5) unicode.c needed some redoing so that the file code does not try try to load codepages during a scan, which is actually a problem with the current code. The default codepage, if any is required, is now kept in RAM separarately (bufalloced) from codepages specified to iso_decode() (which must not be bufalloced because the conversion may be done by playback threads). Brings with it some additional reusable core code: 1) Revised file functions: Reusable code that does things such as safe path concatenation and parsing without buffer limitations or data duplication. Variants that copy or alter the input path may be based off these. To do: 1) Put dircache functionality back in the sim. Treating it internally as a different kind of file system seems the best approach at this time. 2) Restore use of dircache indexes in the playlist and database or something effectively the same. Since the cache doesn't have to be complete in order to be used, not getting a hit on the cache doesn't unambiguously say if the path exists or not. Change-Id: Ia30f3082a136253e3a0eae0784e3091d138915c8 Reviewed-on: http://gerrit.rockbox.org/566 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
2013-08-06 02:02:45 +00:00
target/hosted/filesystem-unix.c
#endif /* WIN32 */
target/hosted/sdl/load_code-sdl.c
#ifdef HAVE_SDL_THREADS
target/hosted/sdl/filesystem-sdl.c
#endif
#endif /* !defined(SIMULATOR) */
#if defined(HAVE_TOUCHPAD) && !defined(HAS_BUTTON_HOLD)
drivers/touchpad.c
#endif
/* Hardware drivers */
#ifndef SIMULATOR
#ifdef HAVE_I2C_ASYNC
drivers/i2c-async.c
#endif
#ifdef HAVE_AXP_PMU
drivers/axp-pmu.c
#endif
#ifdef HAVE_FT6x06
drivers/ft6x06.c
#endif
#ifdef HAVE_CW2015
drivers/cw2015.c
#endif
#endif
/* firmware/kernel section */
#ifdef HAVE_CORELOCK_OBJECT
kernel/corelock.c
#endif
kernel/mrsw_lock.c
kernel/mutex.c
kernel/queue.c
#ifdef HAVE_SEMAPHORE_OBJECTS
kernel/semaphore.c
#endif
#if defined(HAVE_SDL_THREADS)
target/hosted/sdl/thread-sdl.c
#else
kernel/thread.c
#endif
kernel/thread-common.c
kernel/tick.c
#ifdef INCLUDE_TIMEOUT_API
kernel/timeout.c
#endif