Commit graph

11600 commits

Author SHA1 Message Date
William Wilgus
74552d5404 [coverity] RFC ata-imx31.c UDMA mode timing tables out of bounds reads
mode only goes 0-4 the original commit mixed up the index and mode
bad stuff must happen but its been here for 16 years

Change-Id: I7e69f4e2574029a6bc3cea76e8803d2d0357d9e2
2024-06-05 19:00:15 -04:00
Roman Artiukhin
2109d524e8 samsung yp-r0: Fix displaying non-Latin filenames on SD card
Supply iocharset=utf8 mount option. Otherwise, cyrillic symbols appear as question marks.

Change-Id: Ibf40a15ff429cfe2bf6e7970330870505e2470b7
2024-06-04 19:29:19 -04:00
William Wilgus
dad01f29ff [coverity] multiboot.c write_bootdata_ fix memset size
the payload arg was swapped with the size arg

Change-Id: I1e1ef6e842a4fd00f7d4a656438fccbe7abc429a
2024-06-04 15:56:56 -04:00
William Wilgus
82dcf32736 [BugFix] headphone should be removed on first toggle
Change-Id: I10a77f210896a9ec317f9cbc7de21dccabafe426
2024-06-02 17:09:24 -04:00
William Wilgus
cc67f420f2 [coverity] font.c load_cache_entry check for successful read
Change-Id: Ic2d8d6e498417983af7ee691f53dfb1e951561fa
2024-06-02 10:32:47 -04:00
William Wilgus
aca41be3ca [Feature] Simulator add headphone and lineout toggling
Change-Id: I0b019414643e5c9037c0128093488da49e1a4c0d
2024-05-30 12:12:29 -04:00
Solomon Peachy
8b8c0c7c2a checkwps: Validate translated strings (%Sx)
In verbose mode it will log valid the strings found, otherwise it will
only complain when we encounter a missing string.

Unfortunately a missing string is not inherently a problem, due to
conditional expressions.  So all we can do is complain in checkwps
or if wps debugging is turned on.

Meanwhile, this is the first step in actually enumerating the translated
strings used by themes.

Change-Id: Ia93b333085e825d5b085c4d372ad8e13aa3e3ba1
2024-05-24 21:37:54 -04:00
Dana Conrad
5f377c2613 Eros Q Native: Add Stereo SW behavior setting
Hopefully this should cover our bases so we can change
the behavior of the stereo switch to keep line out working
when they change the hardware on us!

Change-Id: Ic36bcb3778d5681a5f3f158c689df9c1420c1d7e
2024-05-12 09:42:02 -04:00
Aidan MacDonald
e37cd0f2f5 x1000: Enable NOCROSSREFS_TO()
Start enforcing the correctness of references to the .init section.

Change-Id: I507891a25be9cccff4cf8ec13fdc799b73c75176
2024-05-08 22:14:10 -04:00
Solomon Peachy
1957237a46 Fix red in 8c86fb6da0 (ipod5g only)
Change-Id: Idf6a488728b0187779bc4a9232c7e7e9400afeec
2024-05-08 22:03:59 -04:00
Solomon Peachy
8c86fb6da0 arm: Use -masm-syntax-unified when compiling with gcc8 or newer
Annoyingly, this makes all of the '.S' files we compile get treated as
divided syntax, so we need to make the syntax in them explicit.

Change-Id: I56a3916b7b24c84a1214a5d6bc4ed4d651f002cf
2024-05-08 21:45:42 -04:00
William Wilgus
efcea66280 Revert "readdir_r use in tagcache.check_dir, ft_load"
This reverts commit 0c737d3b2e.

Reason for revert: Not really a concern as open_stream returns an independent buffer since g#566

Change-Id: Idbd2f4a7cc2ea6362b7714629469eeb7b3d19b3b
2024-05-02 13:38:32 -04:00
William Wilgus
0c737d3b2e readdir_r use in tagcache.check_dir, ft_load
Change-Id: Ibcde39ed247e100dd47ae877fb2a3625bbb38d8b
2024-05-02 09:33:29 -04:00
Solomon Peachy
aa7357861a ipod6g: Issue a FLUSH_CACHE[_EXT] command if device can't sleep.
Additionally, synchronize with the standard ATA driver's feature table

 * Acoustic management set to quietest
 * Set power mode to lowest w/o standby

Change-Id: I12e64354d4c946228e9a55fc8da2114127d08d28
2024-04-26 07:28:01 -04:00
Solomon Peachy
9a17185e63 ata: Enable volatile write cache (if device supports it)
Rejigger the options table a little for clarity

Change-Id: I02fdcc6521e42cc735d9b1da741b80db5b739858
2024-04-26 07:25:35 -04:00
Solomon Peachy
2905ba2f72 ipod6g: ata: Don't power down devices that can't handle it
...by checking to see if the mandatory ATA PM feature flag is set

