Commit graph

11600 commits

Author SHA1 Message Date
William Wilgus
49bbfe7505 Fix red fbc8b2156f
lcd_scroll is include in a weird manner and includes need to go in
scroll_engine.c instead and still be blocked from bootloaders

Change-Id: Ic99d123f7d428d511380c7064a9453de56218a17
2024-08-28 21:26:06 -04:00
Paul Sauro
f69d9c8a95 Settings: Add a new option to prevent text scrollings in the home screen
This option is especially useful for theme creators that want to create themes with lockscreens. When text is scrolling, it is breaking the lockscreen so setting this option to true prevent this. Text will continue to scroll normally in all other contexts.

Change-Id: I194f6837217881d50f567a775b81d0b422caf35c
2024-08-28 20:24:44 -04:00
Dana Conrad
56dd7ead63 rolo: Write bootdata regardless of whether running from root or redirect
As long as bootdata is valid, write it.

Change-Id: I63114b835d43c800217d2b688f9f7e2c2fb34c15
2024-08-27 07:43:25 -04:00
Dana Conrad
cd91c238de Bootloaders: Include HAVE_MULTIVOLUME if BOOT_REDIR also present
We need HAVE_MULTIVOLUME in bootloaders for redirect
functionality to work.

Change-Id: I50dbbb179bd012696e592ca843809fcc5fb78994
2024-08-21 18:31:28 -04:00
Dana Conrad
5ddfdf6e2f ErosQNative: Set extra ES9018K2M options
Set number of FSR edges required for DPLL/ASRC lock
Set DPLL bandwidth larger

Both should help prevent dropouts, especially with
sample rates >=96khz

Credit to ZappBranigan2972 on the forums

Change-Id: I55a90d44ac7fcec5894377e32cdadad66bb05610
2024-08-21 08:57:50 -04:00
William Wilgus
3b040673cc Add verification to multiboot redirect
check that a firmware file exists before we redirect
to an invalid directory

Change-Id: Id496fde3508158bc80f90dfb18a31ebae7229787
2024-08-20 00:34:03 -04:00
Solomon Peachy
05354e1bef Hopefully fix the remaining red from 15e52374
(imx233, ipodnano2g, !multidrive hosted/sims)

Change-Id: I9c89887078f9f50d3aac73f468ac323699e1fd1f
2024-08-12 15:20:13 -04:00
Solomon Peachy
15e5237469 storage: 64-bit sector offsets
* Create new 'sector_t' type alias:
    * uint64_t for all targets with HAVE_LBA48 or HAVE_SDUC
    * unsigned long for the everything else
 * Alter all storage APIs to use sector_t instead of 'unsigned long'
 * Alter Volume/Partition/storage info structures to use sector_t
 * Disk cache converted to sector_t
 * ATA Core:
    * convert to using sector_t for sector addresses and drive sizes
    * Always fill out upper 16 bits of LBA48 addresses
    * IDENTIFY INFO is fixed at 512 bytes, not SECTOR_SIZE
 * USB mass storage:
    * convert to using sector_t for sector addesses and drive sizes
    * Implement READ_16/WRITE_16 for LBA48 addresses
 * Convert FAT code to use sector_t for all sector references
 * output_dyn_value() now accepts int64_t instead of 'int'
 * Corrected "rockbox info" to work for (MULTIVOLUME & !MULTIDRIVE)
 * Better reporting of disk and (logical+physical) sector sizes in debug info
 * Detect SDUC cards and report on storage debug_info screen

To-do: SDUC

 * Refactor SD core to remove duplicate code in every driver
   * Card probe and init state machine
 * Implement core SDUC support
   * SD2.0 needs to be 2.0+ (fixed for jz47xx and x1000)
   * Host and Card ID (ACMD41)
   * 32-bit addressing for all read/write/erase operations (CMD22)
 * ADD SDUC to target device drivers, defining HAVE_SDUC as appropriate

Change-Id: Ib0138781a0081664d11511037685503df1b93608
2024-08-12 14:23:44 -04:00
Dana Conrad
ef9490f683 ErosQNative: Debounce jack detection and make Line-Out default
Making line-out default output should allow detection to work
correctly. Headphone detection should work whether or not
headphone is currently the active output due to the
low impedance (relatively) of the headphones. Line-Out sinks
will likely be high impedance, so we need the output
as a pull-down for detection.

Debounce detection to prevent false triggers due to voltage swings
during playback.

Change-Id: If5e497d900330f64d0f49a135e953ee6b0499668
2024-07-30 11:39:47 -04:00
Solomon Peachy
e722334ab1 init_volume_names() has to be called AFTER storage_init()
...So just move that call into storage_init and be done with it!

