summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/lang/deutsch.lang21
-rw-r--r--apps/lang/english.lang20
-rw-r--r--apps/menus/settings_menu.c12
-rw-r--r--apps/settings.c9
-rw-r--r--apps/settings.h4
-rw-r--r--apps/settings_list.c20
-rw-r--r--firmware/SOURCES1
-rw-r--r--firmware/target/hosted/ibasso/governor-ibasso.c90
-rw-r--r--firmware/target/hosted/ibasso/governor-ibasso.h54
-rw-r--r--firmware/target/hosted/ibasso/system-ibasso.c4
10 files changed, 232 insertions, 3 deletions
diff --git a/apps/lang/deutsch.lang b/apps/lang/deutsch.lang
index 55377c2ca1..6d9c025bd2 100644
--- a/apps/lang/deutsch.lang
+++ b/apps/lang/deutsch.lang
@@ -33,6 +33,7 @@
33# - Kaspar Rothenfußer 33# - Kaspar Rothenfußer
34# - Johannes Linke 34# - Johannes Linke
35# - Kai Posadowsky 35# - Kai Posadowsky
36# - Udo Schläpfer
36<phrase> 37<phrase>
37 id: LANG_SET_BOOL_YES 38 id: LANG_SET_BOOL_YES
38 desc: bool true representation 39 desc: bool true representation
@@ -13054,3 +13055,23 @@
13054 *: "Beschränke automatischen Verzeichniswechsel" 13055 *: "Beschränke automatischen Verzeichniswechsel"
13055 </voice> 13056 </voice>
13056</phrase> 13057</phrase>
13058<phrase>
13059 id: LANG_IBASSO_FREQ_SCALING_GOVERNOR
13060 desc: in Settings -> General -> System -> Freq Scaling Governor
13061 user: core
13062 <source>
13063 *: none
13064 ibassodx50: "Freq Scaling Governor"
13065 ibassodx90: "Freq Scaling Governor"
13066 </source>
13067 <dest>
13068 *: none
13069 ibassodx50: "Freq Scaling Governor"
13070 ibassodx90: "Freq Scaling Governor"
13071 </dest>
13072 <voice>
13073 *: none
13074 ibassodx50: "Freq Scaling Governor"
13075 ibassodx90: "Freq Scaling Governor"
13076 </voice>
13077</phrase>
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index ca5e687ea8..081e33d32c 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -13373,3 +13373,23 @@
13373 swcodec: "Dry / Wet Mix" 13373 swcodec: "Dry / Wet Mix"
13374 </voice> 13374 </voice>
13375</phrase> 13375</phrase>
13376<phrase>
13377 id: LANG_IBASSO_FREQ_SCALING_GOVERNOR
13378 desc: in Settings -> General -> System -> Freq Scaling Governor
13379 user: core
13380 <source>
13381 *: none
13382 ibassodx50: "Freq Scaling Governor"
13383 ibassodx90: "Freq Scaling Governor"
13384 </source>
13385 <dest>
13386 *: none
13387 ibassodx50: "Freq Scaling Governor"
13388 ibassodx90: "Freq Scaling Governor"
13389 </dest>
13390 <voice>
13391 *: none
13392 ibassodx50: "Freq Scaling Governor"
13393 ibassodx90: "Freq Scaling Governor"
13394 </voice>
13395</phrase>
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c
index 130f5be1a2..6fcc3e91a9 100644
--- a/apps/menus/settings_menu.c
+++ b/apps/menus/settings_menu.c
@@ -50,6 +50,10 @@
50#endif 50#endif
51#include "folder_select.h" 51#include "folder_select.h"
52 52
53#if defined(DX50) || defined(DX90)
54#include "governor-ibasso.h"
55#endif
56
53/***********************************/ 57/***********************************/
54/* TAGCACHE MENU */ 58/* TAGCACHE MENU */
55#ifdef HAVE_TAGCACHE 59#ifdef HAVE_TAGCACHE
@@ -325,6 +329,10 @@ MENUITEM_SETTING(touchpad_deadzone, &global_settings.touchpad_deadzone, NULL);
325MENUITEM_SETTING(shortcuts_replaces_quickscreen, &global_settings.shortcuts_replaces_qs, NULL); 329MENUITEM_SETTING(shortcuts_replaces_quickscreen, &global_settings.shortcuts_replaces_qs, NULL);
326#endif 330#endif
327 331
332#if defined(DX50) || defined(DX90)
333MENUITEM_SETTING(governor, &global_settings.governor, NULL);
334#endif
335
328MAKE_MENU(system_menu, ID2P(LANG_SYSTEM), 336MAKE_MENU(system_menu, ID2P(LANG_SYSTEM),
329 0, Icon_System_menu, 337 0, Icon_System_menu,
330#if (BATTERY_CAPACITY_INC > 0) || (BATTERY_TYPES_COUNT > 1) 338#if (BATTERY_CAPACITY_INC > 0) || (BATTERY_TYPES_COUNT > 1)
@@ -377,6 +385,10 @@ MAKE_MENU(system_menu, ID2P(LANG_SYSTEM),
377#if defined(USB_ENABLE_STORAGE) && defined(HAVE_MULTIDRIVE) 385#if defined(USB_ENABLE_STORAGE) && defined(HAVE_MULTIDRIVE)
378 &usb_skip_first_drive, 386 &usb_skip_first_drive,
379#endif 387#endif
388
389#if defined(DX50) || defined(DX90)
390 &governor,
391#endif
380 ); 392 );
381 393
382/* SYSTEM MENU */ 394/* SYSTEM MENU */
diff --git a/apps/settings.c b/apps/settings.c
index f144a4af03..be7b7c30e6 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -105,6 +105,11 @@ struct system_status global_status;
105#include "lcd-remote.h" 105#include "lcd-remote.h"
106#endif 106#endif
107 107
108#if defined(DX50) || defined(DX90)
109#include "governor-ibasso.h"
110#endif
111
112
108long lasttime = 0; 113long lasttime = 0;
109 114
110/** NVRAM stuff, if the target doesnt have NVRAM it is saved in ROCKBOX_DIR /nvram.bin **/ 115/** NVRAM stuff, if the target doesnt have NVRAM it is saved in ROCKBOX_DIR /nvram.bin **/
@@ -1081,6 +1086,10 @@ void settings_apply(bool read_disk)
1081 memcpy(&calibration_parameters, &global_settings.ts_calibration_data, sizeof(struct touchscreen_parameter)); 1086 memcpy(&calibration_parameters, &global_settings.ts_calibration_data, sizeof(struct touchscreen_parameter));
1082#endif 1087#endif
1083 1088
1089#if defined(DX50) || defined(DX90)
1090 ibasso_set_governor(global_settings.governor);
1091#endif
1092
1084 /* This should stay last */ 1093 /* This should stay last */
1085#if defined(HAVE_RECORDING) && CONFIG_CODEC == SWCODEC 1094#if defined(HAVE_RECORDING) && CONFIG_CODEC == SWCODEC
1086 enc_global_settings_apply(); 1095 enc_global_settings_apply();
diff --git a/apps/settings.h b/apps/settings.h
index 4ea56d273e..5d25dc7ab0 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -850,6 +850,10 @@ struct user_settings
850 int pbe_precut; 850 int pbe_precut;
851 851
852 int afr_enabled; 852 int afr_enabled;
853
854#if defined(DX50) || defined(DX90)
855 int governor;
856#endif
853}; 857};
854 858
855/** global variables **/ 859/** global variables **/
diff --git a/apps/settings_list.c b/apps/settings_list.c
index abdb512a42..2c3f360cea 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -62,6 +62,10 @@
62#include "onplay.h" 62#include "onplay.h"
63#endif 63#endif
64 64
65#if defined(DX50) || defined(DX90)
66#include "governor-ibasso.h"
67#endif
68
65#define NVRAM(bytes) (bytes<<F_NVRAM_MASK_SHIFT) 69#define NVRAM(bytes) (bytes<<F_NVRAM_MASK_SHIFT)
66/** NOTE: NVRAM_CONFIG_VERSION is in settings_list.h 70/** NOTE: NVRAM_CONFIG_VERSION is in settings_list.h
67 and you may need to update it if you edit this file */ 71 and you may need to update it if you edit this file */
@@ -2193,6 +2197,22 @@ const struct settings_list settings[] = {
2193 NULL, "root menu order", 2197 NULL, "root menu order",
2194 root_menu_load_from_cfg, root_menu_write_to_cfg, 2198 root_menu_load_from_cfg, root_menu_write_to_cfg,
2195 root_menu_is_changed, root_menu_set_default), 2199 root_menu_is_changed, root_menu_set_default),
2200
2201#if defined(DX50) || defined(DX90)
2202 CHOICE_SETTING(0,
2203 governor,
2204 LANG_IBASSO_FREQ_SCALING_GOVERNOR,
2205 GOVERNOR_POWERSAVE,
2206 "freq scaling governor",
2207 "conservative,ondemand,interactive,powersave,performance",
2208 ibasso_set_governor,
2209 5,
2210 "Conservative",
2211 "Ondemand",
2212 "Interactive",
2213 "Powersave",
2214 "Performance"),
2215#endif
2196}; 2216};
2197 2217
2198const int nb_settings = sizeof(settings)/sizeof(*settings); 2218const int nb_settings = sizeof(settings)/sizeof(*settings);
diff --git a/firmware/SOURCES b/firmware/SOURCES
index a67f866dcc..1bb8563f24 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -1841,6 +1841,7 @@ target/hosted/ibasso/button-ibasso.c
1841#ifdef DEBUG 1841#ifdef DEBUG
1842target/hosted/ibasso/debug-ibasso.c 1842target/hosted/ibasso/debug-ibasso.c
1843#endif 1843#endif
1844target/hosted/ibasso/governor-ibasso.c
1844target/hosted/ibasso/hostfs-ibasso.c 1845target/hosted/ibasso/hostfs-ibasso.c
1845target/hosted/ibasso/lcd-ibasso.c 1846target/hosted/ibasso/lcd-ibasso.c
1846target/hosted/ibasso/pcm-ibasso.c 1847target/hosted/ibasso/pcm-ibasso.c
diff --git a/firmware/target/hosted/ibasso/governor-ibasso.c b/firmware/target/hosted/ibasso/governor-ibasso.c
new file mode 100644
index 0000000000..b2d3cdf336
--- /dev/null
+++ b/firmware/target/hosted/ibasso/governor-ibasso.c
@@ -0,0 +1,90 @@
1/***************************************************************************
2 * __________ __ ___
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
25#include <stdio.h>
26
27#include "config.h"
28#include "cpufreq-linux.h"
29#include "debug.h"
30
31#include "debug-ibasso.h"
32#include "governor-ibasso.h"
33#include "sysfs-ibasso.h"
34
35
36/* Default governor at boot. */
37static int _last_governor = GOVERNOR_INTERACTIVE;
38
39
40void ibasso_set_governor(int governor)
41{
42 DEBUGF("DEBUG %s: _last_governor: %d, governor: %d.", __func__, _last_governor, governor);
43
44 if(_last_governor != governor)
45 {
46 switch(governor)
47 {
48 case GOVERNOR_CONSERVATIVE:
49 {
50 _last_governor = governor;
51 cpufreq_set_governor("conservative", CPUFREQ_ALL_CPUS);
52 break;
53 }
54
55 case GOVERNOR_ONDEMAND:
56 {
57 _last_governor = governor;
58 cpufreq_set_governor("ondemand", CPUFREQ_ALL_CPUS);
59 break;
60 }
61
62 case GOVERNOR_POWERSAVE:
63 {
64 _last_governor = governor;
65 cpufreq_set_governor("powersave", CPUFREQ_ALL_CPUS);
66 break;
67 }
68
69 case GOVERNOR_INTERACTIVE:
70 {
71 _last_governor = governor;
72 cpufreq_set_governor("interactive", CPUFREQ_ALL_CPUS);
73 break;
74 }
75
76 case GOVERNOR_PERFORMANCE:
77 {
78 _last_governor = governor;
79 cpufreq_set_governor("performance", CPUFREQ_ALL_CPUS);
80 break;
81 }
82
83 default:
84 {
85 DEBUGF("ERROR %s: Unknown governor: %d.", __func__, governor);
86 break;
87 }
88 }
89 }
90}
diff --git a/firmware/target/hosted/ibasso/governor-ibasso.h b/firmware/target/hosted/ibasso/governor-ibasso.h
new file mode 100644
index 0000000000..34781fde0b
--- /dev/null
+++ b/firmware/target/hosted/ibasso/governor-ibasso.h
@@ -0,0 +1,54 @@
1/***************************************************************************
2 * __________ __ ___
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
25#ifndef _GOVERNOR_IBASSO_H_
26#define _GOVERNOR_IBASSO_H_
27
28
29/* Supported freq scaling governors. */
30enum ibasso_governors
31{
32 /* Slow frequency switching. */
33 GOVERNOR_CONSERVATIVE = 0,
34
35 /* Fast frequency switching. */
36 GOVERNOR_ONDEMAND,
37 GOVERNOR_INTERACTIVE,
38
39 /* Allways lowest frequency. */
40 GOVERNOR_POWERSAVE,
41
42 /* Allways highest frequency. */
43 GOVERNOR_PERFORMANCE
44};
45
46
47/*
48 Set the active freq scaling governor.
49 governor: ibasso_governors
50*/
51void ibasso_set_governor(int governor);
52
53
54#endif
diff --git a/firmware/target/hosted/ibasso/system-ibasso.c b/firmware/target/hosted/ibasso/system-ibasso.c
index 00f8669ae0..a107af7a7f 100644
--- a/firmware/target/hosted/ibasso/system-ibasso.c
+++ b/firmware/target/hosted/ibasso/system-ibasso.c
@@ -27,7 +27,6 @@
27#include <sys/reboot.h> 27#include <sys/reboot.h>
28 28
29#include "config.h" 29#include "config.h"
30#include "cpufreq-linux.h"
31#include "debug.h" 30#include "debug.h"
32 31
33#include "button-ibasso.h" 32#include "button-ibasso.h"
@@ -50,8 +49,7 @@ void system_init(void)
50 volatile uintptr_t stack = 0; 49 volatile uintptr_t stack = 0;
51 stackbegin = stackend = (uintptr_t*) &stack; 50 stackbegin = stackend = (uintptr_t*) &stack;
52 51
53 cpufreq_set_governor("powersave", CPUFREQ_ALL_CPUS); 52 vold_monitor_start();
54 vold_monitor_start();
55 ibasso_set_usb_mode(USB_MODE_MASS_STORAGE); 53 ibasso_set_usb_mode(USB_MODE_MASS_STORAGE);
56 54
57 /* 55 /*