Commit graph

16252 commits

Author SHA1 Message Date
Solomon Peachy
03cd773051 ibasso: Hopefully hack usb into building again.
Change-Id: I6f369d60319704ab4d2c18b80ba6e78902630790
2020-11-13 20:04:04 -05:00
William Wilgus
43f90746d5 synclist add method for setting selection color
Change-Id: I8c8761d92f4fc99f65d45098ee6e97800d3fe002
2020-11-14 00:01:39 +00:00
Solomon Peachy
60f581e8f5 usb: Add ability to prompt user about what to do upon usb insertion
v3: Add in config option
 v4: Bugfixes
 v5: Force a redraw upon exiting
 v6: keypress-in-chargeonly mode enables mass storage (and vice versa)
 v7: Fix bootloader builds
 v8: Update manual, and have bootloader respect keypresses
 v9: Change default to mass storage (ie no change in behavior)

 todo:
  * test-build dx50/dx90
  * Switch from yes/no to proper menu?
  * prevent WPS progress bar from drawing over us

Change-Id: I82e0ccb08497b7a5aa756ce77f1332ee963703a7

...

Change-Id: I7946cf240b18a4fa8ace5e25e1eb6e97b8b12d7c
2020-11-13 16:44:01 -05:00
William Wilgus
6c3cc1cbb9 Skin_engine optimize element switches
it takes a lot of code to check validity and dereference a pointer for every numeric tag branch in get_token_value

apparently about 900 bytes actually

Change-Id: If463e755e9bbc73cbd4a02441572d22df9206121
2020-11-13 19:14:56 +00:00
Moshe Piekarski
362f7a3220 Quickscreen: don't apply glabal settings
Change-Id: I4de0e35b4c3227513f9c384bc0e01bc468999317
2020-11-12 21:23:57 +00:00
Solomon Peachy
b912ad5088 plugin: Un-export find_next_frame()
No in-tree users

Change-Id: I898623253e43507e9fb9df965be45568ff33880d
2020-11-12 16:23:27 +00:00
Solomon Peachy
388adff3cc pcm: Further cleanup of unused bits of the PCM ACPI:
* pcm_get_bytes_remaining()
 * pcm_calculate_peaks()
 * pcm_get_peak_buffer()

Nothing in-tree uses these at all (except for the lua plugin wrapper)

Change-Id: I971b7beed6760250c8b1ce58f401a601e1e2d585
2020-11-12 15:59:09 +00:00
William Wilgus
1a68856f52 Rocker Add WPS and Tree Hotkey, button codes in debug menu
VolUp+VolDown becomes the wps and tree (file browser) hotkey

Change-Id: I0cba96927420c318506bc0c15dabcb809cd81647
2020-11-12 01:22:32 -05:00
Igor B. Poretsky
4e5499606b Russian translations update
Change-Id: I9fbc26afba11dfc170abefd11bd28492f04009b0
2020-11-11 22:25:51 -05:00
Igor B. Poretsky
b7560ce0af Czech translations fix
Change-Id: Iafd2cb15a2935654e6a13489180bea31efbe54a0
2020-11-11 22:25:47 -05:00
Igor B. Poretsky
b8ada839ee Voice strings fixes
Change-Id: I27729b57ee6070443d3c98852812ae6d7581d8f8
2020-11-11 22:25:39 -05:00
Solomon Peachy
869a8bfbe7 YesNo: Clear the button queue so a latent keypress doesn't skip the prompt
Change-Id: I055db211f3cceb38b2df00177451c08a3da33426
2020-11-11 15:39:06 +00:00
James Buren
4aa749b59d iriver_flash: refactor code to be easier to understand
This overhauls most of the code to be easier to understand in terms
of the interactions with the flash. I found the original to be rather
confusing with how it kept switching between byte and word offsets.

My solution was to make all external access to the flash in terms of
sectors and bytes. Whatever the flash uses internally is now handled
by the subroutines for performing the erase, program, and verify
operations.

This helps make it far more consistent for the code that actually uses
these operations as they do not need to concern themselves with word
sizes and offsets anymore.

As a side effect of this change the flash operations are now done
entirely by subroutines; even the batch operations that used to use
custom loops.

Additionally some functions were merged with other functions in order
to reduce the amount of functions as well as consolidating common
code fragments.

Change-Id: I4698e920a226a3bbe8070004a14e5848abdd70ec
2020-11-11 13:30:09 +00:00
Marcin Bukat
bb7aa6f311 rk27generic: keymap tweaks
Change-Id: Ic3a5f2a8b676a6e81106231197f72d4f59f01497
2020-11-04 13:20:24 +00:00
Mihail Zenkov
b200cd7e4a test_mem: fix asm variant of read/write test
Change-Id: I865691e7540d4a6d18be34e8b81d0b3056837fa0
2020-11-04 13:00:01 +00:00
Avi Eisenberg
db87e1aae5 Fix typos and wording
Change-Id: I8e71d145282fe449faa0bcc8a75783ee728db8eb
2020-11-04 12:57:15 +00:00
Solomon Peachy
090bd9592d Remove the firmware decompressor and a few more other SH-stragglers.
Change-Id: Ic568755afcccc6db1b6e791b1ed0d2588b90356f
2020-11-03 23:43:32 +00:00
William Wilgus
0c99a3f9fb Skin engine Onda Vx747
Fixing issues that existed before framebuf rewrite

Fix swap issue

Change-Id: I43e03b7aaf4591c1b6f88e3ba0730e279934c0df
2020-11-01 17:43:42 +00:00
Solomon Peachy
8e5c57a822 plugins: bump api version (missed it in fe2d52c)
Change-Id: Ia6c89ede0bc9b3e2599aee97177f3cce94e70bd2
2020-10-31 14:10:34 +00:00
William Wilgus
202f9df0c1 Test_Viewports BUGFIX
putting a framebuffer on the stack is never a good idea

Added comments

Change-Id: I5553050785b74cb847db03957c6377cab11e816c
2020-10-31 00:30:55 -04:00
Solomon Peachy
fe2d52cc7d pcm: Get rid of pcm_play_pause() and associated APIs
Nothing in the core has used it for some time.  It's exported to the
plugin API but the last plugins to use it were switched to the mixer API
back in 2011.

This allows us to get rid of pcm_play_dma_pause() from all audio drivers

Change-Id: Ic3fa02592316f84963e41d792d1cabb436d1ff6b
2020-10-31 01:18:27 +00:00
James Buren
2d85c72151 iriver_flash: fix issues with DoUserDialog
First the argument should be const since the original parameter is.

Second the pointer arithmetic for detecting whether rockbox is running
from ROM or not is incorrect. It ends up being at a location twice as
far as intended since the arithmetic does not account for the pointer
type's underlying size. It should also be dependent on the target's
FLASH_SIZE.

Third the LCD setup is moved to the entry point since it is the best
place to setup and restore the LCD changes.

Change-Id: If9ddaf2cd937f1edf61c82a8a27f48d01807068a
2020-10-30 15:55:36 +00:00
James Buren
fa3184f951 iriver_flash: make most remaining functions static
This increases opportunities for optimizations as well.

Change-Id: I4105990d7d1fca93c735762721cfc293973c5344
2020-10-30 06:25:49 +00:00
James Buren
7c498b9043 iriver_flash: revise valid_bootloaders and detect_valid_bootloader
The main change is revising how the checksums are guarded by macros.
But both are also converted to static linkage so they can be better
optimized by GCC. I also change the types around to reflect how the
space the data types actually need. Furthermore I make use of C99
changes to how variables can be declared to move them closer to where
they are used.

Change-Id: I0b21b655f3f4a7c4bbd4365a384a551e75451159
2020-10-30 05:40:29 +00:00
James Buren
6bc6af6a0e iriver_flash: revise load_firmware_file function
This moves the checksum into the local stack and turns the second
parameter into an optional argument. This also reads the model
segment that was previously unused so it can also be checked as
an extra safeguard in the event the checksum somehow matches
yet the model is incorrect.

Change-Id: I9a8c2d731e4f1818e6e4aee3c3978777c16ccf19
2020-10-30 05:20:42 +00:00
Amaury Pouly
07fcced4fb Fix volume handling of steps in radio
Change-Id: I6d91c5ebc90f9303c71005f3b954df3a101ab732
2020-10-29 20:26:30 -04:00
Johannes Rauh
44023eb430 Volume adjustment in LISTS ignored AUDIOHW_SETTING values
AUDIOHW_SETTING() defines number of decimals and step size.
This is taken into account in sound menu but ignored in lists
(had been recently fixed in WPS).
This was not a problem so far since all drivers used 0 decimal
places and step size equal 1.

Change-Id: I8807d5b6f2f3d412a2bc5769905bd776553ece0b
2020-10-29 20:08:50 -04:00
James Buren
f1bfbb52f1 iriver_flash: revise cfi_read_id and cfi_get_flash_info
First neither of these functions can fail on supported targets
so they have become void functions. Their return values were
not being used anyway.

