175 lines
6.0 KiB
ReStructuredText
175 lines
6.0 KiB
ReStructuredText
|
=========================================
|
||
|
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 /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.
|