Commit graph

36269 commits

Author SHA1 Message Date
Aidan MacDonald
47cbeb2e67 x1000: add support for simple on-die ECC with NAND flash
Many SPI NAND flash chips have on-die ECC engines that report
ECC status via the status feature register. This code handles
the common case where ECC status is reported with 2 bits: one
bit to indicate if flips were detected & corrected, and another
bit to indicate an uncorrectable error.

Change-Id: I5d587cd960ca9d090d2629e890724a6bc411e70c
2022-07-10 15:22:32 +01:00
Aidan MacDonald
df29c7991a x1000: add setup_chip hook for NAND chips
Add a chip setup hook for configuring vendor specific registers
after the chip is identified.

Change-Id: Ifffa7f01be16fd147a9db3d6e402b7b0debd7e12
2022-07-10 15:22:31 +01:00
Aidan MacDonald
ad8ace53e5 x1000: remove 'typedef struct' from NAND driver
Using 'typedef struct' is not in line with the project coding style
and somewhat problematic, so get rid of it here.

Change-Id: Icfe79de72ed82cb7526e9f4e8296ec12084c01ac
2022-07-10 15:22:10 +01:00
Aidan MacDonald
cc017f211a x1000: support 2nd device ID byte for NAND flash
Some components have additional ID bytes. Add support for an
optional 2nd device ID byte during the identification routine.

Change-Id: I5bbad73fb57004067c6f13f223f7bf4d43ff7849
2022-07-10 15:22:10 +01:00
Aidan MacDonald
131566b8f8 x1000: fix linux boot USB issues
If the USB controller is active when we hand over to Linux it'll
often trigger "irq nobody cared" warnings. Disabling the controller
before boot prevents that.

Also move the USB PHY bit workaround from the dualboot cleanup hook
to the main Linux boot function. Mainline kernels don't clear these
bits either.

Change-Id: Ieaf896c3b8c3e58a8c47de5afeb384ae2511a5fa
2022-07-10 09:48:39 -04:00
Aidan MacDonald
d0d13baf3e x1000: fix command line passing for linux boot
Change-Id: I2a016a5f64ef980f49a8cbdcbb0e0af9ad768ce0
2022-07-10 09:48:39 -04:00
Aidan MacDonald
ec9e484f64 firmware: Add load/store with endianness functions
Define common functions for loading 16/32/64-bit unsigned integers
with big, little, or host endianness, and distinguishing unaligned
and aligned cases.

Unaligned loads are supported generically by default, but this can
be overridden with a more efficient implementation on architectures
which support unaligned loads natively.

Change-Id: I3d826ec1a7646777876366eeece2cbccab60c1fb
2022-06-26 17:19:40 +01:00
William Wilgus
c3e75a1ce7 Reset settings on button hold fix lang for non supported ipods
Change-Id: I7ab15c26d7670472b0861e2862e865b63064c939
2022-06-21 23:49:44 -04:00
William Wilgus
8283752223 Reset settings on button hold
extend this properly to the gigabeast and iriver
updated manual entries

Change-Id: Ibd1bce8d113193cb3b76f4daf0d6ceb01a2f7585
2022-06-21 22:43:39 -04:00
William Wilgus
e75e07e1b6 plugin sliding puzzle fix unneeded check
Change-Id: Iab345d2ec490311fc8a5482c52dbed14f5e11070
2022-06-21 22:22:50 -04:00
William Wilgus
e1c5a3e296 fix uninitialized warning in libopus
likely this is truly a bug but I imagine much worse things
happen before this point in that case

Change-Id: If78465cf2ae1e5cf38ad7f087dd436b888bc9996
2022-06-21 22:05:17 -04:00
William Wilgus
75f618ea62 Rb Manual Fix missing bracket
Fix missing bracket from 7e0492444c g#4568

