Commit graph

31505 commits

Author SHA1 Message Date
Michael Sevakis
3fd25dcbed Purge the usage of DSP_SWITCH_FREQUENCY.
DSP_SWITCH_FREQUENCY has been deprecated and the same enumerated value
as DSP_SET_FREQUENCY since major DSP revisions were committed. This
task should have been performed much earlier but, oh well, do it now.

Change-Id: I3f30d651b894136a07c7e17f78fc16a7d98631ff
2013-05-05 00:48:40 -04:00
Michael Sevakis
fd00d3cf48 Fix FS#12859 - Bass/Treble not doing anything in new builds
Just one more SNAFU after redoing sound.c. Software bass/treble controls
in the DSP expect .1 dB gain increments but the gains were being set as
1 dB increments because that's what the AUDIOHW_SETTING specifies. Just
x10 the gains given to audiohw_set_bass/treble.

Change-Id: Id5296f93908ec0036a5605d3a60a2cb5eec91bb5
2013-05-04 22:46:18 -04:00
Dominik Riebeling
736c3780f1 Change the order of global linker options and -T.
95e23de made -Wl,--gc-sections appear after -T by combining it with the global
linker options. Moving the global linker options in front of -T seems to fix
the crash observed on mini2g after that change -- as it seems the linker
behaves differently if --gc-sections is passed after -T.

Fixes FS#12857.

Change-Id: Id64dc6b91726760d75a1a0cd85bb7c06208d2f45
2013-05-04 22:25:24 +02:00
Dominik Riebeling
8a1cd81b3a Move building libraries to separate Makefile.
Previously several additional rules were added by qmake to build the required
libraries. This has a couple of problems on Windows, requiring the use of a
msys shell.

Additional variables are passed as environment variables. Windows doesn't
understand this. Passing the variables via make command line argument works but
make won't be able to change those variables anymore, breaking things. Use
intermediate variables passed via make command line that are then exported by
the called Makefile. This doesn't work in the generated Makefile since the
export lines must not be part of a rule.

Also cleans up the project file a bit.

Change-Id: Iaffb059ce8bafe17a35bd1e0a74ae7acd966c138
2013-05-04 21:41:50 +02:00
Dominik Riebeling
d964199cc7 Replace use of uname by checking the compiler output.
Similar as done in ea0bfe7 ask the compiler for the binary it creates instead
of using uname to figure the target.

Simplify source file preprocessing to avoid using grep to improve compatibility
with Windows.

Change-Id: I39ecfe690c9bb70b07b0af5a7804d7e5ab512d71
2013-05-04 21:41:50 +02:00
Dominik Riebeling
460e959aa9 Allow overriding make variables via environment variables.
Fixes cross compiling for Rockbox Utility.

Change-Id: I3419cb4c89836ec3bee10072495042b3732fd66b
2013-05-04 21:41:49 +02:00
Dominik Riebeling
d566fd5209 Revert "Don't set CORE_GCSECTIONS in fixedpoint.make."
While it made the mini2g not crash during startup anymore further tests showed
that other mini2g devices still exhibit the crash, or end up with a "No
partition found" error; furthermore  the device tested first still crashes on
USB disconnect. Therefore the change doesn't really help with the problem, and
at the expense of increasing binary size for all other targets there is no
point in keeping it for now.

This reverts commit 850491a043.
2013-05-04 21:41:49 +02:00
Michael Sevakis
1a4acc9d1e Fix missed optimization opportunity in dsp_process.
Input type can only change once per call because the DSP parameters
are only copied at the start and input is always taken from the src
buffer which means sample input format switching can be once per call
instead of once per loop.

Change-Id: Ifa3521753428fb0e6997e4934f24a3b915628cc7
2013-05-04 14:23:21 -04:00
Michael Sevakis
78a45b47de Cleanup and simplify latest DSP code incarnation.
Some things can just be a bit simpler in handling the list of stages
and some things, especially format change handling, can be simplified
for each stage implementation. Format changes are sent through the
configure() callback.

Hide some internal details and variables from processing stages and
let the core deal with it.

