From: Francesco Lattanzio <franz.lattanzio@gmail.com>
To: Linux ACPI <linux-acpi@vger.kernel.org>
Subject: FSB scaling for ASUS EeePC 1000H
Date: Sun, 15 Mar 2009 16:01:23 +0100 [thread overview]
Message-ID: <49BD1843.7050502@gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 3178 bytes --]
The following patch (against the current "linux-acpi-2.6" source tree)
adds the capability of the ASUS EeePC 1000H (and maybe other models as
well) to scale the FSB frequency and core voltage. Do not confuse this
with cpufreq (SpeedStep and other similar mechanisms): cpufreq changes
the internal CPU clock multiplier (and eventually the core voltage too)
leaving the FSB frequency untouched.
A new file, "cpuclk_cfg", is added under "/sys/devices/platform/eeepc"
through which is possible to select one of the available predefined CPU
clock configuration (FSB frequency and core voltage).
Reading from cpuclk_cfg returns two numbers: the first is the number of
available "CPU clock configurations", the second is a non-negative
number less than the first representing the current configuration. If
the function is not supported (through ACPI) the string "<unsupported>"
is returned instead.
Writing a number to cpuclk_cfg allows to change the current CPU clock
configuration.
On the Eee PC 1000H there are three available clock configuration:
0 -> Super Performance Mode
1 -> High Performance Mode
2 -> Power Saving Mode
The selected configuration is saved into the NVRAM and restored after a
reboot. This fact allowed me to use use /proc/cpuinfo to measure the CPU
clock (while keeping SpeedStep disabled, i.e. at its maximum multiplier
value):
0 -> cpu MHz: 1709.760 / bogomips: 3420.00
1 -> cpu MHz: 1595.736 / bogomips: 3192.45
2 -> cpu MHz: 1254.026 / bogomips: 2509.55
The attached file is a dump of the DSDT taken from my EeePC 1000H I used
as a reference to write the patch.
Here is the patch:
diff --git a/drivers/platform/x86/eeepc-laptop.c
b/drivers/platform/x86/eeepc-laptop.c
index 786ed86..d079d51 100644
--- a/drivers/platform/x86/eeepc-laptop.c
+++ b/drivers/platform/x86/eeepc-laptop.c
@@ -382,10 +382,40 @@ EEEPC_CREATE_DEVICE_ATTR(camera, CM_ASL_CAMERA);
EEEPC_CREATE_DEVICE_ATTR(cardr, CM_ASL_CARDREADER);
EEEPC_CREATE_DEVICE_ATTR(disp, CM_ASL_DISPLAYSWITCH);
+
+static ssize_t show_ckfg(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+{
+ int n_of_cfgs,current_cfg;
+ current_cfg=get_acpi(CM_ASL_CPUFV);
+ if (current_cfg<0)
+ return sprintf(buf, "%s\n", "<unsupported>");
+ n_of_cfgs=(current_cfg>>8)&0xff;
+ current_cfg&=0xff;
+ return sprintf(buf, "%d %d\n", n_of_cfgs, current_cfg);
+}
+
+static ssize_t store_ckfg(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ return store_sys_acpi(CM_ASL_CPUFV, buf, count);
+}
+
+static struct device_attribute dev_attr_ckfg = {
+ .attr = {
+ .name = "cpuclk_cfg",
+ .mode = 0644 },
+ .show = show_ckfg,
+ .store = store_ckfg
+};
+
static struct attribute *platform_attributes[] = {
&dev_attr_camera.attr,
&dev_attr_cardr.attr,
&dev_attr_disp.attr,
+ &dev_attr_ckfg.attr,
NULL
};
--
Francesco Lattanzio <franz.lattanzio@gmail.com>
[-- Attachment #2: eeepc_1000h_dsdt.dsl.gz --]
[-- Type: application/gzip, Size: 16805 bytes --]
next reply other threads:[~2009-03-15 14:58 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-15 15:01 Francesco Lattanzio [this message]
2009-03-15 19:05 ` FSB scaling for ASUS EeePC 1000H Matthew Garrett
2009-03-17 8:26 ` Francesco Lattanzio
2009-03-17 11:34 ` Matthew Garrett
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49BD1843.7050502@gmail.com \
--to=franz.lattanzio@gmail.com \
--cc=linux-acpi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox