Commit graph

972 commits

Author SHA1 Message Date
Solomon Peachy
31fac4c400 configure: drop the 'bootloader only' from the ipodnano3g
This allows the themesite to validate this target

Change-Id: I77407098ec0c92c845e5e14f4d6bfcd3fb230ebb
2026-10-06 22:50:10 -04:00
Marcin Bukat
6350d3f7a0 YP-CP3: build plugins
The YP-CP3 shares the YP-R0's keypad and so its plugin keymaps; with
the 400x240 screen handled every plugin builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Change-Id: I516ab057c081e710cbc1cf6eca2b24ee87231244
2026-10-02 10:30:58 +02:00
Solomon Peachy
67ba9c3121 imx233: re-enable utf8proc and associated functionality.
Will require updated bootloaders!

Change-Id: Id9a3da0b05fe27f7a3d27443a2f15742455d86c2
2026-09-29 22:39:49 -04:00
Solomon Peachy
0b2caf7338 configure: Clean up 'appextra' definitions.
The contents of appextra are added to the INCLUDES list, eg:

   appextra="recorder:hosted"

will result in this at compile time:

   INCLUDES += -I$(APPDIR)/recorder -I$(APPDIR)/hosted

With that in mind,

 * 'gui' and 'recorder' have been set for all targets other than
   the original charcell Archos. Globally set these instead of
   using them everywhere.
 * 'hosted' was effectively a no-op and removed entirely.
 * 'radio' was specified on a lot of targets that didn't have a radio,
   just make it global as well.

The net result is that only the android targets now define 'appextra' in
their configure entry.  A future patch will remove the need to specify
the ones that are now global.

Change-Id: I751284cde4785077c54405a8a10be819021e4255
2026-09-29 09:12:59 -04:00
Marcin Bukat
c922ef98c3 YP-CP3: Si4703 FM radio
The YP-CP3's tuner is a Silicon Labs Si470x at I2C address 0x20, an
Si4703 by the RDS the original firmware enables. The firmware drives it
the Si470x way - writes from register 2, reads from 0x0A - starts its
oscillator with TEST1 = 0x8100 and a 500 ms wait before ENABLE, and has
no power or reset line for it.

- config: CONFIG_TUNER SI4700 with RDS, polled (no interrupt line
  needed), and FM radio as an input source
- si4700.c: the YP-CP3 starts the oscillator as the Sansas do
- power-ypcp3.c: tuner power stubs - there is nothing to switch
- the rk27xx tuner I2C glue, and "radio" in the target's configure entry
- wm8751.c: audiohw_set_monitor() for a WM8750 target that plays the
  radio but cannot record (rk27xx has no recording yet). The tuner, on
  LINPUT1/RINPUT1, goes through the input PGA at +12 dB - as in the
  original firmware - into the output mixers, the DAC staying in the mix.
  The existing monitor routing lives in the recording code and switches
  OUT2 off, which is the YP-CP3's headphone output.

Tested on a YP-CP3: stations tune and play at a sane level.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Change-Id: Ic097fc85dbd7fb71fcc28c97a9d378fa09599e79
2026-09-29 09:47:51 +02:00
Marcin Bukat
98f162b212 New target: Samsung YP-CP3 (rk27xx)
Scaffolding for a port, starting from the rk27xx generic target: configure
entry 146 (target id 117, model number 132), config/samsungypcp3.h, and
firmware/target/arm/rk27xx/ypcp3/.

- LCD: the rk27xx LCD interface (lcdif-rk27xx.c) with this panel's init
  sequence, from RE. See g#1050. Looks like SPFD5420A 18-bit bus,
  400x240 landscape. It differs from the generic panel's sequence in the
  gamma curve and in not writing VCOM_HV1.

- Backlight: PD4 / PWM0 with the generic board's timing, which the hwstub
  work found to be the same.

- Storage: the microSD slot. Card detect is PC7, active low,
  as on the generic board.

