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.
