1
0
Fork 0
forked from len0rd/rockbox
Commit graph

5231 commits

Author SHA1 Message Date
Solomon Peachy
5b1158e64a misc: Properly annotate some intentional case fallthroughs
Change-Id: Ie758f17fefac72aca1aa28a8ba1126b9334fe134
2025-04-22 20:54:37 -04:00
Aidan MacDonald
83950bf233 New WIP port: Echo R1
The Echo R1 is a new open-hardware music player design, based
on the STM32H743 microcontroller. Schematics and hardware
documentation for it can be found here:

- https://github.com/amachronic/echoplayer

This is an incomplete port. The bootloader can be loaded using
OpenOCD and it can draw to the LCD using SPI. SDRAM is working
but hasn't been extensively tested.

Change-Id: Ifd2bee15c49868fbc989683d3ca14dce48bf3e18
2025-04-22 20:08:08 -04:00
Aidan MacDonald
bf689e9b5d stm32h743: add intitial register definitions
Change-Id: I0c9f94103eedb333b2167a8ef49568c8e50c2218
2025-04-21 14:15:31 -04:00
Aidan MacDonald
d68efd3363 arm: add NVIC utility functions
Change-Id: I85567251fb00dec0f38be2a63261ad5509f4ec4f
2025-04-21 13:07:38 -04:00
Aidan MacDonald
d14ddcafd5 arm: implement cache maintenance ops for ARMv7-M
To keep the code size small, this hardcodes the D-Cache line
size and set/way information (which is defined by the target
and should be fixed for a given CPU) and assumes there is only
one level of cache.

Change-Id: Ia6d0e6a87b5dbfc6c39bda83b58461ed8767edf6
2025-04-21 13:07:38 -04:00
Aidan MacDonald
4d3190f416 arm: split ARM cache maintenance functions to separate header
Cortex-M processors don't have an MMU, but can still have caches
that need software management, so on those platforms we don't want
to include the MMU related functions.

While here, remove an outdated section of a comment referring to
deprecated cache maintenance functions which no longer exist.

Change-Id: I6f0fe694560bdee25ed7c69a846bf46e3e544cb1
2025-04-21 12:39:47 -04:00
Aidan MacDonald
bfa76dca9a arm: add ARM Cortex-M register definitions
Change-Id: Ifb90606d2b6c94c4f91798a41415c895e2888520
2025-04-20 20:19:10 -04:00
Aidan MacDonald
6ea328f0f1 arm: add div0 handler for 64-bit division on ARMv7-M
Even though ARMv7-M has a hardware divider, 64-bit division is
handled in software and needs a div0 handler. The libgcc routines
call __aeabi_{i,l}div0 so we alias those to __div0.

Change-Id: I5152c43d39e25e03f31404753f13978a614aca06
2025-04-19 09:43:40 -04:00
Vencislav Atanasov
545506c923 New port: iPod Nano 4G
Currently, only the development bootloader can be built successfully.

This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.

Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: I74ea0da999ddb1d8ce5d0f5434141b3f0b5f7448
2025-04-18 20:40:49 -04:00
Vencislav Atanasov
d6cd237f80 New port: iPod Nano 3G
Currently, only a bootloader can be built successfully. The development bootloader is functional, it enables further progress on the port.

This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.

Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: Idf85e42334b0e0ae36f9ed273e2940d5d7736e34
2025-04-18 20:10:29 -04:00
Aidan MacDonald
3ed9fb3115 arm: add initial ARM Cortex-M support
M-profile cores manage interrupts differently from classic cores
and lack the FIQ. Split the interrupt management parts out into
separate headers but keep the endian swapping routines (which are
not profile-dependent) in the common system-arm header.

The initial part of the vector table is common to all Cortex-M
CPUs and is intended to be included by the target linker script,
with the vendor-specific part of the vector table appended to it.

Change-Id: Ib2ad5b9dc41db27940e39033cfef4308923db66d
2025-04-18 13:19:42 -04:00
Vencislav Atanasov
a1bf19de36 Fix unused function warning
Change-Id: I6252a6db2a0f9cdd3d0c18262b5809856a5bd977
2025-04-18 10:57:04 -04:00
Aidan MacDonald
6712779ccb x1000: fix regression on Q1 with misaligned write pointer
Commit 1fb906500a ("x1000: LCD DMA fix") caused a regression
on the Q1 by breaking the LCD_X1000_DMA_WAIT_FOR_FRAME logic,
since the wrong branch of lcd_wait_frame() was taken.