- Keys: the YP-R0's key set - five-way yog, Back, Menu, Rec/User, Power -
  so the target uses SAMSUNG_YPR0_PAD and its keymaps. Eight keys sit on
  two resistor ladders on the LSADC, found in the original firmware and
  measured on a unit:
      channel 1   up 158, down 295, select 435, left 561, right 687
      channel 2   menu 155, back 292, user 431
  each key owning half a step either side of its reading;
  power is GPIO C1, active high.

Builds as firmware and as bootloader. Status 3 (unusable) in builds.pm.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Change-Id: Iff4984023415f341ca7507af6b5b2b551201e953
2026-09-29 08:53:27 +02:00
Solomon Peachy
af9b65485b build: move '-mthumb-interwork' into the configure script
When we request a thumb build on a non-thumb-only target, we hand
compilation to a script that tries to build everything as thumb, falling
back to non-thumb arm mode if the thumb build fails.  In order for
this to work, the compiler flag -mthumb-interwork is required.

Move this definition out of the thumb-cc script, and into the configure
script (ie along with the other target-specific definitions)

Change-Id: Idc1f8caa088dbbf710b169b272de61cc0b7c9ca6
2026-09-19 21:18:30 -04:00
Michael McAllister
f349e85154 ingenic: move the drivers the X1000 shares with other SoCs
Pure file move, in preparation for a second Ingenic SoC.

  dma, gpio, i2c, installer, kernel, nand and the SPL NAND backend
  move from target/mips/ingenic_x1000/ to target/mips/ingenic/

Drivers that cannot move as whole files, because part of each is
genuinely X1000-specific, are left alone for now: msc, uart, sfc, the
debug menu and the OST helpers in system-x1000.c.

Verified as a no-op: built at target 246 --type=b before and after from
the same source path, bootloader.bin is byte-identical, and every moved
file's object has the same instruction stream under its new name.
Builds clean with no warnings for targets 246, 260 and 247, both
--type=n and --type=b.

Change-Id: I9f67c23384df49b8c4554d695b772bcd54a4e32f
Co-Authored-By: Claude Opus 5
2026-09-01 11:37:21 -04:00
Mauricio Garrido
e498c0171a 3ds: Port refactor.
This commit does the following changes to the 3ds port:

- Rename the target from ctru to 3ds.
- Rename all files and functions with the ctru naming convention to 3ds.
- Created a new file and folder structure that will better integrate future console ports that share the same codebase.
- Fixed a buffer overflow bug in pcm code.

Change-Id: I17c6f86df64eb99dd2b653485d70832ff46b2ba8
2026-09-01 08:39:07 -04:00
Christian Soffke
28e5a125ab configure: macos: fix checkwps error messages
Change-Id: Ic42c20bf011861413245b671a79de6df1b6f43fb
2026-08-28 16:51:55 -04:00
Jerry Shen
51d7d56803 ap80max: New hosted port
HibyOS-based target: keymaps, LED, powermgmt, bootloader and sim support,
plus cabbiev2 for the new 360x640x16 screen. Opus 5 helped w/ debugging
and the initial scaffolding.

Updated name to FB_STRIDE_MISMATCH, added simulator bmp and specs.

Change-Id: If797ac6581cf75d9d1fcf36e615ee03cf6f905d6
2026-08-13 17:55:06 -07:00
Skye
85c1ff8667 change build scripts to make reproducible builds possible
- makes SOURCE_DATE_EPOCH affect BUILDDATE and version string
- makes wpsbuild.pl output deterministic
- omits unnecessary extended metadata from zip files
- runs strip-nondeterminism on zip files if REPRODUCIBLE_ZIP is set

Change-Id: I1617e3f5233b2bc356fcfa6457be1a7785c303f9
2026-08-09 10:29:48 -04:00
Aidan MacDonald
7e6ae1e0d8 echoplayer: enable plugins
First pass at enabling plugins and setting up keymaps.

