-rw-r--r-- | core/settings/light-and-power/light.cpp | 28 | ||||
-rw-r--r-- | core/settings/light-and-power/light.h | 3 | ||||
-rw-r--r-- | libopie/odevice.cpp | 47 | ||||
-rw-r--r-- | libopie/odevice.h | 2 |
4 files changed, 59 insertions, 21 deletions
diff --git a/core/settings/light-and-power/light.cpp b/core/settings/light-and-power/light.cpp index 8b98672..68c2929 100644 --- a/core/settings/light-and-power/light.cpp +++ b/core/settings/light-and-power/light.cpp @@ -44,2 +44,3 @@ #include <qgroupbox.h> +#include <qcombobox.h> @@ -64,3 +65,4 @@ LightSettings::LightSettings( QWidget* parent, const char* name, WFlags ) if (m_cres) { - GroupLight->setTitle(tr("Backlight & Contrast")); + GroupLight->setTitle(tr("Backlight && Contrast")); + GroupLight_ac->setTitle(GroupLight->title()); } else { @@ -70,2 +72,11 @@ LightSettings::LightSettings( QWidget* parent, const char* name, WFlags ) + QStrList freq = ODevice::inst()->cpuFrequencies(); + if ( freq.count() ) { + frequency->insertStrList( freq ); + frequency_ac->insertStrList( freq ); + } else { + frequency->hide(); + frequency_ac->hide(); + } + Config config ( "apm" ); @@ -81,2 +92,5 @@ LightSettings::LightSettings( QWidget* parent, const char* name, WFlags ) + // CPU frequency + frequency->setCurrentItem( config.readNumEntry("Freq", 0) ); + int bright = config. readNumEntry ( "Brightness", 127 ); @@ -109,2 +123,5 @@ LightSettings::LightSettings( QWidget* parent, const char* name, WFlags ) + // CPU frequency + frequency_ac->setCurrentItem( config.readNumEntry("Freq", 0) ); + bright = config. readNumEntry ( "Brightness", 255 ); @@ -149,2 +166,3 @@ LightSettings::LightSettings( QWidget* parent, const char* name, WFlags ) } + connect( frequency, SIGNAL( activated(int) ), this, SLOT( setFrequency(int) ) ); } @@ -191,2 +209,8 @@ void LightSettings::setContrast ( int contr ) +void LightSettings::setFrequency ( int index ) +{ +qWarning("LightSettings::setFrequency(%d)", index); + ODevice::inst ( )-> setCpuFrequency(index); +} + void LightSettings::resetBacklight ( ) @@ -210,2 +234,3 @@ void LightSettings::accept ( ) config. writeEntry ( "Contrast", contrast-> value () ); + config. writeEntry ( "Freq", frequency->currentItem() ); @@ -220,2 +245,3 @@ void LightSettings::accept ( ) config. writeEntry ( "Contrast", contrast_ac-> value () ); + config. writeEntry ( "Freq", frequency_ac->currentItem() ); diff --git a/core/settings/light-and-power/light.h b/core/settings/light-and-power/light.h index 4a8bf6b..c48e5f6 100644 --- a/core/settings/light-and-power/light.h +++ b/core/settings/light-and-power/light.h @@ -32,2 +32,3 @@ #include <qstringlist.h> +#include <qlistbox.h> #include "lightsettingsbase.h" @@ -53,2 +54,3 @@ protected slots: void setContrast ( int ); + void setFrequency ( int ); void resetBacklight ( ); @@ -59,2 +61,3 @@ private: int m_oldcontrast; + int m_oldfreq; QTimer *m_resettimer; diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp index 4b5a54e..4c33a0e 100644 --- a/libopie/odevice.cpp +++ b/libopie/odevice.cpp @@ -781,3 +781,2 @@ QStrList &ODevice::cpuFrequencies ( ) const { -qWarning("ODevice::cpuFrequencies: m_cpu_frequencies is %d", (int) d->m_cpu_frequencies); return *d->m_cpu_frequencies; @@ -799,15 +798,13 @@ bool ODevice::setCpuFrequency(uint index) - //TODO: do the change in /proc/sys/cpu/0/speed + int fd; - return false; + if ((fd = ::open("/proc/sys/cpu/0/speed", O_WRONLY)) >= 0) { + char writeCommand[50]; + const int count = sprintf(writeCommand, "%s\n", freq); + int res = (::write(fd, writeCommand, count) != -1); + ::close(fd); + return res; } -/** - * Returns current frequency index out of d->m_cpu_frequencies - */ -uint ODevice::cpuFrequency() const -{ - // TODO: get freq from /proc/sys/cpu/0/speed and return index - - return 0; + return false; } @@ -815,3 +812,2 @@ uint ODevice::cpuFrequency() const - /** @@ -1994,7 +1990,22 @@ void Ramses::init() -qWarning("adding freq"); - d->m_cpu_frequencies->append("100"); - d->m_cpu_frequencies->append("200"); - d->m_cpu_frequencies->append("300"); - d->m_cpu_frequencies->append("400"); +#ifdef QT_QWS_ALLOW_OVERCLOCK +#warning *** Overclocking enabled - this may fry your hardware - you have been warned *** +#define OC(x...) x +#else +#define OC(x...) +#endif + + + // This table is true for a Intel XScale PXA 255 + + d->m_cpu_frequencies->append("99000"); // mem= 99, run= 99, turbo= 99, PXbus= 50 +OC( d->m_cpu_frequencies->append("118000"); ) // mem=118, run=118, turbo=118, PXbus= 59 OC'd mem + d->m_cpu_frequencies->append("199100"); // mem= 99, run=199, turbo=199, PXbus= 99 +OC( d->m_cpu_frequencies->append("236000"); ) // mem=118, run=236, turbo=236, PXbus=118 OC'd mem + d->m_cpu_frequencies->append("298600"); // mem= 99, run=199, turbo=298, PXbus= 99 +OC( d->m_cpu_frequencies->append("354000"); ) // mem=118, run=236, turbo=354, PXbus=118 OC'd mem + d->m_cpu_frequencies->append("398099"); // mem= 99, run=199, turbo=398, PXbus= 99 + d->m_cpu_frequencies->append("398100"); // mem= 99, run=398, turbo=398, PXbus=196 +OC( d->m_cpu_frequencies->append("471000"); ) // mem=118, run=471, turbo=471, PXbus=236 OC'd mem/core/bus + } @@ -2146,4 +2157,2 @@ bool Ramses::setDisplayContrast(int contr) ::close(fd); - } else { - qWarning("no write"); } diff --git a/libopie/odevice.h b/libopie/odevice.h index 7f6f856..18ff5f1 100644 --- a/libopie/odevice.h +++ b/libopie/odevice.h @@ -202,3 +202,3 @@ public: bool setCpuFrequency(uint index); - uint cpuFrequency() const; + int cpuFrequency() const; |