The common CF->SD adapters don't report this.

TODO:  When PM is not available, issue a CMD_FLUSH[_EXT] instead?

Change-Id: If9200bd3c03a984376203aeea4fbe11e230a9b4d
2024-04-22 15:47:10 -04:00
Solomon Peachy
4b423e21f6 pp5020: Use DMA Writes by default for SSDs
It is likely that these things accept data far faster than the spinning
rust drives ever would, and while there is a question about PIO timings,
DMA timings seem to be solid.

Change-Id: I70644e0ad85a6ed429c8704e66ca7af91d78765c
2024-04-22 15:46:50 -04:00
Solomon Peachy
886060475e ata: Heavily rework sleep and poweroff logic
* Use of ata_disk_can_poweroff() was inverted, resulting in SATA SSDs
   getting powered off but leaving _everything_ else on, including spinning
   rust!
 * Replace the can_poweroff() heuristic with a test for the mandatory
   ATA power mgmt feature flag. Notably, the CF->SD adapters don't claim
   to support this!
 * Eliminate duplicated tests in sleep code
 * Wrap all poweroff-related code with HAVE_ATA_POWER_OFF
 * Don't ever use SLEEP command, only STANDBY_IMMEDIATE
 * Gate call to STANDBY_IMMEDIATE behind a can_poweroff() test
 * Prefer FLUSH_CACHE_EXT to FLUSH_CACHE where available.
 * Improve SSD detection heuristics to any of these:
   * Explicltly identifies as SSD (covers newer CF and SATA)
   * TRIM support
   * CFA compliant AND (CF level 0 OR high speed support)
 * Report SSD detection in debug menu

Change-Id: I7fcb83b6d6eabddc11c64326a573b08ab85412b5
2024-04-22 15:46:30 -04:00
William Wilgus
b57536db8d [BugFix] Hosted incoming directory component leading slashes #2
Fix the rest..

Change-Id: Ie551772a073cba3eb6de176cd73a59d419057183
2024-04-07 16:46:02 -04:00
William Wilgus
d1f14c7b46 [BugFix] Hosted incoming directory component leading slashes
leading slashes in directory components to path_append
makes a path with a leading slash absolute and discards
the basepath

Change-Id: I65253080c0ca4278b559894104ab25ab199a3100
2024-04-07 14:13:21 -04:00
Solomon Peachy
4e1faa032f lcd: fix yellow from accidental commit
Change-Id: I05c2676bcd5a4a0f75804af0e5367da5acd4ee55
2024-04-06 21:37:14 -04:00
Solomon Peachy
75ad7c9792 Remove duplicate 'const' declaration in percent_to_volt_charge[]
Affetcs many hosted targets; probably was a typo that was copy-pasted
everywhere else.

Change-Id: Ifbb31e7ff1fce4874fa0f3c108db59f152e2f927
2024-04-06 21:26:53 -04:00
Solomon Peachy
7b25c32388 lcd: Do not alias lcd_write_yuv420_lines_odither() to lcd_write_yuv420_lines()
Causes a warning with GCC8 as the protoypes are not the same.

Only affects targets that lack an asm-optimized version (eg mips)

Change-Id: I22e4657f3fb71ebbb915e4f290bf3670b1b87636
2024-04-06 21:26:53 -04:00
William Wilgus
15fdaa3abc [Fix Red] 957920e9 lcd-bitmap-common 16-bit devices
Bootloaders need lcd_ prepended as well

Change-Id: Id95020bb0dd022fcc9693863a7824e959f994a0e
2024-04-02 19:43:58 -04:00
William Wilgus
957920e915 lcd-bitmap-common 16-bit devices remove branch in character loop
do the depth check outside of the loop
make a helper function to have same
fn signatures between
mono_bitmap_part & lcd_alpha_bitmap_part

Change-Id: I42fab535133607f937430357dab7a20fa97805a8
2024-04-02 19:28:19 -04:00
Roman Artiukhin
f5a852304b Sansa e200v2: bootloader: enable SD boot
Use rockbox_main.e200v2 for boot redirect

Max allowed size: 120860
Thumb build: 119579

Change-Id: I4683b1bdd247d41eaf4393b999db4ef5cd7a4010
2024-04-01 11:44:22 -04:00
Aidan MacDonald
cc210a7161 Fix red in c36d7768c5
Change-Id: Iadcfd322b32cf8523579c9e21a59928a621f15e1
2024-04-01 16:30:41 +01:00
Roman Artiukhin
c36d7768c5 Sansa e200v2: bootloader: fit size
Max allowed size: 120860
Old thumb build: 128494
New thumb build: 118514 (fits!)

Disabled:
Logo;
alpha blending capabilities for bitmaps;
Arm stack unwinder (backtrace);

