Commit cfaae3ee authored by Len Brown's avatar Len Brown

Pull sony into release branch

parents eaf60d69 c6c60106
...@@ -3,12 +3,18 @@ Sony Notebook Control Driver (SNC) Readme ...@@ -3,12 +3,18 @@ Sony Notebook Control Driver (SNC) Readme
Copyright (C) 2004- 2005 Stelian Pop <stelian@popies.net> Copyright (C) 2004- 2005 Stelian Pop <stelian@popies.net>
Copyright (C) 2007 Mattia Dongili <malattia@linux.it> Copyright (C) 2007 Mattia Dongili <malattia@linux.it>
This mini-driver drives the SNC device present in the ACPI BIOS of This mini-driver drives the SNC and SPIC device present in the ACPI BIOS of the
the Sony Vaio laptops. 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.
It gives access to some extra laptop functionalities. In its current Fn keys (hotkeys):
form, this driver let the user set or query the screen brightness ------------------
through the backlight subsystem and remove/apply power to some devices. 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: Backlight control:
------------------ ------------------
...@@ -39,6 +45,8 @@ The files are: ...@@ -39,6 +45,8 @@ The files are:
audiopower power on/off the internal sound card audiopower power on/off the internal sound card
lanpower power on/off the internal ethernet card lanpower power on/off the internal ethernet card
(only in debug mode) (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 Note that some files may be missing if they are not supported
by your particular laptop model. by your particular laptop model.
...@@ -76,9 +84,9 @@ The sony-laptop driver creates, for some of those methods (the most ...@@ -76,9 +84,9 @@ The sony-laptop driver creates, for some of those methods (the most
current ones found on several Vaio models), an entry under current ones found on several Vaio models), an entry under
/sys/devices/platform/sony-laptop, just like the 'cdpower' one. /sys/devices/platform/sony-laptop, just like the 'cdpower' one.
You can create other entries corresponding to your own laptop methods by You can create other entries corresponding to your own laptop methods by
further editing the source (see the 'sony_acpi_values' table, and add a new 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 entry to this table with your get/set method names using the
HANDLE_NAMES macro). SNC_HANDLE_NAMES macro).
Your mission, should you accept it, is to try finding out what Your mission, should you accept it, is to try finding out what
those entries are for, by reading/writing random values from/to those those entries are for, by reading/writing random values from/to those
...@@ -87,6 +95,9 @@ files and find out what is the impact on your laptop. ...@@ -87,6 +95,9 @@ files and find out what is the impact on your laptop.
Should you find anything interesting, please report it back to me, Should you find anything interesting, please report it back to me,
I will not disavow all knowledge of your actions :) 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: Bugs/Limitations:
----------------- -----------------
......
...@@ -5,10 +5,9 @@ Vaio Picturebook Motion Eye Camera Driver Readme ...@@ -5,10 +5,9 @@ Vaio Picturebook Motion Eye Camera Driver Readme
Copyright (C) 2000 Andrew Tridgell <tridge@samba.org> Copyright (C) 2000 Andrew Tridgell <tridge@samba.org>
This driver enable the use of video4linux compatible applications with the This driver enable the use of video4linux compatible applications with the
Motion Eye camera. This driver requires the "Sony Vaio Programmable I/O Motion Eye camera. This driver requires the "Sony Laptop Extras" driver (which
Control Device" driver (which can be found in the "Character drivers" can be found in the "Misc devices" section of the kernel configuration utility)
section of the kernel configuration utility) to be compiled and installed to be compiled and installed (using its "camera=1" parameter).
(using its "camera=1" parameter).
It can do at maximum 30 fps @ 320x240 or 15 fps @ 640x480. It can do at maximum 30 fps @ 320x240 or 15 fps @ 640x480.
......
/* /*
* Sony Programmable I/O Control Device driver for VAIO * Sony Programmable I/O Control Device driver for VAIO
* *
* Copyright (C) 2007 Mattia Dongili <malattia@linux.it>
*
* Copyright (C) 2001-2005 Stelian Pop <stelian@popies.net> * Copyright (C) 2001-2005 Stelian Pop <stelian@popies.net>
* *
* Copyright (C) 2005 Narayanan R S <nars@kadamba.org> * Copyright (C) 2005 Narayanan R S <nars@kadamba.org>
...@@ -95,6 +97,11 @@ module_param(useinput, int, 0444); ...@@ -95,6 +97,11 @@ module_param(useinput, int, 0444);
MODULE_PARM_DESC(useinput, MODULE_PARM_DESC(useinput,
"set this if you would like sonypi to feed events to the input subsystem"); "set this if you would like sonypi to feed events to the input subsystem");
static int check_ioport = 1;
module_param(check_ioport, int, 0444);
MODULE_PARM_DESC(check_ioport,
"set this to 0 if you think the automatic ioport check for sony-laptop is wrong");
#define SONYPI_DEVICE_MODEL_TYPE1 1 #define SONYPI_DEVICE_MODEL_TYPE1 1
#define SONYPI_DEVICE_MODEL_TYPE2 2 #define SONYPI_DEVICE_MODEL_TYPE2 2
#define SONYPI_DEVICE_MODEL_TYPE3 3 #define SONYPI_DEVICE_MODEL_TYPE3 3
...@@ -477,7 +484,7 @@ static struct sonypi_device { ...@@ -477,7 +484,7 @@ static struct sonypi_device {
u16 evtype_offset; u16 evtype_offset;
int camera_power; int camera_power;
int bluetooth_power; int bluetooth_power;
struct semaphore lock; struct mutex lock;
struct kfifo *fifo; struct kfifo *fifo;
spinlock_t fifo_lock; spinlock_t fifo_lock;
wait_queue_head_t fifo_proc_list; wait_queue_head_t fifo_proc_list;
...@@ -884,7 +891,7 @@ int sonypi_camera_command(int command, u8 value) ...@@ -884,7 +891,7 @@ int sonypi_camera_command(int command, u8 value)
if (!camera) if (!camera)
return -EIO; return -EIO;
down(&sonypi_device.lock); mutex_lock(&sonypi_device.lock);
switch (command) { switch (command) {
case SONYPI_COMMAND_SETCAMERA: case SONYPI_COMMAND_SETCAMERA:
...@@ -919,7 +926,7 @@ int sonypi_camera_command(int command, u8 value) ...@@ -919,7 +926,7 @@ int sonypi_camera_command(int command, u8 value)
command); command);
break; break;
} }
up(&sonypi_device.lock); mutex_unlock(&sonypi_device.lock);
return 0; return 0;
} }
...@@ -938,20 +945,20 @@ static int sonypi_misc_fasync(int fd, struct file *filp, int on) ...@@ -938,20 +945,20 @@ static int sonypi_misc_fasync(int fd, struct file *filp, int on)
static int sonypi_misc_release(struct inode *inode, struct file *file) static int sonypi_misc_release(struct inode *inode, struct file *file)
{ {
sonypi_misc_fasync(-1, file, 0); sonypi_misc_fasync(-1, file, 0);
down(&sonypi_device.lock); mutex_lock(&sonypi_device.lock);
sonypi_device.open_count--; sonypi_device.open_count--;
up(&sonypi_device.lock); mutex_unlock(&sonypi_device.lock);
return 0; return 0;
} }
static int sonypi_misc_open(struct inode *inode, struct file *file) static int sonypi_misc_open(struct inode *inode, struct file *file)
{ {
down(&sonypi_device.lock); mutex_lock(&sonypi_device.lock);
/* Flush input queue on first open */ /* Flush input queue on first open */
if (!sonypi_device.open_count) if (!sonypi_device.open_count)
kfifo_reset(sonypi_device.fifo); kfifo_reset(sonypi_device.fifo);
sonypi_device.open_count++; sonypi_device.open_count++;
up(&sonypi_device.lock); mutex_unlock(&sonypi_device.lock);
return 0; return 0;
} }
...@@ -1001,7 +1008,7 @@ static int sonypi_misc_ioctl(struct inode *ip, struct file *fp, ...@@ -1001,7 +1008,7 @@ static int sonypi_misc_ioctl(struct inode *ip, struct file *fp,
u8 val8; u8 val8;
u16 val16; u16 val16;
down(&sonypi_device.lock); mutex_lock(&sonypi_device.lock);
switch (cmd) { switch (cmd) {
case SONYPI_IOCGBRT: case SONYPI_IOCGBRT:
if (sonypi_ec_read(SONYPI_LCD_LIGHT, &val8)) { if (sonypi_ec_read(SONYPI_LCD_LIGHT, &val8)) {
...@@ -1101,7 +1108,7 @@ static int sonypi_misc_ioctl(struct inode *ip, struct file *fp, ...@@ -1101,7 +1108,7 @@ static int sonypi_misc_ioctl(struct inode *ip, struct file *fp,
default: default:
ret = -EINVAL; ret = -EINVAL;
} }
up(&sonypi_device.lock); mutex_unlock(&sonypi_device.lock);
return ret; return ret;
} }
...@@ -1260,6 +1267,28 @@ static int __devinit sonypi_create_input_devices(void) ...@@ -1260,6 +1267,28 @@ static int __devinit sonypi_create_input_devices(void)
static int __devinit sonypi_setup_ioports(struct sonypi_device *dev, static int __devinit sonypi_setup_ioports(struct sonypi_device *dev,
const struct sonypi_ioport_list *ioport_list) const struct sonypi_ioport_list *ioport_list)
{ {
/* try to detect if sony-laptop is being used and thus
* has already requested one of the known ioports.
* As in the deprecated check_region this is racy has we have
* multiple ioports available and one of them can be requested
* between this check and the subsequent request. Anyway, as an
* attempt to be some more user-friendly as we currently are,
* this is enough.
*/
const struct sonypi_ioport_list *check = ioport_list;
while (check_ioport && check->port1) {
if (!request_region(check->port1,
sonypi_device.region_size,
"Sony Programable I/O Device Check")) {
printk(KERN_ERR "sonypi: ioport 0x%.4x busy, using sony-laptop? "
"if not use check_ioport=0\n",
check->port1);
return -EBUSY;
}
release_region(check->port1, sonypi_device.region_size);
check++;
}
while (ioport_list->port1) { while (ioport_list->port1) {
if (request_region(ioport_list->port1, if (request_region(ioport_list->port1,
...@@ -1321,6 +1350,10 @@ static int __devinit sonypi_probe(struct platform_device *dev) ...@@ -1321,6 +1350,10 @@ static int __devinit sonypi_probe(struct platform_device *dev)
struct pci_dev *pcidev; struct pci_dev *pcidev;
int error; int error;
printk(KERN_WARNING "sonypi: please try the sony-laptop module instead "
"and report failures, see also "
"http://www.linux.it/~malattia/wiki/index.php/Sony_drivers\n");
spin_lock_init(&sonypi_device.fifo_lock); spin_lock_init(&sonypi_device.fifo_lock);
sonypi_device.fifo = kfifo_alloc(SONYPI_BUF_SIZE, GFP_KERNEL, sonypi_device.fifo = kfifo_alloc(SONYPI_BUF_SIZE, GFP_KERNEL,
&sonypi_device.fifo_lock); &sonypi_device.fifo_lock);
...@@ -1330,7 +1363,7 @@ static int __devinit sonypi_probe(struct platform_device *dev) ...@@ -1330,7 +1363,7 @@ static int __devinit sonypi_probe(struct platform_device *dev)
} }
init_waitqueue_head(&sonypi_device.fifo_proc_list); init_waitqueue_head(&sonypi_device.fifo_proc_list);
init_MUTEX(&sonypi_device.lock); mutex_init(&sonypi_device.lock);
sonypi_device.bluetooth_power = -1; sonypi_device.bluetooth_power = -1;
if ((pcidev = pci_get_device(PCI_VENDOR_ID_INTEL, if ((pcidev = pci_get_device(PCI_VENDOR_ID_INTEL,
......
...@@ -577,14 +577,14 @@ config VIDEO_ZORAN_AVS6EYES ...@@ -577,14 +577,14 @@ config VIDEO_ZORAN_AVS6EYES
config VIDEO_MEYE config VIDEO_MEYE
tristate "Sony Vaio Picturebook Motion Eye Video For Linux" tristate "Sony Vaio Picturebook Motion Eye Video For Linux"
depends on PCI && SONYPI && VIDEO_V4L1 depends on PCI && SONY_LAPTOP && VIDEO_V4L1
---help--- ---help---
This is the video4linux driver for the Motion Eye camera found This is the video4linux driver for the Motion Eye camera found
in the Vaio Picturebook laptops. Please read the material in in the Vaio Picturebook laptops. Please read the material in
<file:Documentation/video4linux/meye.txt> for more information. <file:Documentation/video4linux/meye.txt> for more information.
If you say Y or M here, you need to say Y or M to "Sony Programmable If you say Y or M here, you need to say Y or M to "Sony Laptop
I/O Control Device" in the character device section. Extras" in the misc device section.
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called meye. module will be called meye.
......
...@@ -925,13 +925,13 @@ static int meye_do_ioctl(struct inode *inode, struct file *file, ...@@ -925,13 +925,13 @@ static int meye_do_ioctl(struct inode *inode, struct file *file,
if (p->palette != VIDEO_PALETTE_YUV422 && p->palette != VIDEO_PALETTE_YUYV) if (p->palette != VIDEO_PALETTE_YUV422 && p->palette != VIDEO_PALETTE_YUYV)
return -EINVAL; return -EINVAL;
mutex_lock(&meye.lock); mutex_lock(&meye.lock);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERABRIGHTNESS, sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERABRIGHTNESS,
p->brightness >> 10); p->brightness >> 10);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERAHUE, sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERAHUE,
p->hue >> 10); p->hue >> 10);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERACOLOR, sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERACOLOR,
p->colour >> 10); p->colour >> 10);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERACONTRAST, sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERACONTRAST,
p->contrast >> 10); p->contrast >> 10);
meye.picture = *p; meye.picture = *p;
mutex_unlock(&meye.lock); mutex_unlock(&meye.lock);
...@@ -1043,11 +1043,11 @@ static int meye_do_ioctl(struct inode *inode, struct file *file, ...@@ -1043,11 +1043,11 @@ static int meye_do_ioctl(struct inode *inode, struct file *file,
meye.params.quality != jp->quality) meye.params.quality != jp->quality)
mchip_hic_stop(); /* need restart */ mchip_hic_stop(); /* need restart */
meye.params = *jp; meye.params = *jp;
sonypi_camera_command(SONYPI_COMMAND_SETCAMERASHARPNESS, sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERASHARPNESS,
meye.params.sharpness); meye.params.sharpness);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERAAGC, sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERAAGC,
meye.params.agc); meye.params.agc);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERAPICTURE, sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERAPICTURE,
meye.params.picture); meye.params.picture);
mutex_unlock(&meye.lock); mutex_unlock(&meye.lock);
break; break;
...@@ -1287,38 +1287,38 @@ static int meye_do_ioctl(struct inode *inode, struct file *file, ...@@ -1287,38 +1287,38 @@ static int meye_do_ioctl(struct inode *inode, struct file *file,
mutex_lock(&meye.lock); mutex_lock(&meye.lock);
switch (c->id) { switch (c->id) {
case V4L2_CID_BRIGHTNESS: case V4L2_CID_BRIGHTNESS:
sonypi_camera_command( sony_pic_camera_command(
SONYPI_COMMAND_SETCAMERABRIGHTNESS, c->value); SONY_PIC_COMMAND_SETCAMERABRIGHTNESS, c->value);
meye.picture.brightness = c->value << 10; meye.picture.brightness = c->value << 10;
break; break;
case V4L2_CID_HUE: case V4L2_CID_HUE:
sonypi_camera_command( sony_pic_camera_command(
SONYPI_COMMAND_SETCAMERAHUE, c->value); SONY_PIC_COMMAND_SETCAMERAHUE, c->value);
meye.picture.hue = c->value << 10; meye.picture.hue = c->value << 10;
break; break;
case V4L2_CID_CONTRAST: case V4L2_CID_CONTRAST:
sonypi_camera_command( sony_pic_camera_command(
SONYPI_COMMAND_SETCAMERACONTRAST, c->value); SONY_PIC_COMMAND_SETCAMERACONTRAST, c->value);
meye.picture.contrast = c->value << 10; meye.picture.contrast = c->value << 10;
break; break;
case V4L2_CID_SATURATION: case V4L2_CID_SATURATION:
sonypi_camera_command( sony_pic_camera_command(
SONYPI_COMMAND_SETCAMERACOLOR, c->value); SONY_PIC_COMMAND_SETCAMERACOLOR, c->value);
meye.picture.colour = c->value << 10; meye.picture.colour = c->value << 10;
break; break;
case V4L2_CID_AGC: case V4L2_CID_AGC:
sonypi_camera_command( sony_pic_camera_command(
SONYPI_COMMAND_SETCAMERAAGC, c->value); SONY_PIC_COMMAND_SETCAMERAAGC, c->value);
meye.params.agc = c->value; meye.params.agc = c->value;
break; break;
case V4L2_CID_SHARPNESS: case V4L2_CID_SHARPNESS:
sonypi_camera_command( sony_pic_camera_command(
SONYPI_COMMAND_SETCAMERASHARPNESS, c->value); SONY_PIC_COMMAND_SETCAMERASHARPNESS, c->value);
meye.params.sharpness = c->value; meye.params.sharpness = c->value;
break; break;
case V4L2_CID_PICTURE: case V4L2_CID_PICTURE:
sonypi_camera_command( sony_pic_camera_command(
SONYPI_COMMAND_SETCAMERAPICTURE, c->value); SONY_PIC_COMMAND_SETCAMERAPICTURE, c->value);
meye.params.picture = c->value; meye.params.picture = c->value;
break; break;
case V4L2_CID_JPEGQUAL: case V4L2_CID_JPEGQUAL:
...@@ -1848,7 +1848,7 @@ static int __devinit meye_probe(struct pci_dev *pcidev, ...@@ -1848,7 +1848,7 @@ static int __devinit meye_probe(struct pci_dev *pcidev,
memcpy(meye.video_dev, &meye_template, sizeof(meye_template)); memcpy(meye.video_dev, &meye_template, sizeof(meye_template));
meye.video_dev->dev = &meye.mchip_dev->dev; meye.video_dev->dev = &meye.mchip_dev->dev;
if ((ret = sonypi_camera_command(SONYPI_COMMAND_SETCAMERA, 1))) { if ((ret = sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERA, 1))) {
printk(KERN_ERR "meye: unable to power on the camera\n"); printk(KERN_ERR "meye: unable to power on the camera\n");
printk(KERN_ERR "meye: did you enable the camera in " printk(KERN_ERR "meye: did you enable the camera in "
"sonypi using the module options ?\n"); "sonypi using the module options ?\n");
...@@ -1928,13 +1928,13 @@ static int __devinit meye_probe(struct pci_dev *pcidev, ...@@ -1928,13 +1928,13 @@ static int __devinit meye_probe(struct pci_dev *pcidev,
meye.params.picture = 0; meye.params.picture = 0;
meye.params.framerate = 0; meye.params.framerate = 0;
sonypi_camera_command(SONYPI_COMMAND_SETCAMERABRIGHTNESS, 32); sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERABRIGHTNESS, 32);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERAHUE, 32); sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERAHUE, 32);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERACOLOR, 32); sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERACOLOR, 32);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERACONTRAST, 32); sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERACONTRAST, 32);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERASHARPNESS, 32); sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERASHARPNESS, 32);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERAPICTURE, 0); sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERAPICTURE, 0);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERAAGC, 48); sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERAAGC, 48);
printk(KERN_INFO "meye: Motion Eye Camera Driver v%s.\n", printk(KERN_INFO "meye: Motion Eye Camera Driver v%s.\n",
MEYE_DRIVER_VERSION); MEYE_DRIVER_VERSION);
...@@ -1953,7 +1953,7 @@ outremap: ...@@ -1953,7 +1953,7 @@ outremap:
outregions: outregions:
pci_disable_device(meye.mchip_dev); pci_disable_device(meye.mchip_dev);
outenabledev: outenabledev:
sonypi_camera_command(SONYPI_COMMAND_SETCAMERA, 0); sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERA, 0);
outsonypienable: outsonypienable:
kfifo_free(meye.doneq); kfifo_free(meye.doneq);
outkfifoalloc2: outkfifoalloc2:
...@@ -1986,7 +1986,7 @@ static void __devexit meye_remove(struct pci_dev *pcidev) ...@@ -1986,7 +1986,7 @@ static void __devexit meye_remove(struct pci_dev *pcidev)
pci_disable_device(meye.mchip_dev); pci_disable_device(meye.mchip_dev);
sonypi_camera_command(SONYPI_COMMAND_SETCAMERA, 0); sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERA, 0);
kfifo_free(meye.doneq); kfifo_free(meye.doneq);
kfifo_free(meye.grabq); kfifo_free(meye.grabq);
......
...@@ -255,7 +255,7 @@ ...@@ -255,7 +255,7 @@
/****************************************************************************/ /****************************************************************************/
/* Sony Programmable I/O Controller for accessing the camera commands */ /* Sony Programmable I/O Controller for accessing the camera commands */
#include <linux/sonypi.h> #include <linux/sony-laptop.h>
/* private API definitions */ /* private API definitions */
#include <linux/meye.h> #include <linux/meye.h>
......
...@@ -112,14 +112,19 @@ config SONY_LAPTOP ...@@ -112,14 +112,19 @@ config SONY_LAPTOP
depends on X86 && ACPI depends on X86 && ACPI
select BACKLIGHT_CLASS_DEVICE select BACKLIGHT_CLASS_DEVICE
---help--- ---help---
This mini-driver drives the SNC device present in the ACPI BIOS of This mini-driver drives the SNC and SPIC devices present in the ACPI
the Sony Vaio laptops. BIOS of the Sony Vaio laptops.
It gives access to some extra laptop functionalities. In its current It gives access to some extra laptop functionalities like Bluetooth,
form, this driver let the user set or query the screen brightness screen brightness control, Fn keys and allows powering on/off some
through the backlight subsystem and remove/apply power to some
devices. devices.
Read <file:Documentation/sony-laptop.txt> for more information. Read <file:Documentation/sony-laptop.txt> for more information.
config SONY_LAPTOP_OLD
bool "Sonypi compatibility"
depends on SONY_LAPTOP
---help---
Build the sonypi driver compatibility code into the sony-laptop driver.
endmenu endmenu
This diff is collapsed.
#ifndef _SONYLAPTOP_H_
#define _SONYLAPTOP_H_
#include <linux/types.h>
#ifdef __KERNEL__
/* used only for communication between v4l and sony-laptop */
#define SONY_PIC_COMMAND_GETCAMERA 1 /* obsolete */
#define SONY_PIC_COMMAND_SETCAMERA 2
#define SONY_PIC_COMMAND_GETCAMERABRIGHTNESS 3 /* obsolete */
#define SONY_PIC_COMMAND_SETCAMERABRIGHTNESS 4
#define SONY_PIC_COMMAND_GETCAMERACONTRAST 5 /* obsolete */
#define SONY_PIC_COMMAND_SETCAMERACONTRAST 6
#define SONY_PIC_COMMAND_GETCAMERAHUE 7 /* obsolete */
#define SONY_PIC_COMMAND_SETCAMERAHUE 8
#define SONY_PIC_COMMAND_GETCAMERACOLOR 9 /* obsolete */
#define SONY_PIC_COMMAND_SETCAMERACOLOR 10
#define SONY_PIC_COMMAND_GETCAMERASHARPNESS 11 /* obsolete */
#define SONY_PIC_COMMAND_SETCAMERASHARPNESS 12
#define SONY_PIC_COMMAND_GETCAMERAPICTURE 13 /* obsolete */
#define SONY_PIC_COMMAND_SETCAMERAPICTURE 14
#define SONY_PIC_COMMAND_GETCAMERAAGC 15 /* obsolete */
#define SONY_PIC_COMMAND_SETCAMERAAGC 16
#define SONY_PIC_COMMAND_GETCAMERADIRECTION 17 /* obsolete */
#define SONY_PIC_COMMAND_GETCAMERAROMVERSION 18 /* obsolete */
#define SONY_PIC_COMMAND_GETCAMERAREVISION 19 /* obsolete */
int sony_pic_camera_command(int command, u8 value);
#endif /* __KERNEL__ */
#endif /* _SONYLAPTOP_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment