Commit graph

37651 commits

Author SHA1 Message Date
Solomon Peachy
c8e1da8e90 ipod5g/6g: support DEFAULT_VIRT_SECTOR_SIZE
This way if there's no valid partition/filesystem we still report the
"correct" sector size out via USB.

Update the ipod5g/6g bootloaders so they do the right thing too.

Change-Id: I0d93ae7e6664f1591d8edf1c0252c586e329cd4b
2024-11-09 17:48:09 -05:00
Solomon Peachy
1516c48a37 storage: Support a default virtual sector size
Normally, we figure out the virual sector size from the filesystem info.
However, if there's no filesystem, we fall back to the hardware's
logical sector size.

Some device firmware (eg ipod5g/6g) need their partition tables set up
with larger-than-logical sector sizes; this way we can present the
"correct" sector size to maintain interoperability with the stock
firmware and make it so that the drive can still be properly partitioned
from within rockbox.

This patch adds support for DEFAULT_VIRT_SECTOR_SIZE.  Nothing uses it yet.

Change-Id: Iae746a50ffc37c51abb2c9b82d3c4596f1fa7559
2024-11-09 17:48:00 -05:00
Solomon Peachy
c61ad40812 storage: Wrap runtime variable sector size with MAX_VARIABLE_LOG_SECTOR
When enabled this allows 512n and 4Kn drives to be used with a single build.
(So far all ATA SSDs use 512 byte logical sectors)

Change-Id: I902d2318ca8abb581699c0bca68d6e3ec227d064
2024-11-09 16:34:06 -05:00
Solomon Peachy
bc6c189dcb storage: rename MAX_LOG_SECTOR_SIZE to MAX_VIRT_SECTOR_SIZE
Change-Id: I34f00748c1b0935d65af5f0fc6bdd13356ff31e1
2024-11-09 16:32:40 -05:00
Solomon Peachy
7ecab006c0 fat: Allow use of variable logical sector sizes
Only used if MAX_LOG_SECTOR_SIZE is defined

This allows a single build to seamlessly work with (eg) 512B or 4K sectors.

Change-Id: I85d2a6612afca6a1d7a3bd49c588b5745ab2b220
2024-11-09 16:32:40 -05:00
Roman Artiukhin
e519356c47 plugin: don't start plugin when another non-tsr plugin is running
Change-Id: Ie5fc8220e5d586a5493992719c55e9d2f235b090
2024-11-09 04:26:15 -05:00
Christian Soffke
eb91595988 fileop: display progress bar for single file deletion
Change-Id: Id895eb270b8ce1ad483c508c98d6318ba6069cf0
2024-11-09 04:25:48 -05:00
Solomon Peachy
42b63daebb ipod6g: Swap STORAGE_NEEDS_BOUNCE_BUFFER for STORAGE_WANTS_ALIGN
Change-Id: Ie34ffe0e022c8416ec9b2d4c39733a15c205eb3d
2024-11-07 21:08:15 -05:00
Solomon Peachy
3664d382e0 ata: if drive doesn't advertise a nonstandard sector size, default to 512
...Instead of SECTOR_SIZE, which might be different.  This way
we can properly validate the value.

Change-Id: I8e6ae5882792f301ac580a144556af94772f4cfe
2024-11-07 18:15:26 -05:00
Solomon Peachy
9dd2781b87 ipod6g: Use storage bounce buffer for ipod6g
Change-Id: I987357bd6795b988802997f92b6d64f36cd24f43
2024-11-07 16:44:25 -05:00
Christian Soffke
0386469794 Fix incorrect UI font id in some plugins
see commit f19f3ef

Change-Id: I417929eaa9303d439725fb4f0c20d104de54f8b0
2024-11-07 17:45:09 +01:00
Roman Artiukhin
ee365f21c4 show track info: skip Comment and codec string copies
Comment copy was added in c647e62c as workaround for FS#11033 and no longer needed (I tested really long lines and scroll no longer throw any errors on my Sansa e200v2)

Change-Id: I96a5b26096829034692dffc2abc730ff2bdd5d9c
2024-11-07 07:59:52 -05:00
Roman Artiukhin
da478aaa32 metadata: mp3: Simplify comment tag processing
Avoid unnecessary string comparison.

Change-Id: Ib1c5622f7b7760c43c4763930dc4ef6b409dbc05
2024-11-07 07:53:41 -05:00
Roman Artiukhin
2156d9874f metadata: mp3: Improve support for long tags
Increase buffer size by 368 bytes by using id3v1buf.
Limit tag size only if metadata fails to fit without limitation.

Change-Id: I82d551ac75c2e8fcb9ff0ef318445e0e6a1f8148
2024-11-07 07:53:08 -05:00
Solomon Peachy
9e70991174 disk: Simplify LOG_SECTOR_SIZE() definition
Change-Id: I49cca4fe5e92f7b443427c2b8e95bae8955b9ea0
2024-11-07 07:51:14 -05:00
Solomon Peachy
f58fad943e diskcache: Size the buffers for MAX_LOG_SECTOR_SIZE
Because if we get a logical sector size > min sector size
we'll trigger buffer overflows.

Change-Id: Ibd24f91a0f8601fbd8c5a5dfeef4ebe5c081f664
2024-11-07 07:49:17 -05:00
Solomon Peachy
e29ddfb6be ata: Support for ATA logical sector sizes > 512B
Basically this requires un-hardcoding SECTOR_SIZE everywhere, in
favor of using a variable containing what was reported in IDENTIFY INFO.

Note that the rest of the storage subsystem still needs to be fixed up!

Change-Id: I7f2dbd54ff2bc16b15010721e011949cbf308e12
2024-11-07 07:48:17 -05:00
Solomon Peachy
c3d06d21df mikmod: Properly render with fonts larger than 6x8 pixels.
Change-Id: Ib3f8c2cf84e7b6565bb8a00b74e8a662b9980824
2024-11-06 20:18:45 -05:00
Solomon Peachy
10abb34e54 mikmod: Use current theme fonts, not the cut-down SYSFONT
Change-Id: Ia5fff04b22fbad1081fcca6c66bbb7ea7f82fef8
2024-11-06 15:18:33 -05:00
Solomon Peachy
d1ffaa8949 convbdf: Properly support a compiled sysfont of over 64K.
The 'struct font' definition says:

    const void *offset;           /* offsets into bitmap data,
                                     uint16_t if bits_size < 0xFFDB else uint32_t*/

However convbdf was unconditionally using 'unsigned short' without
checking bits_size. This generated a bogus table if used with an
uncapped SYSFONT due to offeset overflows.  And a pile of complier
warnings.

That said, we're still capping SYSFONT at 255 chars due to space
constraints -- 14-Rockbox-mix jumps from 2.6K to 1022K if left
uncapped.  Yowza.

Change-Id: I4577da08ab1633ab7abbc167523196f38c8a348a
2024-11-06 09:40:06 -05:00
Solomon Peachy
000a575d13 storage: Make ramdisk use the global SECTOR_SIZE definition
Change-Id: I0c2fe75ea425107f1cd64acf42ff8c00cee07456
2024-11-04 21:10:51 -05:00
Solomon Peachy
2824bd5f16 ipod6g: Support MAX_PHYS_SECTOR_SIZE of 4K
This lets us *natively* handle varying physical sector sizes
without playing games and lying about the logical sector size.

(The original drives use 4K _physical_ sectors with 512B logical
 sectors, but you have to access everything in 4K blocks...)

Achieve this by splitting the MAX_PHYS_SECTOR_SIZE code out
of the main ATA driver and re-using it.

Change-Id: I0bc615ab4562f1e3e83171a8633c74fb60c7da1f
2024-11-04 07:33:26 -05:00
William Wilgus
d60dee6188 tagtree cleanup first letter menu code
no functional difference just some code shared and trimming of
unnecessary format strings

Change-Id: Ia6165508556790ea825e630a79946fbd2dafd9c1
2024-11-03 13:59:29 -05:00
Solomon Peachy
f3026cd072 xduoox3: Try to distinguish between "USB Plugged in" and "Charging"
Change-Id: I1879dbe6a95df215afa32012a72e1431c03a8653
2024-11-02 20:54:17 -04:00
William Wilgus
06986d27f0 Generate A-Z menus in the tagtree
this adds a new command %byfirstletter

%byfirstletter "custom_track" "Track A to Z" "title"
^ command       ^menu name     ^menu title   ^subitem

need a better name for subitem btw..

this patch also allows us to tell when we are in the BFL menu
by checking customaction == ONPLAY_CUSTOMACTION_FIRSTLETTER
we then enable spelling of the letters in the menu
it spells Numeric too but that shouldn't matter with the upcoming voice patch