Second support for other flash chips not even used on the
supported targets has been removed. It appears they were
only ever used on the discontinued Arch devices.

Third cfi_read_id was restructured to remove obsolete code
for error checking that is not necessary at all. The datasheets
appear to indicate that the commands used cannot fail.

Fourth cfi_get_flash_info was restructured to use a new approach
to initializing the flash_info struct. It no longer initializes
the structure twice.

Fifth the relevant code has been updated to use the full 16 bits
that are exposed by the flash rom ID interface.

Change-Id: I25b1ada3d4621e2d80ac66d3d9a964964268cb3b
2020-10-29 23:01:25 +00:00
James Buren
f65e410497 iriver_flash: rewrite how the flash commands wait for the ROM
This uses the toggle bit method referenced in the datasheets for the
supported ROM chips and moves the code to a reusable subroutine. It
also introduces a short delay to give the bus a chance to recover. The
older ROM datasheet doesn't mention this delay as necessary but the
newer one does so it now does this for both.

Change-Id: Ie9dc8833bbd3ee545072b0c724ab220d13208d3d
2020-10-29 05:30:28 +00:00
William Wilgus
c5c17fa799 Fix display regression from c85d8e2
Basically setting a null buffer is valid but it must be selected
into a screen to initialize to the default buffer

I wrongly assumed screen type wouldn't matter but since I decided to
reference backdrops directly to the default buffer
(since they are saved as an offset from what it later assumes to be the
default framebuffer)
SCREEN_MAIN/SCREEN_REMOTE are not longer optional

Change-Id: I8a8afbbe1e3ed0bfe6abd40ce287638e9fc6da60
2020-10-28 22:55:27 -04:00
Solomon Peachy
c7fb319151 fix checkwps build (introduced in a5a8e00)
Change-Id: Ibc8bced6721b3711e465320a537e15244b2b11b2
2020-10-28 19:38:27 -04:00
Solomon Peachy
a5a8e00b6d Fix a crash introduced in a605cdf70
Pretty subtle problem; looks like the skin core was relying on a
destructor to actually help initialize things.

Change-Id: Ieb4b9e4f11377dec7be61d13759590fc5f4bc921
2020-10-28 18:51:57 -04:00
Solomon Peachy
8c8284bbe6 Fix statusbar display regression from a605cdf700
Change-Id: I4d02ac28e05080458eea6e3f52498321199ecbd3
2020-10-28 17:53:03 -04:00
William Wilgus
c85d8e2865 Framebuffer_viewport Rewrite -- BUG FIX
stride was not initialized for the skin_viewport

fixed a few other questionable areas

Change-Id: I9cc7830a4406857bf3aba26a328c288e3702cddd
2020-10-28 13:25:12 -04:00
Solomon Peachy
a605cdf700 Fix multiple potential null pointer dereferencess
GCC's optimizer thinks all of these _will_ fail at some point

Change-Id: I287eeb574162a5d3b3347654d25aa1f53e9f5563
2020-10-28 08:42:49 -04:00
James Buren
bee736f3ea iriver_flash: make cfi_read_id use FB directly
Change-Id: Id747b0846515443871a0df10d83e3b1fc4731e7c
2020-10-27 16:01:16 +00:00
James Buren
e5b963b8e1 iriver_flash: remove trailing whitespaces
Change-Id: I5f32ba177a2ca559768e621bbad1d896c9adcafa
2020-10-27 16:00:15 +00:00
Solomon Peachy
f62eee569c iriver_flash: we need -fno-delete-null-pointer-checks
Change-Id: I36bbfc81d9cb79a9627e5ba7ee50e1305f54848b
2020-10-26 21:27:46 -04:00
Solomon Peachy
804a49886a statusbar: Make statusbar height equal SYSFONT_HEIGHT
And size elements horizaontally based on SYSFONT_WIDTH

Unfortunately we need 16px icons to make 16px statusbar look right
but at least it _works_ properly now.

Also: all targets currently use 8-px SYSFONT, except some hosted bootloaders