Change-Id: Icb44335f506a1a691280de8219188526bb11468f
2025-04-18 10:49:27 -04:00
Aidan MacDonald
76c62dc429 x1000: remove bogus modes from lcd_dma_start()
These 'modes' don't do anything here except clutter the code.

Change-Id: I4e0eef39e0c3bac288c40d571ba855c9ffd7c1a1
2025-04-18 10:49:27 -04:00
Aidan MacDonald
b71337f1fd x1000: remove LCD fast sleep define
All the X1000 targets use "fast" sleep, as opposed to the normal
HAVE_LCD_SLEEP define which creates a user-configurable option.
Remove the ifdefs to make the code a bit easier to read.

Change-Id: Ibb80c92a8e23191651fee61fc8cf6f4e4fac8750
2025-04-18 10:35:49 -04:00
Vencislav Atanasov
7e2019fde9 iPod Nano 2G NAND: Use the correct bit names for FMCSTAT
Looks like they were always off-by-one, so the wrong functions have been used to rectify this bug. This is now properly fixed.

No changes to the ipodnano2g binaries (bootloader, rockbox)

Change-Id: I19fe1b89f9e5d722f7e877d60f68fc3275c3642a
2025-04-18 10:26:57 -04:00
Aidan MacDonald
639b587fc7 arm: add support for processors with hardware division
ARMv7-M has hardware division, so it doesn't require __div0
or any support functions for 32-bit division.

Change-Id: I840683a1a77d737f378899ca4bcf858216b81014
2025-04-18 09:22:48 -04:00
William Wilgus
3c4aed56c0 [FixRed] Creative Zen
missing ;

Change-Id: Ia24562ef47f03227ff536c743b4939e63ada0d01
2025-03-11 03:02:14 -04:00
William Wilgus
4f3bbeaffc Remove BATTERY_TYPES
Change-Id: I4fa03a10d0032fd6f92722bbe1d4b7eec0b95cb4
2025-03-11 02:26:38 -04:00
William Wilgus
a05bd377ab [FixRed] YPR1
the YPR1 apparently can do voltage or percent measure
I'm pretty sure its missing logic for disksafe and shutdown,
perhaps the device takes care of it for you?

hopefully someone with the device notices the issue
(perhaps due to a older battery needing capacity tweaked)

Change-Id: I79d3927fa8b154ba231aa6894de7920a4e4dd4c7
2025-03-06 19:28:21 -05:00
William Wilgus
10f8312db4 FS#13538 export and import battery level tables
when battery_bench is run
exports a file in the rockbox directory called 'battery_levels.default'

if the user wants their own levels they can rename the file battery_levels.cfg
and it will be loaded at boot

some minimal error checking is performed prior to using the values

added manual entry

Change-Id: Ia0126faced0c7229fcf8385a1bcb584b5a9dc378
2025-03-06 11:54:21 -05:00
Aidan MacDonald
64d8fc7c0c Sansa Connect: fix a likely typo in busy wait loop in USB driver
GCC 9.5 issues a -Wmisleading-indentation warning due to an extra
semicolon at the end of the while loop. It does seem unintentional
since the loop is a busy wait, so remove the semicolon.

Change-Id: I83b8676cbf38434b8148c43906c6bba9c16d036e
2025-03-01 14:26:35 -05:00
Solomon Peachy
2c1d31fcd9 xduoox3: Fix inverted test for USB power supply detection
Only affected status display, charging is handled entirely by hardware.

Introduced in f3026cd0 (2024-11-02)

Change-Id: I08c7c442fb3bddf18e5a0d33dac963c24d3c9182
2025-02-10 14:31:32 -05:00
Solomon Peachy
39285d06d5 xduoox3: Rework how we detect "charging" state
The "charging" status is apparently "charging needed" as it
is asserted even when power is not being supplied.  So first check
to see if USB is connected, and if so, then check the "charging" status.

Change-Id: I3050f187e0b6c9d97d25d80015b413cd02e5c3b2
2025-02-10 09:47:48 -05:00
Solomon Peachy
0a2a90c182 FS#13560: ATA: Don't check for 80 pin cables on SATA devices.
On PATA, we'd cap our transers at UDMA2 if the device reported that an
80 pin cable wasn't detected, but SATA devices do not perform this test.

So alter the check to only apply on PATA devices, so that SATA devices
can run at full UDMA speeds.