Hopefully this doesn't cause any functional regressions.

Change-Id: I08700fbd1613638606a23ee3a0c2149123c2c24a
2024-07-28 21:15:41 -04:00
Solomon Peachy
78283bda64 talk: Voice the volume name when browsing and when voicing full paths
Change-Id: I56660e168edd135a09cd5c021504a58ec9d40093
2024-07-28 16:54:33 -04:00
William Wilgus
67db38e766 [Bugfix] initialize the volume names for the sim
init_volume_names() wasn't being called by the sim

Change-Id: Ife0d345cf29bd4a0a658ed194ee85ca4852bc92f
2024-07-24 23:43:36 -04:00
Solomon Peachy
e8975cf85c Fix typo inadvertantly introduced in 89b4cd59ef
Didn't cause any compile problems becuase we have no APPLICATION
targets that support recording.

Change-Id: I84594481abaccde01646a491e7d9c6b3abc36954
2024-07-24 09:01:57 -04:00
William Wilgus
89b4cd59ef [BugFix] extra slashes in recording directory
the define for HOME_DIR has a single slash for native

hosted does or doesn't but native always has 2

Change-Id: I2ff546da8e422feb04027de164caf3747f6d9355
2024-07-23 22:14:16 -04:00
William Wilgus
c0ac043c6d get_volume_name generate volume names once then reuse
Change-Id: I36c62bfb28af9770b551a1193fbb66eb6fbac76a
2024-07-23 18:35:52 -04:00
Solomon Peachy
fe5bee50be Multivolume: Hosted targets are also limited to just one volume per "drive"
(It would be interesting to try and work around this but it would have to
 be done on a per-target/platform basis)

Change-Id: I7a27199082998420fea3c6abbbf5f3c526ccaec4
2024-07-20 08:46:21 -04:00
Solomon Peachy
82cf845625 simulator supports only one logical volume per drive
Change-Id: I8f32743c98771ca38c04d42bf6b2dd4768cfedad
2024-07-19 22:04:00 -04:00
Solomon Peachy
87ef6bb9e1 hosted: Don't unconditionally pull in mv.h on hosted environments
It causes some conflicts in plugins with the upcoming 64-bit storage enablement

Change-Id: Ia8615c5266c2b29216a05a8d85c3da5186c98d1c
2024-07-19 18:42:11 -04:00
Solomon Peachy
01ec79663d ATA: Rework ata_isssd() slightly:
* If CF Timing mode is specified, treat it as SSD
   (some SD adapters don't report CFA supported but but report this,
    and _all_ microdrives seen do not report this)
 * If CFA compliant and CF power level 0, treat as SSD

Change-Id: Ia8c88b4636af9bae75fbd1c253d8b2b01bca6584
2024-07-16 17:35:53 -04:00
Solomon Peachy
942e013eac pp5020: Cache the result of the is_ssd check.
...So we don't look it up on every write.

Change-Id: I85b0abe5032a60588535b401cc719661601807ee
2024-07-16 17:35:53 -04:00
Solomon Peachy
27a0cda6ac PP5020: Unconditionally use stock PIO timings
The SSD detection heuristic is flawed, and when it fails
(due to very crappy CF->SD adapters) we end up corrupting things.

So let's give up a slight amount of performance on the original hard
drives (which are aging out anyway) in favor of guaranteeing safety.

Change-Id: Id92583a6b9ae6ec543b91b3e0f8f28b57ac38cb0
2024-07-16 17:35:53 -04:00
Solomon Peachy
9c53fa1b0a pp5020: It's okay to use DMA reads on non-SSDs
Fixes a regression introduced in 4b423e21f6

Change-Id: Ief4a4a562840524b98ad5988999bac87586dec41
2024-07-16 13:37:14 -04:00
Solomon Peachy
a6f0044d40 Revert "ata: Use PIO0 when ATA_SET_PIO_TIMING is not defined"
This reverts commit 95d6c74627.
2024-07-16 13:26:49 -04:00
Solomon Peachy
95d6c74627 ata: Use PIO0 when ATA_SET_PIO_TIMING is not defined
If we have no way to tell the controller what timing to use, go with
the slowest possible speed.

Change-Id: I1ed3474d8bfecc08cfe4a9e7667f57775fef4d43
2024-07-16 11:47:43 -04:00
Solomon Peachy
c51a9821e7 rk27xx: Fix simulator errors brought upon by HAVE_MULTIDRIVE but not HAVE_HOTSWAP
Change-Id: I0171d01dfffbb936e8041c0e2fc5207c620ddce3
2024-07-07 16:02:38 -04:00
Solomon Peachy
60c3fdbc11 More red fixes:
* hostfs_removeable()/present() needed IF_MDVOID() in their prototypes
 * SIM_EXT_INSERTED/EXTRACTED are gated by HAVE_HOTSWAP

