Commit graph

18 commits

Author SHA1 Message Date
Thomas Martitz
a54c687300 Apparently make doesn't like inline comments
Change-Id: If604af9713cf95dafbeb1a601219ca1b3a8964fa
2012-03-28 23:14:39 +02:00
Thomas Martitz
7b1a369cf7 build system: completely autodetect target cpu architecture.
The existing ARCH Makefile variable is exported to the C code as well.
Additionally the version (arm-only for now) is detected as well. This
allows to for complete autodetection, i.e. that optimized ASM is picked up
if determined by preprocessor (CPU_ARM, etc).

Building a sim/raaa on a arm host will now automatically generate a arm
optmized build like we have for native targets.

Change-Id: I0b35393f8fb3ebd20beaa9e7371fa57bf3782107
2012-03-28 23:02:39 +02:00
Michael Sevakis
64bb720edf Coldfire: Optimize emac context save/restore in mixer ISR.
Save only once if emac is used in ISR and restore only once per ISR
call if already saved.

Change-Id: I0e40db5d4aab2a8552480f76873f59ff6ccd9977
Reviewed-on: http://gerrit.rockbox.org/176
Tested-by: Michael Sevakis <jethead71@rockbox.org>
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
2012-03-12 00:16:12 +01:00
Michael Sevakis
286a4c5caa Revise the PCM callback system after adding multichannel audio.
Additional status callback is added to pcm_play/rec_data instead of
using a special function to set it. Status includes DMA error
reporting to the status callback. Playback and recording callback
become more alike except playback uses "const void **addr" (because
the data should not be altered) and recording  uses "void **addr".
"const" is put in place throughout where appropriate.

Most changes are fairly trivial. One that should be checked in
particular because it isn't so much is telechips, if anyone cares to
bother. PP5002 is not so trivial either but that tested as working.

Change-Id: I4928d69b3b3be7fb93e259f81635232df9bd1df2
Reviewed-on: http://gerrit.rockbox.org/166
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
2012-03-03 07:23:38 +01:00
Michael Sevakis
9a25a6fe19 beep/mixer code: Code police a bit.
/firmware is in the #include path with makes #include "asm/beep.c" sufficient.

Add a comment to generic beep code and make another express intent better.

Change-Id: I587cd704478b894785927bdfe2e647e28614df62
2012-02-19 00:38:58 -05:00
Michael Sevakis
9a32a7b404 Split CPU-optimized beep code into the firmware/asm tree.
For now due to current lack of an apps/asm, place the ASM/generic code in the
firmware/asm directory.

Additionally, make generic beep code more generic.

Change-Id: I4a69b6ffcbb97d9e6dfde2209c5a118de19e5638
2012-02-18 04:50:33 -05:00
Michael Sevakis
43e6d7aef8 Urgh...actually change all the stuff I'm supposed to.
Goofed a couple fn params.

Change-Id: I2474d10fe08d2629ada54c83e201ee91c596d854
2012-02-05 22:48:47 -05:00
Michael Sevakis
691c7a7614 Make generic pcm-mixer.c more generic in the way it writes output.
Also remove unused firmmware/asm/generic directory.

Change-Id: If1961f96f4292f00227a9b0148181152ac405e51
2012-02-05 22:35:23 -05:00
Michael Sevakis
67dd4d6995 Generic find_first_set_bit can use __builtin_ctz instead of __builtin_ffs
The former gives 0-based indexes, which is what our implementation returns,
making the "- 1" unnecessary.

Change-Id: I172ab5e06695be62e4a18d4fd0415b8314f5dc26
2012-02-04 18:08:17 -05: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
Thomas Martitz
aeae94dbc4 Fix typo in comment.
Change-Id: I3a6813a5eb024aad799bc59c569db54337cb8d1f
2012-01-22 22:39:48 +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