Change-Id: Id7aa25f2a702c0af73d707395439d69da1e04719
2025-02-10 09:23:11 -05:00
William Wilgus
95f4accf45 use lcd_drawinfo instead of separate drawmode, fg, bg calls
Change-Id: I181ff3a93f03ce1ae44a20f2b216de400320207f
2025-02-08 01:02:22 -05:00
Paul Sauro
4bde992ca3 pp502x: Fully shut down storage power on older(4g/photo, mini, mini2g) iPods
On these older iPods, power was not being shut down completely, which led to a backfeed situation leading to decreased battery life and some stability issues.

This was particuarly apparent when using SD card adapters that do not
respect the ATA power management commands (ie all of them), as they never enter a low-power state on their own.

With this change, there are reports of battery life exceeding 20 hours of continuous playback (~30% increase with CF cards, 3x improvement with SD cards) and appears to resolve intermittent wakeup stability issues with SD adapters.

Change-Id: I46cfff7a59bb18a448989812303f30869df24d2d
2025-02-07 09:49:50 -05:00
Dana Conrad
96463d855f erosqnative: hw4 units prefer egauge battery percentage
Use AXP2101's egauge battery percent level if available (hw4 units).
If not available (_battery_level() will return -1 on hw1-hw3 units),
fall back to voltage battery level.

Also fix logic in axp2101_battery_status()

Change-Id: Ic300418532dae6f7772fff8bf5e2b32516f3b973
2025-01-19 17:30:21 -05:00
Solomon Peachy
9417ece0ea imx233: Make bootloader compile, fix up remanining warnings
Change-Id: Ie87d178c56455b93364dffa656ebbee9cd7a4bad
2025-01-08 09:14:20 -05:00
Christian Soffke
18aa0f6278 Creative Zen Vision: fix config file (?!)
If I'm interpreting the git history correctly,
the config file for Zen Vision was at some point
inadvertently replaced with one for the
Zen Vision:M.

This deletes the currently unused creativezv.h,
and moves its contents into zenvision.h.

The config files appear to be identical except for
CREATIVE_ZV vs CREATIVE_ZVM define, different
keypads (CREATIVEZVM_PAD vs CREATIVEZV_PAD) and
BOOTFILE_EXT (zv vs zvm), a different model name
and number, as well as different LCD dimensions
and DPI.

The buttonmap still seems to require adjustment.

Change-Id: I9a5e65df750db21be5f5a1ed7a80a50706237781
2025-01-08 08:06:45 -05:00
Solomon Peachy
f1173e07ec imx233: Fix clkctrl for STMP3600 variants (creativezenv)
Change-Id: Ia8f0ce13cdf7dcbf1339bb7648f7a99822f74017
2025-01-08 08:04:25 -05:00
Solomon Peachy
4cd0c35150 imx233: Fix up compilation problems with the IMX233 ATA driver
Change-Id: I726b76aa4ac3e0986f530727d342c99909a1742c
2025-01-07 20:29:35 -05:00
William Wilgus
5d9b01b9ed [Fix Red] define lcd_awake for targets with lcd_sleep
Change-Id: I62f8f7908f2877d4b255075120f87e3c9a375f66
2025-01-05 12:12:57 -05:00
Dana Conrad
f2dd489120 FS#13535: AXP2101: ADC / reporting improvements
Improve ADC behavior, add correct conversion
for die temperature, add readout of EGauge to debug screen.

Add delay to give ADC time to get a good reading. Initial reading
may still be 1-3% optimistic, which is probably ok.

EGauge appears to be pretty good, but no great need to convert
to using it either.

Change-Id: Iab9d50e2427f656ad0875f9a623b03545fc69881
2025-01-01 20:49:07 -05:00
William Wilgus
2a825b866a SIMULATOR help text fix yellow
Change-Id: If425ead1c53f8021f6047abc6c440c1343c68e79
2024-12-29 21:46:34 -05:00
William Wilgus
fcbfa494f5 [Feature] Simulator add F1 help text
give a listing of the keys used in the simulator

Change-Id: Ifcb91c59de41c214d050bd175065fabb6cf9eac4
2024-12-29 21:25:48 -05:00
Christian Soffke
9ba59477a1 sdl: improve window resizing on macOS
This enables smooth resizing of the window using a
fixed aspect ratio, instead of snapping into the
correct aspect ratio only when the resize operation
has finished, by using an SDL event filter that gets
events delivered during the resize operation
(whereas SDL_PollEvent blocks until done on macOS).