Change-Id: Id8c688f3538db99586a4f5062c83466374451883
2024-07-07 15:40:27 -04:00
Solomon Peachy
5a2bd580cd Hopefully fix the last of the stragglers.
* xDuoo X3 fix some warnings due to an incorrect #ifdef
 * stub storage_removeable() and storage_present() for non-HOTSWAP builds
 * sim_trigger_external() is gated by HOTSWAP, not MULTIDRIVE

Change-Id: I38f14fdfeba13957899c378051d49afc2e8245e5
2024-07-07 15:13:53 -04:00
Solomon Peachy
1528b44349 More red fixes
Change-Id: If22cdb286edac47b08b158bee6910ba7a539b041
2024-07-07 14:47:07 -04:00
Solomon Peachy
dc364e44ef Disable HAVE_MULTIVOLUME for bootloaders
Multivolume support is only necessary if mounting multiple volumes
simultaneously, which the bootloader won't do.

Change-Id: I725061dd2aa47abe7652b0d27258dd3af821c913
2024-07-07 12:43:10 -04:00
Solomon Peachy
f37b5a8349 Fix the remaining red in red from ea80d1cc9ca
Notably:

  * double-paste in ihifi760 config.h
  * jz4740 ATA & SD drivers used MULTIVOLUME instead of MULTIDRIVE
  * Simulators implicitly rely on HAVE_HOTSWAP

Change-Id: I44fc7f98f0f6df366f016567c330f87e9f3ca6a6
2024-07-07 12:29:19 -04:00
Solomon Peachy
181fe7530a Fix most of the (extensive) red in ea80d1cc9ca
Change-Id: Ie494df80caa222423a52977031920d54bd058c3c
2024-07-07 12:05:18 -04:00
Solomon Peachy
ea80d1cc9c config: Change default HAVE_MULTIVOLUME settings
* HAVE_MULTIDRIVE implies HAVE_MULTIVOLUME as the latter is always
   removeable storage
 * SD storage implies MULTIVOLUME
 * ATA storage (with HAVE_LBA48) implies MULTIVOLUME
 * Replace HAVE_MULTIDRIVE && NUM_DRIVES == 1 with HAVE_MULTIVOLUME

Since SD and ATA can exceed 2TB, we need multiple volumes to fully
utilize available storage with FAT32.

In practice I believe this only affects the ipod devices.

Change-Id: Ia597770948b0e2b47630f7264ad34f225a33a640
2024-07-07 11:35:04 -04:00
Solomon Peachy
e2fb4ecd5c xduoox3: Completely strip USB support out of the bootloader.
Change-Id: I7167e051a56a3be3c285c209b1c8fca7de251b09
2024-07-03 16:51:58 -04:00
Solomon Peachy
80b9127727 Revert "jx47xx: Rename crt0 'init' sections to 'startup'"
This reverts commit 83bb89d0b8.

...It breaks the jz47xx bootloaders.
2024-07-03 16:51:58 -04:00
Solomon Peachy
e55618d07a hosted: Minor corrections to the linux framebuffer driver.
* Query variable info _before_ mmaping the framebuffer
 * Sanity-check the resolution/bitdepth, and if it doens't match
   try to set it to what we want.

This is functionally a no-op.

Change-Id: I087ff81775d8f63bf7846b7fef19f6fc36c1cc84
2024-07-01 09:51:50 -04:00
Solomon Peachy
5f26f21ab2 samsungypr0/1: Minor improvements to framebuffer driver.
* Distinct error codes for all failures
 * Corrected some comments and error messages

The ypr0/r1 target should be switched over to the generic lcd-linuxfb
driver, but that will come later.

Change-Id: Idc3867a96db7e431847473708712f88dd2725a96
2024-07-01 09:50:33 -04:00
Solomon Peachy
025841cfb5 ata: Use consistent error values for all invocations of set_features()
set_features() returns an error between -1 and -39, so make sure
every caller adds -60 to that so no matter where an error is printed
the value is consistent.

Change-Id: Ic81108ee70a2cb5ff7ea2445f086420fe850d07e
2024-06-29 10:07:25 -04:00
Solomon Peachy
dca5fb9514 simulator: Fix Samsung YP-R0 windows simulator build
Change-Id: I2940cd9fed7e24c17d221402928737606d4d0ab6
2024-06-26 20:45:59 -04:00
Vencislav Atanasov
4691152f92 Add SysCfg viewer for iPod 6G in the debug menu
Change-Id: I4e142f40777c7f8ae58f2b46fc6a3ec4f12aa530
2024-06-24 21:00:25 -04:00
Solomon Peachy
54e2facb85 Fix yellow introduced in f7a3b4dfa
Change-Id: I38d53cfe52745762f89fa017dc8199c897379493
2024-06-23 20:58:10 -04:00
Szymon Dziok
f7a3b4dfa3 Radio support and detection for Samsung YH92X [FOR TESTING].
Status:

- tested on:

  Samsung YH920 - it uses this detection too, it always should have
                the radio.
  Samsung YH925 with the radio.

- untested on:

  Samsung YH925 without the radio.

Change-Id: I68b39c09d6b7e26a4c373fbd8bf9401a97e86123
2024-06-23 20:11:59 -04:00
Vencislav Atanasov
9c458bbb0d Use literal ATA serial number for USB SN descriptor if the string is printable
Change-Id: Ic2c853a0b124d7b590ea36229347c56f96a32f33
2024-06-23 08:00:06 +03:00
Vencislav Atanasov
9fda39d1ad Prevent using PP-based iPods' set_serial_descriptor on S5L87xx-based ones
On PortalPlayer iPods, it looks like the serial number is available in a
specific memory location. When adding support for Samsung S5L87xx-based
iPods, this algorithm has not been limited to PP-only, so it sets the
serial number USB descriptor to random memory data.
With this change, it will use the ATA HDD serial number on iPod 6G. On
Nano 2G it won't provide a serial number at all.

Change-Id: I53d48915d629dbd87b2dbbcba5f228ca5949fa9b
2024-06-23 05:24:04 +03:00
Solomon Peachy
b4668e2bd6 libc: Check for a null string argument in *printf
If we are passed a null string argument, use the fixed string "(null)"
instead.

Change-Id: I4f70ae76cdcac1104ff1e42dc3b1a5f03e2723fe
2024-06-20 15:22:36 -04:00
William Wilgus
7b12cc3927 pathfuncs.c remove strip_leading_separators()
This should actually be strip_extra_leading_separators() but
its not used anywhere else yet and I don't see enough callers
in core to make it worth the extra overhead

Change-Id: Icdd292869b4198bed7725c51820f6b2111ad739d
2024-06-16 12:33:16 -04:00
Solomon Peachy
ae25a425b6 ATA: Fix regression when trying to set power management mode with CF cards
Some CF cards claim to support Advanced Power Management, but error
out when the command is issued.  There is a special case in the
code that ignored errors when issuing the APM command, but was referenced
against a specific index in the feature table.

When the tagle was reorganized, the index was wrong depending
on if ATA_DMA was enabled or not.

The fix is to test against the specific subcommand ID instead of the
table index.

Change-Id: I2ef7a05b2d70675c38e41d70b5189b394056cb74
2024-06-14 10:56:23 -04:00
William Wilgus
c6473f4e7f [Fix Yellow] imx233_debug fix yellow
Change-Id: I2d04340a8383edd03350045085188d2191e41526
2024-06-05 20:03:02 -04:00
William Wilgus
c96d728d81 [coverity] debug-imx233.c dbg_hw_info_audio() use strlcat, fix snprintf call
technically this isn't currently causing any issue but
coverity correctly identified the potential for buffer ovfl

Change-Id: I4af462c9860c44f22d05b5b2b4c685364823d395
2024-06-05 19:16:07 -04:00
William Wilgus
d68c314cea [coverity] vuprintf.c format_double_radix() initialize data struct
it appears this is  false positive but its compliaining
about the uninitialized pointer,
 not a bad idea to initialize pointers to NULL anyway

Change-Id: I5832a19ab13971c7d55580694eef70591a3a9acb
2024-06-05 19:16:07 -04:00
William Wilgus
e54dedd8df [coverity] fat.c fatlong_parse_entry() buffer overrun, fix warning basisname
BYTES2INT16() uses [i + 0] and [i + 1] therefore 30 is the max element
available in the raw byte array of size 32

 (((uint32_t)array[pos+0] << 0) | \
 ((uint32_t)array[pos+1] << 8))

 struct /* raw byte array */
 {
     uint8_t  data[32];
 };

 basisname is only uninitialized in the . and .. dir entries
both are likely false positives but cheap enough to guard against

Change-Id: Iab3d186fed6050d2d61185071765a2c0feb9515f
2024-06-05 19:13:47 -04:00