Change-Id: I59815f697a4ef84a8cb540783b620d15f6670e00
2024-11-02 17:27:22 -04:00
Solomon Peachy
67ad6589fb Fix additional red introduced in 04dc052a96
Change-Id: Ie553673c5899d8399fa1cb1d7029f0d48075a420
2024-11-02 14:58:49 -04:00
Solomon Peachy
4be6285444 disk: MAX_LOG_SECTOR_SIZE also applies to a few non-ATA targets
Fuze+, native Sonys, and some of the Zens use 2K sectoring from
 the partition/filesystem perspective, even though the underlying
 storage used 512-byte sectoring.

Change-Id: I247d8cae2582c63ec1d4dda0fb225b1a25c8e16a
2024-11-02 14:48:54 -04:00
Solomon Peachy
04dc052a96 Fix (most of) the red in a8c52b1bfb
HAVE_STORAGE_INFO needs to be defined for all non-sim/hostfs targets

Change-Id: Id0d6f88306776cfc286fc0d852b77b70ba389efc
2024-11-02 14:46:23 -04:00
Solomon Peachy
a8c52b1bfb disk: Support a non-fixed (logical) SECTOR_SIZE
This allows a single build to support ATA drives with (eg) 512B and 4K
 logical sector sizes.  This is needed because ATA drives are user-
 replaceable and we don't know what could get plugged in.

 * Add disk_get_log_sector_size() API  (no-op for non-ATA storage)
 * Mostly a no-op if MAX_LOG_SECTOR_SIZE is not enabled
 * Sanity-check that storage's logical sector size is not larger
   than what we're built for

NOTE:  Other layers (eg ATA, FAT, etc) still need to be made aware of this.

Change-Id: Id6183ef0573cb0778fa9a91302e600c3e710eebd
2024-11-02 13:50:53 -04:00
Solomon Peachy
209aeff5b1 usb: Multiple improvements:
* Support varying-sized logical sectors in a single build, instead
   of a hardcoded SECTOR_SIZE.
 * Properly truncate READ CAPACITY(10) if drive has over 2^32 sectors
   And fix potential alignment issues
 * Properly truncate READ_FORMAT_CAPACITY if drive has over 2^32 sectors
 * Support READ CAPACITY(16)

Change-Id: I744b8629131f9ede31e1a972a6700b2244f2e798
2024-11-02 13:03:40 -04:00
Solomon Peachy
fa4bdf5744 Revert "Add desktop file for RockboxUtility"
This reverts commit f5d31fc1c4.
2024-11-02 11:23:07 -04:00
Solomon Peachy
f91604cf0e ata: Comments, function/variable renames, and stylistic cleanups
No functional change.  Goal is to share common code between the
ATA drivers.

Change-Id: I0532c43123e422219cea95834ce44ebb23a8b5db
2024-11-01 20:26:09 -04:00
Solomon Peachy
51ba8b3eee erosqhosted: Support HW volume control on rev2+ hardware
This also adds hwrev info to the debug output.

Change-Id: Ia75218cacb8f756a23a77334ea6ab69ac3b20d10
2024-11-01 14:12:31 -04:00
Solomon Peachy
1c28cb439b Translation updates:
- Chinese Simplified (王吉)
 - Turkish (Mustafa YILDIZ)

Change-Id: I4499ecdbc2a96078870a74f8a56bd25fa4181a2f
2024-11-01 11:59:26 -04:00
Solomon Peachy
ca4529e4e3 voice: Correct "no." -> "number" voice correction
Change-Id: I71bafce327b8297767705f3132ae65288a08d439
2024-11-01 11:55:42 -04:00
Solomon Peachy
0a11b06d93 ata: Correct parsing of the logical sector size in the IDENTIFY DEVICE
....It's specified in 16-bit words, not bytes.  So multiply it by 2.

(This hasn't been a problem in practice as everything uses 512B logical
 sectors so far..)

Change-Id: I0b1abd0f6184330f0b7f5c000c5ad547038f7c95
2024-10-31 21:51:42 -04:00
Solomon Peachy
d401501fda disk: Clean up identing (no funcitonal change)
Change-Id: I7a689132b155579ab3938231330f5bde7566809b
2024-10-31 21:51:42 -04:00
Solomon Peachy
bf2a929f4e main: Include the version string in "no partitions found" error
Change-Id: I63ddecebb9d0e27eff27eedf5ec4b6e30508152f
2024-10-31 19:57:31 -04:00
Solomon Peachy
b30f05badc Revert "plugin load / tagtree retrieval: eliminate storage_disk_is_active check"
ata_disk_is_active() behavior with SSDs has reverted, so we want to keep this.

This reverts commit ef19fa4408.