Do some miscellaneous cleanup and keep things a bit better factored.

Change-Id: I19dd8ce1d0b792ba914d426013088a49a52ecb7e
2013-05-04 13:43:33 -04:00
Andrew Ryabinin
cdb71c707b Fix red.
Change-Id: I64cf91a2ddc4fbf89d83bb5a401e9e4021f8c160
2013-04-30 15:18:27 +04:00
Andrew Ryabinin
61f9dbce3b rk27xx: initialize i2c driver in bootloader.
Change-Id: I0b343425d0cfef4d4609cabca79c1f31d8327d3b
Reviewed-on: http://gerrit.rockbox.org/459
Reviewed-by: Andrew Ryabinin <ryabinin.a.a@gmail.com>
2013-04-30 13:09:49 +02:00
Frank Gevaerts
aa801b5e0f European Portuguese update by Tiago Roque Medeiros
Change-Id: Ifab5276fa746d7c989913428a30d408987ee23f4
2013-04-29 21:13:58 +02:00
Dominik Riebeling
850491a043 Don't set CORE_GCSECTIONS in fixedpoint.make.
fixedpoint.make is not a subdir Makefile but a lib Makefile. Setting
CORE_GCSECTIONS in it will affect the final link and make it always use
--gc-sections (for SWCODEC Rockbox), since libfixedpoint is always needed
(bootloader and HWCODEC don't use libfixedpoint).

Fixes FS#12857.

Change-Id: Ib30bd03cbcea9c339a73daf7b673868aa3cc7a88
2013-04-28 21:09:10 +02:00
Michael Sevakis
08199cd6cb Provide high resolution volume and prescaler to hosted targets.
HAVE_SW_VOLUME_CONTROL is required and at this time only affects the
SDL targets using pcm-sdl.c.

Enables balance control in SDL targets, unless mono volume is in use.

Compiles software volume control as unbuffered when
PCM_SW_VOLUME_UNBUFFERED is defined. This avoids the overhead and
extra latency introduced by the double buffer when it is not needed.
Use this config when the target's PCM driver is buffered and sufficient
latency exists to perform safely the volume scaling.

Simulated targets that are double-buffered when made as native targets
remain so in the sim in order to run the same code.

Change-Id: Ifa77d2d3ae7376c65afecdfc785a084478cb5ffb
Reviewed-on: http://gerrit.rockbox.org/457
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
2013-04-27 06:59:27 +02:00
Dominik Riebeling
370ed6de7c Properly seek to next id3v2 frame for unsynced tags.
When seeking to the next id3v2 frame we need to consider if the tag has the
unsync flag set. Not doing so will likely make parsing end up in the middle of
the current frame if the frame size exceeds the upper limit set during read.
The latter usually happens for album art frames.

Fixes FS#12849.

Change-Id: Ic92853eef4374508d84df347bcc66b6661d5037d
2013-04-26 22:45:04 +02:00
Bryan Childs
1489fa3a15 Adapt logic in configure script to cope with both x86 and x86_64 architecture Android NDKs
Change-Id: I520443a17f1d9ced43222e14182ca4726717bc32
Reviewed-on: http://gerrit.rockbox.org/458
Reviewed-by: Frank Gevaerts <frank@gevaerts.be>
Tested-by: Frank Gevaerts <frank@gevaerts.be>
2013-04-26 21:42:15 +02:00
Michael Sevakis
a2d8d4293a Properly implement volume in warble. dB cut only.
Change-Id: I34b77287ba0b1a0002db3d52e893a52c50593362
2013-04-25 23:46:17 -04:00
Michael Sevakis
5314fb2103 Add $(SHARED_CFLAGS) to fixedpoint.make to quash amd64 errors in 95e23de.
Thanks to Frank Gevaerts.

Change-Id: I6ca1d0258bfc70950d0ad5c2975d2bd88060b8a3
2013-04-25 18:36:01 -04:00
Michael Sevakis
95e23defb0 Make fixepoint.c as a shared library (libfixedpoint.a).
Change-Id: Icc10d6e85f890c432f191233a4d64e09f00be43d
Reviewed-on: http://gerrit.rockbox.org/456
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
2013-04-26 00:11:04 +02:00
Michael Sevakis
8829e909b4 Bass/Treble caps should exist implicitly with HAVE_SW_TONE_CONTROLS.
If AUDIOHW_CAPS is defined without explicit BASS_CAP/TREBLE_CAP while
HAVE_SW_TONE_CONTROLS is defined, AUDIOHW_HAVE_BASS/TREBLE should be
defined or otherwise the tone controls won't show up. TREBLE/BASS were
being defined if AUDIOHW_CAPS was NOT defined, but the same rule should
apply if the codec needs to specify other caps but doesn't use hardware
tone controls.

(I'm surprised noone noticed some settings gone missing :-)

Change-Id: I85b5c467bab07bb62362a0dc2d582267ac2d8ec9
2013-04-25 16:37:12 -04:00
andypotter
ecaa401660 Add Serial Port 1 support for iPod Photo/Color/4G/Mini2G
Based on FS#9920 by Ryan Press with changes to selection logic so
that it works on my iPod Photo. Should also work on iPod Color/4G
and Mini2G. Moved all target specific code from
firmware/drivers/serial.c into new file
firmware/target/arm/pp/uart-pp.c in the same manner as other
target specific uart code.
Update to fix build error on ipodmini2g by adding defines in config file.
Removed unwanted whitespace
Tested on iPod Photo.

Change-Id: Ia5539563966198e06372d70b5adf2ef78882f863
Reviewed-on: http://gerrit.rockbox.org/455
Reviewed-by: andypotter <liveboxandy@gmail.com>
Tested-by: andypotter <liveboxandy@gmail.com>
Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
2013-04-25 21:02:09 +02:00
Bryan Childs
354c989406 Update instructions in docs/README to change 'Check out from SVN' to 'Clone from git'
Change-Id: Ic462909f66edf66894a17e91f34f92261df47f11
2013-04-24 11:11:38 +01:00
Michael Sevakis
21b62bd893 Make pcm_sw_volume.c a bit less verbose by merging volume code.
pcm_set_master_volume had two implementations, one for a prescaler
and one without one but the differences can be made minimal enough
to combine them.

Change-Id: I889e60b50b9f046c093853cb1685058796fe9067
2013-04-23 21:33:55 -04:00
Michael Sevakis
4f2c0c1ed2 Oops. Revert a pointless change.
Change-Id: I082411145a411ca7d41b359dea419ef8190d70ce
2013-04-22 20:55:47 -04:00
Michael Sevakis
e61e9c61d0 Do some cleanup, adjustment and a couple fixes to recent sound changes.
* SOUND_x enum can be generated by audiohw_settings.h along with settings
entries and sound_val2phys.

* VOLUME_MIN and VOLUME_MAX are no longer necessary within sound.c. If
you need them, they are for target-defined purposes.

* Fix up SDL volume implementation in sdl.c. Move sim volume calculation
code to pcm-sdl.c.

* Min trigger tresholds were based upon VOLUME_MIN for some reason.
These setting have nothing to do with playback volume. Since it is no
longer present, set these at -89dB which is the minimum peak meter
sensitivity setting.

* Fix an oversight in wm8758.c. I forgot to add the dB->register
conversion to audiohw_set_volume.

Change-Id: Ie1df33f1793eee75e6793f16bc7bddd16edb7f75
2013-04-22 20:38:17 -04:00
Alex Parker
91b33d5a3e Manual: fix minor error with D2 OF filenames
Change-Id: Ieeca972ae819d33309d204f96d17471e5e390139
2013-04-20 14:41:12 +01:00
Marcin Bukat
62cb84a57c imageviewer: fix animated gifs handling
If disposal method is set to BACKGROUND one would expect that
canvas should be restored to global background color. That is
what gif standard suggests. Most (all?) decoders however treat
this as reseting canvas to transparency or fixed, decoder
specific background color. Virtually all gifs are prepared with
this in mind so to not break them we can't follow standard here.

Change-Id: I90ca712bba89d4190771eb5320eabda353d3e2bb
2013-04-18 09:42:48 +02:00
Michael Sevakis
540e5d103f Forget about fixedpoint.c in any HWCODEC bin.
It bloats to much just for one simple use. Just use a simple function
for shifting sound setting decimal places.

Change-Id: I1a7d37cce6ada3c6e6600dc0d301f354ffeff231
2013-04-15 16:11:28 -04:00
Michael Sevakis
333f4f52be Fix final error from 0c7b787 in Player sim.
Change-Id: Ifeebed8f594fc56acbbd2439fb8186566cc04de8
2013-04-15 15:19:39 -04:00
Marcin Bukat
b2dd1f8d46 rk27load: Fix stage1 (dram init routine)
Change-Id: I9f7bbb7e938bd5886c11533b1aa939bd27cab555
2013-04-15 21:04:21 +02:00
Michael Sevakis
5261b19bdf Still at it for 0c7b787. Might be done now.
Change-Id: Idf45731dc6554954747f6036dc6dfcd4b63981a1
2013-04-15 14:58:00 -04:00
Michael Sevakis
9e71fd16a5 Keep fixing 0c7b787 stuff
Change-Id: I0678d3307fbcad32156f9f4e0f8b90eed5a20d92
2013-04-15 14:00:48 -04:00
Michael Sevakis
bbd991ad63 Fix some more errors and warnings from 0c7b787.
Change-Id: Ib67d0ab344e36964cadbcc982dc2afe35733770b
2013-04-15 13:24:29 -04:00
Michael Sevakis
0971f57634 Hopefully knock out most of the red and yellow from 0c7b787.
Change-Id: Ib8dd0d011b11ee3eded3025308f19ddb5d151b59
2013-04-15 12:39:04 -04:00
Michael Sevakis
0c7b787398 Straighten out the mad twisted state of sound.c and related areas.
This is going right in since it's long overdue. If anything is goofed,
drop me a line or just tweak it yourself if you know what's wrong. :-)

Make HW/SW codec interface more uniform when emulating HW functionality
on SWCODEC for functions such as "audiohw_set_pitch". The firmware-to-
DSP plumbing is in firmware/drivers/audiohw-swcodec.c. "sound_XXX"
APIs are all in sound.c with none in DSP code any longer.

Reduce number of settings definitions needed by each codec by providing
defaults for common ones like balance, channels and SW tone controls.

Remove need for separate SIM code and tables and add virtual codec header
for hosted targets.

Change-Id: I3f23702bca054fc9bda40f49824ce681bb7f777b
2013-04-15 12:02:05 -04:00
Thomas Martitz
fd9e256890 Use equivalent puts_scroll() call.
Change-Id: I09e5046f153a276fa6eb047e040b8f752e73d03c
2013-04-14 18:04:46 +02:00
Marcin Bukat
fd6ab02912 rk27xx: do not attenuate signal twice in analog bypass mode
Change-Id: I108091adaa05e53ccb8bbe3d60ca35e2191a39fd
2013-04-12 21:43:17 +02:00
Marcin Bukat
490db740a1 rk27xx: avoid one multiply in udelay() as pointed by kugel
Change-Id: Ie33a393b0d4c4b45975ca53ced91dd9f03369db1
2013-04-12 10:08:45 +02:00
Marcin Bukat
3c802a95ed rk27xx: make udelay() more accurate
Change-Id: Ic448c4e5ec52af6aaeebccee4feea49954394677
2013-04-12 09:27:41 +02:00
Andrew Ryabinin
6be8097651 hm60x/hm801: Fix balance by enabling sw volume control.
Change-Id: I8760b58d5b801409f35370d812d72f8d578d2889
2013-04-12 10:11:54 +04:00
Michael Sevakis
2dd1f37a10 Fix f5a5b94 errors. Employ SW volume for select targets on SIM.
Onda VX747 sim was missing a limits #define; #include limits.h in
pcm_sw_volume.h.

Simply use the software volume control for the SIM volume control
rather than the SDL volume control when the target would have it
natively.

Change-Id: I8e924a2ff1b410f602452d2ea9b691efb82c931e
2013-04-11 19:00:23 -04:00
Michael Sevakis
f5a5b94686 Implement universal in-PCM-driver software volume control.
Implements double-buffered volume, balance and prescaling control in
the main PCM driver when HAVE_SW_VOLUME_CONTROL is defined ensuring
that all PCM is volume controlled and level changes are low in latency.

Supports -73 to +6 dB using a 15-bit factor so that no large-integer
math is needed.

Low-level hardware drivers do not have to implement it themselves but
parameters can be changed (currently defined in pcm-internal.h) to work
best with a particular SoC or to provide different volume ranges.

Volume and prescale calls should be made in the codec driver. It should
appear as a normal hardware interface. PCM volume calls expect .1 dB
units.

Change-Id: Idf6316a64ef4fb8abcede10707e1e6c6d01d57db
Reviewed-on: http://gerrit.rockbox.org/423
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
2013-04-11 22:55:16 +02:00
Marcin Bukat
a9049a79d7 fix yellow
Change-Id: Ide0df2c3719d6100c6dc61515bf7acf6ac11231b
2013-04-11 11:42:12 +02:00
Amaury Pouly
a924df8d6d rk27xx: implement radio support
Change-Id: I59d3905e9b2a3df8aa235e424c7a6e0eff6d73e9
Reviewed-on: http://gerrit.rockbox.org/427
Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
Tested-by: Marcin Bukat <marcin.bukat@gmail.com>
2013-04-11 11:18:23 +02:00
Michael Sevakis
f49e750531 Move fixedpoint.h to be accessible in /firmware.
Will need it soon enough.

Combine the contents of all the various fixedpoint.h files.
Not moving fixedpoint.c for now since I'm not sure where it
should be and it causes some dependency issues.

Change-Id: Ideacbca2ca78f9158c2b114b113c274f68e908d5
2013-04-10 13:28:35 -04:00
Michael Sevakis
f5b7134f59 Consolidate identical fixedpoint exp and ln functions.
grey_core.c and fixedpoint.c each had their own copies. grey_core.c
can use the ones fixedpoint.c. fixedpoint.c gets the more complete and
optimized version of fp_16exp from grey_core.c.

Change-Id: I43ee3add60796b06ed12012fbbd91815d64675a6
2013-04-09 19:07:35 -04:00
Dominik Riebeling
9a19a22d85 Add missing USB IDs.
The new autodetection will always use USB IDs to identify players (among other
means). Add missing IDs for players the current implementation relies on other
means for detection only.

Change-Id: I037c23705518210b6ed93b4d13ccb96d933aa198
2013-04-09 22:55:55 +02:00
Dominik Riebeling
e30b3d84e8 Change autodetection result to a list.
Both autodetection functionality and the configuration dialog assumed detection
to only return one found device. This isn't necessarily true, especially since
some players can be detected but detecting their mountpoint might be ambiguous
(only if no previous Rockbox installation is present).

Instead of returning individual results (found "ok" player, found "error"
player etc.) return a list containing an entry for each player. Current
autodetection code will never return more than one entry since it doesn't
handle multiple devices yet, and the configuration dialog will show an error if
multiple devices are found. Thus there is no user visible change yet. Both
autodetection and configuration dialog can now get extended to handle multiple
devices.

Change-Id: I79b763dbd6e7111783194bcc22ab7cc06a4061c1
2013-04-09 22:39:13 +02:00
Marcin Bukat
e6c0bd0350 rk27xx: fix i2c driver
Change-Id: I205cc92f452c1990c64da7e91b2baf00b920c922
2013-04-09 09:31:40 +02:00
Richard Quirk
dcba74155e bookmark: add cancelling of autoload bookmark
When autoload bookmark is set to "Ask", navigate to a file with
bookmarks in that directory. Select the file and the bookmark list
appears. Even if you chose to cancel, the track started prior to this
patch.

Change-Id: I453999a9bc20faae97f9cf2080ef613c602ad8e1
Reviewed-on: http://gerrit.rockbox.org/416
Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
2013-04-06 11:35:36 +02:00