mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 08:26:29 +00:00 
			
		
		
		
	 d2052c1676
			
		
	
	
		d2052c1676
		
	
	
	
	
		
			
			Newer Sony VAIO models (VGN-S480, VGN-S460, VGN-S3XP etc) use a new method to initialize the SPIC device. The new way to initialize (and disable) the device comes directly from the AML code in the _CRS, _SRS and _DIS methods from the DSDT table. This patch adds support for the new models. Signed-off-by: Erik Waling <erikw@acc.umu.se> Signed-off-by: Stelian Pop <stelian@popies.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
		
			
				
	
	
		
			153 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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 in your /etc/modprobe.conf file:
 | |
| 
 | |
| 	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.
 |