Related forum discussion: https://forums.rockbox.org/index.php/topic,54768.0.html

Fixes FS#12380

Change-Id: I978720d795cb0ef5169103e467cf8386c21d8e93
2024-04-01 11:02:04 -04:00
William Wilgus
1dc22c7241 use path_append for setting directories is several settings
sprintf, strcpy, memccpy can all just go thru path_append
with the added benefit of some path sanitizing too

Change-Id: I33510b56a364b8b3a0b06f2ff14b76491f6e3870
2024-04-01 07:35:53 -04:00
Aidan MacDonald
856e3d548b Fix red in dc9d354ed2
Change-Id: Ic6639e85c42f7ebf435ebad2740e921b7b932ead
2024-03-31 18:20:24 +01:00
Aidan MacDonald
dc9d354ed2 multiboot: Add v1 boot protocol
v1 passes the drive and partition number of the boot volume
instead of using the volume number. The volume number isn't
reliable because the same filesystem might get a different
volume number once the firmware is loaded, which will cause
the firmware to use the wrong root volume and fail to locate
the correct .rockbox directory.

Using drive and partition numbers avoids this issue because
drive numbering is fixed and determined by the target.

Change-Id: I7e68b892d9424a1f686197a6122e139b438e5f7e
2024-03-31 16:57:19 +01:00
Aidan MacDonald
6ffd42548b multiboot: Refactor boot data validation, add version numbers
Instead of verifying the CRC before every access of the boot data,
verify the CRC once at startup and set a flag to indicate the boot
data is valid.

Also add a framework to support multiple boot protocol versions.
Firmware declares the maximum supported protocol version using a
version byte in the boot data header. The bootloader chooses the
highest version supported by it and the firmware when deciding
what boot protocol to use.

Change-Id: I810194625dc0833f026d2a23b8d64ed467fa6aca
2024-03-31 16:57:19 +01:00
Aidan MacDonald
af644e02a1 Fix red in 5fd5f56cac
Change-Id: Icbc6e234a2fcdd7c8e0cdd0562f49fcbdf52480b
2024-03-31 16:57:19 +01:00
Aidan MacDonald
5fd5f56cac Disable unused LCD scroll functions in bootloaders
These functions just reset some state related to the scroll engine,
which is already disabled for bootloaders. They get called from the
LCD code and compiled into the binary, but have no real effect when
the rest of the scroll engine is not present. Replacing the calls
with inline stubs gets rid of this dead code from bootloaders.

Change-Id: I12a6d8926e19477ae3a5913e7fc8aff41cecd970
2024-03-31 11:36:16 -04:00
Aidan MacDonald
b0a8cacd1d rolo: simplify parsing scramble header in load_firmware()
The standard load_firmware() function is used on targets which
use the "scramble -add" method for generating Rockbox binaries.

While it tries to be a bit more generic and allows the CRC/data
offsets to be placed anywhere in the file, there are no targets
which actually need this flexibility, because they are all using
plain old "scramble -add".

So we can actually simplify load_firmware() and remove defines
from the target headers. All the targets used CRC offset = 0 and
data offset = 8, except for a few which I assume never supported
ROLO or were never tested -- eg. samsungyh820: the CRC and data
offsets cannot both be 0.

The actual motivation for this is removing the calls to lseek(),
which can help make bootloaders a tiny bit smaller, as lseek is
typically not used anywhere else in bootloaders.

Change-Id: Ic2d01e5b75a32e88363f085e3e839146a0710bf4
2024-03-31 11:24:07 -04:00
Aidan MacDonald
7dc8d754a2 Disable legacy codepage handling in bootloaders
Turn off legacy codepage handling in the filesystem code for
bootloaders, and support ISO-8859-1 (Latin-1) only.

This only affects DOS 8.3 filename parsing when FAT32 long
names are unavailable; long names are Unicode and can always
be decoded properly regardless of this setting.

In reality, bootloaders never supported codepages other than
Latin-1 in the first place. They did contain the code to load
codepages from disk, but had no way to actually change the
codepage away from Latin-1.

Compiling out this useless codepage handling code frees up
precious space for very size-constrained bootloaders like the
Sansa e200v2.

Change-Id: I26b049dd648fed4a0cc61fa938faa84e9816ab7d
2024-03-31 11:07:08 -04:00
William Wilgus
4f652b49ae clipzip clean up lcd driver a bit
consolidate some of the lcd cmd / data calls

Change-Id: I2e2ccc7833806f7bf931138a04c48aa55ef4a13d
2024-03-31 01:25:16 -04:00
William Wilgus
fe00906abb pathfuncs.c add path_strip_leading_separators()
added to path_append as well

Change-Id: Ieb6ec4f4c475ca5e60c8246c7f044bcc7651f6bf
2024-03-30 11:01:53 -04:00
Roman Artiukhin
777098fca9 usb: fix usb_storage_disconnect shouldn't call core_free for static buffer
Fixes Sansa e200v2 bootloader doesn't boot after 3301c5a

