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.

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.

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. You can see the GCDP/GCDP methods
used to pwer on/off the CD drive, but there are others.

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 could use sony-laptop to do (part of) its business.

* spicctrl, which is the userspace tool used to communicate with the
  sonypi driver (through /dev/sonypi) does not try to use the
  sony-laptop driver. In the future, spicctrl could try sonypi first,
  and if it isn't present, try sony-laptop instead.