Change-Id: I3140160bcc3044850416904840b35065f86ac32d
2026-07-12 08:56:44 -04:00
Solomon Peachy
b6db69e7ef build: Move utf8proc build decision into configure script.
It is always enabled, except in the following situations:

 * bootloaders
 * warble or checkwps applications
 * devices with less than 4MB of RAM
 * imx233-based devices

imx233 is a special case; that will be backed out we figure out why
it fails to boot if the binary size exceeds 1MB.

Change-Id: If4a89e389f562bb5791a565fba99c830213473d3
2026-06-22 17:31:15 -04:00
Christian Soffke
cd699e5448 configure: darwin: update GCC, use SDL threads
The simulator on macOS has been broken since macOS 26.4
was introduced. On macOS 26.4, 26.5, and the 27 beta,
thread setup fails in make_context (firmware/asm/thread-
unix.c), because sigaltstack returns an "Operation not
permitted" error. Fall back to SDL threads until this
can be fixed.

Also update GCC to keep it in sync with the latest
Homebrew formula
(https://formulae.brew.sh/formula/gcc).

Change-Id: Ib08ac81ede00c577f28a85c7886f716e7504bbe9
2026-06-19 21:40:11 +02:00
Solomon Peachy
d54b9e6f8d chore: Get rid of *all* vestigal CVS '$Id:$' tags
Change-Id: I35c13a9768c582e4851aa252dd3ea5c89f760c8c
2026-06-01 16:01:18 -04:00
mojyack
44e8d8226a configure: switch from -std=gnu99 to -std=gnu11
which is required for u"" unicode string literals used in the USB stack.
gcc allows this even in gnu99, but clang does not.

Change-Id: I1700fe503f20f31ba4704f8bef1ccca45f822620
2026-05-25 08:47:51 -04:00
Solomon Peachy
89dd08a3b4 configure: Explicitly disallow erosqnative_v3/v4 for "normal" builds
They are only intended for bootloaders.

Change-Id: I4da3e7acd55b803e016bc9c42526860dfdc6fa9a
2026-05-02 07:47:36 -04:00
Aidan MacDonald
d815053360 Add support for -fstack-protector in native builds
-fstack-protector only needs a small amount of runtime
support to work on native builds. It increases code size
by ~1.5% on ARM/MIPS; -fstack-protector-strong adds 3-4%.
This is disabled by default and must be enabled by passing
'--with-stack-protector' to configure.

Change-Id: If952e711d3673c9b469895f08c7bff70b3d95df6
2026-04-21 21:16:28 -04:00
Vencislav Atanasov
72969fee7e 3ds: Makefile improvements
- Allow overriding of the smdhtool and 3dsxtool programs
- Introduce dependencies in ctru.make for 3dsx and cia packages
- Build these packages when the binary is built
- Copy instead of moving the cia package when building a zip
- Properly clean all build artifacts when make clean is used

Change-Id: I2069bcc44d6ab6031ef61ed9980f92ff9a913bc9
2026-03-13 17:52:32 +02:00
Vencislav Atanasov
a77c5d2219 3ds: Various fixes, mostly for compiler warnings
- Move all devkitpro includes before the Rockbox ones so that the macros which are both conflicting and unused can be undef'd
- Remove unused result variables
- Exclude an unused function from being compiled for this target
- Fix hex number formatting
- Fix the return value of dummy functions
- Fix macro redefinition in the plugins keypad config
- Remove duplicate button mapping
- Turn off -Wchar-subscripts as it's already handled in Rockbox's ctype.h

Change-Id: I3f5a3d492c585f233277a380feaea5fe877a044f
2026-03-13 10:24:36 -04:00
Aidan MacDonald
d6d4ff7af2 make: fix '--plugins=' option not being respected in all cases
If the list of plugins given to configure did not include
a subdir-based plugin, then all subdir-based plugins would
be built (since SELECTED_PLUGINS_SUBDIRS is empty then).

To prevent this issue use an explicit value ('DEFAULT') to
signal that we want to build the standard set of plugins.

Change-Id: I42d9dc8d754ed9ac1cd4b5c62c0a106ca3dfcd91
2026-03-07 21:57:34 +00:00
Aidan MacDonald
5a236963e4 misc: get rid of unused LOADADDRESS define in makefiles
Change-Id: I990aaca9b0b8230efba09c87ace2430fbfa29b74
2026-03-05 20:11:07 +00:00
Roman Artiukhin
aea9e1b63f configure: add ability to select plugins to build in --plugins flag
Use ":" as the separator. Useful for plugin development and debugging.

Example:
../tools/configure --target=hibyr1 --type=ADS --plugins="properties.c:imageviewer"

This creates a debug simulator build for Hiby R1 with the properties.c file and the imageviewer directory plugins enabled.

Change-Id: If974cfb0c54bd2c1a53ae11cc3f942c698ef2fe4
2026-02-16 13:42:58 +02:00
Solomon Peachy
b722e3c83a mrobe500: define HAVE_BOOTLOADER_USB_MODE
Fixes red, and will restore USB functionality that was effectively
broken from earlier commits.

Change-Id: I98150a81e3f73131bfedccdaf3de740a091debf9
2026-02-07 09:32:16 -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
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
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
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
8aec8ee686 configure: Filter out "-Wl,-z,noexecstack" for winsim builds
Change-Id: I0222627729fbd475dfa7f4955b534f76ca780ccf
2026-01-02 07:51:44 -05:00
Mauricio Garrido
09a31fff91 3ds: Enable plugins for the 3ds platform.
This commit enables plugins for the 3ds platform.
And adds 3ds specific pad configurations for each plugin.

Change-Id: Ie28fef4da32ed4cd2caa6c9fa3b2fe312ee009ef
2025-12-31 21:13:34 -05:00
Aidan MacDonald
fcf67a2ea9 echoplayer: enable reggen
Change-Id: Iab8ffd231f226d2772201ad92f3920065b7b0736
2025-12-30 13:53:48 -05:00
Marc Aarts
1183b1ab1b Rockbox for the HiBy R3 Pro II/R1
Original author Melissa Autumn (https://codeberg.org/oopsallnaps/rockbox-hibyos) with contributions from Marc Aarts.

Adaptation to Rockbox standards by Marc Aarts

Change-Id: I09e5af7ba0a75c648e4b9fd424badc2d3665c943
2025-12-27 15:44:54 -05:00
Aidan MacDonald
d24a127f63 echoplayer: enable USE_ELF to generate ELF binaries
Make the final .echo binary an ELF file. Most STM32s have
their SRAM divided in multiple non-contiguous regions and
putting an ELF loader in the bootloader is basically the
only reasonable way to load Rockbox on such a system.

Change-Id: I818ef9fefe0d53b44cf64402ee1794ad261343eb
2025-12-23 17:57:59 +00:00
Aidan MacDonald
2e85027ae7 configure: set USE_ELF to no by default
Otherwise, toggling USE_ELF in the target's configure section
and running 'make reconf' has no effect, because the previous
value of USE_ELF is inherited from the makefile.

Change-Id: I72d605ef6987fc590871566d73b24acf37e8fbe6
2025-12-23 17:57:59 +00:00
Aidan MacDonald
6078b2a6b4 echoplayer: enable debug symbols by default
This adds debug symbols to rockbox.elf & bootloader.elf to
make debugging with GDB easier. This won't affect code that
runs on the target because debug symbols are stripped from
the final binary.

Change-Id: I9efe207c63e8bd96404213aad96405be27030ae9
2025-12-23 17:57:59 +00:00
Solomon Peachy
ecb3e9936f build: Explicitly disable all arch-specific optimizations for sdlapp or sim
Change-Id: I76d1097cea58018cb1e96dbbce8d5feaeacd8a96
2025-12-07 13:22:28 -05:00
Christian Soffke
95ab3e8b0e configure: Fix compatibility with BSD sed used in MacOS
Change-Id: I72f26eed4cbb3996d0a92c4334fa2c63b973bc9b
2025-12-07 13:22:17 -05:00
Solomon Peachy
dada036b10 configure: Partial revert of 6c6bdbf60e
Turns out I compile-tested stale trees instead of the broken change

Net result is just the simpler MIPS revision (32/64/"classic") lookup rather than
the sub-revision (eg mips32r2 etc).

Change-Id: Ideebe522d29132f00f3769222f3846000b3a89fd
2025-12-06 15:54:43 -05:00
Solomon Peachy
6c6bdbf60e configure: Revamp MIPS architecture version+revision detection
This allows us to easily distinguish between mips32 and mips32r2

(Works at least as far back as gcc 4.9)

Change-Id: I2bcba194fd9cbeedf76cea739252271908bf73d0
2025-12-06 14:58:40 -05:00
Solomon Peachy
5e5b434ce8 configure: Simplify the arm architecture version lookup
Going back to at least gcc 4.9, we can key off of __ARM_ARCH
which is all we care about here.

Change-Id: Ic2659db5ff55ccefe2c3f71957b967f36025f7e3
2025-12-06 14:43:03 -05:00
Solomon Peachy
1203b8657e configure: -masm-syntax-unified does not apply to aarch64
Change-Id: Ida12a60b629ccdea3980bcabc79812e3b97181e8
2025-12-06 14:24:32 -05:00
Solomon Peachy
afe128f4cc arm: Profile/variation detection improvements
* Detection of 64-bit Arm v8-a
 * Proper detection of integer division support
   * always on v7-m, v8-a, v9-a, v8-m.main
   * sometimes on v7-a, v7-r, v8-r
   * never on v8-m.base v6-m, v6 and older "classic"
   * tl;dr: Rely on toolchain preprocessor definition

For the most part these additional variations won't acutally work
for native target builds, but sane -A detection is needed for
"local" builds now. -R detection is left out as it's not likely
to matter.

Change-Id: I8f6a52edc4d14490fc00e2f487406eca701eef02
2025-12-04 20:43:30 -05:00
Solomon Peachy
fa164f89e0 tools: Detect A-profile ARM cores for hosted and sim builds
The only v7-a targets we have are built using the androidndk (with gcc
4.9) but it is possible to perform "self-hosted" builds for eg the
simulator or the sdlapp.

Where this gets messy is the considerable amount of inline arm
asm we have.

Native builds will need considerably more work to support
v7-a processors, but we have to start somewhere.

(Note that this contains parts of commit 508bfabe8, which had to
 be reverted due to breakage)

Change-Id: Ia1c8e10d21a976c68fdaae58e4d776854b63186c
2025-12-03 22:49:25 -05:00
Solomon Peachy
bbcf210c94 Nuke maemo (nokian800/nokian900) and [open]pandora targets
They haven't seen any work since 2013, and likely hasn't compiled in at
least a couple of releases -- not that we ever "released" anything for
these targets.

Futhermore, upstream for both has been effectively dead for about as
long, and there's been no user reports of these being used since 2017
(and even then only in passing).

It isn't worth the effort to triage their current state, much less
uplift into something supportable, while the maintenance burden of
keeping these things in-tree can be demonstrated by the diffstat.

Change-Id: Id93bd450679d1b75e2c74295b3ae1548cd241b24
2025-12-03 20:42:02 -05:00
Solomon Peachy
9290a484e4 Revert "Disable Thumb code generation in codecs for ARM profile 65"
This reverts commit 508bfabe83.

Reason for revert: Completely breaks builds made using Android toolchains.  A different approach is necessary.

Change-Id: Ie8767f1f304c1313e8a539179bc33d1cc7032a3c
2025-12-03 20:31:30 -05:00
Vencislav Atanasov
508bfabe83 Disable Thumb code generation in codecs for ARM profile 65
It seems that there are a couple of codecs that use assembly optimizations. Some of their instruction sequences are not valid Thumb code. To be able to compile them successfully on TI OMAP4430, ARM mode is forced on the codecs.

Change-Id: I932186177b540985e37cb3a5333943572da1c60a
2025-12-04 00:03:40 +02:00