145 lines
5.7 KiB
Plaintext
145 lines
5.7 KiB
Plaintext
Sony Notebook Control Driver (SNC) Readme
|
|
-----------------------------------------
|
|
Copyright (C) 2004- 2005 Stelian Pop <stelian@popies.net>
|
|
Copyright (C) 2007 Mattia Dongili <malattia@linux.it>
|
|
|
|
This mini-driver drives the SNC and SPIC device present in the ACPI BIOS of the
|
|
Sony Vaio laptops. This driver mixes both devices functions under the same
|
|
(hopefully consistent) interface. This also means that the sonypi driver is
|
|
obsoleted by sony-laptop now.
|
|
|
|
Fn keys (hotkeys):
|
|
------------------
|
|
Some models report hotkeys through the SNC or SPIC devices, such events are
|
|
reported both through the ACPI subsystem as acpi events and through the INPUT
|
|
subsystem. See the logs of acpid or /proc/acpi/event and
|
|
/proc/bus/input/devices to find out what those events are and which input
|
|
devices are created by the driver. Additionally, loading the driver with the
|
|
debug option will report all events in the kernel log.
|
|
|
|
The "scancodes" passed to the input system (that can be remapped with udev)
|
|
are indexes to the table "sony_laptop_input_keycode_map" in the sony-laptop.c
|
|
module. For example the "FN/E" key combination (EJECTCD on some models)
|
|
generates the scancode 20 (0x14).
|
|
|
|
Backlight control:
|
|
------------------
|
|
If your laptop model supports it, you will find sysfs files in the
|
|
/sys/class/backlight/sony/
|
|
directory. You will be able to query and set the current screen
|
|
brightness:
|
|
brightness get/set screen brightness (an integer
|
|
between 0 and 7)
|
|
actual_brightness reading from this file will query the HW
|
|
to get real brightness value
|
|
max_brightness the maximum brightness value
|
|
|
|
|
|
Platform specific:
|
|
------------------
|
|
Loading the sony-laptop module will create a
|
|
/sys/devices/platform/sony-laptop/
|
|
directory populated with some files.
|
|
|
|
You then read/write integer values from/to those files by using
|
|
standard UNIX tools.
|
|
|
|
The files are:
|
|
brightness_default screen brightness which will be set
|
|
when the laptop will be rebooted
|
|
cdpower power on/off the internal CD drive
|
|
audiopower power on/off the internal sound card
|
|
lanpower power on/off the internal ethernet card
|
|
(only in debug mode)
|
|
bluetoothpower power on/off the internal bluetooth device
|
|
fanspeed get/set the fan speed
|
|
|
|
Note that some files may be missing if they are not supported
|
|
by your particular laptop model.
|
|
|
|
Example usage:
|
|
# echo "1" > /sys/devices/platform/sony-laptop/brightness_default
|
|
sets the lowest screen brightness for the next and later reboots,
|
|
# echo "8" > /sys/devices/platform/sony-laptop/brightness_default
|
|
sets the highest screen brightness for the next and later reboots,
|
|
# cat /sys/devices/platform/sony-laptop/brightness_default
|
|
retrieves the value.
|
|
|
|
# echo "0" > /sys/devices/platform/sony-laptop/audiopower
|
|
powers off the sound card,
|
|
# echo "1" > /sys/devices/platform/sony-laptop/audiopower
|
|
powers on the sound card.
|
|
|
|
|
|
RFkill control:
|
|
---------------
|
|
More recent Vaio models expose a consistent set of ACPI methods to
|
|
control radio frequency emitting devices. If you are a lucky owner of
|
|
such a laptop you will find the necessary rfkill devices under
|
|
/sys/class/rfkill. Check those starting with sony-* in
|
|
# grep . /sys/class/rfkill/*/{state,name}
|
|
|
|
|
|
Development:
|
|
------------
|
|
|
|
If you want to help with the development of this driver (and
|
|
you are not afraid of any side effects doing strange things with
|
|
your ACPI BIOS could have on your laptop), load the driver and
|
|
pass the option 'debug=1'.
|
|
|
|
REPEAT: DON'T DO THIS IF YOU DON'T LIKE RISKY BUSINESS.
|
|
|
|
In your kernel logs you will find the list of all ACPI methods
|
|
the SNC device has on your laptop.
|
|
|
|
* For new models you will see a long list of meaningless method names,
|
|
reading the DSDT table source should reveal that:
|
|
(1) the SNC device uses an internal capability lookup table
|
|
(2) SN00 is used to find values in the lookup table
|
|
(3) SN06 and SN07 are used to call into the real methods based on
|
|
offsets you can obtain iterating the table using SN00
|
|
(4) SN02 used to enable events.
|
|
Some values in the capability lookup table are more or less known, see
|
|
the code for all sony_call_snc_handle calls, others are more obscure.
|
|
|
|
* For old models you can see the GCDP/GCDP methods used to pwer on/off
|
|
the CD drive, but there are others and they are usually different from
|
|
model to model.
|
|
|
|
I HAVE NO IDEA WHAT THOSE METHODS DO.
|
|
|
|
The sony-laptop driver creates, for some of those methods (the most
|
|
current ones found on several Vaio models), an entry under
|
|
/sys/devices/platform/sony-laptop, just like the 'cdpower' one.
|
|
You can create other entries corresponding to your own laptop methods by
|
|
further editing the source (see the 'sony_nc_values' table, and add a new
|
|
entry to this table with your get/set method names using the
|
|
SNC_HANDLE_NAMES macro).
|
|
|
|
Your mission, should you accept it, is to try finding out what
|
|
those entries are for, by reading/writing random values from/to those
|
|
files and find out what is the impact on your laptop.
|
|
|
|
Should you find anything interesting, please report it back to me,
|
|
I will not disavow all knowledge of your actions :)
|
|
|
|
See also http://www.linux.it/~malattia/wiki/index.php/Sony_drivers for other
|
|
useful info.
|
|
|
|
Bugs/Limitations:
|
|
-----------------
|
|
|
|
* This driver is not based on official documentation from Sony
|
|
(because there is none), so there is no guarantee this driver
|
|
will work at all, or do the right thing. Although this hasn't
|
|
happened to me, this driver could do very bad things to your
|
|
laptop, including permanent damage.
|
|
|
|
* The sony-laptop and sonypi drivers do not interact at all. In the
|
|
future, sonypi will be removed and replaced by sony-laptop.
|
|
|
|
* spicctrl, which is the userspace tool used to communicate with the
|
|
sonypi driver (through /dev/sonypi) is deprecated as well since all
|
|
its features are now available under the sysfs tree via sony-laptop.
|