summaryrefslogtreecommitdiff
path: root/firmware/export
diff options
context:
space:
mode:
authorUdo Schläpfer <rockbox-2014.10@desktopwarrior.net>2015-02-02 21:44:29 +0100
committerUdo Schläpfer <rockbox-2014.10@desktopwarrior.net>2015-02-02 21:57:55 +0100
commitdbabd0d9c34a33bc0c51243ec37f230d117db955 (patch)
tree46de348929ce739702a230a2587fdb5539585753 /firmware/export
parentcef17e3d59ad93f766e8ee23b1610540a33dfe5e (diff)
downloadrockbox-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/export')
-rw-r--r--firmware/export/audiohw.h4
-rw-r--r--firmware/export/config/ibassodx50.h82
-rw-r--r--firmware/export/config/ibassodx90.h61
-rw-r--r--firmware/export/hosted_codec.h2
-rw-r--r--firmware/export/pcm_mixer.h6
-rw-r--r--firmware/export/rbpaths.h7
6 files changed, 91 insertions, 71 deletions
diff --git a/firmware/export/audiohw.h b/firmware/export/audiohw.h
index 7c5424a29d..d7bc3dd6de 100644
--- a/firmware/export/audiohw.h
+++ b/firmware/export/audiohw.h
@@ -114,6 +114,10 @@ struct sound_settings_info
114#elif (CONFIG_PLATFORM & (PLATFORM_ANDROID | PLATFORM_MAEMO\ 114#elif (CONFIG_PLATFORM & (PLATFORM_ANDROID | PLATFORM_MAEMO\
115 | PLATFORM_PANDORA | PLATFORM_SDL)) 115 | PLATFORM_PANDORA | PLATFORM_SDL))
116#include "hosted_codec.h" 116#include "hosted_codec.h"
117#elif defined(DX50)
118#include "codec-dx50.h"
119#elif defined(DX90)
120#include "codec-dx90.h"
117#endif 121#endif
118 122
119/* convert caps into defines */ 123/* convert caps into defines */
diff --git a/firmware/export/config/ibassodx50.h b/firmware/export/config/ibassodx50.h
index 5bbb515c1c..e26d43c4a7 100644
--- a/firmware/export/config/ibassodx50.h
+++ b/firmware/export/config/ibassodx50.h
@@ -1,14 +1,35 @@
1/* 1/***************************************************************************
2 * This config file is for Rockbox as an application on Android 2 * __________ __ ___
3 */ 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2014 by Ilia Sergachev: Initial Rockbox port to iBasso DX50
10 * Copyright (C) 2014 by Mario Basister: iBasso DX90 port
11 * Copyright (C) 2014 by Simon Rothen: Initial Rockbox repository submission, additional features
12 * Copyright (C) 2014 by Udo Schläpfer: Code clean up, additional features
13 *
14 * This program is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU General Public License
16 * as published by the Free Software Foundation; either version 2
17 * of the License, or (at your option) any later version.
18 *
19 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
20 * KIND, either express or implied.
21 *
22 ****************************************************************************/
23
24/* This config file is for Rockbox as an application on Android without JVM. */
4 25
5/* We don't run on hardware directly */ 26/* We don't run on hardware directly */
6#define CONFIG_PLATFORM (PLATFORM_HOSTED|PLATFORM_ANDROID) 27#define CONFIG_PLATFORM PLATFORM_HOSTED
7 28
8/* For Rolo and boot loader */ 29/* For Rolo and boot loader */
9#define MODEL_NUMBER 94 30#define MODEL_NUMBER 94
10 31
11#define MODEL_NAME "iBasso DX50" 32#define MODEL_NAME "iBasso DX50"
12 33
13#define USB_NONE 34#define USB_NONE
14 35
@@ -41,16 +62,15 @@
41#define LCD_PIXELFORMAT RGB565 62#define LCD_PIXELFORMAT RGB565
42 63
43#define HAVE_LCD_ENABLE 64#define HAVE_LCD_ENABLE
65#define HAVE_LCD_SLEEP
66#define HAVE_LCD_SLEEP_SETTING
67/*#define HAVE_LCD_FLIP*/
68#define HAVE_LCD_SHUTDOWN
44 69
45/* define this to indicate your device's keypad */ 70/* define this to indicate your device's keypad */
46#define HAVE_TOUCHSCREEN 71#define HAVE_TOUCHSCREEN
47#define HAVE_BUTTON_DATA 72#define HAVE_BUTTON_DATA
48 73#define HAS_BUTTON_HOLD
49/* define this if you have RTC RAM available for settings */
50//#define HAVE_RTC_RAM
51
52/* define this if you have a real-time clock */
53//#define CONFIG_RTC APPLICATION
54 74
55/* Define this if you have a software controlled poweroff */ 75/* Define this if you have a software controlled poweroff */
56#define HAVE_SW_POWEROFF 76#define HAVE_SW_POWEROFF
@@ -77,6 +97,10 @@
77 97
78/* Define this if you do software codec */ 98/* Define this if you do software codec */
79#define CONFIG_CODEC SWCODEC 99#define CONFIG_CODEC SWCODEC
100#define HAVE_SW_TONE_CONTROLS
101#define HAVE_SW_VOLUME_CONTROL
102#define HW_SAMPR_CAPS SAMPR_CAP_ALL
103#define HAVE_PLAY_FREQ
80 104
81//#define HAVE_MULTIMEDIA_KEYS 105//#define HAVE_MULTIMEDIA_KEYS
82#define CONFIG_KEYPAD DX50_PAD 106#define CONFIG_KEYPAD DX50_PAD
@@ -84,39 +108,26 @@
84/* define this if the target has volume keys which can be used in the lists */ 108/* define this if the target has volume keys which can be used in the lists */
85#define HAVE_VOLUME_IN_LIST 109#define HAVE_VOLUME_IN_LIST
86 110
87/* define this if the host platform can change volume outside of rockbox */
88//#define PLATFORM_HAS_VOLUME_CHANGE
89
90#define HAVE_SW_TONE_CONTROLS
91
92#define HAVE_SW_VOLUME_CONTROL
93
94#define BATTERY_CAPACITY_DEFAULT 2100 /* default battery capacity */ 111#define BATTERY_CAPACITY_DEFAULT 2100 /* default battery capacity */
95#define BATTERY_CAPACITY_MIN 1700 /* min. capacity selectable */ 112#define BATTERY_CAPACITY_MIN 1700 /* min. capacity selectable */
96#define BATTERY_CAPACITY_MAX 3200 /* max. capacity selectable */ 113#define BATTERY_CAPACITY_MAX 3200 /* max. capacity selectable */
97#define BATTERY_CAPACITY_INC 50 /* capacity increment */ 114#define BATTERY_CAPACITY_INC 50 /* capacity increment */
98#define BATTERY_TYPES_COUNT 1 /* only one type */ 115#define BATTERY_TYPES_COUNT 1 /* only one type */
99 116
100#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE 117#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
118#define CONFIG_CHARGING CHARGING_MONITOR
101 119
102#define CONFIG_CHARGING CHARGING_MONITOR
103
104#define NO_LOW_BATTERY_SHUTDOWN
105
106/* Define current usage levels. */
107#define CURRENT_NORMAL 210 /* 10 hours from a 2100 mAh battery */
108#define CURRENT_BACKLIGHT 30 /* TBD */
109#define CURRENT_RECORD 0 /* no recording */
110
111/* Define this to the CPU frequency */
112/* 120/*
113#define CPU_FREQ 48000000 121 10 hours from a 2100 mAh battery
122 Based on battery bench with stock Samsung battery.
114*/ 123*/
124#define CURRENT_NORMAL 210
125#define CURRENT_BACKLIGHT 30 /* TBD */
126#define CURRENT_RECORD 0 /* no recording */
115 127
116/* define this if the hardware can be powered off while charging */ 128/* define this if the hardware can be powered off while charging */
117#define HAVE_POWEROFF_WHILE_CHARGING 129#define HAVE_POWEROFF_WHILE_CHARGING
118 130
119
120/* Offset ( in the firmware file's header ) to the file CRC */ 131/* Offset ( in the firmware file's header ) to the file CRC */
121#define FIRMWARE_OFFSET_FILE_CRC 0 132#define FIRMWARE_OFFSET_FILE_CRC 0
122 133
@@ -128,9 +139,6 @@
128/* Define this if a programmable hotkey is mapped */ 139/* Define this if a programmable hotkey is mapped */
129#define HAVE_HOTKEY 140#define HAVE_HOTKEY
130 141
131#define BOOTDIR "/.rockbox"
132
133/* No special storage */ 142/* No special storage */
134#define CONFIG_STORAGE STORAGE_HOSTFS 143#define CONFIG_STORAGE STORAGE_HOSTFS
135#define HAVE_STORAGE_FLUSH 144#define HAVE_STORAGE_FLUSH
136
diff --git a/firmware/export/config/ibassodx90.h b/firmware/export/config/ibassodx90.h
index 68a728eab4..6de06d9e27 100644
--- a/firmware/export/config/ibassodx90.h
+++ b/firmware/export/config/ibassodx90.h
@@ -1,9 +1,30 @@
1/* 1/***************************************************************************
2 * This config file is for Rockbox as an application on Android 2 * __________ __ ___
3 */ 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2014 by Ilia Sergachev: Initial Rockbox port to iBasso DX50
10 * Copyright (C) 2014 by Mario Basister: iBasso DX90 port
11 * Copyright (C) 2014 by Simon Rothen: Initial Rockbox repository submission, additional features
12 * Copyright (C) 2014 by Udo Schläpfer: Code clean up, additional features
13 *
14 * This program is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU General Public License
16 * as published by the Free Software Foundation; either version 2
17 * of the License, or (at your option) any later version.
18 *
19 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
20 * KIND, either express or implied.
21 *
22 ****************************************************************************/
23
24/* This config file is for Rockbox as an application on Android without JVM. */
4 25
5/* We don't run on hardware directly */ 26/* We don't run on hardware directly */
6#define CONFIG_PLATFORM (PLATFORM_HOSTED|PLATFORM_ANDROID) 27#define CONFIG_PLATFORM PLATFORM_HOSTED
7 28
8/* For Rolo and boot loader */ 29/* For Rolo and boot loader */
9#define MODEL_NUMBER 95 30#define MODEL_NUMBER 95
@@ -41,16 +62,14 @@
41#define LCD_PIXELFORMAT RGB565 62#define LCD_PIXELFORMAT RGB565
42 63
43#define HAVE_LCD_ENABLE 64#define HAVE_LCD_ENABLE
65#define HAVE_LCD_SHUTDOWN
66#define HAVE_LCD_SLEEP
67#define HAVE_LCD_SLEEP_SETTING
44 68
45/* define this to indicate your device's keypad */ 69/* define this to indicate your device's keypad */
46#define HAVE_TOUCHSCREEN 70#define HAVE_TOUCHSCREEN
47#define HAVE_BUTTON_DATA 71#define HAVE_BUTTON_DATA
48 72#define HAS_BUTTON_HOLD
49/* define this if you have RTC RAM available for settings */
50//#define HAVE_RTC_RAM
51
52/* define this if you have a real-time clock */
53//#define CONFIG_RTC APPLICATION
54 73
55/* Define this if you have a software controlled poweroff */ 74/* Define this if you have a software controlled poweroff */
56#define HAVE_SW_POWEROFF 75#define HAVE_SW_POWEROFF
@@ -77,6 +96,10 @@
77 96
78/* Define this if you do software codec */ 97/* Define this if you do software codec */
79#define CONFIG_CODEC SWCODEC 98#define CONFIG_CODEC SWCODEC
99#define HAVE_SW_TONE_CONTROLS
100#define HAVE_SW_VOLUME_CONTROL
101#define HW_SAMPR_CAPS SAMPR_CAP_ALL
102#define HAVE_PLAY_FREQ
80 103
81//#define HAVE_MULTIMEDIA_KEYS 104//#define HAVE_MULTIMEDIA_KEYS
82#define CONFIG_KEYPAD DX50_PAD 105#define CONFIG_KEYPAD DX50_PAD
@@ -84,13 +107,6 @@
84/* define this if the target has volume keys which can be used in the lists */ 107/* define this if the target has volume keys which can be used in the lists */
85#define HAVE_VOLUME_IN_LIST 108#define HAVE_VOLUME_IN_LIST
86 109
87/* define this if the host platform can change volume outside of rockbox */
88//#define PLATFORM_HAS_VOLUME_CHANGE
89
90#define HAVE_SW_TONE_CONTROLS
91
92#define HAVE_SW_VOLUME_CONTROL
93
94#define BATTERY_CAPACITY_DEFAULT 2100 /* default battery capacity */ 110#define BATTERY_CAPACITY_DEFAULT 2100 /* default battery capacity */
95#define BATTERY_CAPACITY_MIN 1700 /* min. capacity selectable */ 111#define BATTERY_CAPACITY_MIN 1700 /* min. capacity selectable */
96#define BATTERY_CAPACITY_MAX 3200 /* max. capacity selectable */ 112#define BATTERY_CAPACITY_MAX 3200 /* max. capacity selectable */
@@ -101,22 +117,14 @@
101 117
102#define CONFIG_CHARGING CHARGING_MONITOR 118#define CONFIG_CHARGING CHARGING_MONITOR
103 119
104#define NO_LOW_BATTERY_SHUTDOWN
105
106/* Define current usage levels. */ 120/* Define current usage levels. */
107#define CURRENT_NORMAL 210 /* 10 hours from a 2100 mAh battery */ 121#define CURRENT_NORMAL 210 /* 10 hours from a 2100 mAh battery */
108#define CURRENT_BACKLIGHT 30 /* TBD */ 122#define CURRENT_BACKLIGHT 30 /* TBD */
109#define CURRENT_RECORD 0 /* no recording */ 123#define CURRENT_RECORD 0 /* no recording */
110 124
111/* Define this to the CPU frequency */
112/*
113#define CPU_FREQ 48000000
114*/
115
116/* define this if the hardware can be powered off while charging */ 125/* define this if the hardware can be powered off while charging */
117#define HAVE_POWEROFF_WHILE_CHARGING 126#define HAVE_POWEROFF_WHILE_CHARGING
118 127
119
120/* Offset ( in the firmware file's header ) to the file CRC */ 128/* Offset ( in the firmware file's header ) to the file CRC */
121#define FIRMWARE_OFFSET_FILE_CRC 0 129#define FIRMWARE_OFFSET_FILE_CRC 0
122 130
@@ -128,9 +136,6 @@
128/* Define this if a programmable hotkey is mapped */ 136/* Define this if a programmable hotkey is mapped */
129#define HAVE_HOTKEY 137#define HAVE_HOTKEY
130 138
131#define BOOTDIR "/.rockbox"
132
133/* No special storage */ 139/* No special storage */
134#define CONFIG_STORAGE STORAGE_HOSTFS 140#define CONFIG_STORAGE STORAGE_HOSTFS
135#define HAVE_STORAGE_FLUSH 141#define HAVE_STORAGE_FLUSH
136
diff --git a/firmware/export/hosted_codec.h b/firmware/export/hosted_codec.h
index 00ab099772..5391ca8ee9 100644
--- a/firmware/export/hosted_codec.h
+++ b/firmware/export/hosted_codec.h
@@ -25,9 +25,7 @@
25 && !(CONFIG_PLATFORM & PLATFORM_MAEMO5) 25 && !(CONFIG_PLATFORM & PLATFORM_MAEMO5)
26AUDIOHW_SETTING(VOLUME, "dB", 0, 1, -80, 0, 0) 26AUDIOHW_SETTING(VOLUME, "dB", 0, 1, -80, 0, 0)
27#else 27#else
28#if !defined(DX50) && !defined(DX90)
29#define AUDIOHW_CAPS (MONO_VOL_CAP) 28#define AUDIOHW_CAPS (MONO_VOL_CAP)
30#endif
31AUDIOHW_SETTING(VOLUME, "dB", 0, 1, -99, 0, 0) 29AUDIOHW_SETTING(VOLUME, "dB", 0, 1, -99, 0, 0)
32#endif /* CONFIG_PLATFORM & PLATFORM_SDL */ 30#endif /* CONFIG_PLATFORM & PLATFORM_SDL */
33 31
diff --git a/firmware/export/pcm_mixer.h b/firmware/export/pcm_mixer.h
index f7f869eaaf..b418a5d347 100644
--- a/firmware/export/pcm_mixer.h
+++ b/firmware/export/pcm_mixer.h
@@ -30,13 +30,15 @@
30#if CONFIG_CPU == PP5002 30#if CONFIG_CPU == PP5002
31/* There's far less time to do mixing because HW FIFOs are short */ 31/* There's far less time to do mixing because HW FIFOs are short */
32#define MIX_FRAME_SAMPLES 64 32#define MIX_FRAME_SAMPLES 64
33#elif (CONFIG_PLATFORM & PLATFORM_MAEMO5) 33#elif (CONFIG_PLATFORM & PLATFORM_MAEMO5) || defined(DX50) || defined(DX90)
34/* Maemo 5 needs 2048 samples for decent performance. 34/* Maemo 5 needs 2048 samples for decent performance.
35 Otherwise the locking overhead inside gstreamer costs too much */ 35 Otherwise the locking overhead inside gstreamer costs too much */
36/* iBasso Devices: Match Rockbox PCM buffer size to ALSA PCM buffer size
37 to minimize memory transfers. */
36#define MIX_FRAME_SAMPLES 2048 38#define MIX_FRAME_SAMPLES 2048
39#else
37/* Assume HW DMA engine is available or sufficient latency exists in the 40/* Assume HW DMA engine is available or sufficient latency exists in the
38 PCM pathway */ 41 PCM pathway */
39#else
40#define MIX_FRAME_SAMPLES 256 42#define MIX_FRAME_SAMPLES 256
41#endif 43#endif
42 44
diff --git a/firmware/export/rbpaths.h b/firmware/export/rbpaths.h
index b04d669716..fdbf081329 100644
--- a/firmware/export/rbpaths.h
+++ b/firmware/export/rbpaths.h
@@ -40,10 +40,13 @@
40#define ROCKBOX_DIR_LEN (sizeof(ROCKBOX_DIR)-1) 40#define ROCKBOX_DIR_LEN (sizeof(ROCKBOX_DIR)-1)
41#endif /* def __PCTOOL__ */ 41#endif /* def __PCTOOL__ */
42 42
43#if !defined(APPLICATION) || defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) 43#if !defined(APPLICATION) || defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) || defined(DX50) || defined(DX90)
44 44
45#if defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) 45#if defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1)
46#define HOME_DIR "/mnt/media0" 46#define HOME_DIR "/mnt/media0"
47#elif defined(DX50) || defined(DX90)
48/* Where to put save files like recordings, playlists, screen dumps ...*/
49#define HOME_DIR "/mnt/sdcard"
47#else 50#else
48#define HOME_DIR "/" 51#define HOME_DIR "/"
49#endif 52#endif
@@ -80,7 +83,7 @@
80#define PLUGIN_DEMOS_DIR PLUGIN_DIR "/demos" 83#define PLUGIN_DEMOS_DIR PLUGIN_DIR "/demos"
81#define VIEWERS_DIR PLUGIN_DIR "/viewers" 84#define VIEWERS_DIR PLUGIN_DIR "/viewers"
82 85
83#if defined(APPLICATION) && !(defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1)) 86#if defined(APPLICATION) && !(defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) || defined(DX50) || defined(DX90))
84#define PLUGIN_DATA_DIR ROCKBOX_DIR "/rocks.data" 87#define PLUGIN_DATA_DIR ROCKBOX_DIR "/rocks.data"
85#define PLUGIN_GAMES_DATA_DIR PLUGIN_DATA_DIR 88#define PLUGIN_GAMES_DATA_DIR PLUGIN_DATA_DIR
86#define PLUGIN_APPS_DATA_DIR PLUGIN_DATA_DIR 89#define PLUGIN_APPS_DATA_DIR PLUGIN_DATA_DIR