Commit graph

39058 commits

Author SHA1 Message Date
Solomon Peachy
80aaaaa2af bootloaders: Don't build usb_core without HAVE_BOOTLOADER_USB_MODE
This way we don't need to stub out a bunch of functionality when we
don't have any actual USB class drivers enabled.

Change-Id: Ia0ecf5be4bb41bebfcd347090959f3204a2aba59
2026-02-07 08:46:10 -05:00
Aidan MacDonald
58b186d6de Remove Creative Zen Vision and Vision:M ports
They haven't seen development activity for the better part
of two decades and apparently were never able to even boot
to Rockbox, although the Rockbox bootloader could load the
original firmware.

Change-Id: I5cfa5909c21feaf2825aa685a05e78044b893a13
2026-02-06 07:31:54 -05:00
Aidan MacDonald
5a21f049dc echoplayer: add exit WPS button to keymap
Change-Id: I3a7ef3ee0fb7494645338d3951fc9bc0c793503c
2026-02-06 07:09:41 -05:00
Aidan MacDonald
19af7131e2 echoplayer: allow enabling system debug in normal builds
Allow toggling the system debug state from the debug menu
in Rockbox, or by holding a button combo at boot, so that
an SWD/JTAG debugger can be attached to normal non-debug
builds without too much hassle.

Change-Id: Iee47ef916ade2e5ec1094a63c68e48f1b27b0bbb
2026-02-06 07:09:32 -05:00
Aidan MacDonald
02648abb8a echoplayer: disable 50 MHz SDMMC bus clock
While 50 MHz works for low activity and small amounts of
data, there are frequent CRC errors when handling larger
transfers. Increasing drive strength only makes it worse.
Everything seems stable at 25 MHz though.

Change-Id: I3471c490ab63b2302b21ee2fe601519ee5a40ce5
2026-02-06 07:08:28 -05:00
Aidan MacDonald
45a61d7e7b echoplayer: enable multiblock transfers for SDMMC
Change-Id: I152a6d58b008041d646ddcfec4273a47c4060932
2026-02-06 10:58:42 +00:00
Aidan MacDonald
6da20a18c3 sdmmc_host: support multiblock transfers
Change-Id: I6414028bbafd4ea4ef469f9a387f4bd52ec227e5
2026-02-06 10:58:42 +00:00
Solomon Peachy
acc9c21a78 FS#13773 - Update Latvian Translation (Renalds Belaks)
Change-Id: I8bc5a9f9ca5ed652d3751e7a54034f3aa19f1df1
2026-02-05 19:42:34 -05:00
Aidan MacDonald
a6c290e8e5 jz47xx: fix plugins/codec link address
Removing STUBOFFSET in commit 78542df466 caused DRAMSIZE
to be computed incorrectly, not taking into account the
16k offset used for 'IRAM'. As a result plugins & codecs
got shifted 16k upwards from their intended load address,
making them unable to load.

Change-Id: I6c338e04506e12fa2b8a69286a1ed785a2f8042d
2026-02-05 20:33:51 +00:00
Aidan MacDonald
92b0bf7a27 Clean up .ncdata/ncbss hackery in plugin linker script
The mess here can be reduced by paying careful attention to
how the linker allocates LMAs/VMAs within MEMORY regions.

Changing the way .ncdata and .ncbss are defined so that they
reserve the LMA/VMA ranges they use in PLUGIN_RAM removes the
need to explicitly set the VMAs of other sections, cutting
down on the number of ifdefs needed and making the script a
bit simpler.

Change-Id: I316fc6e8dedd621537261d52c1ec7c20ec09438a
2026-02-05 09:38:51 -05:00
Aidan MacDonald
bce2c4e069 Convert users of SHAREDDATA_ATTR to SHAREDBSS_ATTR
The handful of uses are only doing zero initialization
so don't need to go in the data section, they can go in
bss instead.

