summaryrefslogtreecommitdiffstats
path: root/bootloader
AgeCommit message (Collapse)AuthorFilesLines
4 daysMIPS: make sure to fill 'jr' branch delay slot with 'nop'Aidan MacDonald2-2/+6
Inline assembly in RoLO and the FiiO M3K bootloader used 'jr' to jump to a newly loaded Rockbox binary, but incorrectly left the branch delay slot open. That gives GCC an opening to place illegal instrutions, etc, which might cause an unhandled exception. Change-Id: Ia7a561fe530e94a41189d25f18a767c448177960
2021-03-28New port: FiiO M3K on bare metalAidan MacDonald4-0/+537
Change-Id: I7517e7d5459e129dcfc9465c6fbd708619888fbe
2021-02-27Rename symbols of FiiO M3K Linux-based portAidan MacDonald2-5/+5
Mainly a straight replacement of FIIO_M3K -> FIIO_M3K_LINUX. Change-Id: Id07c84f8150991d1b6851540c2c3f8f67e3f12c2
2020-11-15h1x0/h300: change when the hold switch and failsafe are usedJames Buren2-35/+28
After reviewing the code awhile I realized that the failsafe and hold switch have no impact on the boot process when the usb or charger is connected. That makes no real sense to me. If these are connected then neither will be used at all. The boot process will never revisit it either once those other modes end and resume the boot process. It will just continue to try to boot from disk as if these emergency settings never existed. I have decided it makes more sense for them to be evaluated once the higher priority charge and disk mode have finished their roles. Given how the code was originally written it seems to be they were not intended to run prior to these at the very least since the logical conditions preclude that possibility as they include the inverse of the conditions that trigger the charge and disk modes. Change-Id: I0531c97474572c573178f480c239c3c1659f9653
2020-11-15h1x0/h300: fix h300 bootloader hold switch checkJames Buren2-12/+21
This fixes an early boot bug on the h300 where hold_status is read before it has a chance to properly check whether the hold switch is even active. This was accomplished by porting over the method the h1x0 uses to perform the same check. Change-Id: I04679d82f65a2edcbee4be9a146437c3988040a2
2020-11-15h1x0/h300: consolidate a few code paths to logical equivalentsJames Buren2-16/+18
This saves a few bytes of precious space by consolidating paths where they can be combined with no change to the underlying algorithm. Change-Id: Ie6b7ead190a87d66fcbdcf2e351010bab751d952
2020-11-14h1x0/h300: bring the two bootloaders more in syncJames Buren2-42/+268
The most major change here is the porting of the failsafe boot menu and eeprom settings support from the h1x0 bootloader to the h300 bootloader. This has been successfully tested already and indeed works about the same as it does on the h1x0 bootloader. The other major change is the addition of new code to both bootloaders that will retry the flash boot function after exitting disk mode. It still falls back to booting from disk if this either fails or is not configured to boot from flash. There were also various other modifications to bring the two closer in sync so there are fewer differences. Change-Id: I17a5724e03225b57e9d0071387294aa6cd025178
2020-11-14h1x0/h300: clean up the bootloader source a bitJames Buren2-26/+10
First this removes most of the conditionals for the CPP as they are always true for the targets that use the bootloader source. Second this moves some global variable references around to reduce some redundancy in the h1x0 bootloader source. All of this is done to make it easier to compare the two bootloaders as they are very heavily related to each other. Change-Id: I7eb4a3106fb9fce6059797310d9e053a3d3ecf63
2020-11-14h1x0/h300: remove trailing whitespace from bootloadersJames Buren2-72/+72
Change-Id: I8f3bfbc8287c8f520894e0cd258066d4c7a02197
2020-11-14h300: enable usb charging for charge mode and disk modeJames Buren1-3/+15
This enables USB charging when the bootloader is in charge mode or disk mode. As a byproduct there is a small change in behavior where charge mode is all that is available if it is triggered by the USB cable insertion. Disk mode only becomes available if the user requests to continue the boot process by pressing the power button. It had to be done this way as there's no way to tell this early whether the user wants to simply charge or trigger disk mode as well. Change-Id: I32f29398b22a76e5e754efdc9beecae39dd122d5
2020-11-13Bugfix Backlight_init should be called after lcd_initWilliam Wilgus3-10/+8
the rest.. Change-Id: I50585ba2191aa8134de3045b1445859b27503a68
2020-11-13h300, Others Bugfix Bootloader backlight_init()William Wilgus5-6/+6
backlight_init needs to be called after lcd_init when using lcd_enable() Change-Id: Id034835c903801fea49e2b972c110c1ec5106976
2020-10-26Whitespace cleanup on fb_viewport RewriteWilliam Wilgus1-11/+11
Change-Id: I24aac41c8abecf7b78a44d7f59e842b791be4563
2020-10-23ClipPlus BOOTLOADER DONT FIT!William Wilgus4-0/+443
REMOVED FROM ALL NATIVE BOOTLOADERS: finish removing the text scrolling pare down printf to a minimal subset (%c %s %l %d %u and %x(%p)) remove diacritic and rtl language support GOAL 134000 START 135305 CURRENT 133700 SUCCESS! (ASSUMING IT WORKS -- UNESTED) Change-Id: Ic3f6ac1dc260578f581ee53458b3e5bb47d313ec
2020-10-15fiiom3k: Temporarily disable filter rolloff programmingSolomon Peachy1-0/+1
(Hardware control isn't wired into ALSA properly) Change-Id: Iac537d2d90a6119b8c002cd38a558a4ebb3321eb
2020-10-14m3k: Fixes to the launcher/loader.Solomon Peachy1-0/+10
* Execute the correct OF player binary * We don't have adb, so error out Change-Id: I4fb39fcdf5e437450c059e6c1296ea6cb99298fe
2020-10-13mrobe500 bootloader fixSolomon Peachy1-14/+6
Change-Id: I0ab99a427df34ef6c5899a280953250660ffc156
2020-10-13bootloader: Work around linker wonkiness that broke PP bootloader builds.Solomon Peachy1-1/+4
Change-Id: I8e32c1605c0844c6f1980919ede61ca674b00bbb
2020-10-13Fix more warnings.Solomon Peachy1-4/+4
Change-Id: Ib3a9fc622a46b1fc72e94dcbc6d29d2e430cd81b
2020-10-11hosted: sanitize handling of HOME_DIRSolomon Peachy1-13/+9
* HOME_DIR is now either "/" or special "<HOME>" * target-specific "home dir path" is defined solely by PIVOT_ROOT * PIVOT_ROOT path is now defined in toplevel config files * Make Samsung YP-R0/R1 and SONY_NWZ use PIVOT_ROOT too * Do not prepend PIVOT_ROOT path if the path already has it! * Do not play these games for __PCTOOL__ builds Change-Id: I3d51ad902a5f9cafe45ba15ba654f30f1ec6113a
2020-10-11New port: AIGO EROS Q / EROS KSolomon Peachy2-32/+84
The Q and K have a slightly different case, but the hardware under the shell is completely identical. These models are rebadged versions: * Hifiwalker H2 (== Q) * AGPTek H3 (== K) * Surfans F20 (== K) Other notes: * Significant improvements in the shared Hiby-platform launcher/loader * SD card can theoretically be hot-swapped now * Support external USB mass storage! * Some consolidation of Hiby-platform targets * Some consolidation of plugin keymaps Todo/known issues: * Keymaps need to be gone over properly * Convert to HAVE_SCROLLWHEEL? Change-Id: I5a8a4f22c38a5b69392ca7c0a8ad8c4e07d9523c
2020-10-09New port: FiiO M3KSolomon Peachy2-4/+29
Most credit goes to: Roman Skylarov Additional integration and refactoring by myself. *** COMPLETELY UNTESTED *** Change-Id: Ia64c36d92e0214c6b15f7a868df286f8113ea27b
2020-09-03ondavx747: Fix bootloader buildSolomon Peachy1-2/+1
Change-Id: Ibdff6a3d18cc065f7edd67a9ea77b2cb6b4629d1
2020-08-19Enable boot from SD for Sansa e200Johannes Rauh1-8/+6
Change-Id: I0940f2cd5fc914d6d5061b5798b1a636009649b7
2020-07-24[1/4] Remove SH support and all archos targetsSolomon Peachy2-9/+2
This removes all code specific to SH targets Change-Id: I7980523785d2596e65c06430f4638eec74a06061
2020-07-22bootloader: Consolidate xDuoo X3ii/X20 and AGPTek Rocker bootloadersSolomon Peachy3-581/+50
Bonus changes: * boot mode selection stored on SD card Change-Id: I225a06d149ae71c1882f632c30d0fe4ab5308a74
2020-04-06xDuoo X3II and X20 portMarcin Bukat3-2/+559
Provided by Roman Stolyarov Integration, Refactoring, and Upstreaming by Solomon Peachy X3II confirmed working by forum tester, X20 is nearly identical. This includes bootloader, main firmware, and the flash image patcher. Eventual Todo: * Further refactor AGPTek Rocker & xduoo hiby bootloaders * Further refactor AGPTek Rocker & xduoo hosted platform code Change-Id: I34a674051d368efcc75d1d18c725971fe46c3eee
2019-01-02Add Xuelin iHIFI 770/770C/800 supportSolomon Peachy2-2/+4
Taken from the xvortex fork (Roman Stolyarov) Ported, rebased, and cleaned up by myself. Change-Id: I7b2bca2d29502f2e4544e42f3d122786dd4b7978
2019-01-02Fix Xduoo X3 bootloader build, and silence all warnings.Solomon Peachy1-5/+29
Also enable USB bootloader mode Change-Id: I73224c2e694b9941993c89a114b48d2a907e0dfb
2018-10-15onda: fix compiler warning in boot loaderSolomon Peachy1-0/+1
Change-Id: Ic92d8e183503b68604d69bad27991f66d89c8744
2018-07-28Add cleaned-up xDuoo X3 supportSolomon Peachy3-1/+188
Cleaned up, rebased, and forward-ported from the xvortex fork. (original credit to vsoftster@gmail.com) Change-Id: Ibcc023a0271ea81e901450a88317708c2683236d Signed-off-by: Solomon Peachy <pizza@shaftnet.org>
2018-06-12Agptek Rocker: Implement USB mass storage driverMarcin Bukat1-6/+8
Agptek uses composite android driver. Change-Id: Iece188ad640f3dfd24c171946c14da4c3516b6d5
2018-06-12Agptek Rocker: Initial commitMarcin Bukat2-0/+548
Change-Id: I26b51106c7b1c36a603fba6d521e917d79b5a95b
2017-09-18remove inaccurate commentAmaury Pouly1-1/+0
Change-Id: I039288ce12c127f60793625356181d5542114105
2017-09-17nwzlinux: print version and model in bootloaderbootloader_nwzs750_v1bootloader_nwze580_v1bootloader_nwze470_v1bootloader_nwze460_v1bootloader_nwze450_v1bootloader_nwza860_v1bootloader_nwza10_v1bootloader_nwa20_v1Amaury Pouly1-0/+6
Change-Id: Id31fdd3253edebf72188c2b8d52e6cc56dd6714c
2017-09-17Add support for the NWZ-A860Amaury Pouly1-4/+13
Change-Id: Ibf0c5168ac31d4ba2aeaa86cbeca37a1011b75fa
2017-09-05Initial commit for the Sony NWZ linux portAmaury Pouly4-0/+530
SUPPORTED SERIES: - NWZ-E450 - NWZ-E460 - NWZ-E470 - NWZ-E580 - NWZ-A10 NOTES: - bootloader makefile convert an extra font to be installed alongside the bootloader since sysfont is way too small - the toolsicon bitmap comes from the Oxygen iconset - touchscreen driver is untested TODO: - implement audio routing driver (pcm is handled by pcm-alsa) - fix playback: it crashes on illegal instruction in DEBUG builds - find out why the browser starts at / instead of /contents - implement radio support - implement return to OF for usb handling - calibrate battery curve (NB: of can report a battery level on a 0-5 scale but probabl don't want to use that ?) - implement simulator build (we need a nice image of the player) - figure out if we can detect jack removal POTENTIAL TODOS: - try to build a usb serial gadget and gdbserver Change-Id: Ic77d71e0651355d47cc4e423a40fb64a60c69a80
2017-03-12Do some housekeeping with fat.h and SECTOR_SIZEMichael Sevakis12-12/+0
Many includes of fat.h are pointless. Some includes are just for SECTOR_SIZE. Add a file 'firmware/include/fs_defines.h' for that and to define tuneable values that were scattered amongst various headers. Remove some local definitions of SECTOR_SIZE since they have to be in agreement with the rest of the fs code anyway. (We'll see what's in fact pointless in a moment ;) Change-Id: I9ba183bf58bd87f5c45eba7bd675c7e2c1c18ed5
2017-02-09ipod6g: bootloader v1bootloader_ipod6g_v1Cástor Muñoz2-0/+464
- dual boot - USB mode - battery trap Change-Id: I8586cfeb21ee63f45ab965430725225fdfc4212d
2016-05-25bootloader/common: disable unused broken codeCástor Muñoz1-0/+3
Disable (probably old) broken code, this fixes bootloader builds when ROCKBOX_HAS_LOGF is used. Change-Id: Id0ed2c3368855e2d2d2dbfb18149b9ed81c10b95
2016-04-22Fix AMSv2 variant 1 detection if rockbox loaded from SD cardMihail Zenkov1-0/+7
Change-Id: Ie7c9c06170601e109f8d3de9686773c38a6e224a
2016-01-25Replace SAMSUNG_YH920_PAD with YH92XSebastian Leonhardt1-1/+1
seems more logical to me, and is more consistent, since "SAMSUNG_YH92X_PAD" is already used in the tex files. Change-Id: Ie9a9d850ea86155a7dcf86c88a22a420a10a3837
2015-06-02AMS: fix usb initialization in bootloaderMihail Zenkov1-0/+2
Regression after 8b8b85433f6e9ac673adb Change-Id: I86389be0b85c5c2ad8a32d7089a6a79a6b7c8708
2015-01-12Fix red/yellow round #2Marcin Bukat1-2/+2
Change-Id: Ife25eac11fc6f6cedeca8f3fa59536bce0efe2cd
2015-01-12Get rid of stupid _backlight_* function namesMarcin Bukat13-32/+32
_remote_backlight_* and _buttonlight_* are cleaned as well Change-Id: I73653752831bbe170c26ba95d3bc04c2e3a5cf30
2015-01-08usb: finally get rid of USE_ROCKBOX_USB in Sansa bootloader, use bootloader usbAmaury Pouly1-8/+8
For some reason, the bootloader and config files didn't define HAVE_BOOTLOADER_USB_MODE, also remove the special cases in usb.c which they implied. Change-Id: I68c29be7d03627e64cac4ff7678e0c211e087a8c
2015-01-08imx233: add a comment in the bootloaderAmaury Pouly1-0/+1
Change-Id: I4bf82565e730a40f37f4a29244fd461cb3214318
2014-10-04Fix USB speed detectionMihail Zenkov1-3/+5
Change-Id: I615d2d5366ffa1e2e9c6b0837bf5a62a7e471fca Reviewed-on: http://gerrit.rockbox.org/994 Reviewed-by: Frank Gevaerts <frank@gevaerts.be> Tested: Mihail Zenkov <mihail.zenkov@gmail.com> Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
2014-08-29Hopefully fix most of the errors and warnings from the last pushMichael Sevakis1-0/+1
Change-Id: I1a466b2d55f120796910039a0296ca324c58e891
2014-08-30Rewrite filesystem code (WIP)Michael Sevakis20-51/+70
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>