summaryrefslogtreecommitdiff
path: root/firmware
AgeCommit message (Collapse)Author
2017-12-09Playback: Move internal track list onto bufferMichael Sevakis
Does away the statically-allocated track list which frees quite a fair amount of in-RAM size. There's no compile-time hard track limit. Recommended TODO (but not right away): Have data small enough use the handle structure as its buffer data area. Almost the entire handle structure is unused for simple allocations without any associated filesystem path. Change-Id: I74a4561e5a837e049811ac421722ec00dadc0d50
2017-11-28Add a small 32-byte write buffer to fdprintf.Michael Sevakis
Avoids a call to write() for every output character. It doesn't need to be very large to have a great effect on speed and realize most of the potential. Change-Id: I11820c1968ed7b20aa00e106a022c1b864b03d21
2017-11-21Convert i.MX31 and AMS target to use RTC interruptMichael Sevakis
Instead of checking ticks, set a sticky dirty flag that indicates that the RTC needs to be read. This gives a timely update and more accurate readout without actually reading the RTC until it changes. The implementation should atomically read the flag and clear it. Setting the flag would typically happen in an RTC tick ISR. Change-Id: I6fd325f22845029a485c502c884812d3676026ea
2017-11-21Undo hacks to meant to get around string formatting limitationsMichael Sevakis
The new vuprintf makes unnecessary workarounds due to formatting limitations. I checked grep output for whatever appeared to fit but it's possible I missed some instances because they weren't so obvious. Also, this means sound settings can dynamically work with any number of decimals rather than the current assumption of one or two. Add an ipow() function to help and take advantage of dynamic field width and precision. Consolidate string formatting of sound settings. Change-Id: I46caf534859dfd1916cd440cd25e5206b192fcd8
2017-11-21Implement a much more capable vuprintf()Michael Sevakis
New support as well as some buggy support fixed. Still no floating point support if ever that would be desired. Support (*): * Flags: '-', '+', ' ', '#', '0' * Width and precision: 'n', '.n', '*' and '.*' * Length modifiers: 'hh', 'h', 'j', 'l', 'll', 't', 'z' * Radix: 'c', 'd', 'i', 'n', 'o', 'p/P', 's', 'u', 'x/X' (*) Provision exists to switch lesser-used stuff on or off or when certain functionality isn't desired (bootloader?). The compulsory radixes are everything but 'o', 'n', 'p/P' and 'x/X' with length modifiers being optional. The default setup is 'l', 'z', 'c', 'd', 'p/P', 's', 'u', 'x/X'. * Move fdprintf() to its own file. It was in a strange place. * Make callers compatible and fix a couple snprintf() bugs while at it. Could smush it down in size but I'm gonna get over the binsize neurosis and just the let optimizer do its thing. Change-Id: Ibdc613a9b6775802c188b29b9dd46c568c94f7c3
2017-11-14nwz: fix tuner on older players (also fixes audio because Sony)Amaury Pouly
Change-Id: I1915bcfc27708d34a9dde81fce1e0bc0b01e1040
2017-11-12Imx233 Disable Autoslow only at maximum cpu frequencyWilliam Wilgus
At normal loads: - disabling auto slow boosts performance at the cost of runtime (~ -5%) - disabling at max cpu does not noticibly decrease runtime Change-Id: I5de80201c9a24ce556862151cbd6b21b01708b63
2017-11-07rolo.c: Change 'int errno' to 'int err'Michael Sevakis
It can cause issues if errno.h finds itself included there Change-Id: Id5d2be66cd3af4c2760e4a37d3332853e9b54f95
2017-11-06nwzlinux: add support for radioAmaury Pouly
None of the Sony up to A15 seem to support RDS (they use either Si4702 or Si4708), thus I did not add any code to support RDS. Change-Id: I64838993b9705b36b94665f8470c7a89c772c961
2017-11-04fuzep: fix rdsAmaury Pouly
Change-Id: I15900f638f8f45cb7035a0e7b1caecb62d1d70e8
2017-11-01nwztools: add NW-A46 to the databaseAmaury Pouly
Change-Id: I85dc2080e0be07ff689384c0445f4f1595baf4ac
2017-10-30AMS: Convert ascodec_endofch() to use bit mod function's return value.Michael Sevakis
It cleans up the code and it was the initial inspiring reason to change them. Change-Id: I299499117b8a12d93d13d6563683bab89ab80555
2017-10-30Make atomic bit modification functions return previous value.Michael Sevakis
Change-Id: I19a94cf946735e1d9e51c3207cd82198fd4dfc1a
2017-10-29Add boot from other volumes in bootloader on targets with HAVE_MULTIVOLUMEWilliam Wilgus
Adds the ability to load firmware from other drives on MULTIVOLUME targets Mihail Zenkov <mihail.zenkov@gmail.com> had posted a hard coded patch to allow this on several Sansa players, I made it more universal Redirect file rockbox_main.<name> should placed in root of drive you would like to be main, if this file empty or there a single slash '/' firmware will be loaded from /.rockbox in root of this drive If instead a /<*DIRECTORY*> is supplied in rockbox_main.<name> then firmware will be loaded from /<dir>/.rockbox/ NOTES* The directory can have multiple levels however.. leading slash MUST be included trailing slash can be omitted (eg. /test/.rockbox would be simply '/test' in the redirect file) Redirect file will not work on internal drive (whatever is default boot drive) Volume with the highest index containing redirect file will be loaded first. Firmware file is checked for boot data region, if missing, firmware image will not be loaded. On failure or if no redirect file is found load will fallback to internal drive Currently only Sansa Fuze+, Sansa Clip+, Sansa Clip Zip, Sansa Fuzev2, and Sansa Fuzev1 are implemented. Players (with HAVE_MULTIVOLUME) will need #define HAVE_BOOTDATA and #define BOOT_REDIR "rockbox_main.<name>" added to their config file boot_data is implemented in crt0.s file (See g#1552) ARM and IMX233 have aleady been implemented Once these conditions are met <HAVE_MULTIBOOT> will be defined by config.h Partitions on the drives are able to have a redirect as well. Change-Id: Iada3263919f6bcad7d0d7d8279b4239aafa07ee9
2017-10-29Add boot data to MOST AS3525 DevicesWilliam Wilgus
Adds boot data to as3525 devices Sansa C200v2 E200v2 Clip Clipv2 Clip+ ClipZip fuze, fuzev2 m200v4 Adds boot_data to features.txt default arm crt0.s now had boot data if HAVE_BOOTDATA is defined Change-Id: I614a556696540511a69fc12a4520b01c268bf8a9
2017-10-29Add boot data support to rockbox.William Wilgus
Bootdata is a special location in the Firmware marked by a magic header The bootloader is able to copy information to the firmware by locating this struct and passing data to the firmware when it is loaded but before it is actually executed Data is verified by a crc of the bootdata Change-Id: Ib3d78cc0c3a9d47d6fe73be4747a11b7ad6f0a9e
2017-10-28imx233: Implement mutex for cpu_boost_lock/unlockWilliam Wilgus
Playing AAC-HE files resulted in a race condition between audio/codec/buffering for set_cpu_frequency Change-Id: I35e1c1fd18db623e2990c305acdca03f57184d0d
2017-10-26Fix a few missed things in 16454efc (and hopefully clear the red).Michael Sevakis
Change-Id: I2ce88e4c41e6e08efbfbdf261122318dfb0f8b0f
2017-10-26Unify storage threads into oneMichael Sevakis
* Editing a bunch of drivers' thread routines in order to implement a new feature is tedious. * No matter the number of storage drivers, they share one thread. No extra threads needed for CONFIG_STORAGE_MULTI. * Each has an event callback called by the storage thread. * A default callback is provided to fake sleeping in order to trigger idle callbacks. It could also do other default processing. Changes to it will be part of driver code without editing each one. * Drivers may sleep and wake as they please as long as they give a low pulse on their storage bit to ask to go into sleep mode. Idle callback is called on its behalf and driver immediately put into sleep mode. * Drivers may indicate they are to continue receiving events in USB mode, otherwise they receve nothing until disconnect (they do receive SYS_USB_DISCONNECTED no matter what). * Rework a few things to keep the callback implementation sane and maintainable. ata.c was dreadful with all those bools; make it a state machine and easier to follow. Remove last_user_activity; it has no purpose that isn't served by keeping the disk active through last_disk_activity instead. * Even-out stack sizes partly because of a lack of a decent place to define them by driver or SoC or whatever; it doesn't seem too critical to do that anyway. Many are simply too large while at least one isn't really adequate. They may be individually overridden if necessary (figure out where). The thread uses the greatest size demanded. Newer file code is much more frugal with stack space. I barely see use crack 50% after idle callbacks (usually mid-40s). Card insert/eject doesn't demand much. * No forcing of idle callbacks. If it isn't necessary for one or more non-disk storage types, it really isn't any more necessary for disk storage. Besides, it makes the whole thing easier to implement. Change-Id: Id30c284d82a8af66e47f2cfe104c52cbd8aa7215
2017-10-24nwztools: add NW-A45Amaury Pouly
Change-Id: I75a7723498564ee73c3682391582e354ad672fd7
2017-10-24nwztools: add NW-ZX300AAmaury Pouly
Change-Id: I8b311ed6b48b92b9ecf4fb25c19119cfb2d5beb1
2017-10-17sonynwz: add NW-A47 to the database and regenerate nwz_db.{c,h}Amaury Pouly
Change-Id: I6331a48a4d336348e90a32cf151427b29eeedb2b
2017-10-07sonynwz: add api and debug entries for "acoustic" and "cue/rev" modeAmaury Pouly
We don't really know what those are supposed to do. They seem to change the volume curve but it is not very clear what is the intended purpose. Change-Id: I65f5d18aba139844c23df092277ba17ee8518f96
2017-10-07Add alsa wrappers to get control valuesAmaury Pouly
Change-Id: Ic870261888f35717bfa939029dcd64bfe1a3df33
2017-10-07nwztools/scsitools: fix databaseAmaury Pouly
I forgot to add the NW-ZX300 to its series Change-Id: I78fd9440492e1868b887f6a2e137d4d0c2ff199a
2017-10-07Add Sony NW-ZX300 model id to databaseAmaury Pouly
Change-Id: I8e7a14b86408c52cbd4a059e2db6a9c9d0966fc6
2017-10-06cleanup linux cpuinfo codeAmaury Pouly
sonynwz: quirk for cpufreq broken driver There was some redundancy between frequency_linux(cpu, true) and current_scaling_frequency(), also I see no reason to compile the cpuinfo stuff unconditionally and the scaling info only on DX since it was already printed some partial scaling info anyway. Thus compile all the code unconditionally and simplify the logic in the debug menu. Also avoid putting buffers of size PATH_MAX on stack since it can be quite big and we only requires 64 bytes for those paths. On Sony NWZ, the cpu driver reports frequency in MHz instead of kHz thus we need to make the cpuinfo code aware of that bug. Change-Id: I61af45ab5f179ecc909b4841b9137a915a60193a
2017-10-06sonynwz: add nvp nodes for NW-A40/ZX300, various fixes for toolsAmaury Pouly
We still miss the model IDS for those device so scsitool won't be able to recognize them automatically. Change-Id: I17ae0f0d95c011cea8e289def63c7673b6c4b667
2017-10-01sonynwzlinux: print debug info to log on crashAmaury Pouly
Print the crash info and dump the memory map from /proc/self/maps Change-Id: I99de32e5e6cca3bf1aca4fa253834ca4ad599fbe
2017-10-01sonynwza10/a20: enable pcm frequency selectionAmaury Pouly
Change-Id: I335fcdbb652253e777d0d7406545d0d44d98f4f0
2017-10-01sonynwzlinux: enable software tone controlsAmaury Pouly
As far as I know, they are not supported by the hardware Change-Id: I71be60ef5461fc9fea151cc9ae9de385b8e08eda
2017-09-22Fix bug in pcm-alsa.cAmaury Pouly
I introduced the bug by mistake when adding support for 32-bit sample rate. Change-Id: I5ac53917c95327672284707b69c59bb98d1aecd7
2017-09-20Remove STORAGE_NEEDS_ALIGN from config headersMichael Sevakis
It's no longer required or used in the file code. Change-Id: I11c1bc166c91b99addca8c8d151c5eaace7a61c3
2017-09-17Add support for the NWZ-E350Amaury Pouly
Strangely it has the SAME encryption key as the E450. Either they didn't bother changing it or more likely they have exactly the same internals and a slightly different case. Change-Id: I39ab88845b3e40db34160c2e61dde421f391df44
2017-09-17fix warning in lcd-as-memframe.cAmaury Pouly
The fix is to actually remove unused variables. Those were unused from day 1, which I find slightly suspicious so either there is some problem or the code was copy-pasted and modified, making some variables useless. Change-Id: I41caf52d469b48c969ece969540de67d87e77357
2017-09-17Add support for the Sony NWZ-S750Amaury Pouly
Change-Id: I9050129949809b3dbe9f4f9e816f8980c4f3a904
2017-09-17Don't call touchscreen functions when we don't have a touchscreenAmaury Pouly
Change-Id: Ia8c05f45c289729031d6333445d932bb5ac242ca
2017-09-17fix red on ypr0/ypr1Amaury Pouly
Always compile in pcm_alsa_set_digital_volume, the linker will optimize it away on targets that don't use it. Change-Id: Ia21c3eaa8a64b75761ab5d056361e7ed1fcf949a
2017-09-17imx233: make debug usable with a touchscreenAmaury Pouly
Change-Id: I08a3302024646c0d915aa34855970678730eb44c
2017-09-17zenxfi2: fix touchscreen bugAmaury Pouly
Due to some undocumented behavior, the touchscreen was almost unusable in point mode. Now it's much better but still not very nice to use, probably it needs some filtering. Change-Id: Idc8a0214b09f268e6be907ee6ec3126cc0d88773
2017-09-17Add simulator support for the A860Amaury Pouly
This requires a few changes unrelated to the A860 because configure unsets APPLICATION but the NWZ is an application! Change-Id: Id91aa23193383ac95886b281653da5286edd9caf
2017-09-17Add support for the NWZ-A860Amaury Pouly
Change-Id: Ibf0c5168ac31d4ba2aeaa86cbeca37a1011b75fa
2017-09-17sonynwz: fix various drivers, notably touchscreen relatedAmaury Pouly
Change-Id: If43087ec9ad405ee6eeae8bedba8d221f8fb142f
2017-09-06fix yellowsAmaury Pouly
Change-Id: Ie27d3aa7d2485b4eb053af48ba34ad6526bf6472
2017-09-06Add support for Sony NW-A20Johannes Rauh
Add original author to CREDITS Change-Id: I7a0159635c7896e2b5521c078ef62618f568d89e
2017-09-05Initial commit for the Sony NWZ linux portAmaury Pouly
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-08-27zen/zenxfi: always set EMI frequency to 130MHzAmaury Pouly
The ZEN/X-Fi (STMP3700) don't handle memory frequency scaling really well, for this reason we run it at a fixed frequency. That frequency was previously set to 64Mhz because when the CPU run at its lowest frequency, we set the VDD voltage to 0.975 V and on STMP3700, VDDD=VDDDMEM and this is too low to run EMI at 130Mhz. This is not a good solution because under heavy load, running the EMI at 64Mhz results in frame drops and a sluggish device. Thus we now run the EMI at 130Mhz all the time now. To do so, increase the minimum VDD voltage to 1.275 V. This may result is a decreased battery life on those targets but it will also avoid all sorts of glictches and all the device to truly run at full speed. Change-Id: Ia8391492c29fe67bc2701aa7d8cfd00a9df349e8
2017-08-27imx233: fix potential bug in udelayAmaury Pouly
Change-Id: I5c8f5d9917f7a3353862c856bd9bbbbe9b291b1d
2017-08-27zen/zenxfi: increase LCD clock frequencyAmaury Pouly
Change-Id: I157e0d537a1b9d73eda4e18a4a64b10410c6fac4
2017-08-27imx233: update comment about vbusvalidAmaury Pouly
Change-Id: Ice1ece716657fa7f78f69736e5e733e1b7f67b59