Change-Id: I7108ac60867aa20b4429ac0747d00109563bb3bf
2026-02-05 07:57:07 -05:00
Aidan MacDonald
7b91b81e49 stm32h7: define correct DRAM origin for plugins
Change-Id: I7fab9da0e99f328ce602607057f52620812476a8
2026-02-05 10:08:45 +00:00
Solomon Peachy
1a2235fb18 manual: Document HifiWalker H2 v2.3 as an erosqnative hw4 variant
Change-Id: I685a5c71b074f1942e1d345a2fe7d73f97ccfe76
2026-02-04 23:29:25 -05:00
Aidan MacDonald
653bca7ff4 make: allow building flat binary plugins on USE_ELF targets (attempt 2)
Looks like I forgot to test the hosted builds and for some
reason thought that make would expand objcopy recursively...

Change-Id: I61264eadcb1235660566f6a9f19f8718ebe14583
2026-02-04 16:45:25 +00:00
Aidan MacDonald
ebd273832d Remove Mini2440 and Lyre prototype 1 ports
Both targets were part of the (presumably dead) Lyre project
and no longer build. The Mini2440 was much more complete than
the Lyre and doesn't seem terribly difficult to fix up to the
point where it at least builds, if someone still cares -- but
given it is a dev board in a box, it's unlikely it ever saw
much use.

Change-Id: I09745379d28db69ea9aaf77f0a62b049884260e1
2026-02-04 08:56:04 -05:00
Solomon Peachy
1e2950cc6c Revert "make: allow building flat binary plugins on USE_ELF targets"
This reverts commit 91ec6f1e1e.

Reason for revert: Massive sea of red, looks like hosted + sim builds.

Change-Id: I98a3954d68ad2cc521e13c3683bf4a6f45f88b36
2026-02-04 08:49:19 -05:00
Aidan MacDonald
bbe72761a4 ipodnano3g/4g: fix compile issues for normal build
Some purely mechanical fixes to get the normal build
working. Besides missing symbols all the plugins and
codecs build just fine.

Change-Id: I946ba39096a46be8308450bafd51a0995db8e323
2026-02-04 07:51:40 -05:00
Aidan MacDonald
91ec6f1e1e make: allow building flat binary plugins on USE_ELF targets
From what I can see the Creative Zen Vision ports, which
were the only ones to set USE_ELF prior to the Echo R1 port,
do not work except for a bootloader and never even got to
the point of booting Rockbox. This explains why they build
codecs and plugins as ELF binaries, yet there is no code to
load ELF format codecs or plugins.

Anyhow, add a new setting, PLUGIN_USE_ELF, which controls
whether plugins & codecs are left as ELF or converted to
flat binaries. This makes it possible for the Echo R1 to
use the flat binary .rock format, and makes it possible to
have ELF plugins/codecs on targets with non-ELF main binaries.

Seeing as nothing needs ELF plugins/codecs right now, the
new default is to generate them as flat binaries unless
the target requests otherwise.

Change-Id: I9ffae669978de5cc7ad214cd50d97ad6e8938394
2026-02-04 07:32:43 -05:00
Roman Artiukhin
0484b46165 hiby: debug_menu: Add RAM info for hosted targets
Change-Id: I627cdd71fc7c923b2e917c395d6c2d1111147b17
2026-02-04 07:24:37 -05:00
Aidan MacDonald
53862c7eed Remove Sansa View port
It doesn't seem to have been functional ever and currently
doesn't build; eg. the last commit to the LCD driver added
a syntax error, and there's some duplicate functions between
mmu-armv6.S and system-pp502x.c. Doesn't seem worth the
effort to fix.

Change-Id: I82b5bec3ed9686f28aedbe283818af792b96daf4
2026-02-03 22:04:41 +00:00
Aidan MacDonald
1a33d7990a Remove Meizu M3/M6SL/M6SP and Samsung YP-S3 ports
These targets haven't seen any changes since 2008-09
have bitrotted to the point they don't compile anymore.
With only internal NAND flash for storage which doesn't
seem to have ever been accessible from Rockbox, they've
never been usable and there's probably not much point
keeping them around any more.