Change-Id: I29f08617285747c17a52352bd7bba4069e71cde6
2024-10-31 12:52:00 -04:00
Solomon Peachy
e829ea9a5e ata: Rework how flushing, sleeping, and power off interacts
* FLUSH_EXT is used if featureflag is set and we are using LBA48
   (unconditionally used for CE-ATA on ipod6g)
 * FLUSH is used if featureflag is set (ATA6+) or if device claims to be ATA5+

 * Rename ata_disk_can_power_off() to ata_disk_can_sleep() as that is
   what it actually tests for.  Only use it to gate issuing the
   STANDBY IMMEDIATE command.
 * Restore behavior of ata_disk_is_active() to return 1 if drive is
   "spinning" or powered up.
 * Allow poweroff if drive claims PM support OR we are able to issue
   FLUSH/FLUSH_EXT commands.

 * Added ata_flush() to explicitly trigger a flush operation, and hook it
   up to storage_flush() in the device shutdown path. (Flushes were
   only previously used in the storage device power management path)

 * After issuing all settings, re-issue IDENTIFY_DEVICE to make sure
   it reflects everything we've enabled.

 * Update manual section on Flash/SSD mods.

Change-Id: I6770a54ef3a87f4c47120bcb96c944a6652f1bf4
2024-10-31 12:51:54 -04:00
Solomon Peachy
825e406965 configure: Parameterize the neame of the "sdl config" executable
We moved to SDL2 but still had the SDL1 'sdl-config' executable
used in one place.  Additionally, all comments and the help text
referenced the wrong executable name.

Change-Id: Ie2efa80d27be5f6391fc84e49e207aa2aac26e72
2024-10-31 08:35:12 -04:00
Solomon Peachy
65241f5a32 Minor mechanical corrections to the Turkish translation
(The rest need to be made by someone who knows the language)

Change-Id: I3393291ccb3d18fd79012a6cc83556ed79e42437
2024-10-31 08:23:48 -04:00
Solomon Peachy
85330eb5fe Update multiple translations:
- English-US (Solomon Peachy)
 - German (Wilfried Winkler)
 - Italian (Alessio Lenzi)
 - Korean (Hoseok Seo)
 - Polish (Adam Rak)
 - Turkish (Mustafa YILDIZ)

Change-Id: I8ca5d6acb46bb86004e2d393cfce058dc85dc426
2024-10-31 08:08:22 -04:00
Roman Artiukhin
914a56f34c imageviewer: fix segfault when album art fails to load
Attempt to change file fails due to access to uninitialized memory with negative index

Fixup for 55a5bfe7

Change-Id: I9c42f66c856c1d4b7261da5e4996efbe9597bcd4
2024-10-29 09:44:06 +02:00
Solomon Peachy
bd02af3413 SD: Fix typo in debug menu
Change-Id: I55530ca7b3e735fef0ac6d4151e66ca11e571aa0
2024-10-28 13:53:30 -04:00
Roman Artiukhin
55a5bfe740 View Album Art from WPS context menu
Add ability to imageviewer to view current track embedded/folder album art
Add "View Album Art" WPS context menu item

Change-Id: I49caebd38e5e3e2910d418bbeaa5e51da0e6bd93
2024-10-28 12:46:51 -04:00
Solomon Peachy
c1bcebd998 FS#9059: Add WenQangYi Unibt font (William Poetra Yoga Hadisoeseno)
Change-Id: I8411349fdfdddf67f0d4a692d35176925498a7f6
2024-10-27 22:04:54 -04:00
Uwe Kleine-König
bf90197717 rk27xx-utils: fix compiler warning on amd64
sizeof(...) has type size_t which is long unsigned int on amd64, and so
the conversion specifier d without length modifier isn't suitable. There
is the length modifier 'z' for size_t arguments, but this is only
available on Linux. So casting to unsigned long and using 'lu' is the
portable fix.

This fixes:
	rkboottool.c:215: warning: format ‘%d’ expects type ‘int’, but argument 4 has type ‘long unsigned int’
2024-10-27 11:25:51 -04:00
Franklin Wei
5f4e0b6578 quake: Bail out of out-of-bounds draws
With this Quake should hopefully be able to run at native resolution
on smaller screens.

Change-Id: Ic30c8356eb2fd030a4cf84c54b63c9b688a9c14a
2024-10-27 10:49:23 -04:00
Amaury Pouly
9bd13865b7 imx233: make clkctrl code aware of hbus fractional divider
This is just to display the frequency correctly in the debug menu and prepare
for future use of said divider

Change-Id: Ib4c80ec71b3300bdf17edf6cc590229f7640d0f5
2024-10-27 10:46:28 -04:00