Change-Id: I0cdf97e6ef47ec49693ef79667b200595b4fe075
2020-10-26 19:52:40 +00:00
William Wilgus
04e7bacc4c FIX RED Framebuffer_viewport_rewrite
Change-Id: I716929fbee48bef68d7383efb944f9d491fdfe4d
2020-10-26 15:25:07 -04:00
William Wilgus
ada919fc11 FIX RED framebuffer viewport rewrite
Change-Id: I4cb8f580e15440d06f8d5fabb2fbf5147c67b49c
2020-10-26 14:35:30 -04:00
William Wilgus
9b295ce135 FIX RED/YELLOW framebuffer viewport rewrite
Change-Id: Icfd3b00b646c593991f73550d8a316a80e5930a1
2020-10-26 14:02:49 -04:00
William Wilgus
40e98a2e49 Whitespace cleanup on fb_viewport Rewrite
Change-Id: I24aac41c8abecf7b78a44d7f59e842b791be4563
2020-10-26 12:38:22 -04:00
William Wilgus
3237ae4a4f LCD core move buf ptr and address look up function viewport struct
I'm currently running up against the limitations of the lcd_draw functions
I want these functions to be able to be used on any size buffer not
just buffers with a stride matching the underlying device

[DONE] allow the framebuffer to be decoupled from the device framebuffer
[DONE need examples] allow for some simple blit like transformations
[DONE] remove the device framebuffer from the plugin api
[DONE}ditto remote framebuffer
[DONE] remove _viewport_get_framebuffer you can call struct *vp = lcd_set_viewport(NULL) and vp->buffer->fb_ptr

while remote lcds may compile (and work in the sim) its not been tested on targets

[FIXED] backdrops need work to be screen agnostic

[FIXED] screen statusbar is not being combined into the main viewport correctly yet

[FIXED] screen elements are displayed incorrectly  after switch to void*

[FIXED] core didn't restore proper viewport on splash etc.

[NEEDS TESTING] remote lcd garbled data

[FIXED] osd lib garbled screen on bmp_part

[FIXED] grey_set_vp needs to return old viewport like lcd_set_viewport

[FIXED] Viewport update now handles viewports with differing buffers/strides by copying to the main buffer

[FIXED] splash on top of WPS leaves old framebuffer data (doesn't redraw)
[UPDATE] refined this a bit more to have clear_viewport set the clean bit and have skin_render do its own screen clear
scrolling viewports no longer trigger wps refresh
also fixed a bug where guisyncyesno was displaying and then disappearing

[ADDED!] New LCD macros that allow you to create properly size frame buffers in you desired size without wasting bytes
(LCD_ and LCD_REMOTE_)
LCD_STRIDE(w, h) same as STRIDE_MAIN
LCD_FBSTRIDE(w, h) returns target specific stride for a buffer W x H
LCD_NBELEMS(w, h) returns the number of fb_data sized elemenst needed for a buffer W x H
LCD_NATIVE_STRIDE(s) conversion between rockbox native vertical and lcd native stride (2bitH)
test_viewports.c has an example of usage

[FIXED!!] 2bit targets don't respect non-native strides
[FIXED] Few define snags

Change-Id: I0d04c3834e464eca84a5a715743a297a0cefd0af
2020-10-26 12:28:48 -04:00
Moshe Piekarski
12f3ed1699 make the plugin API frambuffer agnostic
Change-Id: I5abdc231093054c517ff53b9a456997e440e3f6e
2020-10-26 12:28:48 -04:00
Solomon Peachy
5d5f8169b5 statusbar: Respect 'numdecimals' when displaying the volume setting
eg with numdecimals=1, a value of "-300" actually means "-30.0" So
divide it down appropriately, and only display the whole integer
portion.

Change-Id: I62927d2e64b224f3c11640b9bb9e84d60dbde34b
2020-10-26 08:28:34 -04:00
James Buren
dd3ea521ad iriver_flash: correctly calculate when to stop erasing the bootloader
It was originally hard-coded at 0x200 which is 512 sectors. This
only works for the H100 and H120. The larger ROM of the H300 is 1024
sectors in size. In either case the bootloader starts 16 sectors before
the end of the ROM so rely on this fact to correctly calculate where to
stop the bootloader erasure.

Change-Id: Iec4112ebf24379f80a7bf1363035e005c434907e
2020-10-26 02:29:01 +00:00
James Buren
129001909d h300: enable support for iriver_flash
This also modifies the configuration file to include macros
defined in the H100 / H120 implementation.

Change-Id: Iae845889c98661ec548c04fc57e733dcc346c0f1
2020-10-26 01:07:14 +00:00
James Buren
f7e0ce8fb9 h300: expose the firmware functions in the plugin API
Change-Id: Ieff0aa0a4134e347b2ee690d60b25fdac5958a6b
2020-10-26 01:07:14 +00:00
James Buren
1419070b3d iriver_flash: add support for SST39VF3201 ROM chips
These are used in the iRiver H300 series.

Change-Id: Iafbd165bdfd71b691698156d3fd91243c50b3b61
2020-10-25 23:18:21 +00:00