0001 ==================================================
0002 Sony Programmable I/O Control Device Driver Readme
0003 ==================================================
0004
0005 - Copyright (C) 2001-2004 Stelian Pop <stelian@popies.net>
0006 - Copyright (C) 2001-2002 AlcĂ´ve <www.alcove.com>
0007 - Copyright (C) 2001 Michael Ashley <m.ashley@unsw.edu.au>
0008 - Copyright (C) 2001 Junichi Morita <jun1m@mars.dti.ne.jp>
0009 - Copyright (C) 2000 Takaya Kinjo <t-kinjo@tc4.so-net.ne.jp>
0010 - Copyright (C) 2000 Andrew Tridgell <tridge@samba.org>
0011
0012 This driver enables access to the Sony Programmable I/O Control Device which
0013 can be found in many Sony Vaio laptops. Some newer Sony laptops (seems to be
0014 limited to new FX series laptops, at least the FX501 and the FX702) lack a
0015 sonypi device and are not supported at all by this driver.
0016
0017 It will give access (through a user space utility) to some events those laptops
0018 generate, like:
0019
0020 - jogdial events (the small wheel on the side of Vaios)
0021 - capture button events (only on Vaio Picturebook series)
0022 - Fn keys
0023 - bluetooth button (only on C1VR model)
0024 - programmable keys, back, help, zoom, thumbphrase buttons, etc.
0025 (when available)
0026
0027 Those events (see linux/sonypi.h) can be polled using the character device node
0028 /dev/sonypi (major 10, minor auto allocated or specified as a option).
0029 A simple daemon which translates the jogdial movements into mouse wheel events
0030 can be downloaded at: <http://popies.net/sonypi/>
0031
0032 Another option to intercept the events is to get them directly through the
0033 input layer.
0034
0035 This driver supports also some ioctl commands for setting the LCD screen
0036 brightness and querying the batteries charge information (some more
0037 commands may be added in the future).
0038
0039 This driver can also be used to set the camera controls on Picturebook series
0040 (brightness, contrast etc), and is used by the video4linux driver for the
0041 Motion Eye camera.
0042
0043 Please note that this driver was created by reverse engineering the Windows
0044 driver and the ACPI BIOS, because Sony doesn't agree to release any programming
0045 specs for its laptops. If someone convinces them to do so, drop me a note.
0046
0047 Driver options:
0048 ---------------
0049
0050 Several options can be passed to the sonypi driver using the standard
0051 module argument syntax (<param>=<value> when passing the option to the
0052 module or sonypi.<param>=<value> on the kernel boot line when sonypi is
0053 statically linked into the kernel). Those options are:
0054
0055 =============== =======================================================
0056 minor: minor number of the misc device /dev/sonypi,
0057 default is -1 (automatic allocation, see /proc/misc
0058 or kernel logs)
0059
0060 camera: if you have a PictureBook series Vaio (with the
0061 integrated MotionEye camera), set this parameter to 1
0062 in order to let the driver access to the camera
0063
0064 fnkeyinit: on some Vaios (C1VE, C1VR etc), the Fn key events don't
0065 get enabled unless you set this parameter to 1.
0066 Do not use this option unless it's actually necessary,
0067 some Vaio models don't deal well with this option.
0068 This option is available only if the kernel is
0069 compiled without ACPI support (since it conflicts
0070 with it and it shouldn't be required anyway if
0071 ACPI is already enabled).
0072
0073 verbose: set to 1 to print unknown events received from the
0074 sonypi device.
0075 set to 2 to print all events received from the
0076 sonypi device.
0077
0078 compat: uses some compatibility code for enabling the sonypi
0079 events. If the driver worked for you in the past
0080 (prior to version 1.5) and does not work anymore,
0081 add this option and report to the author.
0082
0083 mask: event mask telling the driver what events will be
0084 reported to the user. This parameter is required for
0085 some Vaio models where the hardware reuses values
0086 used in other Vaio models (like the FX series who does
0087 not have a jogdial but reuses the jogdial events for
0088 programmable keys events). The default event mask is
0089 set to 0xffffffff, meaning that all possible events
0090 will be tried. You can use the following bits to
0091 construct your own event mask (from
0092 drivers/char/sonypi.h)::
0093
0094 SONYPI_JOGGER_MASK 0x0001
0095 SONYPI_CAPTURE_MASK 0x0002
0096 SONYPI_FNKEY_MASK 0x0004
0097 SONYPI_BLUETOOTH_MASK 0x0008
0098 SONYPI_PKEY_MASK 0x0010
0099 SONYPI_BACK_MASK 0x0020
0100 SONYPI_HELP_MASK 0x0040
0101 SONYPI_LID_MASK 0x0080
0102 SONYPI_ZOOM_MASK 0x0100
0103 SONYPI_THUMBPHRASE_MASK 0x0200
0104 SONYPI_MEYE_MASK 0x0400
0105 SONYPI_MEMORYSTICK_MASK 0x0800
0106 SONYPI_BATTERY_MASK 0x1000
0107 SONYPI_WIRELESS_MASK 0x2000
0108
0109 useinput: if set (which is the default) two input devices are
0110 created, one which interprets the jogdial events as
0111 mouse events, the other one which acts like a
0112 keyboard reporting the pressing of the special keys.
0113 =============== =======================================================
0114
0115 Module use:
0116 -----------
0117
0118 In order to automatically load the sonypi module on use, you can put those
0119 lines a configuration file in /etc/modprobe.d/::
0120
0121 alias char-major-10-250 sonypi
0122 options sonypi minor=250
0123
0124 This supposes the use of minor 250 for the sonypi device::
0125
0126 # mknod /dev/sonypi c 10 250
0127
0128 Bugs:
0129 -----
0130
0131 - several users reported that this driver disables the BIOS-managed
0132 Fn-keys which put the laptop in sleeping state, or switch the
0133 external monitor on/off. There is no workaround yet, since this
0134 driver disables all APM management for those keys, by enabling the
0135 ACPI management (and the ACPI core stuff is not complete yet). If
0136 you have one of those laptops with working Fn keys and want to
0137 continue to use them, don't use this driver.
0138
0139 - some users reported that the laptop speed is lower (dhrystone
0140 tested) when using the driver with the fnkeyinit parameter. I cannot
0141 reproduce it on my laptop and not all users have this problem.
0142 This happens because the fnkeyinit parameter enables the ACPI
0143 mode (but without additional ACPI control, like processor
0144 speed handling etc). Use ACPI instead of APM if it works on your
0145 laptop.
0146
0147 - sonypi lacks the ability to distinguish between certain key
0148 events on some models.
0149
0150 - some models with the nvidia card (geforce go 6200 tc) uses a
0151 different way to adjust the backlighting of the screen. There
0152 is a userspace utility to adjust the brightness on those models,
0153 which can be downloaded from
0154 https://www.acc.umu.se/~erikw/program/smartdimmer-0.1.tar.bz2
0155
0156 - since all development was done by reverse engineering, there is
0157 *absolutely no guarantee* that this driver will not crash your
0158 laptop. Permanently.