馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
本帖最後由 JKGOOD 於 2014-4-28 23:50 編輯
在這份文件
所有的頻率都在最一開始伴隨著電壓做定義 (先不要變動電壓值)
- #define DVFS_F0_0 (1703000) // KHz
- #define DVFS_F0_1 (1599000) // KHz
- #define DVFS_F0_2 (1508000) // KHz
- #define DVFS_F0_3 (1404000) // KHz
- #define DVFS_F0_4 (1300000) // KHz
- #define DVFS_F1 (1209000) // KHz
- #define DVFS_F2 ( 988000) // KHz
- #define DVFS_F3 ( 754000) // KHz
- #define DVFS_F4 ( 497250) // KHz
- #define DVFS_V0 (1250) // mV
- #define DVFS_V1 (1200) // mV
- #define DVFS_V2 (1150) // mV
- #define DVFS_V3 (1050) // mV
- #define DVFS_V4 ( 950) // mV
複製代碼
可以看到我們並不需要新增任何代碼, 因為在整份文件我們看到最高值被設定在 DVFS_F1 , 所以看到 126-127 行
- static unsigned int g_cpufreq_get_ptp_level = 0;
- static unsigned int g_max_freq_by_ptp = DVFS_F1; /* default 1.2GHz */
複製代碼
因此我們可以根據在 1646-1655 行來更改 126 行到 1-5 的值
- /************************************************
- * Check PTP level to define default max freq
- *************************************************/
- g_cpufreq_get_ptp_level = PTP_get_ptp_level();
-
- if(g_cpufreq_get_ptp_level == 0)
- g_max_freq_by_ptp = DVFS_F1;
- else if(g_cpufreq_get_ptp_level == 1)
- g_max_freq_by_ptp = DVFS_F0_4;
- else if(g_cpufreq_get_ptp_level == 2)
- g_max_freq_by_ptp = DVFS_F0_3;
- else if(g_cpufreq_get_ptp_level == 3)
- g_max_freq_by_ptp = DVFS_F0_2;
- else if(g_cpufreq_get_ptp_level == 4)
- g_max_freq_by_ptp = DVFS_F0_1;
- else if(g_cpufreq_get_ptp_level == 5)
- g_max_freq_by_ptp = DVFS_F0_0;
- else
- g_max_freq_by_ptp = DVFS_F1;
複製代碼
這些 ID 起於 DVFS_F0_4 又稱為 set g_cpufreq_get_ptp_level == 1
讓我們回到 127 行設定 static unsigned int g_max_freq_by_ptp = DVFS_F0_4; 讓他有一致性
接下來看到 early suspend(注1) 這個值在 328 行被定義, 如果你想讓他高於正常的值, 就在這行更改
- cpufreq_driver_target(policy, DVFS_F1, CPUFREQ_RELATION_L);
複製代碼
注意到這個值對應到 1102 行的值, 所以在修改時要注意他的一致性, 然後再 342 行也要改成記錄一樣的頻率
做了這些更改我們可以讓 ptp 的頻率設定到我們想要的值, 那就是我們超頻的開始所在. 如果我有索尼 Xperia C 我就會自己測試了, 但是我不知道誰有這款手機會試試這個代碼, 如果有人能達到更高的頻率(雖然這個舉動不一定很好, 但這就是我們正在討論的是吧?)
如果他沒有對應到最初的電壓可能就會開始發熱. 但是這些頻率是在最初的預設值就被定義了, 所以應該可行.
最後, 如果你不想親手修改, 這邊有現成的 : http://pastebin.com/nswkHqZt
注1 : Early suspend -這個機制定義了在suspend的早期,關閉顯示屏的時候,一些和顯示屏相關的設備,比如背光、重力感應器和触摸屏等設備都應該被關掉,但是此時系統可能還有持有wake lock的任務在運行,如音樂播放,電話,或者掃描sd卡上的文件等,這個時候整個系統還不能進入真正睡眠,直到所有的wake lock都被釋放。在嵌入式設備中,背光是一個很大的電源消耗,所有android加入了這種機制。
XDA原文地址 : http://forum.xda-developers.com/showpost.php?p=45237075&postcount=369
|