Also audiohw driver to specific device name, rewrite alsa controls code to
cache more data, thus making the code easier and use less stack. Avoid using
short/long in pcm alsa code since it's the wrong size on 64-bit (simulator
for example)
Change-Id: Ibc1ec44396e37b6cbdedbcf37300878638e5d2d3
several issues I saw that could pontentially cause problems
scroll engine doesn't take text height into account when checking bounds
NBELEMS was one whole row too large hopefully I got them right this time
Change-Id: If303da8320429c3964fc675351cb088d46303745
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
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
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
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
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
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
Qt6 doesn't contain QTextCodec anymore but instead provides it in the
optional core5compat module.
Change-Id: Ia45985a32df3826faf041981b8935c839946e5c9
Replace QProcess::pid() which has been replaced with
QProcess::processId() starting with Qt5.3 and removed from Qt6.
Change-Id: I9b2d38f8e490e2e4c0afb5cbb409f6a17a98efbd
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
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
Pretty subtle problem; looks like the skin core was relying on a
destructor to actually help initialize things.
Change-Id: Ieb4b9e4f11377dec7be61d13759590fc5f4bc921
* arm failures in lua, wolf3d, quake, flac
* m68k failures in lua, wmapro
* mips ???
I still think that most of these are actually due to latent bugs or
ambiguous code.
Change-Id: I4c9751d2b5c7a66253b313bfbc75fcd721b118d6
Basically we're overflowing IRAM by 48 bytes. Shrink the stack
by 48 bytes to compensate.
Fixing this properly will require careful decisions about what
(code and/or data) to eject from IRAM.
Change-Id: Ia3054280bcbd9813b9cce83f16ba4fbd15085110
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
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
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
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
In short, the display fading back in after a pause resuming interferes
with the audio codec, causing BadThings(tm) that cannot be recovered from
This really is just avoiding a known trigger; there's no guarantee this
condition won't occur under random circumstances during normal use,
and there's no good way to work around this from within rockbox.
I suspect the underlying problem is that both the display control and
codec control share an i2c bus, but the kernel drivers implementing them
isn't using proper linux bus access/locking.
Change-Id: Id4f56f9cb269ed74aac2f041146b3630cef09030
This also modifies the configuration file to include macros
defined in the H100 / H120 implementation.
Change-Id: Iae845889c98661ec548c04fc57e733dcc346c0f1