==================================================
Sony Programmable I/O Control Device Driver Readme
==================================================

	- Copyright (C) 2001-2004 Stelian Pop <stelian@popies.net>
	- Copyright (C) 2001-2002 Alcôve <www.alcove.com>
	- Copyright (C) 2001 Michael Ashley <m.ashley@unsw.edu.au>
	- Copyright (C) 2001 Junichi Morita <jun1m@mars.dti.ne.jp>
	- Copyright (C) 2000 Takaya Kinjo <t-kinjo@tc4.so-net.ne.jp>
	- Copyright (C) 2000 Andrew Tridgell <tridge@samba.org>

This driver enables access to the Sony Programmable I/O Control Device which
can be found in many Sony Vaio laptops. Some newer Sony laptops (seems to be
limited to new FX series laptops, at least the FX501 and the FX702) lack a
sonypi device and are not supported at all by this driver.

It will give access (through a user space utility) to some events those laptops
generate, like:

	- jogdial events (the small wheel on the side of Vaios)
	- capture button events (only on Vaio Picturebook series)
	- Fn keys
	- bluetooth button (only on C1VR model)
	- programmable keys, back, help, zoom, thumbphrase buttons, etc.
	  (when available)

Those events (see linux/sonypi.h) can be polled using the character device node
/dev/sonypi (major 10, minor auto allocated or specified as a option).
A simple daemon which translates the jogdial movements into mouse wheel events
can be downloaded at: <http://popies.net/sonypi/>

Another option to intercept the events is to get them directly through the
input layer.

This driver supports also some ioctl commands for setting the LCD screen
brightness and querying the batteries charge information (some more
commands may be added in the future).

This driver can also be used to set the camera controls on Picturebook series
(brightness, contrast etc), and is used by the video4linux driver for the
Motion Eye camera.

Please note that this driver was created by reverse engineering the Windows
driver and the ACPI BIOS, because Sony doesn't agree to release any programming
specs for its laptops. If someone convinces them to do so, drop me a note.

Driver options:
---------------

Several options can be passed to the sonypi driver using the standard
module argument syntax (<param>=<value> when passing the option to the
module or sonypi.<param>=<value> on the kernel boot line when sonypi is
statically linked into the kernel). Those options are:

	=============== =======================================================
	minor:		minor number of the misc device /dev/sonypi,
			default is -1 (automatic allocation, see /proc/misc
			or kernel logs)

	camera:		if you have a PictureBook series Vaio (with the
			integrated MotionEye camera), set this parameter to 1
			in order to let the driver access to the camera

	fnkeyinit:	on some Vaios (C1VE, C1VR etc), the Fn key events don't
			get enabled unless you set this parameter to 1.
			Do not use this option unless it's actually necessary,
			some Vaio models don't deal well with this option.
			This option is available only if the kernel is
			compiled without ACPI support (since it conflicts
			with it and it shouldn't be required anyway if
			ACPI is already enabled).

	verbose:	set to 1 to print unknown events received from the
			sonypi device.
			set to 2 to print all events received from the
			sonypi device.

	compat:		uses some compatibility code for enabling the sonypi
			events. If the driver worked for you in the past
			(prior to version 1.5) and does not work anymore,
			add this option and report to the author.

	mask:		event mask telling the driver what events will be
			reported to the user. This parameter is required for
			some Vaio models where the hardware reuses values
			used in other Vaio models (like the FX series who does
			not have a jogdial but reuses the jogdial events for
			programmable keys events). The default event mask is
			set to 0xffffffff, meaning that all possible events
			will be tried. You can use the following bits to
			construct your own event mask (from
			drivers/char/sonypi.h)::

				SONYPI_JOGGER_MASK		0x0001
				SONYPI_CAPTURE_MASK		0x0002
				SONYPI_FNKEY_MASK		0x0004
				SONYPI_BLUETOOTH_MASK		0x0008
				SONYPI_PKEY_MASK		0x0010
				SONYPI_BACK_MASK		0x0020
				SONYPI_HELP_MASK		0x0040
				SONYPI_LID_MASK			0x0080
				SONYPI_ZOOM_MASK		0x0100
				SONYPI_THUMBPHRASE_MASK		0x0200
				SONYPI_MEYE_MASK		0x0400
				SONYPI_MEMORYSTICK_MASK		0x0800
				SONYPI_BATTERY_MASK		0x1000
				SONYPI_WIRELESS_MASK		0x2000

	useinput:	if set (which is the default) two input devices are
			created, one which interprets the jogdial events as
			mouse events, the other one which acts like a
			keyboard reporting the pressing of the special keys.
	=============== =======================================================

Module use:
-----------

In order to automatically load the sonypi module on use, you can put those
lines a configuration file in /etc/modprobe.d/::

	alias char-major-10-250 sonypi
	options sonypi minor=250

This supposes the use of minor 250 for the sonypi device::

	# mknod /dev/sonypi c 10 250

Bugs:
-----

	- several users reported that this driver disables the BIOS-managed
	  Fn-keys which put the laptop in sleeping state, or switch the
	  external monitor on/off. There is no workaround yet, since this
	  driver disables all APM management for those keys, by enabling the
	  ACPI management (and the ACPI core stuff is not complete yet). If
	  you have one of those laptops with working Fn keys and want to
	  continue to use them, don't use this driver.

	- some users reported that the laptop speed is lower (dhrystone
	  tested) when using the driver with the fnkeyinit parameter. I cannot
	  reproduce it on my laptop and not all users have this problem.
	  This happens because the fnkeyinit parameter enables the ACPI
	  mode (but without additional ACPI control, like processor
	  speed handling etc). Use ACPI instead of APM if it works on your
	  laptop.

	- sonypi lacks the ability to distinguish between certain key
	  events on some models.

	- some models with the nvidia card (geforce go 6200 tc) uses a
	  different way to adjust the backlighting of the screen. There
	  is a userspace utility to adjust the brightness on those models,
	  which can be downloaded from
	  http://www.acc.umu.se/~erikw/program/smartdimmer-0.1.tar.bz2

	- since all development was done by reverse engineering, there is
	  *absolutely no guarantee* that this driver will not crash your
	  laptop. Permanently.
