summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorUdo Schläpfer <rockbox-2014.10@desktopwarrior.net>2015-01-30 22:47:30 +0100
committerUdo Schläpfer <rockbox-2014.10@desktopwarrior.net>2015-02-02 21:58:25 +0100
commit040306a71663d98f1ca568b61010ee125d1e6501 (patch)
tree369840173d587df590ce9674cfd0f62163034105 /firmware
parentdbabd0d9c34a33bc0c51243ec37f230d117db955 (diff)
downloadrockbox-040306a71663d98f1ca568b61010ee125d1e6501.tar.gz
rockbox-040306a71663d98f1ca568b61010ee125d1e6501.zip
iBasso DX50/DX90: User selectable freq scaling governor.
Depends on http://gerrit.rockbox.org/r/#/c/1043/. This patch adds a new setting in Settings -> General -> System: Freq Scaling Governor Usable in Quickscreen and Shortcuts. Possible settings are: - Conservative: Slow frequency switching. - Ondemand or Interactive: Fast frequency switching. - Powersave: Allways lowest frequency. - Performance: Allways highest frequency. German translation provided. This may be genric for Android kernel based devices but is only enabled for iBasso Devices. Other maintainers may choose do adopt this. Change-Id: I10296f5be9586ad3a409105db0cd03682a30e9c1
Diffstat (limited to 'firmware')
-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
4 files changed, 146 insertions, 3 deletions
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 /*