Change-Id: Ie6614e4b6f49a24469c5ee6a69721c9fbd440dae
2024-12-30 01:08:12 +01:00
Christian Soffke
8ce9d9e39e simulator: maintain LCD position/size when toggling background
Change-Id: Id76464b77b33d531d6075a83038466e18fab3a7f
2024-12-30 01:08:11 +01:00
William Wilgus
8884284da4 simulator hand icon on button region mouse over
add a hand pointing cursor over the buttons

Change-Id: Idb54e084b5b768de845a94c5bb13e4435d9b82e5
2024-12-29 16:43:21 -05:00
Christian Soffke
5e09a9246c sdl: fix shutdown hang on MacOS when SDL threads are used
Change-Id: I2179d2beed89beba1716072fc06b9cc090118364
2024-12-27 11:45:53 +01:00
Christian Soffke
fa8b095f29 sdl: fix: concurrent drawing on Windows
On Windows, we need to prevent the event thread
from drawing at the same time as the main thread,
when window is being adjusted.

Change-Id: I2b4e4a50fec427e53e310593850e2a556a594b31
2024-12-26 12:24:24 +01:00
Christian Soffke
d323d968d8 sdl: adjust texture access pattern to "frequently"
probably doesn't make much of a difference
for our use case but should prevent creation
of temp buffers

Change-Id: Ie2cbefcbd7b8f94bed340f08bf71f764a32ed1ea
2024-12-25 19:24:32 +01:00
Christian Soffke
32cc5ee8f9 simulator: Press Tab to show/hide background
Change-Id: I80e8f629b1bbf37f92d243e190d541e7360e9dea
2024-12-25 08:34:40 -05:00
Christian Soffke
400452180d sdl: Keep texture around, upload LCD-parts only
No need to create a new texture for every
rendered frame, unless the scaling method
has been adjusted.

We also don't need to upload the (unchanged)
player interface to GPU memory repeatedly.

+ Remove unused lcd_display_redraw &
having_new_lcd variables

Change-Id: I5bff6aa2d54347a3f2c3afba8d8d7eb9e39f77f7
2024-12-25 08:34:40 -05:00
Christian Soffke
7aaa722a5d simulator: Adjust scaling using keyboard shortcuts
Press 0-3 to to adjust current zoom level
to 50% (0), 100% (1), 200% (2), or 300% (3).

Press 4 to switch between "best" (linear)
and nearest pixel sampling.

Change-Id: Id10d361659855a0ad9c97e6b341f498f72709ef5
2024-12-25 08:34:40 -05:00
Christian Soffke
759cbf4e5f sdl: Remove usage of SDL_SoftStretch
SDL 2 lets us take advantage of a fixed logical resolution,
where the renderer scales content up or down automatically.

Relative mouse motion is also affected by renderer scaling
by default (see SDL_HINT_MOUSE_RELATIVE_SCALING).

If window zoom has been enabled from the command line,
set scaling quality to "nearest pixel sampling" instead
of "best" to allow pixel peeping.

Change-Id: I4e5c19d36b55c985c26ac5ae64c4a6b8dd9b308d
2024-12-25 08:34:40 -05:00
Christian Soffke
60f3283f48 sdl: make window resizable, enable high DPI
Tested on Linux, MacOS, and Windows.

On MacOS and Windows, we constrain the window's aspect
ratio by adjusting the size when responding to resize
events.

On Linux, I've not found a way to do so, that doesn't
result in fairly stuttery behavior and weird jumpy
behavior of the resize handle, possibly depending
on your window manager. So, black bars are displayed
around the content.
Maybe someone, at some point, finds a way.
(SDL3 seems to have SDL_SetWindowAspectRatio)

When the window is in fullscreen, black bars are
display necessarily, of course, on all systems,
unless the player GUI has exactly the same aspect
ratio as the screen...

Change-Id: I535e6617497611ea57a4c19e08e552f990859cfe
2024-12-25 08:34:40 -05:00
Christian Soffke
79191bf9bb simulator: Fix Sansa Clip display position
Change-Id: I23be28e6bfa4ead326416d0457ffa11c3bf18a54
2024-12-25 12:23:27 +01:00
William Wilgus
0bb79dd847 ascodec (sansas) add a 10 minute delay before re-enabling charge
Change-Id: I0b7bc3c92aeefa43f40becb26d7d9344d463775b
2024-12-19 12:11:38 -05:00
Vencislav Atanasov
cf4bf5439e S5L8702: Introduce syscfg_read() and use it in the debug menu
This makes it possible to reuse the SysCfg reading logic in other places.

Tested on ipod6g (normal + bootloader).

Change-Id: Iae6de2ee671bce4edb0153d26c57579ad47d0335
2024-12-17 23:08:10 -05:00