diff options
author | Udo Schläpfer <rockbox-2014.10@desktopwarrior.net> | 2015-02-02 21:44:29 +0100 |
---|---|---|
committer | Udo Schläpfer <rockbox-2014.10@desktopwarrior.net> | 2015-02-02 21:57:55 +0100 |
commit | dbabd0d9c34a33bc0c51243ec37f230d117db955 (patch) | |
tree | 46de348929ce739702a230a2587fdb5539585753 /firmware/drivers | |
parent | cef17e3d59ad93f766e8ee23b1610540a33dfe5e (diff) | |
download | rockbox-dbabd0d9c34a33bc0c51243ec37f230d117db955.tar.gz rockbox-dbabd0d9c34a33bc0c51243ec37f230d117db955.zip |
iBasso DX50/DX90: Major code cleanup and reorganization.
Reorganization
- Separated iBasso devices from PLATFORM_ANDROID. These are now standlone
hosted targets. Most device specific code is in the
firmware/target/hosted/ibasso directory.
- No dependency on Android SDK, only the Android NDK is needed.
32 bit Android NDK and Android API Level 16.
- Separate implementation for each device where feasible.
Code cleanup
- Rewrite of existing code, from simple reformat to complete reimplementation.
- New backlight interface, seperating backlight from touchscreen.
- Rewrite of device button handler, removing unneeded code and fixing memory
leaks.
- New Debug messages interface logging to Android adb logcat (DEBUGF, panicf,
logf).
- Rewrite of lcd device handler, removing unneeded code and fixing memory leaks.
- Rewrite of audiohw device handler/pcm interface, removing unneeded code and
fixing memory leaks, enabling 44.1/48kHz pthreaded playback.
- Rewrite of power and powermng, proper shutdown, using batterylog results
(see http://gerrit.rockbox.org/r/#/c/1047/).
- Rewrite of configure (Android NDK) and device specific config.
- Rewrite of the Android NDK specific Makefile.
Misc
- All plugins/games/demos activated.
- Update tinyalsa to latest from https://github.com/tinyalsa/tinyalsa.
Includes
- http://gerrit.rockbox.org/r/#/c/993/
- http://gerrit.rockbox.org/r/#/c/1010/
- http://gerrit.rockbox.org/r/#/c/1035/
Does not include http://gerrit.rockbox.org/r/#/c/1007/ due to new backlight
interface and new option for hold switch, touchscreen, physical button
interaction.
Rockbox needs the iBasso DX50/DX90 loader for startup, see
http://gerrit.rockbox.org/r/#/c/1099/
The loader expects Rockbox to be installed in /mnt/sdcard/.rockbox/. If
/mnt/sdcard/ is accessed as USB mass storage device, Rockbox will exit
gracefully and the loader will restart Rockbox on USB disconnect.
Tested on iBasso DX50.
Compiled (not tested) for iBasso DX90.
Compiled (not tested) for PLATFORM_ANDROID.
Change-Id: I5f5e22e68f5b4cf29c28e2b40b2c265f2beb7ab7
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/audio/android.c | 24 | ||||
-rw-r--r-- | firmware/drivers/button.c | 21 |
2 files changed, 21 insertions, 24 deletions
diff --git a/firmware/drivers/audio/android.c b/firmware/drivers/audio/android.c index f26087470b..7a5f34ea48 100644 --- a/firmware/drivers/audio/android.c +++ b/firmware/drivers/audio/android.c | |||
@@ -22,34 +22,12 @@ | |||
22 | 22 | ||
23 | #include "config.h" | 23 | #include "config.h" |
24 | #include "audiohw.h" | 24 | #include "audiohw.h" |
25 | #if defined(DX50) || defined(DX90) | ||
26 | #include "system.h" | ||
27 | #include "pcm_sw_volume.h" | ||
28 | #endif | ||
29 | 25 | ||
30 | #if defined(DX50) || defined(DX90) | ||
31 | void audiohw_set_volume(int vol_l, int vol_r) | ||
32 | { | ||
33 | int hw_volume; | ||
34 | hw_volume = MAX(vol_l, vol_r); | ||
35 | |||
36 | #ifdef HAVE_SW_VOLUME_CONTROL | ||
37 | vol_l-=hw_volume; | ||
38 | vol_r-=hw_volume; | ||
39 | pcm_set_master_volume(vol_l, vol_r); | ||
40 | #endif | ||
41 | |||
42 | extern void pcm_set_mixer_volume(int); | ||
43 | pcm_set_mixer_volume(hw_volume); | ||
44 | |||
45 | } | ||
46 | #else | ||
47 | void audiohw_set_volume(int volume) | 26 | void audiohw_set_volume(int volume) |
48 | { | 27 | { |
49 | extern void pcm_set_mixer_volume(int); | 28 | extern void pcm_set_mixer_volume(int); |
50 | pcm_set_mixer_volume(volume); | 29 | pcm_set_mixer_volume(volume); |
51 | } | 30 | } |
52 | #endif | ||
53 | 31 | ||
54 | void audiohw_set_balance(int balance) | 32 | void audiohw_set_balance(int balance) |
55 | { | 33 | { |
@@ -58,8 +36,6 @@ void audiohw_set_balance(int balance) | |||
58 | 36 | ||
59 | void audiohw_close(void) | 37 | void audiohw_close(void) |
60 | { | 38 | { |
61 | #if !defined(DX50) && !defined(DX90) | ||
62 | extern void pcm_shutdown(void); | 39 | extern void pcm_shutdown(void); |
63 | pcm_shutdown(); | 40 | pcm_shutdown(); |
64 | #endif | ||
65 | } | 41 | } |
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c index 718fb6a6da..d47a486b43 100644 --- a/firmware/drivers/button.c +++ b/firmware/drivers/button.c | |||
@@ -215,6 +215,27 @@ static void button_tick(void) | |||
215 | } | 215 | } |
216 | else /* repeat? */ | 216 | else /* repeat? */ |
217 | { | 217 | { |
218 | |||
219 | #if defined(DX50) || defined(DX90) | ||
220 | /* | ||
221 | Power button on these devices reports two distinct key codes, which are | ||
222 | triggerd by a short or medium duration press. Additionlly a long duration press | ||
223 | will trigger a hard reset, which is hardwired. | ||
224 | |||
225 | The time delta between medium and long duration press is not large enough to | ||
226 | register here as power off repeat. A hard reset is triggered before Rockbox | ||
227 | can power off. | ||
228 | |||
229 | To cirumvent the hard reset, Rockbox will shutdown on the first POWEROFF_BUTTON | ||
230 | repeat. POWEROFF_BUTTON is associated with the a medium duration press of the | ||
231 | power button. | ||
232 | */ | ||
233 | if(btn & POWEROFF_BUTTON) | ||
234 | { | ||
235 | sys_poweroff(); | ||
236 | } | ||
237 | #endif | ||
238 | |||
218 | if ( repeat ) | 239 | if ( repeat ) |
219 | { | 240 | { |
220 | if (!post) | 241 | if (!post) |