Change-Id: I2fc63da20682b439126672065ae013044cb2d1c4
2026-02-03 16:32:56 +00:00
Solomon Peachy
19fe7a4915 rbutil: Fix typo in changelog
Change-Id: I8f495f37ea4abb6509e0dcdb26ba38ad94096970
2026-02-03 07:12:14 -05:00
Solomon Peachy
8baeeda23f x1000: Bootloader now probes for the ONFI flash header at multiple addesses
The location (and number of pages) is apparently manufacturer-dependent.
here are some known so far:

Winbond:    page 1
gigadevice: page 4

This info is only queried/dumped when explicitly requested for debug
purposes.

Change-Id: Icc4f9c0d4f2cc9097b2295c8f42a22aab392d0d5
2026-02-03 07:01:10 -05:00
Aidan MacDonald
78542df466 Nuke GDB stub
It looks like the GDB stub only ever worked for the Archos
Recorder and iRiver IFP-7xx, neither of which are in-tree
any more.

Change-Id: If1910675b88b4707d26df9bc095818902af2d25b
2026-02-03 10:55:53 +00:00
Aidan MacDonald
2429e117d0 Replace all uses of PLUGIN_USE_IRAM with USE_IRAM
PLUGIN_USE_IRAM is almost equivalent to USE_IRAM except
that USE_IRAM might be defined in core, but not plugins.
All remaining uses of PLUGIN_USE_IRAM are inside plugins,
however, so there is no point keeping both defines around.

Change-Id: I6902c85651f3d82b7d19ea32eaa60fc5c19eded7
2026-02-02 17:11:04 -05:00
Aidan MacDonald
34525a18dc plugins: drop audio_hard_stop() from plugin API
Commit 01f96e40a7 ("mpegplayer: remove IRAM save/restore hack")
removed the only user.

Change-Id: Ia6281159387ab984906443f047b849614d92ef9e
2026-02-02 16:27:25 -05:00
Aidan MacDonald
828fd7941f x1000: ensure sections are 4-byte aligned
The section copy loops in crt0.S rely on sections starting
and ending on 4-byte aligned addresses. If the last variable
alloacted in the BSS section isn't a multiple of 4 bytes,
then _bssend can get misaligned and break the copy loop.

This problem was masked by -fcommon since COMMON variables
go at the end of the BSS section, and they were for the most
part a multiple of 4 bytes. The switch to -fno-common broke
the bootloader because with COMMON gone, the last thing in
BSS was a 1-byte variable in led.o. The main binary appears
to have had the correct alignments by sheer luck.

Change-Id: I21ee3653d89d1607a2f458c457f1a51e33c22f05
2026-02-02 20:50:05 +00:00
Solomon Peachy
3a68848099 erosqnative: Rename bootloader entries for stock firmware / recovery
"Aigo Player" => "Hiby Player"
"Aigo Recovery" => "HibyOS Recovery"

All four (so far) brandings of the "erosq/k" family utilize the same
HibyOS+HibyPlayer platform.  This platform is additionally shared by
nearly all X1000-based devices.

...So let's call it what it is.

Change-Id: I986ed202ad0ca13b0650be87cf5b612c9648e571
2026-02-02 08:27:43 -05:00
Solomon Peachy
84e5d193fb x1000: Turn on QSPI mode for W25N01GV and XT26G01C flashes
With the QSPI TMODE fix, they are confirmed working

Change-Id: Ic47b13312299bab8a632ebf517015362a0cb6a49
2026-02-02 08:22:46 -05:00
Solomon Peachy
9f216921b8 x1000: Correct SFC TMODE bit definitions
We were using a definition of 0b100 for "Quad Input / Quad Output" mode
which is marked as "reserved" in the X1000 TRM.  The correct value is
0b101.

