Now lcd_framebuffer is the only framebuffer in the system. We still use a ARM-buffered buffer
which serve as an intermediate buffer for copying, to accomodate the requirement of the controller.
We implement lcd_update_rect() properly using this new scheme (this requires two little quirks),
this allows to implement lcd_blit_yuv with the right semantic (bypasses the framebuffer). YUV to RGB
conversion is still done in software but the DCP CSC should be able to do that but the hardware rotation
scheme is not the same as our software so it will require some tricks.
Change-Id: I0752e9c2f1a705d2e6a6010084e1f150965d8370
Ubuntu defines _FORTIFY_SOURCE=2, which causes glibc longjmp() to check sp
when gcc optimization is enabled. The check does not allow longjmp() to be
used for switching threads and results in a "longjmp causes uninitialized
stack frame" error. This disables the check.
Change-Id: Idb8877b43ce711df880ca88875ba5477445a577a
ata_removable() and ata_present() no longer exist (ATA drives are never
removable with our current drivers), so storage.c shouldn't try to call
them from the wrapper functions. This was never noticed because these
wrapper functions are only used for multidriver code, which happens not
to be used with ATA currently.
Change-Id: Icb5e8cb27cdbef3edc0e51c35dc40dadf4f9de29
Use two stage amplification (PGA gain and digital stage gain)
combined to extend recgain range to -17.25 +60.0dB.
Change-Id: I4df8af801730b7efb2d35096de077ba31d331222
Scrollstrip (as well as scrollwheel on ipods/sansas) works like
quadrature encoder. The states of input lines are tracked by the
gpio ISR and when the sequence is correct, appropriate button
event is pushed to the button queue directly. The downside of
this implementation is that scrollstrip doesn't emit _REL
events which has some weird consequences. For the scrollwheels
some hack have been crafted in action system to accomodate for
this. I don't like this approach. IMO the correct fix is to
properly emit _REL event when the user stops interacting with
the device or reverses the direction of the move. This patch
implements timeout which forces to emit _REL when expired.
Change-Id: I588ac5810dd2ab00c68935d23a62979cb1c2a912
Reading from /dev/r0Btn only allowed to read one button at a time. Reading GPIO
directly via ioctl() doesn't have this limitation.
This adds a more complete GPIO list also.
Change-Id: If47b0846472f0817305dbf930731255f875e0269
Author: Lorenzo Miori
Example: for a file asm/foo.c, make will look for asm/arm/foo.[cS] and
compile it if found. If not found it'll fall back to asm/foo.c.
Also introduce new ARCH make variable. This is automatically detected by
configure. It is distinct from CPU since CPU defines the dir used for
the target tree (i.e. firmware/target/X, so it can be "hosted").
ARCH really has the target isa and can be x86 for sims/raaa too.
Change-Id: I18e5d2b7b7bbc2ad2be551a74a0fcae5ffbcbf8b
This dir is suitable for stuff that doesn't fit the target tree, e.g. because
it also builds on hosted or otherwise. It also has a generic subfolder for
fallback C implementations so that not all archs need to provide asm files.
SOURCES should only contain "foo.c" where foo.c includes the specific
<arch>/foo.c files from the subdirs using the preprocessor. This way automatic
selection of asm versions or generic C verion is possible.
For the start, the thread support files are moved, since ASM threads can
be used on hosted platforms as well. Since core_sleep() remains platform
specific it's moved to the corresponding system.h headers.
Change-Id: Iebff272f3407a6eaafeb7656ceb0ae9eca3f7cb9
Core, codecs and plugins link it separately so this gets rid of SOURCES trickery.
Don't build it for hosted targets.
Change-Id: If15ef90e93cd218a4352ae8e89eea95d3122452f
Signals are by default executed on the user stack, i.e. the stack of
the currently active thread. This has two problems:
1) The stack size of the current stack is likely insufficient (unless
using sigaltstack threads) because our stack sizes are normally
below MINSIGSTKSIZE which is needed to deliver a signal.
2) Some of our asm code does nasty tricks with the stack pointer. When a
signal comes in during this bad things can happen, e.g. random memory
being overwritten or simply a crash.
Using a well defined stack fixes this. This is comparable with the
separate irq stack on native targets.
The debug screen gets un-smoothed battery status via battery_read_info().
The level and runtime that is normally presented to the user needs to be
based on smoothed voltage.
Change-Id: Icb448853973aa1d5832e9094176938cfa12b2e48
The reasons for not using / don't seem to be valid (It can lead to //,
true, but not on any system where // is actually special, and
create_*_filename() handles / fine albeit not perfectly (more //)).
Handling /./ is desirable, but we can't afford to leave all automatic
filename generation broken indefinitely while people discuss possible
approaches.
Change-Id: I6718ea28d7c91e19f7da89f76c8cefd92e12fe5e
Mostly for the sake of reducing latency for audio servicing where other service
routines can take a long time to complete, leading to occasional drops of a
few samples, especially in recording, where they are fairly frequent.
One mystery that remains is GPIOA IRQ being interrupted causes strange
undefined instruction exceptions, most easily produced on my Fuze V2 with a
scrollwheel. Making GPIOA the top ISR for now, thus not interruptible, cures it.
SVC mode is used during the actual calls. Hopefully the SVC stack size is
sufficient. Prologue and epilogue code only uses the IRQ stack and is large
enough.
Any routine code that should not be interrupted should disable IRQ itself from
here on in.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31642 a1c6a512-1295-4272-9138-f99709370657