Change-Id: Iab897ae0c61c7a039a6870980cdb87f5fd33386f
2022-06-21 20:56:46 -04:00
Aidan MacDonald
7e0492444c usb: remove "Ask" USB Mode (FS#13317)
USB ask mode is basically a footgun: it can't work on native targets
and doesn't work reliably on hosted ones, and it continually produces
a slow trickle of problems. FS#13317 gives a rundown of the issues.
Removing the setting seems like the best solution for now, since a fix
would be pretty involved.

This partially reverts 60f581e8f5. The USB Mode setting is left in
place so the option can be added back later in a non-buggy way.

Change-Id: Ie01b28dd2ed95a31b509a7834d85bac8eb866098
2022-06-21 18:11:53 -04:00
William Wilgus
6cdd142d5c Setting reset fix red
Change-Id: I9174d7695b117fa10d10cda8ff9cccc50ebeb7f2
2022-06-20 20:16:55 -04:00
William Wilgus
ed37c2e894 FS#13193 - Add option to disable settings reset on startup
Updated version of the patch originally by user cockroach

UNTESTED
Ipods?, Iriver H10,
I do not own these players so YMMV

https://www.rockbox.org/tracker/task/13193

Change-Id: I7924837f582cc5c49ee68c186d6822f577f65147
2022-06-20 18:57:25 -04:00
Solomon Peachy
58bf7c7e6f Update english-us "translation"
Change-Id: I5b59e75d6c5ba06a3917fa7046bb769d873d6bfd
2022-06-13 09:16:34 -04:00
Solomon Peachy
7d5aeeecf1 FS13343: Updated Serbian translation (Ivan Pesic)
Change-Id: Ic4ba206b981dd03e7dcdd5a1fd3bc5f48ecc3584
2022-06-12 17:12:44 -04:00
Solomon Peachy
6a707cd913 FS13346: Updated Slovak translation (Matej Golian)
Change-Id: Icb2e7084c60fe091ea00928d84fe036b4341b762
2022-06-12 17:12:07 -04:00
Solomon Peachy
595a34640b FS13345: Updated Polish Translation (Adam Rak)
Change-Id: I9292f2dfcdbc65e9020ff2f1ef4569a371f780bc
2022-06-12 17:10:54 -04:00
Solomon Peachy
7296f30490 jz4760: Reformat USB driver a little. Prep work for later changes.
Change-Id: I74d068661ea8a8a59a88f0c2c5a938dcf6fb8b20
2022-06-12 17:09:32 -04:00
Pavel Rzehák
b9e7075837 Rockbox Utility: updated Czech translation
translated missing strings and revised existing

Change-Id: I96b8e3ecb678715c04748b56e7038e96aa6536cc
2022-06-12 10:01:44 -04:00
Aidan MacDonald
4d01168b9b x1000: add flash probe tool to bootloader
The flash probe mimics the boot ROM's flash read routines and
dumps the manufacturer & device IDs and 16-byte parameter data
to a file on the SD card.

Change-Id: I3d413bd0cc05a9d7f2285b85454420c3e90274e9
2022-05-30 14:08:02 +01:00
Aidan MacDonald
e05aa27124 x1000: move NAND commands to header file
Change-Id: Ic95b80494a101f7b349e115d82e9dfe3a64b643f
2022-05-30 14:02:13 +01:00
William Wilgus
1d39261338 lastfm_scrobbler Add settings WIP
add settings to the scrobbler plugin
Start Playback -- resume playback at plugin start
  (while enabled if nothing to resume will bring you back to scrobbler menu)
Save Threshold 0-100% -- when this much time has passed the track will be
  saved and marked (L)istened

Verbose -- Supress messages such as 'Scrobbler Started' and 'Scrobbler Flushed'

run the plugin a second time to bring up the menu
if you have resume playback enabled and there is nothing to resume
it brings you back to the scrobbler menu as well

Change-Id: I48d96ea3dc8f37d76a723136004af149429e0b2e
2022-05-28 06:23:37 -04:00
Aidan MacDonald
7345666d9c plugins: use menu for lastfm scrobbler TSR exit callback
Use standard menus and yes/no screen for the TSR exit callback,
similar to the recently added test_usb plugin. This removes the
need to define key bindings and it provides a more consistent
user experience.

It also allows the "flush cache" message to be popped up in the
main thread - doing it from the worker thread is unreliable and
the message often disappeared because the main thread did a UI
update immediately after leaving the plugin.

One issue is that quitting the plugin by selecting the scrobbler
plugin itself immediately restarts the scrobbler. This is because
there is currently no way for TSR plugins to terminate themselves
either through the exit_tsr callback or otherwise.

Change-Id: I9690239d5bd58ad2fbb36fd15a10683757aff0ff
2022-05-28 06:23:08 -04:00
Aidan MacDonald
85232fadbb simulator: fix off by one error in USB ack calculations
The sim's printout of the number of expected USB acks was off by one.
Since the sim queue is not registered for broadcasts, it will not
receive an ack message and does not need to account for itself when
determining the number of acks to expect, unlike the USB code.

Change-Id: I6715039c05c1ea95099716c5251d401e37f5b085
2022-05-22 15:34:42 +01:00
Aidan MacDonald
5ee9a45126 mips: stop backtraces at main()
Initialize ra=0 before calling main so backtraces don't walk
through the startup code.

Change-Id: Ia8796ce38b32d14025b47b3e00061267ee25cbaf
2022-05-22 07:16:11 -04:00
Aidan MacDonald
981e972839 mips: add native backtrace implementation
Should make debugging crashes on native MIPS targets far easier.
This is by no means a 100% complete or robust implementation but
it seems to handle the vast majority of functions.

Change-Id: Id5f430270e02b5092b79026b6876675c784aa649
2022-05-22 07:16:11 -04:00
Christian Soffke
cade488b08 pictureflow: Fix 'Update Cache' function and update manual
The artwork cache was previously always rebuilt,
even if you had selected the option to update.

"Preparing artwork" should be much quicker now
after a database update.

Change-Id: Ie81486e29d596b52afd21b01ba54c73f1b402be2
2022-05-22 06:55:58 -04:00
Christian Soffke
b357585852 pictureflow: Fix slide_index bound
Parameters for fbound were in the wrong order
and slide_frame wasn't assigned the bounded value

Change-Id: I9b466e8b45e4318cadf59298f8c1145fa4d30ede
2022-05-22 06:55:58 -04:00
Christian Soffke
5146c3043f pictureflow: Fix concurrency issues building art cache
Guards against possible image corruption

Change-Id: Id7e1e3a09cb13c255eea0ffdd2e4c4d558086997
2022-05-22 06:55:58 -04:00
Aidan MacDonald
c116db6065 plugins: add USB TSR test plugin
This is intended for testing USB event delivery to TSR plugins.
Usage:

1. enter plugin -> select Start
2. plug and unplug USB
3. reenter plugin -> select Status
   it should display "State: disconnected" then "Prev: connected"
4. when done -> select Stop Plugin

Change-Id: I6c70f452db642f3fcbfbcb4f06c57f93e60f4cfd
2022-05-21 14:58:55 +01:00
Aidan MacDonald
2f71571c0a Fix faulty Play Shuffled behavior (FS#13347)
When replacing a dynamic playlist with Play Shuffled, the current
track could incorrectly be left at the end of the new playlist.
Fix this - the current track should always be at the beginning,
so it can be skipped past regardless of the repeat/shuffle mode.

Change-Id: Ia86539bc23ad8ebd714b8dc50b5720671b4ad0a9
2022-05-15 15:23:36 +01:00
Aidan MacDonald
2315266628 kernel: remove unused function mutex_test()
No longer needed since the only user was in the Archos code.

Change-Id: I763f58050c70f2bb1d8cc0a044c63698f3157a8d
2022-05-14 11:29:55 -04:00
Aidan MacDonald
dafc8e5904 kernel: remove unused kernel/pthread/*.c files
These don't seem usable and it looks like the files were added by
accident by d66346789c "buflib: Check the validity of of handles
passed to buflib_get_data() in DEBUG builds."

Change-Id: I4d4601f1fef7901c08ae86448853d008f48d5f43
2022-05-14 11:29:55 -04:00
Aidan MacDonald
d20071def0 apps: Add "keep current track when replacing playlist" setting
Add a setting that makes Play and Play Shuffled in the playlist
context menu leave the current song (if any) playing when they
replace the playlist. Default to on, since this was the behavior
of the old "Clear List & Play Next" option.

Change-Id: I1340aed5c28bb3244e36d0953b3308ae59681c97
2022-05-14 16:05:46 +01:00
Aidan MacDonald
70087fb9f3 apps: Change playlist context menu behavior, fix FS#13336
Rename the "Clear List & Play" options to simply Play and Play
Shuffled, and change their behavior slightly. Previously they
would leave the current song playing, but now they will start
playing the first song of the new playlist immediately.

Shuffle options are now consistently hidden whenever a single
file is selected.

Fixes FS#13336 -- Play Shuffled is now always displayed where
applicable, regardless of playback state.

Change-Id: Idd454b4f9ab2c98cda3ce0389add747a3273fb42
2022-05-14 16:05:45 +01:00
Solomon Peachy
7363d65f10 manual: Fix up some issues to try and get texlive2021 working ok.
Change-Id: I6fd5cfd7f27792cffbd061d96fdc8c852cc85050
2022-05-09 10:36:42 -04:00
Christian Soffke
f3358eb20a Properties plugin: Eliminate redundant Track Info code
When opening an audio file from the file
browser or database using the Properties
plugin, it will now use existing code from
the Show Track Info screen for displaying
metadata. The menu option has been
renamed accordingly.

Change-Id: I5a824865b9f980151b91aff3c3c18ec45830a12c
2022-05-09 09:44:23 -04:00
Aidan MacDonald
4b293285ea pictureflow: fix album index alignment in load_album_index
Change-Id: I7c3c86ffdab62859ce88faeeb84160ea52a4626a
2022-05-07 16:28:27 +01:00
Aidan MacDonald
f661dc596e pictureflow: fix bug in calculation of album art buf size
I intended to check for enough space in buffer but this isn't
really doing it and it is making aa_bufsz slightly too big so
it's a possible buffer overflow.

Restore the old ALIGN_DOWN(..., 4) rounding in case it's important,
if not, then no harm done.

Change-Id: I904f255ac79a77d5328b44667502ceae8308e659
2022-05-07 15:52:26 +01:00
William Wilgus
2c4480979f tdspeed.c remove buffer name strings
get rid of the magic buffer size and the whole name buffer
naming the buffers individually doesn't serve any real purpose
instead add a static string for all td buffers

Change-Id: I962a966456453e1b84bab6fec6f4df7cb075ef4e
2022-05-05 00:31:07 -04:00
William Wilgus
09ef94ed8b add const to const * strings iriver Fix Red
the iriver devices overwrite the pointer

Change-Id: I20ae6db2aec0f957824b61db349c7c45a95e58d9
2022-05-03 23:58:00 -04:00
William Wilgus
79864c6ec2 add const to const * strings
I don't think this will amke any difference except maybe for hosted ports

Change-Id: I84f898aea92a6963901a6d889dd18b63f24c9a41
2022-05-03 23:00:58 -04:00
Aidan MacDonald
4dd3c2b33e codecs: m4a: improve seek accuracy
Seeking doesn't work well in M4A files with very few chunks due to
the seek method used (chunk based using the info in the 'stco' atom).
According to libm4a/demux.c the expected seek resolution using this
method is 1/4 to 1/2 seconds. However, ffmpeg generates files with a
1 megabyte chunk size, so the resolution is much worse than expected
on some files: around 30-40 seconds at 256kbps.

There was a bug with the seek position reported back to Rockbox: the
codec pretended it could seek exactly to the requested sample, but it
would only seek to the start of a chunk. This could leave the UI in a
confusing state because the real playback position was different from
what the elapsed time showed. Fix this by recalculating the reported
sample position using the chunk start.

To fix the low seek accuracy, use the table in the 'stsz' atom to skip
individual packets within a chunk. This is very accurate, but it takes
a lot of RAM to allocate the table. Currently the table is not allowed
to use more than half of the codec RAM, which should suffice for short
files on most targets. On files where the table is too large the codec
will fall back to the less accurate chunk-based seek method.

Change-Id: Ide38ea846c1cdd69691e9b1e1cd87eb0fa11cf78
2022-05-02 12:16:21 -04:00
Aidan MacDonald
b79eefc858 apps: fix tagtree arithmetic on null pointers
It was possible for the tag tree's buflib move callback to turn a
null pointer non-null. The tagcache_search_clause->str can be null
for OR clauses. Also ensure that clauses are zeroed on allocation
to ensure garbage pointers don't creep in.

Change-Id: Ic823a8eecc501eeaa75798066521e427a9a89190
2022-05-02 16:48:19 +01:00
Aidan MacDonald
6e37b31851 apps: fix use of negative fd in open_plugin.c
Bug reported by UBSan.

Change-Id: I3223a496dfa5df4e3df97fb88a14ea0174d4b428
2022-05-02 16:42:32 +01:00
Aidan MacDonald
dadfbfc6a5 apps: fix close of negative fd in talk.c
Bug reported by UBSan.

Change-Id: I02276521510acac8696499895fec15993c55aaf6
2022-05-02 16:34:18 +01:00
Aidan MacDonald
e5e457b526 apps: fix int/long mismatch in playlist.c
A couple of places use sizeof(int) for allocations and copying but
the indices are longs, which causes bugs in the simulator on 64-bit.

Change-Id: Ie101ac57d44217c4b1657cf0152c97e276bd7043
2022-05-02 16:10:15 +01:00
Aidan MacDonald
6b8c94a6e3 Fix some non-portable alignment values
UBSan reports an avalanche of unaligned pointer bugs stemming from
hardcoded 4-byte alignments used in certain places. Use sizeof(long)
instead to align to the machine word size.

Change-Id: I28e505212462c5268afa24e95df3a103ac3e2213
2022-05-02 15:38:48 +01:00