Somehow this "worked" for some devices but failed for others?

Credit for this discovery+fix goes to forum user ZappBranigan2972

Change-Id: Iedbd2d1b6da55113e266ad8aa51fc9c3130bf2b8
2026-02-02 08:22:46 -05:00
Solomon Peachy
78778d6e6f misc: Correct inifinite loop when volume has a fractional component
Introduced in 3f2ca2024

Purely a theretical problem but we should fix it regardless

Change-Id: Ifeb4e1aeb3291c723b2addf2f2d391775db57b03
2026-02-02 08:22:46 -05:00
Aidan MacDonald
3f2ca20245 misc: fix issues with perceptual volume calculations
The constant NVOL_FACTOR used in the calculations needs
to be scaled if the target doesn't represent volumes in
1/10th dB units (ie. most targets). Using a wrong factor
caused the results to be slightly "off", with wide steps
between points on the upper end of the volume curve.

Drop use_linear_dB_scale() because the magic constant
involved has a similar problem (and we don't use this
function anyway).

Also, make sure to account for the guaranteed min/max
points when generating the normalized volume table to
avoid sometimes generating one or two extra volume steps
very close to the min/max volumes.

Change-Id: I5c15809a7306f14bb1befe6d29a5e2b5b0974eaa
2026-02-01 17:33:08 +00:00
Aidan MacDonald
ad9471be3b echoplayer: add shadow framebuffer to avoid tearing
Using a simple memcpy to a separate framebuffer prevents
objectionable levels of flickering caused by scanning out
the main framebuffer while it's modified between updates.

With optimized memcpy, copying the whole framebuffer takes
about 260us at maximum CPU+bus frequency. Using DMA would
likely be a bit faster and more power-efficient, but that
can be left as a future optimization.

Change-Id: Ia6dc36d797cdb7a5f6663078c0ecce661267bedf
2026-02-01 10:18:20 -05:00
Aidan MacDonald
7adb9cd1b4 arm: add optimized ARMv7-M memcpy implementation
This assembly implementation is marginally faster than
the non-size-optimized C version for large copies, but
is around half the code size.

Unaligned loads/stores will be used on platforms that
support it: though slower than aligned accesses, this
is still faster than copying byte-by-byte and has the
advantage of simplicity and small code size.

Change-Id: Ieee73d7557318d510601583f190ef3aa018c9121
2026-02-01 10:02:55 -05:00
Aidan MacDonald
01f96e40a7 mpegplayer: remove IRAM save/restore hack
On targets where plugins can use IRAM, mpegplayer copies
its own IRAM region to main memory before enabling voiced
menus and then copies it back when exiting the menu.

I'm reasonably certain this is unnecessary because the
core IRAM area is completely separate from plugin IRAM
(which is the same memory as codec IRAM). If they _did_
conflict, then we'd expect to see massive problems with
voiced menus during normal playback since most codecs
make fairly heavy use of IRAM.

There are two other reasons to get rid of this hack:
(1) it's ugly, and (2) it will not work on targets with
"split" IRAM like on the STM32H743 where the fastest
code/data memories are separate.

Change-Id: Id8656539c7cafb724691494c54a07448fbcf8129
2026-02-01 09:55:04 -05:00
Solomon Peachy
3083277ee4 rbutil: Don't forget to bump the version for MacOS builds
(And a minor correction to the changelog)

Change-Id: Ic00e32444ee815b214755c8a17a511ce4310caca
2026-02-01 09:35:08 -05:00
Solomon Peachy
c458f4663c x1000: Do not use QSPI mode on the XT26G01C flash
Either QSPI is not wired up, or there is some other issue preventing
them from working correctly.

If this doesn't show any more issues then we should be able to produce a
new set of bootloader builds enabling support for the HifiWalker H2 v2.3
variant. We will eventually find out if other OEMs have chosen dfferent
flash parts for their specific ErosQ/K variations.