Change-Id: I8f4780961203beb18863f5d2b1f1e61857c4fe27
2024-03-30 09:10:45 +02:00
William Wilgus
52e22b253d [Bugfix] ft_assemble_path extra slashes, Volume unmound double free
Change-Id: Ie2e7702d8e252ce29af0b9dbd2e8d9e892b9ca18
2024-03-29 10:27:03 -04:00
Roman Artiukhin
6e058fe77f platform: hiby: Increase CODEC_SIZE to 1 Mb
Unifies codec size with most targets.

Apart from other things increased size improves seek accuracy in long m4b audiobooks.

Tested on Agptek Rocker and XDuoo X3II

Related discussion: https://www.rockbox.org/tracker/task/13049#comment44591

Change-Id: Id246969e78386b71ac66aace128cfba72a3f209e
2024-03-26 02:31:48 -05:00
Christian Soffke
53e7176196 dircache: don't unpin invalid buflib handle when building volumes
Buflib pinning was introduced here in 1718cf5.

If the device has to immediately shut down after booting
because of a low battery, the directory cache may be disabled
by the time core_unpin() is reached.

Its handle will have been reset to 0 in that case, triggering
a panic message due to an invalid buflib handle.

Change-Id: Ie34c3f7142d8406b66277ef185bc9ecf387d7295
2024-03-24 13:22:09 -04:00
Solomon Peachy
c00dff157c ....Fix the fix, properly.
Change-Id: I3349f0c039834e40ddbaebd13da664fa5c5b1bd9
2024-03-23 21:46:51 -04:00
Solomon Peachy
57f76784c5 Fix build for hosted targets.
Basically the namespace code _never_ actually linked properly on hosted
targets, but nobody noticed as there were no users, causing the symbols
to be dropped with no fuss.

The tagcache namespace awareness stuff pulled in the namespace code,
which made things go kaboom due to it relying on native FAT parsing
code.

Change-Id: Idef5f44b026c875022436809ca1f5015eece714a
2024-03-23 19:59:31 -04:00
William Wilgus
fa54e218ff Multiboot Database duplicate files -- Fix Yellow
Change-Id: Iccfbf6988dba49d58ec9c56dd8b453e6f3a62bf4
2024-03-23 10:37:39 -04:00
William Wilgus
fdc3668a6a [BugFix] Multiboot Database duplicate files
When the sd card is mounted into the root namespace the database
picks up files through both paths

previously we hid the mounted drive but this causes issues with users
databases when the drive letter changes

Adds a way to keep track of volumes mounted in the root namespace

Hides the enumerated volume in root

Database:
we can just parse the root directory ('/') and get to any mounted
volume but we can also enumerate a volume in the root directory
when this occurs it leads to multiple entries since the files can
be reached through multiple paths ex, /Foo could also be /SD1/Foo
Instead we will attempt to rewrite the root with any non-hidden volumes
failing that just leave the paths alone

Change-Id: I7bdba8cfaf63902d2a3852d28484bcf8ca317ebd
2024-03-23 01:03:33 -04:00
roman.artiukhin
ed27dac432 Fix CODEC_AAC_SBR_DEC check with undefined CONFIG_CPU
Define CONFIG_CPU if not defined

This fix makes sure that  AAC-LC decoding is used both on device and simulator.
It's important for testing purposes as proper AAC-LC decoding requires changes both in decoder and in metadata handling.

Fixup for 4cd65b9d9.

Change-Id: Idef88825458761fffa3f5c5f4f221b555c509d89
2024-01-02 10:05:17 -05:00
Dana Conrad
8cc7476735 ErosQ Native ES9018K2M: Add digital filters capability
Setting not yet hidden for older hardware revision.

Change-Id: Iaaa5727e63c38de578a6bbc73498ae1073180e65
2024-01-02 08:19:23 -05:00
Dana Conrad
a3fe07ff12 ErosQ New Revision HW volume
Add HW volume control via ES9018K2M, and reorganize
eros_qn_codec.c/.h, audiohw-erosqnative.c.

This automatically detects the presence of the new DAC and
uses its hardware volume scaling. If not present, use same
SWVOL we have been using so far.

Add debug menu readout of SWVOL/I2C result.

Break out es9018k2m stuff into its own file so that
maybe it can be useful to other ports.

Note that we may need to get smarter about detecting the DAC
type if/when another model emerges.

Change-Id: I586a1cf7f150dd6b4e221157859825952840af56
2024-01-02 06:51:07 -05:00
Solomon Peachy
161c861153 Fix red in 4cd65b9d9
Change-Id: Ic3f136f5c88c46da68b78bc21ddefdf9fdbf2745
2023-12-31 21:30:18 -05:00