mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-28 07:13:34 +00:00
Pull sony into release branch
This commit is contained in:
commit
cfaae3ee4a
9 changed files with 2077 additions and 268 deletions
|
@ -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:
|
||||||
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
|
||||||
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.
|
||||||
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
|
||||||
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.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* 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);
|
||||||
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 {
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
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,
|
||||||
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,
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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,
|
||||||
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 @@ static int __devinit meye_probe(struct pci_dev *pcidev,
|
||||||
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)
|
||||||
|
|
||||||
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 @@
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/* 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
|
||||||
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
|
||||||
|
|
File diff suppressed because it is too large
Load diff
34
include/linux/sony-laptop.h
Normal file
34
include/linux/sony-laptop.h
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#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_ */
|
Loading…
Reference in a new issue