| 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. |