Commit graph

9297 commits

Author SHA1 Message Date
Amaury Pouly
d32891fa59 fuze+: change rendering scheme, do not rely on generic framebuffer and implement rect updating and yuv blitting correctly.
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
2012-01-27 20:08:33 +01:00
Amaury Pouly
05ba5c1971 imx233: update arbiter to get more debug information, update debug screen accordingly
Change-Id: Ia229e5303692712295f1dbd37a76f865a3eef4ea
2012-01-27 20:08:33 +01:00
Amaury Pouly
bf47e577aa imx233: implement dcp blitting, simplify code and make it work even in context interrupt by busy waiting
Change-Id: Ife949e13e3e04a56a2b5bc554eb46c726e719712
2012-01-27 20:08:33 +01:00
Amaury Pouly
900b494a27 imx233: fix PHYISCAL_ADDR to handle the buffered region (hard to debug if misused)
Change-Id: Ibbe9d42ecb91aa04925d557f8231f8a9140dd60a
2012-01-27 20:08:33 +01:00
Michael Sevakis
74736fcfc9 find_first_set_bit tweaks
Correct sizing in m68k asm.
Make the gerneric version far more generic.

Change-Id: I32945f7431771979b3fe0da5472bdb110fd054ae
2012-01-27 11:51:25 -05:00
Boris Gjenero
f4954c4a9b Fix FS#12559: sigaltstack threads fortify failure
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
2012-01-26 20:33:28 -05:00
Thomas Martitz
9a4656bfd0 Include stdlib.h for atexit().
Change-Id: I561bdaf0c6a0b806a136909e40cc4fb2805f6aa3
2012-01-25 22:49:19 +01:00
Thomas Martitz
63ddd15fc6 Fix win32 simulator build (FS#12564).
Change-Id: Ia8c805fd63b6d2d05133e6dd0ad257d31b38e2a0
2012-01-25 22:47:59 +01:00
Frank Gevaerts
f1d3ff4564 Remove ata_removable() and ata_present() from multidriver code.
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
2012-01-25 20:08:51 +01:00
Marcin Bukat
0499aff9d0 WM8750: Extend recording gain range.
Use two stage amplification (PGA gain and digital stage gain)
combined to extend recgain range to -17.25 +60.0dB.

Change-Id: I4df8af801730b7efb2d35096de077ba31d331222
2012-01-25 09:31:34 +01:00
Marcin Bukat
36281c4cc9 MPIO HD300: Fix scrollstip issue at driver level.
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
2012-01-25 09:07:52 +01:00
Marcin Bukat
dc85718bfd MPIO HD300: Use MENU button to go back from debug screens.
Change-Id: I17c0f573de75ab1fd0119d148337e45552eb04b0
2012-01-24 12:27:06 +01:00
Marcin Bukat
e94d1b0ab0 MPIO HD200/HD300: Decrease ADC scanrate.
The adclk is decreased 4x. This solves problems with battery
readout drop during system startup.

Change-Id: I46d7c4b9ffcfdc812a6dd2a932c9e397d33c1168
2012-01-24 12:05:07 +01:00
Thomas Martitz
016bc2452f ypr0: Allow dection of multiple button presses at the same time.
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
2012-01-23 14:50:31 +01:00
Thomas Martitz
de1bcfa24f Fix incomplete comment.
Change-Id: I1874b4e64b3ae19689a0230f10ea623a4d0d1dea
2012-01-22 22:45:10 +01:00
Thomas Martitz
aeae94dbc4 Fix typo in comment.
Change-Id: I3a6813a5eb024aad799bc59c569db54337cb8d1f
2012-01-22 22:39:48 +01:00
Thomas Martitz
38050f46af ypr0: Work around warning introduced by buggy alsa headers.
Change-Id: I7c57ad5504db51d2f7563d2f26ff66f8d189b360
2012-01-22 20:59:20 +01:00
Thomas Martitz
9f4ee79542 Fix checkwps.
Change-Id: Ia530de560c17b9b3a71c3d9117c7cdc72ec7569d
2012-01-22 19:46:27 +01:00
Thomas Martitz
ec36357e8f Fix sdl build warnings
Change-Id: I3e85c63ce246b93572f856b364c9e2ff1b53e52f
2012-01-22 19:38:56 +01:00
Thomas Martitz
91a3978fdc ypr0: Enable asm optimizations.
Change-Id: Ib9f98563a9687827a384e5c7587638f5874cf485
2012-01-22 18:46:45 +01:00
Thomas Martitz
9e7b417452 firmware/target/arm doesn't contain code for hosted anymore.
Change-Id: Id6149d4b81d4c402d18571567645c066224cf6f1
2012-01-22 18:46:45 +01:00
Thomas Martitz
c94cf3b888 Move optimized ffs to firmware/asm, using the new automatic-asm-picking infrastructure.
Change-Id: I5e7bdc8be7de50ef604c16078857fff1b84650dc
2012-01-22 18:46:45 +01:00
Thomas Martitz
5e9b62cd8a ypr0: Use generic lcd memframe driver. 2012-01-22 18:46:45 +01:00
Thomas Martitz
094cbd586f Implement a C version lcd-as-memframe.c and move it and the asm to firmware/asm.
Change-Id: I20c3af0368202493d54fb776530300a39d47873a
2012-01-22 18:46:45 +01:00
Thomas Martitz
a035261089 Move optimized memcpy and friends and strlen to firmware/asm,
using the new automatic-asm-picking infrastructure.
2012-01-22 18:46:45 +01:00
Thomas Martitz
8e8e978de6 Add framework to let make automatically pick optimized asm implementations over generic C ones to firmware.
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
2012-01-22 18:46:45 +01:00
Thomas Martitz
3c17f28eca Move pcm_mixer helper routines to firmware/asm. 2012-01-22 18:46:45 +01:00
Thomas Martitz
991ae1e395 Create fimrware/asm directory for assembly optimized stuff.
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
2012-01-22 18:46:44 +01:00
Amaury Pouly
eaa83bd647 imx233: fix clkctrl code (some registers don't have a SET/CLR variant)
Change-Id: I3ce6a77cdc5ea89e1e43bc00c9ec43664e765fdc
2012-01-21 20:15:29 +01:00
Thomas Martitz
d3ae11d75a android/ypr0: Merge lc-*.c to generic lc-unix.c.
Change-Id: Ica76dec903486c32fda8355acdc58f0315c4d384
2012-01-21 18:39:20 +01:00
Thomas Martitz
5d13ecc4a8 android/ypr0: Merge fs-*.c to generic filesystem-unix.c.
Change-Id: I52e2c29346baf0d282243880477cd149311ce3d1
2012-01-21 18:39:19 +01:00
Thomas Martitz
954cd771fb android/ypr0: Merge kernel-*.c to generic kernel-unix.c.
Change-Id: Ife3fceb53829ef4e13bae73d8d2f10d7e56d484d
2012-01-21 18:39:19 +01:00
Thomas Martitz
856bb42037 ypr0: Fix build failure.
Change-Id: I327d58fde66fc7fa65f91e0ca724c3fd8066ccf6
2012-01-21 18:39:19 +01:00
Thomas Martitz
5b4a6c4267 Hosted: Merge debugf() implementations. Cleanup debug.h.
Fixes debug build for ypr0.

Change-Id: I9c0eff651dcf268a3fafed1a71fcc47f3e323d36
2012-01-21 18:39:19 +01:00
Thomas Martitz
cf333a61c7 Move supprt-arm.S to separate library.
Core, codecs and plugins link it separately so this gets rid of SOURCES trickery.
Don't build it for hosted targets.

Change-Id: If15ef90e93cd218a4352ae8e89eea95d3122452f
2012-01-21 18:39:19 +01:00
Thomas Martitz
34b0311d0e hosted/pcm/alsa: Use alternate signal stack for the async callback.
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.
2012-01-21 18:39:19 +01:00
Boris Gjenero
109084d5cb Fix FS#12555: Use smoothed battery voltage for level and runtime calculation
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
2012-01-21 12:10:31 -05:00
Frank Gevaerts
6e11289cc2 Set HOME_DIR to "/". Should fix FS#12500.
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
2012-01-17 18:44:29 +01:00
Andrew Ryabinin
978e506f1b HM-60x: Implement power off.
Change-Id: Ia3ae38bba09996e1d1e6043f340dbbc3a2ad68b5
2012-01-17 19:49:28 +04:00
Rafaël Carré
7b28711f6c usb-s3c6400: store endpoint status per direction
Just as like all other drivers do
Confirmed to work on Nano2g
2012-01-16 18:29:38 -05:00
Amaury Pouly
66c3086ae5 imx233: oops, forgot file
Change-Id: I2c672b51ac24bfcea7ce2b663deef18e02bc4b1f
2012-01-15 18:43:32 +01:00
Amaury Pouly
35ba39e57f imx233: add DCP driver (only memcpy implemented), move channel arbiter to kernel-imx233
Change-Id: I2bc5a49459c354027fc67a880bbf3b87c942bdd0
2012-01-15 02:29:30 +01:00
Amaury Pouly
8cadb587e8 fuzeplus: fix lcd-target.h (LCD_FRAMEBUF_ADDR must point to lcd_framebuffer and not FRAME)
Change-Id: Ia1f16f9b8e3041517b60336c06aedd40dfd2be12
2012-01-15 02:29:30 +01:00
Michael Sevakis
cc26850135 Cut a few instructions from lcd_copy_buffer_rect.
Change-Id: I5159534f90b041c6ffefc00c8f91abc68ca6eb42
2012-01-14 16:17:18 -05:00
Amaury Pouly
5ef27368f1 lcd: fix function name in comments in assembly files (lcd_write_yup_420 instead of lcd_write_yuv420) 2012-01-11 13:14:30 +01:00
Michael Sevakis
5093e68e65 Fix Clip Zip bootloader build.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31644 a1c6a512-1295-4272-9138-f99709370657
2012-01-09 05:23:25 +00:00
Michael Giacomelli
36613d57fa Commit FS#12454 - Faster line scroll speed by Martin Sagmuller.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31643 a1c6a512-1295-4272-9138-f99709370657
2012-01-09 03:26:03 +00:00
Michael Sevakis
307cb04948 AS3525v1/2: Enable nested handling of interrupts
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
2012-01-08 22:29:25 +00:00
Bertrik Sikken
3d9f3f47d9 Remove duplicate #include "button.h"
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31636 a1c6a512-1295-4272-9138-f99709370657
2012-01-08 12:57:02 +00:00
Rafaël Carré
4fc27c16ae adc-as3514.c : move to drivers
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31629 a1c6a512-1295-4272-9138-f99709370657
2012-01-08 02:33:43 +00:00