(Credit for these experiments goes to the forum users
 ZappBranigan2972 and gonzyfrigus)

Change-Id: I349f4bbac509010753ac2ad24ad42a234cccdea5
2026-02-01 07:45:29 -05:00
Roman Artiukhin
98b25f146b rockboxdev: glib: drop tests and docs from autreconf
Removes dependency on distuitls (ModuleNotFoundError: No module named 'distutils');
gtk-doc-tools still required;

Change-Id: I50f69411d146b5b9b9c496b3507bcef5bb1638bc
2026-01-31 15:48:23 +02:00
Roman Artiukhin
3bfce366ac hiby: r1_patcher: stop script execution on any error
Change-Id: Ic683b8ed155a5e9d2779d40a3b7673579056d9b1
2026-01-31 13:26:35 +02:00
Solomon Peachy
ee3e630efa rbutil: Upgrade bundled quazip from 0.9.1 to 1.1
Just reducing the delta a little bit.  Later versions are
more complicated.

Change-Id: If0452a529b840383333062ec2604ff257646627a
2026-01-30 20:42:21 -05:00
Solomon Peachy
e11a449031 rbutil: Pull the internal/external QUAZIP library stuff into the toplevel
Prevents a build failure when we have to build quazip as part of the build

Change-Id: I274cd4c358c50152bcfea2e33ad580fac0277e4a
2026-01-30 15:08:23 -05:00
Christian Soffke
11263d73af imageviewer: add back semicolon
accidentally removed in 3c6b9bb

file isn't normally used, so there was no error

Change-Id: I65cc59bfcb3c59678a990b9804070d518318b016
2026-01-30 14:12:57 +01:00
Christian Soffke
2556cfc7b3 usb: fix hang when disconnecting from USB
regression introduced in 33d0a3efa3

Change-Id: I0ded61d70a09b27820e65979381d2c38410d2923
2026-01-30 13:55:30 +01:00
Solomon Peachy
c23e1ba09a x1000: Drop XT26G01C flash clock speed to 104MHz as per datasheet
Change-Id: I17da992c608a6ad1340c500c34d42009eccf6fbb
2026-01-30 06:07:00 -05:00
Solomon Peachy
5563643b38 x1000: Bump NAND_DRV_MAXPAGESIZE to (2048+128)
X6G01C flash has 128B of ECC data per page, overruning our
buffer.

Change-Id: I8caa8bec6291f1b3391af9c7da1ee22805ff01e2
2026-01-30 06:07:00 -05:00
Solomon Peachy
c826554067 manual: Minor correction to the list of ErosQ/K hardare revisions
Change-Id: I4691d11b5c26a1b0e09e62ccb62e0661a09851b9
2026-01-30 06:06:59 -05:00
Aidan MacDonald
b8b55128b1 firmware: make config.h IRAM usage defines more readable
Split up the single massive '#if' condition into several
smaller blocks to make it easier to understand what is
happening. Compiled binaries should remain unchanged.

Change-Id: I65359cb55c60d71d5a424cafda83c83bddb20974
2026-01-29 18:38:16 -05:00
Solomon Peachy
1f30d9efe3 FS#13769 - Updated Italian translation (Alessio Lenzi)
Change-Id: Ieeefb31f70f1924c8de25ea640ad75e17cac40f5
2026-01-29 17:16:51 -05:00
Solomon Peachy
2a4cb29b27 synopsis-dwmac: Make ep0_buffer (and friends) static.
Looks like an oversight

Change-Id: Ia730fd1f9e19ca31add581400372dfacead7b452
2026-01-28 15:55:45 -05:00
Solomon Peachy
62200ff4d7 FS#13768: Updated Serbian Translation (Ivan Pesic)
Change-Id: Iae502c6757823ae00ec22a65d83c3e151d0c4c55
2026-01-27 19:48:37 -05:00