Commit d56410e0 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

V4L/DVB (3599b): Whitespace cleanups under drivers/media

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 9f6933be
...@@ -370,7 +370,7 @@ config VIDEO_SAA7127 ...@@ -370,7 +370,7 @@ config VIDEO_SAA7127
# #
menu "V4L USB devices" menu "V4L USB devices"
depends on USB && VIDEO_DEV depends on USB && VIDEO_DEV
source "drivers/media/video/em28xx/Kconfig" source "drivers/media/video/em28xx/Kconfig"
...@@ -528,17 +528,17 @@ config USB_W9968CF ...@@ -528,17 +528,17 @@ config USB_W9968CF
---help--- ---help---
Say Y here if you want support for cameras based on OV681 or Say Y here if you want support for cameras based on OV681 or
Winbond W9967CF/W9968CF JPEG USB Dual Mode Camera Chips. Winbond W9967CF/W9968CF JPEG USB Dual Mode Camera Chips.
This driver has an optional plugin, which is distributed as a This driver has an optional plugin, which is distributed as a
separate module only (released under GPL). It allows to use higher separate module only (released under GPL). It allows to use higher
resolutions and framerates, but cannot be included in the official resolutions and framerates, but cannot be included in the official
Linux kernel for performance purposes. Linux kernel for performance purposes.
See <file:Documentation/usb/w9968cf.txt> for more informations. See <file:Documentation/usb/w9968cf.txt> for more informations.
This driver uses the Video For Linux and the I2C APIs. It needs the This driver uses the Video For Linux and the I2C APIs. It needs the
OmniVision Camera Chip support as well. You must say Y or M to OmniVision Camera Chip support as well. You must say Y or M to
"Video For Linux", "I2C Support" and "OmniVision Camera Chip "Video For Linux", "I2C Support" and "OmniVision Camera Chip
support" to use this driver. support" to use this driver.
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
...@@ -564,20 +564,20 @@ config USB_PWC ...@@ -564,20 +564,20 @@ config USB_PWC
depends on USB && VIDEO_DEV depends on USB && VIDEO_DEV
---help--- ---help---
Say Y or M here if you want to use one of these Philips & OEM Say Y or M here if you want to use one of these Philips & OEM
webcams: webcams:
* Philips PCA645, PCA646 * Philips PCA645, PCA646
* Philips PCVC675, PCVC680, PCVC690 * Philips PCVC675, PCVC680, PCVC690
* Philips PCVC720/40, PCVC730, PCVC740, PCVC750 * Philips PCVC720/40, PCVC730, PCVC740, PCVC750
* Askey VC010 * Askey VC010
* Logitech QuickCam Pro 3000, 4000, 'Zoom', 'Notebook Pro' * Logitech QuickCam Pro 3000, 4000, 'Zoom', 'Notebook Pro'
and 'Orbit'/'Sphere' and 'Orbit'/'Sphere'
* Samsung MPC-C10, MPC-C30 * Samsung MPC-C10, MPC-C30
* Creative Webcam 5, Pro Ex * Creative Webcam 5, Pro Ex
* SOTEC Afina Eye * SOTEC Afina Eye
* Visionite VCS-UC300, VCS-UM100 * Visionite VCS-UC300, VCS-UM100
The PCA635, PCVC665 and PCVC720/20 are not supported by this driver The PCA635, PCVC665 and PCVC720/20 are not supported by this driver
and never will be, but the 665 and 720/20 are supported by other and never will be, but the 665 and 720/20 are supported by other
drivers. drivers.
See <file:Documentation/usb/philips.txt> for more information and See <file:Documentation/usb/philips.txt> for more information and
......
/* /*
* adv7170 - adv7170, adv7171 video encoder driver version 0.0.1 * adv7170 - adv7170, adv7171 video encoder driver version 0.0.1
* *
* Copyright (C) 2002 Maxim Yevtyushkin <max@linuxmedialabs.com> * Copyright (C) 2002 Maxim Yevtyushkin <max@linuxmedialabs.com>
* *
* Based on adv7176 driver by: * Based on adv7176 driver by:
* *
* Copyright (C) 1998 Dave Perks <dperks@ibm.net> * Copyright (C) 1998 Dave Perks <dperks@ibm.net>
* Copyright (C) 1999 Wolfgang Scherr <scherr@net4you.net> * Copyright (C) 1999 Wolfgang Scherr <scherr@net4you.net>
...@@ -173,7 +173,7 @@ adv7170_write_block (struct i2c_client *client, ...@@ -173,7 +173,7 @@ adv7170_write_block (struct i2c_client *client,
static const unsigned char init_NTSC[] = { static const unsigned char init_NTSC[] = {
0x00, 0x10, // MR0 0x00, 0x10, // MR0
0x01, 0x20, // MR1 0x01, 0x20, // MR1
0x02, 0x0e, // MR2 RTC control: bits 2 and 1 0x02, 0x0e, // MR2 RTC control: bits 2 and 1
0x03, 0x80, // MR3 0x03, 0x80, // MR3
0x04, 0x30, // MR4 0x04, 0x30, // MR4
0x05, 0x00, // Reserved 0x05, 0x00, // Reserved
...@@ -196,7 +196,7 @@ static const unsigned char init_NTSC[] = { ...@@ -196,7 +196,7 @@ static const unsigned char init_NTSC[] = {
0x16, 0x00, // CGMS_WSS_0 0x16, 0x00, // CGMS_WSS_0
0x17, 0x00, // CGMS_WSS_1 0x17, 0x00, // CGMS_WSS_1
0x18, 0x00, // CGMS_WSS_2 0x18, 0x00, // CGMS_WSS_2
0x19, 0x00, // Teletext Ctl 0x19, 0x00, // Teletext Ctl
}; };
static const unsigned char init_PAL[] = { static const unsigned char init_PAL[] = {
...@@ -381,7 +381,7 @@ static unsigned short normal_i2c[] = ...@@ -381,7 +381,7 @@ static unsigned short normal_i2c[] =
}; };
static unsigned short ignore = I2C_CLIENT_END; static unsigned short ignore = I2C_CLIENT_END;
static struct i2c_client_address_data addr_data = { static struct i2c_client_address_data addr_data = {
.normal_i2c = normal_i2c, .normal_i2c = normal_i2c,
.probe = &ignore, .probe = &ignore,
......
/* /*
* adv7175 - adv7175a video encoder driver version 0.0.3 * adv7175 - adv7175a video encoder driver version 0.0.3
* *
* Copyright (C) 1998 Dave Perks <dperks@ibm.net> * Copyright (C) 1998 Dave Perks <dperks@ibm.net>
...@@ -233,7 +233,7 @@ adv7175_command (struct i2c_client *client, ...@@ -233,7 +233,7 @@ adv7175_command (struct i2c_client *client,
sizeof(init_common)); sizeof(init_common));
adv7175_write(client, 0x07, TR0MODE | TR0RST); adv7175_write(client, 0x07, TR0MODE | TR0RST);
adv7175_write(client, 0x07, TR0MODE); adv7175_write(client, 0x07, TR0MODE);
break; break;
case ENCODER_GET_CAPABILITIES: case ENCODER_GET_CAPABILITIES:
{ {
...@@ -399,7 +399,7 @@ static unsigned short normal_i2c[] = ...@@ -399,7 +399,7 @@ static unsigned short normal_i2c[] =
}; };
static unsigned short ignore = I2C_CLIENT_END; static unsigned short ignore = I2C_CLIENT_END;
static struct i2c_client_address_data addr_data = { static struct i2c_client_address_data addr_data = {
.normal_i2c = normal_i2c, .normal_i2c = normal_i2c,
.probe = &ignore, .probe = &ignore,
......
...@@ -161,39 +161,39 @@ void iic(int n, unsigned long addr, unsigned long data1, unsigned long data2, ...@@ -161,39 +161,39 @@ void iic(int n, unsigned long addr, unsigned long data1, unsigned long data2,
{ {
int i; int i;
/* Slave Address */ /* Slave Address */
ar_outl(addr, PLDI2CDATA); ar_outl(addr, PLDI2CDATA);
wait_for_vsync(); wait_for_vsync();
/* Start */ /* Start */
ar_outl(1, PLDI2CCND); ar_outl(1, PLDI2CCND);
wait_acknowledge(); wait_acknowledge();
/* Transfer data 1 */ /* Transfer data 1 */
ar_outl(data1, PLDI2CDATA); ar_outl(data1, PLDI2CDATA);
wait_for_vsync(); wait_for_vsync();
ar_outl(PLDI2CSTEN_STEN, PLDI2CSTEN); ar_outl(PLDI2CSTEN_STEN, PLDI2CSTEN);
wait_acknowledge(); wait_acknowledge();
/* Transfer data 2 */ /* Transfer data 2 */
ar_outl(data2, PLDI2CDATA); ar_outl(data2, PLDI2CDATA);
wait_for_vsync(); wait_for_vsync();
ar_outl(PLDI2CSTEN_STEN, PLDI2CSTEN); ar_outl(PLDI2CSTEN_STEN, PLDI2CSTEN);
wait_acknowledge(); wait_acknowledge();
if (n == 3) { if (n == 3) {
/* Transfer data 3 */ /* Transfer data 3 */
ar_outl(data3, PLDI2CDATA); ar_outl(data3, PLDI2CDATA);
wait_for_vsync(); wait_for_vsync();
ar_outl(PLDI2CSTEN_STEN, PLDI2CSTEN); ar_outl(PLDI2CSTEN_STEN, PLDI2CSTEN);
wait_acknowledge(); wait_acknowledge();
} }
/* Stop */ /* Stop */
for (i = 0; i < 100; i++) for (i = 0; i < 100; i++)
cpu_relax(); cpu_relax();
ar_outl(2, PLDI2CCND); ar_outl(2, PLDI2CCND);
ar_outl(2, PLDI2CCND); ar_outl(2, PLDI2CCND);
while (ar_inl(PLDI2CSTS) & PLDI2CSTS_BB) while (ar_inl(PLDI2CSTS) & PLDI2CSTS_BB)
cpu_relax(); cpu_relax();
...@@ -204,24 +204,24 @@ void init_iic(void) ...@@ -204,24 +204,24 @@ void init_iic(void)
{ {
DEBUG(1, "init_iic:\n"); DEBUG(1, "init_iic:\n");
/* /*
* ICU Setting (iic) * ICU Setting (iic)
*/ */
/* I2C Setting */ /* I2C Setting */
ar_outl(0x0, PLDI2CCR); /* I2CCR Disable */ ar_outl(0x0, PLDI2CCR); /* I2CCR Disable */
ar_outl(0x0300, PLDI2CMOD); /* I2CMOD ACK/8b-data/7b-addr/auto */ ar_outl(0x0300, PLDI2CMOD); /* I2CMOD ACK/8b-data/7b-addr/auto */
ar_outl(0x1, PLDI2CACK); /* I2CACK ACK */ ar_outl(0x1, PLDI2CACK); /* I2CACK ACK */
/* I2C CLK */ /* I2C CLK */
/* 50MH-100k */ /* 50MH-100k */
if (freq == 75) { if (freq == 75) {
ar_outl(369, PLDI2CFREQ); /* BCLK = 75MHz */ ar_outl(369, PLDI2CFREQ); /* BCLK = 75MHz */
} else if (freq == 50) { } else if (freq == 50) {
ar_outl(244, PLDI2CFREQ); /* BCLK = 50MHz */ ar_outl(244, PLDI2CFREQ); /* BCLK = 50MHz */
} else { } else {
ar_outl(244, PLDI2CFREQ); /* default: BCLK = 50MHz */ ar_outl(244, PLDI2CFREQ); /* default: BCLK = 50MHz */
} }
ar_outl(0x1, PLDI2CCR); /* I2CCR Enable */ ar_outl(0x1, PLDI2CCR); /* I2CCR Enable */
} }
/************************************************************************** /**************************************************************************
...@@ -253,7 +253,7 @@ static inline void wait_for_vertical_sync(int exp_line) ...@@ -253,7 +253,7 @@ static inline void wait_for_vertical_sync(int exp_line)
/* /*
* check HCOUNT because we cannot check vertical sync. * check HCOUNT because we cannot check vertical sync.
*/ */
for (; tmout >= 0; tmout--) { for (; tmout >= 0; tmout--) {
l = ar_inl(ARVHCOUNT); l = ar_inl(ARVHCOUNT);
if (l == exp_line) if (l == exp_line)
...@@ -562,8 +562,8 @@ static void ar_interrupt(int irq, void *dev, struct pt_regs *regs) ...@@ -562,8 +562,8 @@ static void ar_interrupt(int irq, void *dev, struct pt_regs *regs)
/* operations for interlace mode */ /* operations for interlace mode */
if ( line_count < (AR_HEIGHT_VGA/2) ) /* even line */ if ( line_count < (AR_HEIGHT_VGA/2) ) /* even line */
line_number = (line_count << 1); line_number = (line_count << 1);
else /* odd line */ else /* odd line */
line_number = line_number =
(((line_count - (AR_HEIGHT_VGA/2)) << 1) + 1); (((line_count - (AR_HEIGHT_VGA/2)) << 1) + 1);
} else { } else {
line_number = line_count; line_number = line_count;
...@@ -651,7 +651,7 @@ static int ar_initialize(struct video_device *dev) ...@@ -651,7 +651,7 @@ static int ar_initialize(struct video_device *dev)
cr |= ARVCR1_NORMAL; cr |= ARVCR1_NORMAL;
ar_outl(cr, ARVCR1); ar_outl(cr, ARVCR1);
/* /*
* Initialize IIC so that CPU can communicate with AR LSI, * Initialize IIC so that CPU can communicate with AR LSI,
* and send boot commands to AR LSI. * and send boot commands to AR LSI.
*/ */
...@@ -846,7 +846,7 @@ static int __init ar_init(void) ...@@ -846,7 +846,7 @@ static int __init ar_init(void)
* so register video device as a frame grabber type. * so register video device as a frame grabber type.
* device is named "video[0-64]". * device is named "video[0-64]".
* video_register_device() initializes h/w using ar_initialize(). * video_register_device() initializes h/w using ar_initialize().
*/ */
if (video_register_device(ar->vdev, VFL_TYPE_GRABBER, video_nr) != 0) { if (video_register_device(ar->vdev, VFL_TYPE_GRABBER, video_nr) != 0) {
/* return -1, -ENFILE(full) or others */ /* return -1, -ENFILE(full) or others */
printk("arv: register video (Colour AR) failed.\n"); printk("arv: register video (Colour AR) failed.\n");
......
/* /*
* bt819 - BT819A VideoStream Decoder (Rockwell Part) * bt819 - BT819A VideoStream Decoder (Rockwell Part)
* *
* Copyright (C) 1999 Mike Bernson <mike@mlb.org> * Copyright (C) 1999 Mike Bernson <mike@mlb.org>
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* *
* Modifications for LML33/DC10plus unified driver * Modifications for LML33/DC10plus unified driver
* Copyright (C) 2000 Serguei Miridonov <mirsev@cicese.mx> * Copyright (C) 2000 Serguei Miridonov <mirsev@cicese.mx>
* *
* Changes by Ronald Bultje <rbultje@ronald.bitfreak.net> * Changes by Ronald Bultje <rbultje@ronald.bitfreak.net>
* - moved over to linux>=2.4.x i2c protocol (9/9/2002) * - moved over to linux>=2.4.x i2c protocol (9/9/2002)
* *
...@@ -206,9 +206,9 @@ bt819_init (struct i2c_client *client) ...@@ -206,9 +206,9 @@ bt819_init (struct i2c_client *client)
Bug in the bt819 stepping on my board? Bug in the bt819 stepping on my board?
*/ */
0x14, 0x00, /* 0x14 Vertial Scaling lsb */ 0x14, 0x00, /* 0x14 Vertial Scaling lsb */
0x16, 0x07, /* 0x16 Video Timing Polarity 0x16, 0x07, /* 0x16 Video Timing Polarity
ACTIVE=active low ACTIVE=active low
FIELD: high=odd, FIELD: high=odd,
vreset=active high, vreset=active high,
hreset=active high */ hreset=active high */
0x18, 0x68, /* 0x18 AGC Delay */ 0x18, 0x68, /* 0x18 AGC Delay */
...@@ -497,7 +497,7 @@ static unsigned short normal_i2c[] = { ...@@ -497,7 +497,7 @@ static unsigned short normal_i2c[] = {
}; };
static unsigned short ignore = I2C_CLIENT_END; static unsigned short ignore = I2C_CLIENT_END;
static struct i2c_client_address_data addr_data = { static struct i2c_client_address_data addr_data = {
.normal_i2c = normal_i2c, .normal_i2c = normal_i2c,
.probe = &ignore, .probe = &ignore,
......
/* /*
* bt856 - BT856A Digital Video Encoder (Rockwell Part) * bt856 - BT856A Digital Video Encoder (Rockwell Part)
* *
* Copyright (C) 1999 Mike Bernson <mike@mlb.org> * Copyright (C) 1999 Mike Bernson <mike@mlb.org>
...@@ -285,7 +285,7 @@ bt856_command (struct i2c_client *client, ...@@ -285,7 +285,7 @@ bt856_command (struct i2c_client *client,
static unsigned short normal_i2c[] = { I2C_BT856 >> 1, I2C_CLIENT_END }; static unsigned short normal_i2c[] = { I2C_BT856 >> 1, I2C_CLIENT_END };
static unsigned short ignore = I2C_CLIENT_END; static unsigned short ignore = I2C_CLIENT_END;
static struct i2c_client_address_data addr_data = { static struct i2c_client_address_data addr_data = {
.normal_i2c = normal_i2c, .normal_i2c = normal_i2c,
.probe = &ignore, .probe = &ignore,
......
...@@ -150,7 +150,7 @@ static int qc_calibrate(struct qcam_device *q) ...@@ -150,7 +150,7 @@ static int qc_calibrate(struct qcam_device *q)
static struct qcam_device *qcam_init(struct parport *port) static struct qcam_device *qcam_init(struct parport *port)
{ {
struct qcam_device *q; struct qcam_device *q;
q = kmalloc(sizeof(struct qcam_device), GFP_KERNEL); q = kmalloc(sizeof(struct qcam_device), GFP_KERNEL);
if(q==NULL) if(q==NULL)
return NULL; return NULL;
...@@ -158,16 +158,16 @@ static struct qcam_device *qcam_init(struct parport *port) ...@@ -158,16 +158,16 @@ static struct qcam_device *qcam_init(struct parport *port)
q->pport = port; q->pport = port;
q->pdev = parport_register_device(port, "bw-qcam", NULL, NULL, q->pdev = parport_register_device(port, "bw-qcam", NULL, NULL,
NULL, 0, NULL); NULL, 0, NULL);
if (q->pdev == NULL) if (q->pdev == NULL)
{ {
printk(KERN_ERR "bw-qcam: couldn't register for %s.\n", printk(KERN_ERR "bw-qcam: couldn't register for %s.\n",
port->name); port->name);
kfree(q); kfree(q);
return NULL; return NULL;
} }
memcpy(&q->vdev, &qcam_template, sizeof(qcam_template)); memcpy(&q->vdev, &qcam_template, sizeof(qcam_template));
mutex_init(&q->lock); mutex_init(&q->lock);
q->port_mode = (QC_ANY | QC_NOTSET); q->port_mode = (QC_ANY | QC_NOTSET);
...@@ -236,12 +236,12 @@ static int qc_waithand(struct qcam_device *q, int val) ...@@ -236,12 +236,12 @@ static int qc_waithand(struct qcam_device *q, int val)
while (!((status = read_lpstatus(q)) & 8)) while (!((status = read_lpstatus(q)) & 8))
{ {
/* 1000 is enough spins on the I/O for all normal /* 1000 is enough spins on the I/O for all normal
cases, at that point we start to poll slowly cases, at that point we start to poll slowly
until the camera wakes up. However, we are until the camera wakes up. However, we are
busy blocked until the camera responds, so busy blocked until the camera responds, so
setting it lower is much better for interactive setting it lower is much better for interactive
response. */ response. */
if(runs++>maxpoll) if(runs++>maxpoll)
{ {
msleep_interruptible(5); msleep_interruptible(5);
...@@ -255,12 +255,12 @@ static int qc_waithand(struct qcam_device *q, int val) ...@@ -255,12 +255,12 @@ static int qc_waithand(struct qcam_device *q, int val)
while (((status = read_lpstatus(q)) & 8)) while (((status = read_lpstatus(q)) & 8))
{ {
/* 1000 is enough spins on the I/O for all normal /* 1000 is enough spins on the I/O for all normal
cases, at that point we start to poll slowly cases, at that point we start to poll slowly
until the camera wakes up. However, we are until the camera wakes up. However, we are
busy blocked until the camera responds, so busy blocked until the camera responds, so
setting it lower is much better for interactive setting it lower is much better for interactive
response. */ response. */
if(runs++>maxpoll) if(runs++>maxpoll)
{ {
msleep_interruptible(5); msleep_interruptible(5);
...@@ -282,17 +282,17 @@ static unsigned int qc_waithand2(struct qcam_device *q, int val) ...@@ -282,17 +282,17 @@ static unsigned int qc_waithand2(struct qcam_device *q, int val)
{ {
unsigned int status; unsigned int status;
int runs=0; int runs=0;
do do
{ {
status = read_lpdata(q); status = read_lpdata(q);
/* 1000 is enough spins on the I/O for all normal /* 1000 is enough spins on the I/O for all normal
cases, at that point we start to poll slowly cases, at that point we start to poll slowly
until the camera wakes up. However, we are until the camera wakes up. However, we are
busy blocked until the camera responds, so busy blocked until the camera responds, so
setting it lower is much better for interactive setting it lower is much better for interactive
response. */ response. */
if(runs++>maxpoll) if(runs++>maxpoll)
{ {
msleep_interruptible(5); msleep_interruptible(5);
...@@ -321,7 +321,7 @@ static int qc_detect(struct qcam_device *q) ...@@ -321,7 +321,7 @@ static int qc_detect(struct qcam_device *q)
lastreg = reg = read_lpstatus(q) & 0xf0; lastreg = reg = read_lpstatus(q) & 0xf0;
for (i = 0; i < 500; i++) for (i = 0; i < 500; i++)
{ {
reg = read_lpstatus(q) & 0xf0; reg = read_lpstatus(q) & 0xf0;
if (reg != lastreg) if (reg != lastreg)
...@@ -357,7 +357,7 @@ static int qc_detect(struct qcam_device *q) ...@@ -357,7 +357,7 @@ static int qc_detect(struct qcam_device *q)
static void qc_reset(struct qcam_device *q) static void qc_reset(struct qcam_device *q)
{ {
switch (q->port_mode & QC_FORCE_MASK) switch (q->port_mode & QC_FORCE_MASK)
{ {
case QC_FORCE_UNIDIR: case QC_FORCE_UNIDIR:
q->port_mode = (q->port_mode & ~QC_MODE_MASK) | QC_UNIDIR; q->port_mode = (q->port_mode & ~QC_MODE_MASK) | QC_UNIDIR;
...@@ -370,7 +370,7 @@ static void qc_reset(struct qcam_device *q) ...@@ -370,7 +370,7 @@ static void qc_reset(struct qcam_device *q)
case QC_ANY: case QC_ANY:
write_lpcontrol(q, 0x20); write_lpcontrol(q, 0x20);
write_lpdata(q, 0x75); write_lpdata(q, 0x75);
if (read_lpdata(q) != 0x75) { if (read_lpdata(q) != 0x75) {
q->port_mode = (q->port_mode & ~QC_MODE_MASK) | QC_BIDIR; q->port_mode = (q->port_mode & ~QC_MODE_MASK) | QC_BIDIR;
} else { } else {
...@@ -398,8 +398,8 @@ static void qc_reset(struct qcam_device *q) ...@@ -398,8 +398,8 @@ static void qc_reset(struct qcam_device *q)
static int qc_setscanmode(struct qcam_device *q) static int qc_setscanmode(struct qcam_device *q)
{ {
int old_mode = q->mode; int old_mode = q->mode;
switch (q->transfer_scale) switch (q->transfer_scale)
{ {
case 1: case 1:
q->mode = 0; q->mode = 0;
...@@ -412,7 +412,7 @@ static int qc_setscanmode(struct qcam_device *q) ...@@ -412,7 +412,7 @@ static int qc_setscanmode(struct qcam_device *q)
break; break;
} }
switch (q->bpp) switch (q->bpp)
{ {
case 4: case 4:
break; break;
...@@ -421,7 +421,7 @@ static int qc_setscanmode(struct qcam_device *q) ...@@ -421,7 +421,7 @@ static int qc_setscanmode(struct qcam_device *q)
break; break;
} }
switch (q->port_mode & QC_MODE_MASK) switch (q->port_mode & QC_MODE_MASK)
{ {
case QC_BIDIR: case QC_BIDIR:
q->mode += 1; q->mode += 1;
...@@ -430,10 +430,10 @@ static int qc_setscanmode(struct qcam_device *q) ...@@ -430,10 +430,10 @@ static int qc_setscanmode(struct qcam_device *q)
case QC_UNIDIR: case QC_UNIDIR:
break; break;
} }
if (q->mode != old_mode) if (q->mode != old_mode)
q->status |= QC_PARAM_CHANGE; q->status |= QC_PARAM_CHANGE;
return 0; return 0;
} }
...@@ -451,7 +451,7 @@ static void qc_set(struct qcam_device *q) ...@@ -451,7 +451,7 @@ static void qc_set(struct qcam_device *q)
/* Set the brightness. Yes, this is repetitive, but it works. /* Set the brightness. Yes, this is repetitive, but it works.
* Shorter versions seem to fail subtly. Feel free to try :-). */ * Shorter versions seem to fail subtly. Feel free to try :-). */
/* I think the problem was in qc_command, not here -- bls */ /* I think the problem was in qc_command, not here -- bls */
qc_command(q, 0xb); qc_command(q, 0xb);
qc_command(q, q->brightness); qc_command(q, q->brightness);
...@@ -502,13 +502,13 @@ static inline int qc_readbytes(struct qcam_device *q, char buffer[]) ...@@ -502,13 +502,13 @@ static inline int qc_readbytes(struct qcam_device *q, char buffer[])
unsigned int hi2, lo2; unsigned int hi2, lo2;
static int state = 0; static int state = 0;
if (buffer == NULL) if (buffer == NULL)
{ {
state = 0; state = 0;
return 0; return 0;
} }
switch (q->port_mode & QC_MODE_MASK) switch (q->port_mode & QC_MODE_MASK)
{ {
case QC_BIDIR: /* Bi-directional Port */ case QC_BIDIR: /* Bi-directional Port */
write_lpcontrol(q, 0x26); write_lpcontrol(q, 0x26);
...@@ -517,7 +517,7 @@ static inline int qc_readbytes(struct qcam_device *q, char buffer[]) ...@@ -517,7 +517,7 @@ static inline int qc_readbytes(struct qcam_device *q, char buffer[])
write_lpcontrol(q, 0x2e); write_lpcontrol(q, 0x2e);
lo2 = (qc_waithand2(q, 0) >> 1); lo2 = (qc_waithand2(q, 0) >> 1);
hi2 = (read_lpstatus(q) >> 3) & 0x1f; hi2 = (read_lpstatus(q) >> 3) & 0x1f;
switch (q->bpp) switch (q->bpp)
{ {
case 4: case 4:
buffer[0] = lo & 0xf; buffer[0] = lo & 0xf;
...@@ -544,7 +544,7 @@ static inline int qc_readbytes(struct qcam_device *q, char buffer[]) ...@@ -544,7 +544,7 @@ static inline int qc_readbytes(struct qcam_device *q, char buffer[])
write_lpcontrol(q, 0xe); write_lpcontrol(q, 0xe);
hi = (qc_waithand(q, 0) & 0xf0) >> 4; hi = (qc_waithand(q, 0) & 0xf0) >> 4;
switch (q->bpp) switch (q->bpp)
{ {
case 4: case 4:
buffer[0] = lo; buffer[0] = lo;
...@@ -552,7 +552,7 @@ static inline int qc_readbytes(struct qcam_device *q, char buffer[]) ...@@ -552,7 +552,7 @@ static inline int qc_readbytes(struct qcam_device *q, char buffer[])
ret = 2; ret = 2;
break; break;
case 6: case 6:
switch (state) switch (state)
{ {
case 0: case 0:
buffer[0] = (lo << 2) | ((hi & 0xc) >> 2); buffer[0] = (lo << 2) | ((hi & 0xc) >> 2);
...@@ -604,13 +604,13 @@ static long qc_capture(struct qcam_device * q, char __user *buf, unsigned long l ...@@ -604,13 +604,13 @@ static long qc_capture(struct qcam_device * q, char __user *buf, unsigned long l
int shift=8-q->bpp; int shift=8-q->bpp;
char invert; char invert;
if (q->mode == -1) if (q->mode == -1)
return -ENXIO; return -ENXIO;
qc_command(q, 0x7); qc_command(q, 0x7);
qc_command(q, q->mode); qc_command(q, q->mode);
if ((q->port_mode & QC_MODE_MASK) == QC_BIDIR) if ((q->port_mode & QC_MODE_MASK) == QC_BIDIR)
{ {
write_lpcontrol(q, 0x2e); /* turn port around */ write_lpcontrol(q, 0x2e); /* turn port around */
write_lpcontrol(q, 0x26); write_lpcontrol(q, 0x26);
...@@ -618,7 +618,7 @@ static long qc_capture(struct qcam_device * q, char __user *buf, unsigned long l ...@@ -618,7 +618,7 @@ static long qc_capture(struct qcam_device * q, char __user *buf, unsigned long l
write_lpcontrol(q, 0x2e); write_lpcontrol(q, 0x2e);
(void) qc_waithand(q, 0); (void) qc_waithand(q, 0);
} }
/* strange -- should be 15:63 below, but 4bpp is odd */ /* strange -- should be 15:63 below, but 4bpp is odd */
invert = (q->bpp == 4) ? 16 : 63; invert = (q->bpp == 4) ? 16 : 63;
...@@ -629,15 +629,15 @@ static long qc_capture(struct qcam_device * q, char __user *buf, unsigned long l ...@@ -629,15 +629,15 @@ static long qc_capture(struct qcam_device * q, char __user *buf, unsigned long l
q->transfer_scale; q->transfer_scale;
transperline = (transperline + divisor - 1) / divisor; transperline = (transperline + divisor - 1) / divisor;
for (i = 0, yield = yieldlines; i < linestotrans; i++) for (i = 0, yield = yieldlines; i < linestotrans; i++)
{ {
for (pixels_read = j = 0; j < transperline; j++) for (pixels_read = j = 0; j < transperline; j++)
{ {
bytes = qc_readbytes(q, buffer); bytes = qc_readbytes(q, buffer);
for (k = 0; k < bytes && (pixels_read + k) < pixels_per_line; k++) for (k = 0; k < bytes && (pixels_read + k) < pixels_per_line; k++)
{ {
int o; int o;
if (buffer[k] == 0 && invert == 16) if (buffer[k] == 0 && invert == 16)
{ {
/* 4bpp is odd (again) -- inverter is 16, not 15, but output /* 4bpp is odd (again) -- inverter is 16, not 15, but output
must be 0-15 -- bls */ must be 0-15 -- bls */
...@@ -653,7 +653,7 @@ static long qc_capture(struct qcam_device * q, char __user *buf, unsigned long l ...@@ -653,7 +653,7 @@ static long qc_capture(struct qcam_device * q, char __user *buf, unsigned long l
pixels_read += bytes; pixels_read += bytes;
} }
(void) qc_readbytes(q, NULL); /* reset state machine */ (void) qc_readbytes(q, NULL); /* reset state machine */
/* Grabbing an entire frame from the quickcam is a lengthy /* Grabbing an entire frame from the quickcam is a lengthy
process. We don't (usually) want to busy-block the process. We don't (usually) want to busy-block the
processor for the entire frame. yieldlines is a module processor for the entire frame. yieldlines is a module
...@@ -666,7 +666,7 @@ static long qc_capture(struct qcam_device * q, char __user *buf, unsigned long l ...@@ -666,7 +666,7 @@ static long qc_capture(struct qcam_device * q, char __user *buf, unsigned long l
} }
} }
if ((q->port_mode & QC_MODE_MASK) == QC_BIDIR) if ((q->port_mode & QC_MODE_MASK) == QC_BIDIR)
{ {
write_lpcontrol(q, 2); write_lpcontrol(q, 2);
write_lpcontrol(q, 6); write_lpcontrol(q, 6);
...@@ -687,7 +687,7 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file, ...@@ -687,7 +687,7 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file,
{ {
struct video_device *dev = video_devdata(file); struct video_device *dev = video_devdata(file);
struct qcam_device *qcam=(struct qcam_device *)dev; struct qcam_device *qcam=(struct qcam_device *)dev;
switch(cmd) switch(cmd)
{ {
case VIDIOCGCAP: case VIDIOCGCAP:
...@@ -762,7 +762,7 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file, ...@@ -762,7 +762,7 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file,
return -EINVAL; return -EINVAL;
if(p->depth!=4 && p->depth!=6) if(p->depth!=4 && p->depth!=6)
return -EINVAL; return -EINVAL;
/* /*
* Now load the camera. * Now load the camera.
*/ */
...@@ -790,11 +790,11 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file, ...@@ -790,11 +790,11 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file,
return -EINVAL; return -EINVAL;
if(vw->width<80||vw->width>320) if(vw->width<80||vw->width>320)
return -EINVAL; return -EINVAL;
qcam->width = 320; qcam->width = 320;
qcam->height = 240; qcam->height = 240;
qcam->transfer_scale = 4; qcam->transfer_scale = 4;
if(vw->width>=160 && vw->height>=120) if(vw->width>=160 && vw->height>=120)
{ {
qcam->transfer_scale = 2; qcam->transfer_scale = 2;
...@@ -808,11 +808,11 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file, ...@@ -808,11 +808,11 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file,
mutex_lock(&qcam->lock); mutex_lock(&qcam->lock);
qc_setscanmode(qcam); qc_setscanmode(qcam);
mutex_unlock(&qcam->lock); mutex_unlock(&qcam->lock);
/* We must update the camera before we grab. We could /* We must update the camera before we grab. We could
just have changed the grab size */ just have changed the grab size */
qcam->status |= QC_PARAM_CHANGE; qcam->status |= QC_PARAM_CHANGE;
/* Ok we figured out what to use from our wide choice */ /* Ok we figured out what to use from our wide choice */
return 0; return 0;
} }
...@@ -853,9 +853,9 @@ static ssize_t qcam_read(struct file *file, char __user *buf, ...@@ -853,9 +853,9 @@ static ssize_t qcam_read(struct file *file, char __user *buf,
struct qcam_device *qcam=(struct qcam_device *)v; struct qcam_device *qcam=(struct qcam_device *)v;
int len; int len;
parport_claim_or_block(qcam->pdev); parport_claim_or_block(qcam->pdev);
mutex_lock(&qcam->lock); mutex_lock(&qcam->lock);
qc_reset(qcam); qc_reset(qcam);
/* Update the camera parameters if we need to */ /* Update the camera parameters if we need to */
...@@ -863,13 +863,13 @@ static ssize_t qcam_read(struct file *file, char __user *buf, ...@@ -863,13 +863,13 @@ static ssize_t qcam_read(struct file *file, char __user *buf,
qc_set(qcam); qc_set(qcam);
len=qc_capture(qcam, buf,count); len=qc_capture(qcam, buf,count);
mutex_unlock(&qcam->lock); mutex_unlock(&qcam->lock);
parport_release(qcam->pdev); parport_release(qcam->pdev);
return len; return len;
} }
static struct file_operations qcam_fops = { static struct file_operations qcam_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.open = video_exclusive_open, .open = video_exclusive_open,
...@@ -905,11 +905,11 @@ static int init_bwqcam(struct parport *port) ...@@ -905,11 +905,11 @@ static int init_bwqcam(struct parport *port)
qcam=qcam_init(port); qcam=qcam_init(port);
if(qcam==NULL) if(qcam==NULL)
return -ENODEV; return -ENODEV;
parport_claim_or_block(qcam->pdev); parport_claim_or_block(qcam->pdev);
qc_reset(qcam); qc_reset(qcam);
if(qc_detect(qcam)==0) if(qc_detect(qcam)==0)
{ {
parport_release(qcam->pdev); parport_release(qcam->pdev);
...@@ -920,9 +920,9 @@ static int init_bwqcam(struct parport *port) ...@@ -920,9 +920,9 @@ static int init_bwqcam(struct parport *port)
qc_calibrate(qcam); qc_calibrate(qcam);
parport_release(qcam->pdev); parport_release(qcam->pdev);
printk(KERN_INFO "Connectix Quickcam on %s\n", qcam->pport->name); printk(KERN_INFO "Connectix Quickcam on %s\n", qcam->pport->name);
if(video_register_device(&qcam->vdev, VFL_TYPE_GRABBER, video_nr)==-1) if(video_register_device(&qcam->vdev, VFL_TYPE_GRABBER, video_nr)==-1)
{ {
parport_unregister_device(qcam->pdev); parport_unregister_device(qcam->pdev);
...@@ -1013,7 +1013,7 @@ static int __init init_bw_qcams(void) ...@@ -1013,7 +1013,7 @@ static int __init init_bw_qcams(void)
printk("Connectix Quickcam max-poll was above 5000. Using 5000.\n"); printk("Connectix Quickcam max-poll was above 5000. Using 5000.\n");
maxpoll = 5000; maxpoll = 5000;
} }
if (yieldlines < 1) { if (yieldlines < 1) {
printk("Connectix Quickcam yieldlines was less than 1. Using 1.\n"); printk("Connectix Quickcam yieldlines was less than 1. Using 1.\n");
yieldlines = 1; yieldlines = 1;
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
* *
* The parport parameter controls which parports will be scanned. * The parport parameter controls which parports will be scanned.
* Scanning all parports causes some printers to print a garbage page. * Scanning all parports causes some printers to print a garbage page.
* -- March 14, 1999 Billy Donahue <billy@escape.com> * -- March 14, 1999 Billy Donahue <billy@escape.com>
* *
* Fixed data format to BGR, added force_rgb parameter. Added missing * Fixed data format to BGR, added force_rgb parameter. Added missing
* parport_unregister_driver() on module removal. * parport_unregister_driver() on module removal.
...@@ -88,7 +88,7 @@ static inline unsigned int qcam_ready2(struct qcam_device *qcam) ...@@ -88,7 +88,7 @@ static inline unsigned int qcam_ready2(struct qcam_device *qcam)
return (parport_read_data(qcam->pport) & 0x1)?1:0; return (parport_read_data(qcam->pport) & 0x1)?1:0;
} }
static unsigned int qcam_await_ready1(struct qcam_device *qcam, static unsigned int qcam_await_ready1(struct qcam_device *qcam,
int value) int value)
{ {
unsigned long oldjiffies = jiffies; unsigned long oldjiffies = jiffies;
...@@ -98,7 +98,7 @@ static unsigned int qcam_await_ready1(struct qcam_device *qcam, ...@@ -98,7 +98,7 @@ static unsigned int qcam_await_ready1(struct qcam_device *qcam,
if (qcam_ready1(qcam) == value) if (qcam_ready1(qcam) == value)
return 0; return 0;
/* If the camera didn't respond within 1/25 second, poll slowly /* If the camera didn't respond within 1/25 second, poll slowly
for a while. */ for a while. */
for (i = 0; i < 50; i++) for (i = 0; i < 50; i++)
{ {
...@@ -123,7 +123,7 @@ static unsigned int qcam_await_ready2(struct qcam_device *qcam, int value) ...@@ -123,7 +123,7 @@ static unsigned int qcam_await_ready2(struct qcam_device *qcam, int value)
if (qcam_ready2(qcam) == value) if (qcam_ready2(qcam) == value)
return 0; return 0;
/* If the camera didn't respond within 1/25 second, poll slowly /* If the camera didn't respond within 1/25 second, poll slowly
for a while. */ for a while. */
for (i = 0; i < 50; i++) for (i = 0; i < 50; i++)
{ {
...@@ -157,12 +157,12 @@ static int qcam_write_data(struct qcam_device *qcam, unsigned int data) ...@@ -157,12 +157,12 @@ static int qcam_write_data(struct qcam_device *qcam, unsigned int data)
unsigned int idata; unsigned int idata;
parport_write_data(qcam->pport, data); parport_write_data(qcam->pport, data);
idata = qcam_read_data(qcam); idata = qcam_read_data(qcam);
if (data != idata) if (data != idata)
{ {
printk(KERN_WARNING "cqcam: sent %x but received %x\n", data, printk(KERN_WARNING "cqcam: sent %x but received %x\n", data,
idata); idata);
return 1; return 1;
} }
return 0; return 0;
} }
...@@ -193,12 +193,12 @@ static int qc_detect(struct qcam_device *qcam) ...@@ -193,12 +193,12 @@ static int qc_detect(struct qcam_device *qcam)
no device was found". Fix this one day. */ no device was found". Fix this one day. */
if (qcam->pport->probe_info[0].class == PARPORT_CLASS_MEDIA if (qcam->pport->probe_info[0].class == PARPORT_CLASS_MEDIA
&& qcam->pport->probe_info[0].model && qcam->pport->probe_info[0].model
&& !strcmp(qcam->pdev->port->probe_info[0].model, && !strcmp(qcam->pdev->port->probe_info[0].model,
"Color QuickCam 2.0")) { "Color QuickCam 2.0")) {
printk(KERN_DEBUG "QuickCam: Found by IEEE1284 probe.\n"); printk(KERN_DEBUG "QuickCam: Found by IEEE1284 probe.\n");
return 1; return 1;
} }
if (probe < 2) if (probe < 2)
return 0; return 0;
...@@ -206,11 +206,11 @@ static int qc_detect(struct qcam_device *qcam) ...@@ -206,11 +206,11 @@ static int qc_detect(struct qcam_device *qcam)
/* look for a heartbeat */ /* look for a heartbeat */
ostat = stat = parport_read_status(qcam->pport); ostat = stat = parport_read_status(qcam->pport);
for (i=0; i<250; i++) for (i=0; i<250; i++)
{ {
mdelay(1); mdelay(1);
stat = parport_read_status(qcam->pport); stat = parport_read_status(qcam->pport);
if (ostat != stat) if (ostat != stat)
{ {
if (++count >= 3) return 1; if (++count >= 3) return 1;
ostat = stat; ostat = stat;
...@@ -226,11 +226,11 @@ static int qc_detect(struct qcam_device *qcam) ...@@ -226,11 +226,11 @@ static int qc_detect(struct qcam_device *qcam)
count = 0; count = 0;
ostat = stat = parport_read_status(qcam->pport); ostat = stat = parport_read_status(qcam->pport);
for (i=0; i<250; i++) for (i=0; i<250; i++)
{ {
mdelay(1); mdelay(1);
stat = parport_read_status(qcam->pport); stat = parport_read_status(qcam->pport);
if (ostat != stat) if (ostat != stat)
{ {
if (++count >= 3) return 1; if (++count >= 3) return 1;
ostat = stat; ostat = stat;
...@@ -247,7 +247,7 @@ static void qc_reset(struct qcam_device *qcam) ...@@ -247,7 +247,7 @@ static void qc_reset(struct qcam_device *qcam)
parport_write_control(qcam->pport, 0x8); parport_write_control(qcam->pport, 0x8);
mdelay(1); mdelay(1);
parport_write_control(qcam->pport, 0xc); parport_write_control(qcam->pport, 0xc);
mdelay(1); mdelay(1);
} }
/* Reset the QuickCam and program for brightness, contrast, /* Reset the QuickCam and program for brightness, contrast,
...@@ -258,7 +258,7 @@ static void qc_setup(struct qcam_device *q) ...@@ -258,7 +258,7 @@ static void qc_setup(struct qcam_device *q)
qc_reset(q); qc_reset(q);
/* Set the brightness. */ /* Set the brightness. */
qcam_set(q, 11, q->brightness); qcam_set(q, 11, q->brightness);
/* Set the height and width. These refer to the actual /* Set the height and width. These refer to the actual
CCD area *before* applying the selected decimation. */ CCD area *before* applying the selected decimation. */
...@@ -272,12 +272,12 @@ static void qc_setup(struct qcam_device *q) ...@@ -272,12 +272,12 @@ static void qc_setup(struct qcam_device *q)
/* Set contrast and white balance. */ /* Set contrast and white balance. */
qcam_set(q, 0x19, q->contrast); qcam_set(q, 0x19, q->contrast);
qcam_set(q, 0x1f, q->whitebal); qcam_set(q, 0x1f, q->whitebal);
/* Set the speed. */ /* Set the speed. */
qcam_set(q, 45, 2); qcam_set(q, 45, 2);
} }
/* Read some bytes from the camera and put them in the buffer. /* Read some bytes from the camera and put them in the buffer.
nbytes should be a multiple of 3, because bidirectional mode gives nbytes should be a multiple of 3, because bidirectional mode gives
us three bytes at a time. */ us three bytes at a time. */
...@@ -383,7 +383,7 @@ static long qc_capture(struct qcam_device *q, char __user *buf, unsigned long le ...@@ -383,7 +383,7 @@ static long qc_capture(struct qcam_device *q, char __user *buf, unsigned long le
if (qcam_set(q, 7, (q->mode | (is_bi_dir?1:0)) + 1)) if (qcam_set(q, 7, (q->mode | (is_bi_dir?1:0)) + 1))
return -EIO; return -EIO;
lines = q->height; lines = q->height;
pixelsperline = q->width; pixelsperline = q->width;
bitsperxfer = (is_bi_dir) ? 24 : 8; bitsperxfer = (is_bi_dir) ? 24 : 8;
...@@ -499,7 +499,7 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file, ...@@ -499,7 +499,7 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file,
{ {
struct video_device *dev = video_devdata(file); struct video_device *dev = video_devdata(file);
struct qcam_device *qcam=(struct qcam_device *)dev; struct qcam_device *qcam=(struct qcam_device *)dev;
switch(cmd) switch(cmd)
{ {
case VIDIOCGCAP: case VIDIOCGCAP:
...@@ -574,7 +574,7 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file, ...@@ -574,7 +574,7 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file,
*/ */
if (p->depth != 24 || p->palette != VIDEO_PALETTE_RGB24) if (p->depth != 24 || p->palette != VIDEO_PALETTE_RGB24)
return -EINVAL; return -EINVAL;
/* /*
* Now load the camera. * Now load the camera.
*/ */
...@@ -584,7 +584,7 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file, ...@@ -584,7 +584,7 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file,
mutex_lock(&qcam->lock); mutex_lock(&qcam->lock);
parport_claim_or_block(qcam->pdev); parport_claim_or_block(qcam->pdev);
qc_setup(qcam); qc_setup(qcam);
parport_release(qcam->pdev); parport_release(qcam->pdev);
mutex_unlock(&qcam->lock); mutex_unlock(&qcam->lock);
return 0; return 0;
...@@ -601,11 +601,11 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file, ...@@ -601,11 +601,11 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file,
return -EINVAL; return -EINVAL;
if(vw->width<80||vw->width>320) if(vw->width<80||vw->width>320)
return -EINVAL; return -EINVAL;
qcam->width = 80; qcam->width = 80;
qcam->height = 60; qcam->height = 60;
qcam->mode = QC_DECIMATION_4; qcam->mode = QC_DECIMATION_4;
if(vw->width>=160 && vw->height>=120) if(vw->width>=160 && vw->height>=120)
{ {
qcam->width = 160; qcam->width = 160;
...@@ -627,7 +627,7 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file, ...@@ -627,7 +627,7 @@ static int qcam_do_ioctl(struct inode *inode, struct file *file,
qcam->mode = QC_BILLIONS | QC_DECIMATION_1; qcam->mode = QC_BILLIONS | QC_DECIMATION_1;
} }
#endif #endif
/* Ok we figured out what to use from our /* Ok we figured out what to use from our
wide choice */ wide choice */
mutex_lock(&qcam->lock); mutex_lock(&qcam->lock);
parport_claim_or_block(qcam->pdev); parport_claim_or_block(qcam->pdev);
...@@ -676,7 +676,7 @@ static ssize_t qcam_read(struct file *file, char __user *buf, ...@@ -676,7 +676,7 @@ static ssize_t qcam_read(struct file *file, char __user *buf,
mutex_lock(&qcam->lock); mutex_lock(&qcam->lock);
parport_claim_or_block(qcam->pdev); parport_claim_or_block(qcam->pdev);
/* Probably should have a semaphore against multiple users */ /* Probably should have a semaphore against multiple users */
len = qc_capture(qcam, buf,count); len = qc_capture(qcam, buf,count);
parport_release(qcam->pdev); parport_release(qcam->pdev);
mutex_unlock(&qcam->lock); mutex_unlock(&qcam->lock);
return len; return len;
...@@ -707,7 +707,7 @@ static struct video_device qcam_template= ...@@ -707,7 +707,7 @@ static struct video_device qcam_template=
static struct qcam_device *qcam_init(struct parport *port) static struct qcam_device *qcam_init(struct parport *port)
{ {
struct qcam_device *q; struct qcam_device *q;
q = kmalloc(sizeof(struct qcam_device), GFP_KERNEL); q = kmalloc(sizeof(struct qcam_device), GFP_KERNEL);
if(q==NULL) if(q==NULL)
return NULL; return NULL;
...@@ -718,14 +718,14 @@ static struct qcam_device *qcam_init(struct parport *port) ...@@ -718,14 +718,14 @@ static struct qcam_device *qcam_init(struct parport *port)
q->bidirectional = (q->pport->modes & PARPORT_MODE_TRISTATE)?1:0; q->bidirectional = (q->pport->modes & PARPORT_MODE_TRISTATE)?1:0;
if (q->pdev == NULL) if (q->pdev == NULL)
{ {
printk(KERN_ERR "c-qcam: couldn't register for %s.\n", printk(KERN_ERR "c-qcam: couldn't register for %s.\n",
port->name); port->name);
kfree(q); kfree(q);
return NULL; return NULL;
} }
memcpy(&q->vdev, &qcam_template, sizeof(qcam_template)); memcpy(&q->vdev, &qcam_template, sizeof(qcam_template));
mutex_init(&q->lock); mutex_init(&q->lock);
...@@ -766,11 +766,11 @@ static int init_cqcam(struct parport *port) ...@@ -766,11 +766,11 @@ static int init_cqcam(struct parport *port)
qcam = qcam_init(port); qcam = qcam_init(port);
if (qcam==NULL) if (qcam==NULL)
return -ENODEV; return -ENODEV;
parport_claim_or_block(qcam->pdev); parport_claim_or_block(qcam->pdev);
qc_reset(qcam); qc_reset(qcam);
if (probe && qc_detect(qcam)==0) if (probe && qc_detect(qcam)==0)
{ {
parport_release(qcam->pdev); parport_release(qcam->pdev);
...@@ -782,7 +782,7 @@ static int init_cqcam(struct parport *port) ...@@ -782,7 +782,7 @@ static int init_cqcam(struct parport *port)
qc_setup(qcam); qc_setup(qcam);
parport_release(qcam->pdev); parport_release(qcam->pdev);
if (video_register_device(&qcam->vdev, VFL_TYPE_GRABBER, video_nr)==-1) if (video_register_device(&qcam->vdev, VFL_TYPE_GRABBER, video_nr)==-1)
{ {
printk(KERN_ERR "Unable to register Colour QuickCam on %s\n", printk(KERN_ERR "Unable to register Colour QuickCam on %s\n",
...@@ -792,9 +792,9 @@ static int init_cqcam(struct parport *port) ...@@ -792,9 +792,9 @@ static int init_cqcam(struct parport *port)
return -ENODEV; return -ENODEV;
} }
printk(KERN_INFO "video%d: Colour QuickCam found on %s\n", printk(KERN_INFO "video%d: Colour QuickCam found on %s\n",
qcam->vdev.minor, qcam->pport->name); qcam->vdev.minor, qcam->pport->name);
qcams[num_cams++] = qcam; qcams[num_cams++] = qcam;
return 0; return 0;
......
This diff is collapsed.
...@@ -52,10 +52,10 @@ ...@@ -52,10 +52,10 @@
struct cpia_camera_ops struct cpia_camera_ops
{ {
/* open sets privdata to point to structure for this camera. /* open sets privdata to point to structure for this camera.
* Returns negative value on error, otherwise 0. * Returns negative value on error, otherwise 0.
*/ */
int (*open)(void *privdata); int (*open)(void *privdata);
/* Registers callback function cb to be called with cbdata /* Registers callback function cb to be called with cbdata
* when an image is ready. If cb is NULL, only single image grabs * when an image is ready. If cb is NULL, only single image grabs
* should be used. cb should immediately call streamRead to read * should be used. cb should immediately call streamRead to read
...@@ -63,8 +63,8 @@ struct cpia_camera_ops ...@@ -63,8 +63,8 @@ struct cpia_camera_ops
* otherwise 0. * otherwise 0.
*/ */
int (*registerCallback)(void *privdata, void (*cb)(void *cbdata), int (*registerCallback)(void *privdata, void (*cb)(void *cbdata),
void *cbdata); void *cbdata);
/* transferCmd sends commands to the camera. command MUST point to /* transferCmd sends commands to the camera. command MUST point to
* an 8 byte buffer in kernel space. data can be NULL if no extra * an 8 byte buffer in kernel space. data can be NULL if no extra
* data is needed. The size of the data is given by the last 2 * data is needed. The size of the data is given by the last 2
...@@ -77,30 +77,30 @@ struct cpia_camera_ops ...@@ -77,30 +77,30 @@ struct cpia_camera_ops
* Returns negative value on error, otherwise 0. * Returns negative value on error, otherwise 0.
*/ */
int (*streamStart)(void *privdata); int (*streamStart)(void *privdata);
/* streamStop terminates stream capture mode. /* streamStop terminates stream capture mode.
* Returns negative value on error, otherwise 0. * Returns negative value on error, otherwise 0.
*/ */
int (*streamStop)(void *privdata); int (*streamStop)(void *privdata);
/* streamRead reads a frame from the camera. buffer points to a /* streamRead reads a frame from the camera. buffer points to a
* buffer large enough to hold a complete frame in kernel space. * buffer large enough to hold a complete frame in kernel space.
* noblock indicates if this should be a non blocking read. * noblock indicates if this should be a non blocking read.
* Returns the number of bytes read, or negative value on error. * Returns the number of bytes read, or negative value on error.
*/ */
int (*streamRead)(void *privdata, u8 *buffer, int noblock); int (*streamRead)(void *privdata, u8 *buffer, int noblock);
/* close disables the device until open() is called again. /* close disables the device until open() is called again.
* Returns negative value on error, otherwise 0. * Returns negative value on error, otherwise 0.
*/ */
int (*close)(void *privdata); int (*close)(void *privdata);
/* If wait_for_stream_ready is non-zero, wait until the streamState /* If wait_for_stream_ready is non-zero, wait until the streamState
* is STREAM_READY before calling streamRead. * is STREAM_READY before calling streamRead.
*/ */
int wait_for_stream_ready; int wait_for_stream_ready;
/* /*
* Used to maintain lowlevel module usage counts * Used to maintain lowlevel module usage counts
*/ */
struct module *owner; struct module *owner;
...@@ -215,14 +215,14 @@ struct cam_params { ...@@ -215,14 +215,14 @@ struct cam_params {
u8 videoSize; /* CIF/QCIF */ u8 videoSize; /* CIF/QCIF */
u8 subSample; u8 subSample;
u8 yuvOrder; u8 yuvOrder;
} format; } format;
struct { /* Intel QX3 specific data */ struct { /* Intel QX3 specific data */
u8 qx3_detected; /* a QX3 is present */ u8 qx3_detected; /* a QX3 is present */
u8 toplight; /* top light lit , R/W */ u8 toplight; /* top light lit , R/W */
u8 bottomlight; /* bottom light lit, R/W */ u8 bottomlight; /* bottom light lit, R/W */
u8 button; /* snapshot button pressed (R/O) */ u8 button; /* snapshot button pressed (R/O) */
u8 cradled; /* microscope is in cradle (R/O) */ u8 cradled; /* microscope is in cradle (R/O) */
} qx3; } qx3;
struct { struct {
u8 colStart; /* skip first 8*colStart pixels */ u8 colStart; /* skip first 8*colStart pixels */
u8 colEnd; /* finish at 8*colEnd pixels */ u8 colEnd; /* finish at 8*colEnd pixels */
...@@ -247,13 +247,13 @@ enum v4l_camstates { ...@@ -247,13 +247,13 @@ enum v4l_camstates {
struct cam_data { struct cam_data {
struct list_head cam_data_list; struct list_head cam_data_list;
struct mutex busy_lock; /* guard against SMP multithreading */ struct mutex busy_lock; /* guard against SMP multithreading */
struct cpia_camera_ops *ops; /* lowlevel driver operations */ struct cpia_camera_ops *ops; /* lowlevel driver operations */
void *lowlevel_data; /* private data for lowlevel driver */ void *lowlevel_data; /* private data for lowlevel driver */
u8 *raw_image; /* buffer for raw image data */ u8 *raw_image; /* buffer for raw image data */
struct cpia_frame decompressed_frame; struct cpia_frame decompressed_frame;
/* buffer to hold decompressed frame */ /* buffer to hold decompressed frame */
int image_size; /* sizeof last decompressed image */ int image_size; /* sizeof last decompressed image */
int open_count; /* # of process that have camera open */ int open_count; /* # of process that have camera open */
/* camera status */ /* camera status */
...@@ -265,7 +265,7 @@ struct cam_data { ...@@ -265,7 +265,7 @@ struct cam_data {
struct mutex param_lock; /* params lock for this camera */ struct mutex param_lock; /* params lock for this camera */
struct cam_params params; /* camera settings */ struct cam_params params; /* camera settings */
struct proc_dir_entry *proc_entry; /* /proc/cpia/videoX */ struct proc_dir_entry *proc_entry; /* /proc/cpia/videoX */
/* v4l */ /* v4l */
int video_size; /* VIDEO_SIZE_ */ int video_size; /* VIDEO_SIZE_ */
volatile enum v4l_camstates camstate; /* v4l layer status */ volatile enum v4l_camstates camstate; /* v4l layer status */
...@@ -277,7 +277,7 @@ struct cam_data { ...@@ -277,7 +277,7 @@ struct cam_data {
/* mmap interface */ /* mmap interface */
int curframe; /* the current frame to grab into */ int curframe; /* the current frame to grab into */
u8 *frame_buf; /* frame buffer data */ u8 *frame_buf; /* frame buffer data */
struct cpia_frame frame[FRAME_NUM]; struct cpia_frame frame[FRAME_NUM];
/* FRAME_NUM-buffering, so we need a array */ /* FRAME_NUM-buffering, so we need a array */
int first_frame; int first_frame;
...@@ -424,7 +424,7 @@ void cpia_unregister_camera(struct cam_data *cam); ...@@ -424,7 +424,7 @@ void cpia_unregister_camera(struct cam_data *cam);
#define DEB_BYTE(p)\ #define DEB_BYTE(p)\
DBG("%1d %1d %1d %1d %1d %1d %1d %1d \n",\ DBG("%1d %1d %1d %1d %1d %1d %1d %1d \n",\
(p)&0x80?1:0, (p)&0x40?1:0, (p)&0x20?1:0, (p)&0x10?1:0,\ (p)&0x80?1:0, (p)&0x40?1:0, (p)&0x20?1:0, (p)&0x10?1:0,\
(p)&0x08?1:0, (p)&0x04?1:0, (p)&0x02?1:0, (p)&0x01?1:0); (p)&0x08?1:0, (p)&0x04?1:0, (p)&0x02?1:0, (p)&0x01?1:0);
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
*/ */
/* define _CPIA_DEBUG_ for verbose debug output (see cpia.h) */ /* define _CPIA_DEBUG_ for verbose debug output (see cpia.h) */
/* #define _CPIA_DEBUG_ 1 */ /* #define _CPIA_DEBUG_ 1 */
#include <linux/config.h> #include <linux/config.h>
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
static int cpia_pp_open(void *privdata); static int cpia_pp_open(void *privdata);
static int cpia_pp_registerCallback(void *privdata, void (*cb) (void *cbdata), static int cpia_pp_registerCallback(void *privdata, void (*cb) (void *cbdata),
void *cbdata); void *cbdata);
static int cpia_pp_transferCmd(void *privdata, u8 *command, u8 *data); static int cpia_pp_transferCmd(void *privdata, u8 *command, u8 *data);
static int cpia_pp_streamStart(void *privdata); static int cpia_pp_streamStart(void *privdata);
static int cpia_pp_streamStop(void *privdata); static int cpia_pp_streamStop(void *privdata);
...@@ -93,7 +93,7 @@ struct pp_cam_entry { ...@@ -93,7 +93,7 @@ struct pp_cam_entry {
int stream_irq; int stream_irq;
}; };
static struct cpia_camera_ops cpia_pp_ops = static struct cpia_camera_ops cpia_pp_ops =
{ {
cpia_pp_open, cpia_pp_open,
cpia_pp_registerCallback, cpia_pp_registerCallback,
...@@ -123,7 +123,7 @@ static void cpia_parport_disable_irq( struct parport *port ) { ...@@ -123,7 +123,7 @@ static void cpia_parport_disable_irq( struct parport *port ) {
} }
/* Special CPiA PPC modes: These are invoked by using the 1284 Extensibility /* Special CPiA PPC modes: These are invoked by using the 1284 Extensibility
* Link Flag during negotiation */ * Link Flag during negotiation */
#define UPLOAD_FLAG 0x08 #define UPLOAD_FLAG 0x08
#define NIBBLE_TRANSFER 0x01 #define NIBBLE_TRANSFER 0x01
#define ECP_TRANSFER 0x03 #define ECP_TRANSFER 0x03
...@@ -139,17 +139,17 @@ static void cpia_parport_disable_irq( struct parport *port ) { ...@@ -139,17 +139,17 @@ static void cpia_parport_disable_irq( struct parport *port ) {
/* CPiA nonstandard "Nibble" mode (no nDataAvail signal after each byte). */ /* CPiA nonstandard "Nibble" mode (no nDataAvail signal after each byte). */
/* The standard kernel parport_ieee1284_read_nibble() fails with the CPiA... */ /* The standard kernel parport_ieee1284_read_nibble() fails with the CPiA... */
static size_t cpia_read_nibble (struct parport *port, static size_t cpia_read_nibble (struct parport *port,
void *buffer, size_t len, void *buffer, size_t len,
int flags) int flags)
{ {
/* adapted verbatim, with one change, from /* adapted verbatim, with one change, from
parport_ieee1284_read_nibble() in drivers/parport/ieee1284-ops.c */ parport_ieee1284_read_nibble() in drivers/parport/ieee1284-ops.c */
unsigned char *buf = buffer; unsigned char *buf = buffer;
int i; int i;
unsigned char byte = 0; unsigned char byte = 0;
len *= 2; /* in nibbles */ len *= 2; /* in nibbles */
for (i=0; i < len; i++) { for (i=0; i < len; i++) {
unsigned char nibble; unsigned char nibble;
...@@ -158,12 +158,12 @@ static size_t cpia_read_nibble (struct parport *port, ...@@ -158,12 +158,12 @@ static size_t cpia_read_nibble (struct parport *port,
* after every second nibble to signal that more * after every second nibble to signal that more
* data is available. (the total number of Bytes that * data is available. (the total number of Bytes that
* should be sent is known; if too few are received, an error * should be sent is known; if too few are received, an error
* will be recorded after a timeout). * will be recorded after a timeout).
* This is incompatible with parport_ieee1284_read_nibble(), * This is incompatible with parport_ieee1284_read_nibble(),
* which expects to find nFault LO after every second nibble. * which expects to find nFault LO after every second nibble.
*/ */
/* Solution: modify cpia_read_nibble to only check for /* Solution: modify cpia_read_nibble to only check for
* nDataAvail before the first nibble is sent. * nDataAvail before the first nibble is sent.
*/ */
...@@ -216,7 +216,7 @@ static size_t cpia_read_nibble (struct parport *port, ...@@ -216,7 +216,7 @@ static size_t cpia_read_nibble (struct parport *port,
/* Second nibble */ /* Second nibble */
byte |= nibble << 4; byte |= nibble << 4;
*buf++ = byte; *buf++ = byte;
} else } else
byte = nibble; byte = nibble;
} }
...@@ -238,18 +238,18 @@ static size_t cpia_read_nibble (struct parport *port, ...@@ -238,18 +238,18 @@ static size_t cpia_read_nibble (struct parport *port,
} }
/* CPiA nonstandard "Nibble Stream" mode (2 nibbles per cycle, instead of 1) /* CPiA nonstandard "Nibble Stream" mode (2 nibbles per cycle, instead of 1)
* (See CPiA Data sheet p. 31) * (See CPiA Data sheet p. 31)
* *
* "Nibble Stream" mode used by CPiA for uploads to non-ECP ports is a * "Nibble Stream" mode used by CPiA for uploads to non-ECP ports is a
* nonstandard variant of nibble mode which allows the same (mediocre) * nonstandard variant of nibble mode which allows the same (mediocre)
* data flow of 8 bits per cycle as software-enabled ECP by TRISTATE-capable * data flow of 8 bits per cycle as software-enabled ECP by TRISTATE-capable
* parallel ports, but works also for non-TRISTATE-capable ports. * parallel ports, but works also for non-TRISTATE-capable ports.
* (Standard nibble mode only send 4 bits per cycle) * (Standard nibble mode only send 4 bits per cycle)
* *
*/ */
static size_t cpia_read_nibble_stream(struct parport *port, static size_t cpia_read_nibble_stream(struct parport *port,
void *buffer, size_t len, void *buffer, size_t len,
int flags) int flags)
{ {
int i; int i;
...@@ -260,7 +260,7 @@ static size_t cpia_read_nibble_stream(struct parport *port, ...@@ -260,7 +260,7 @@ static size_t cpia_read_nibble_stream(struct parport *port,
unsigned char nibble[2], byte = 0; unsigned char nibble[2], byte = 0;
int j; int j;
/* Image Data is complete when 4 consecutive EOI bytes (0xff) are seen */ /* Image Data is complete when 4 consecutive EOI bytes (0xff) are seen */
if (endseen > 3 ) if (endseen > 3 )
break; break;
...@@ -268,7 +268,7 @@ static size_t cpia_read_nibble_stream(struct parport *port, ...@@ -268,7 +268,7 @@ static size_t cpia_read_nibble_stream(struct parport *port,
parport_frob_control (port, parport_frob_control (port,
PARPORT_CONTROL_AUTOFD, PARPORT_CONTROL_AUTOFD,
PARPORT_CONTROL_AUTOFD); PARPORT_CONTROL_AUTOFD);
/* Event 9: nAck goes low. */ /* Event 9: nAck goes low. */
port->ieee1284.phase = IEEE1284_PH_REV_DATA; port->ieee1284.phase = IEEE1284_PH_REV_DATA;
if (parport_wait_peripheral (port, if (parport_wait_peripheral (port,
...@@ -282,7 +282,7 @@ static size_t cpia_read_nibble_stream(struct parport *port, ...@@ -282,7 +282,7 @@ static size_t cpia_read_nibble_stream(struct parport *port,
/* Read lower nibble */ /* Read lower nibble */
nibble[0] = parport_read_status (port) >>3; nibble[0] = parport_read_status (port) >>3;
/* Event 10: Set nAutoFd high. */ /* Event 10: Set nAutoFd high. */
parport_frob_control (port, PARPORT_CONTROL_AUTOFD, 0); parport_frob_control (port, PARPORT_CONTROL_AUTOFD, 0);
...@@ -295,10 +295,10 @@ static size_t cpia_read_nibble_stream(struct parport *port, ...@@ -295,10 +295,10 @@ static size_t cpia_read_nibble_stream(struct parport *port,
port->name); port->name);
break; break;
} }
/* Read upper nibble */ /* Read upper nibble */
nibble[1] = parport_read_status (port) >>3; nibble[1] = parport_read_status (port) >>3;
/* reassemble the byte */ /* reassemble the byte */
for (j = 0; j < 2 ; j++ ) { for (j = 0; j < 2 ; j++ ) {
nibble[j] &= ~8; nibble[j] &= ~8;
...@@ -335,8 +335,8 @@ static void EndTransferMode(struct pp_cam_entry *cam) ...@@ -335,8 +335,8 @@ static void EndTransferMode(struct pp_cam_entry *cam)
static int ForwardSetup(struct pp_cam_entry *cam) static int ForwardSetup(struct pp_cam_entry *cam)
{ {
int retry; int retry;
/* The CPiA uses ECP protocol for Downloads from the Host to the camera. /* The CPiA uses ECP protocol for Downloads from the Host to the camera.
* This will be software-emulated if ECP hardware is not present * This will be software-emulated if ECP hardware is not present
*/ */
...@@ -375,9 +375,9 @@ static int ReverseSetup(struct pp_cam_entry *cam, int extensibility) ...@@ -375,9 +375,9 @@ static int ReverseSetup(struct pp_cam_entry *cam, int extensibility)
upload_mode = mode; upload_mode = mode;
if(extensibility) mode = UPLOAD_FLAG|transfer_mode|IEEE1284_EXT_LINK; if(extensibility) mode = UPLOAD_FLAG|transfer_mode|IEEE1284_EXT_LINK;
/* the usual camera maximum response time is 10ms, but after /* the usual camera maximum response time is 10ms, but after
* receiving some commands, it needs up to 40ms. */ * receiving some commands, it needs up to 40ms. */
for(retry = 0; retry < 4; ++retry) { for(retry = 0; retry < 4; ++retry) {
if(!parport_negotiate(cam->port, mode)) { if(!parport_negotiate(cam->port, mode)) {
break; break;
...@@ -439,10 +439,10 @@ static int ReadPacket(struct pp_cam_entry *cam, u8 *packet, size_t size) ...@@ -439,10 +439,10 @@ static int ReadPacket(struct pp_cam_entry *cam, u8 *packet, size_t size)
/* support for CPiA variant nibble reads */ /* support for CPiA variant nibble reads */
if(cam->port->ieee1284.mode == IEEE1284_MODE_NIBBLE) { if(cam->port->ieee1284.mode == IEEE1284_MODE_NIBBLE) {
if(cpia_read_nibble(cam->port, packet, size, 0) != size) if(cpia_read_nibble(cam->port, packet, size, 0) != size)
retval = -EIO; retval = -EIO;
} else { } else {
if(parport_read(cam->port, packet, size) != size) if(parport_read(cam->port, packet, size) != size)
retval = -EIO; retval = -EIO;
} }
EndTransferMode(cam); EndTransferMode(cam);
...@@ -542,18 +542,18 @@ static int cpia_pp_streamRead(void *privdata, u8 *buffer, int noblock) ...@@ -542,18 +542,18 @@ static int cpia_pp_streamRead(void *privdata, u8 *buffer, int noblock)
block_size = PARPORT_CHUNK_SIZE; block_size = PARPORT_CHUNK_SIZE;
while( !cam->image_complete ) { while( !cam->image_complete ) {
cond_resched(); cond_resched();
new_bytes = cpia_pp_read(cam->port, buffer, block_size ); new_bytes = cpia_pp_read(cam->port, buffer, block_size );
if( new_bytes <= 0 ) { if( new_bytes <= 0 ) {
break; break;
} }
i=-1; i=-1;
while(++i<new_bytes && endseen<4) { while(++i<new_bytes && endseen<4) {
if(*buffer==EOI) { if(*buffer==EOI) {
endseen++; endseen++;
} else { } else {
endseen=0; endseen=0;
} }
buffer++; buffer++;
} }
read_bytes += i; read_bytes += i;
...@@ -601,7 +601,7 @@ static int cpia_pp_transferCmd(void *privdata, u8 *command, u8 *data) ...@@ -601,7 +601,7 @@ static int cpia_pp_transferCmd(void *privdata, u8 *command, u8 *data)
} }
if((err = ReadPacket(cam, buffer, 8)) < 0) { if((err = ReadPacket(cam, buffer, 8)) < 0) {
DBG("Error reading command result\n"); DBG("Error reading command result\n");
return err; return err;
} }
memcpy(data, buffer, databytes); memcpy(data, buffer, databytes);
} else if(command[0] == DATA_OUT) { } else if(command[0] == DATA_OUT) {
...@@ -631,10 +631,10 @@ static int cpia_pp_transferCmd(void *privdata, u8 *command, u8 *data) ...@@ -631,10 +631,10 @@ static int cpia_pp_transferCmd(void *privdata, u8 *command, u8 *data)
static int cpia_pp_open(void *privdata) static int cpia_pp_open(void *privdata)
{ {
struct pp_cam_entry *cam = (struct pp_cam_entry *)privdata; struct pp_cam_entry *cam = (struct pp_cam_entry *)privdata;
if (cam == NULL) if (cam == NULL)
return -EINVAL; return -EINVAL;
if(cam->open_count == 0) { if(cam->open_count == 0) {
if (parport_claim(cam->pdev)) { if (parport_claim(cam->pdev)) {
DBG("failed to claim the port\n"); DBG("failed to claim the port\n");
...@@ -645,12 +645,12 @@ static int cpia_pp_open(void *privdata) ...@@ -645,12 +645,12 @@ static int cpia_pp_open(void *privdata)
parport_write_control(cam->port, PARPORT_CONTROL_SELECT); parport_write_control(cam->port, PARPORT_CONTROL_SELECT);
udelay(50); udelay(50);
parport_write_control(cam->port, parport_write_control(cam->port,
PARPORT_CONTROL_SELECT PARPORT_CONTROL_SELECT
| PARPORT_CONTROL_INIT); | PARPORT_CONTROL_INIT);
} }
++cam->open_count; ++cam->open_count;
return 0; return 0;
} }
...@@ -663,7 +663,7 @@ static int cpia_pp_registerCallback(void *privdata, void (*cb)(void *cbdata), vo ...@@ -663,7 +663,7 @@ static int cpia_pp_registerCallback(void *privdata, void (*cb)(void *cbdata), vo
{ {
struct pp_cam_entry *cam = privdata; struct pp_cam_entry *cam = privdata;
int retval = 0; int retval = 0;
if(cam->port->irq != PARPORT_IRQ_NONE) { if(cam->port->irq != PARPORT_IRQ_NONE) {
INIT_WORK(&cam->cb_task, cb, cbdata); INIT_WORK(&cam->cb_task, cb, cbdata);
} else { } else {
...@@ -707,9 +707,9 @@ static int cpia_pp_register(struct parport *port) ...@@ -707,9 +707,9 @@ static int cpia_pp_register(struct parport *port)
LOG("failed to allocate camera structure\n"); LOG("failed to allocate camera structure\n");
return -ENOMEM; return -ENOMEM;
} }
pdev = parport_register_device(port, "cpia_pp", NULL, NULL, pdev = parport_register_device(port, "cpia_pp", NULL, NULL,
NULL, 0, cam); NULL, 0, cam);
if (!pdev) { if (!pdev) {
LOG("failed to parport_register_device\n"); LOG("failed to parport_register_device\n");
...@@ -753,19 +753,19 @@ static void cpia_pp_detach (struct parport *port) ...@@ -753,19 +753,19 @@ static void cpia_pp_detach (struct parport *port)
} }
cpia = NULL; cpia = NULL;
} }
spin_unlock( &cam_list_lock_pp ); spin_unlock( &cam_list_lock_pp );
if (!cpia) { if (!cpia) {
DBG("cpia_pp_detach failed to find cam_data in cam_list\n"); DBG("cpia_pp_detach failed to find cam_data in cam_list\n");
return; return;
} }
cam = (struct pp_cam_entry *) cpia->lowlevel_data; cam = (struct pp_cam_entry *) cpia->lowlevel_data;
cpia_unregister_camera(cpia); cpia_unregister_camera(cpia);
if(cam->open_count > 0) if(cam->open_count > 0)
cpia_pp_close(cam); cpia_pp_close(cam);
parport_unregister_device(cam->pdev); parport_unregister_device(cam->pdev);
cpia->lowlevel_data = NULL; cpia->lowlevel_data = NULL;
kfree(cam); kfree(cam);
} }
...@@ -805,14 +805,14 @@ static struct parport_driver cpia_pp_driver = { ...@@ -805,14 +805,14 @@ static struct parport_driver cpia_pp_driver = {
int cpia_pp_init(void) int cpia_pp_init(void)
{ {
printk(KERN_INFO "%s v%d.%d.%d\n",ABOUT, printk(KERN_INFO "%s v%d.%d.%d\n",ABOUT,
CPIA_PP_MAJ_VER,CPIA_PP_MIN_VER,CPIA_PP_PATCH_VER); CPIA_PP_MAJ_VER,CPIA_PP_MIN_VER,CPIA_PP_PATCH_VER);
if(parport_nr[0] == PPCPIA_PARPORT_OFF) { if(parport_nr[0] == PPCPIA_PARPORT_OFF) {
printk(" disabled\n"); printk(" disabled\n");
return 0; return 0;
} }
spin_lock_init( &cam_list_lock_pp ); spin_lock_init( &cam_list_lock_pp );
if (parport_register_driver (&cpia_pp_driver)) { if (parport_register_driver (&cpia_pp_driver)) {
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
*/ */
/* define _CPIA_DEBUG_ for verbose debug output (see cpia.h) */ /* define _CPIA_DEBUG_ for verbose debug output (see cpia.h) */
/* #define _CPIA_DEBUG_ 1 */ /* #define _CPIA_DEBUG_ 1 */
#include <linux/module.h> #include <linux/module.h>
#include <linux/kernel.h> #include <linux/kernel.h>
...@@ -85,7 +85,7 @@ struct usb_cpia { ...@@ -85,7 +85,7 @@ struct usb_cpia {
static int cpia_usb_open(void *privdata); static int cpia_usb_open(void *privdata);
static int cpia_usb_registerCallback(void *privdata, void (*cb) (void *cbdata), static int cpia_usb_registerCallback(void *privdata, void (*cb) (void *cbdata),
void *cbdata); void *cbdata);
static int cpia_usb_transferCmd(void *privdata, u8 *command, u8 *data); static int cpia_usb_transferCmd(void *privdata, u8 *command, u8 *data);
static int cpia_usb_streamStart(void *privdata); static int cpia_usb_streamStart(void *privdata);
static int cpia_usb_streamStop(void *privdata); static int cpia_usb_streamStop(void *privdata);
...@@ -127,7 +127,7 @@ static void cpia_usb_complete(struct urb *urb, struct pt_regs *regs) ...@@ -127,7 +127,7 @@ static void cpia_usb_complete(struct urb *urb, struct pt_regs *regs)
ucpia->workbuff->status = FRAME_READING; ucpia->workbuff->status = FRAME_READING;
ucpia->workbuff->length = 0; ucpia->workbuff->length = 0;
} }
for (i = 0; i < urb->number_of_packets; i++) { for (i = 0; i < urb->number_of_packets; i++) {
int n = urb->iso_frame_desc[i].actual_length; int n = urb->iso_frame_desc[i].actual_length;
int st = urb->iso_frame_desc[i].status; int st = urb->iso_frame_desc[i].status;
...@@ -141,9 +141,9 @@ static void cpia_usb_complete(struct urb *urb, struct pt_regs *regs) ...@@ -141,9 +141,9 @@ static void cpia_usb_complete(struct urb *urb, struct pt_regs *regs)
printk(KERN_DEBUG "cpia: scratch buf overflow!scr_len: %d, n: %d\n", ucpia->workbuff->length, n); printk(KERN_DEBUG "cpia: scratch buf overflow!scr_len: %d, n: %d\n", ucpia->workbuff->length, n);
return; return;
} }
if (n) { if (n) {
if ((ucpia->workbuff->length > 0) || if ((ucpia->workbuff->length > 0) ||
(0x19 == cdata[0] && 0x68 == cdata[1])) { (0x19 == cdata[0] && 0x68 == cdata[1])) {
memcpy(ucpia->workbuff->data + ucpia->workbuff->length, cdata, n); memcpy(ucpia->workbuff->data + ucpia->workbuff->length, cdata, n);
ucpia->workbuff->length += n; ucpia->workbuff->length += n;
...@@ -160,7 +160,7 @@ static void cpia_usb_complete(struct urb *urb, struct pt_regs *regs) ...@@ -160,7 +160,7 @@ static void cpia_usb_complete(struct urb *urb, struct pt_regs *regs)
ucpia->workbuff = ucpia->workbuff->next; ucpia->workbuff = ucpia->workbuff->next;
ucpia->workbuff->status = FRAME_EMPTY; ucpia->workbuff->status = FRAME_EMPTY;
ucpia->workbuff->length = 0; ucpia->workbuff->length = 0;
if (waitqueue_active(&ucpia->wq_stream)) if (waitqueue_active(&ucpia->wq_stream))
wake_up_interruptible(&ucpia->wq_stream); wake_up_interruptible(&ucpia->wq_stream);
} }
...@@ -178,7 +178,7 @@ static int cpia_usb_open(void *privdata) ...@@ -178,7 +178,7 @@ static int cpia_usb_open(void *privdata)
struct usb_cpia *ucpia = (struct usb_cpia *) privdata; struct usb_cpia *ucpia = (struct usb_cpia *) privdata;
struct urb *urb; struct urb *urb;
int ret, retval = 0, fx, err; int ret, retval = 0, fx, err;
if (!ucpia) if (!ucpia)
return -EINVAL; return -EINVAL;
...@@ -191,7 +191,7 @@ static int cpia_usb_open(void *privdata) ...@@ -191,7 +191,7 @@ static int cpia_usb_open(void *privdata)
retval = -EINVAL; retval = -EINVAL;
goto error_0; goto error_0;
} }
ret = usb_set_interface(ucpia->dev, ucpia->iface, 3); ret = usb_set_interface(ucpia->dev, ucpia->iface, 3);
if (ret < 0) { if (ret < 0) {
printk(KERN_ERR "cpia_usb_open: usb_set_interface error (ret = %d)\n", ret); printk(KERN_ERR "cpia_usb_open: usb_set_interface error (ret = %d)\n", ret);
...@@ -286,7 +286,7 @@ static int cpia_usb_open(void *privdata) ...@@ -286,7 +286,7 @@ static int cpia_usb_open(void *privdata)
error_0: error_0:
kfree (ucpia->sbuf[0].data); kfree (ucpia->sbuf[0].data);
ucpia->sbuf[0].data = NULL; ucpia->sbuf[0].data = NULL;
return retval; return retval;
} }
...@@ -307,7 +307,7 @@ static int WritePacket(struct usb_device *udev, const u8 *packet, u8 *buf, size_ ...@@ -307,7 +307,7 @@ static int WritePacket(struct usb_device *udev, const u8 *packet, u8 *buf, size_
return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), return usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
packet[1] + (packet[0] << 8), packet[1] + (packet[0] << 8),
USB_TYPE_VENDOR | USB_RECIP_DEVICE, USB_TYPE_VENDOR | USB_RECIP_DEVICE,
packet[2] + (packet[3] << 8), packet[2] + (packet[3] << 8),
packet[4] + (packet[5] << 8), buf, size, 1000); packet[4] + (packet[5] << 8), buf, size, 1000);
} }
...@@ -324,7 +324,7 @@ static int ReadPacket(struct usb_device *udev, u8 *packet, u8 *buf, size_t size) ...@@ -324,7 +324,7 @@ static int ReadPacket(struct usb_device *udev, u8 *packet, u8 *buf, size_t size)
return usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), return usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
packet[1] + (packet[0] << 8), packet[1] + (packet[0] << 8),
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
packet[2] + (packet[3] << 8), packet[2] + (packet[3] << 8),
packet[4] + (packet[5] << 8), buf, size, 1000); packet[4] + (packet[5] << 8), buf, size, 1000);
} }
...@@ -393,7 +393,7 @@ static int cpia_usb_streamRead(void *privdata, u8 *frame, int noblock) ...@@ -393,7 +393,7 @@ static int cpia_usb_streamRead(void *privdata, u8 *frame, int noblock)
if (!ucpia || !ucpia->present) if (!ucpia || !ucpia->present)
return -1; return -1;
if (ucpia->curbuff->status != FRAME_READY) if (ucpia->curbuff->status != FRAME_READY)
interruptible_sleep_on(&ucpia->wq_stream); interruptible_sleep_on(&ucpia->wq_stream);
else else
...@@ -403,7 +403,7 @@ static int cpia_usb_streamRead(void *privdata, u8 *frame, int noblock) ...@@ -403,7 +403,7 @@ static int cpia_usb_streamRead(void *privdata, u8 *frame, int noblock)
if (!mybuff) if (!mybuff)
return -1; return -1;
if (mybuff->status != FRAME_READY || mybuff->length < 4) { if (mybuff->status != FRAME_READY || mybuff->length < 4) {
DBG("Something went wrong!\n"); DBG("Something went wrong!\n");
return -1; return -1;
...@@ -411,7 +411,7 @@ static int cpia_usb_streamRead(void *privdata, u8 *frame, int noblock) ...@@ -411,7 +411,7 @@ static int cpia_usb_streamRead(void *privdata, u8 *frame, int noblock)
memcpy(frame, mybuff->data, mybuff->length); memcpy(frame, mybuff->data, mybuff->length);
mybuff->status = FRAME_EMPTY; mybuff->status = FRAME_EMPTY;
/* DBG("read done, %d bytes, Header: %x/%x, Footer: %x%x%x%x\n", */ /* DBG("read done, %d bytes, Header: %x/%x, Footer: %x%x%x%x\n", */
/* mybuff->length, frame[0], frame[1], */ /* mybuff->length, frame[0], frame[1], */
/* frame[mybuff->length-4], frame[mybuff->length-3], */ /* frame[mybuff->length-4], frame[mybuff->length-3], */
...@@ -447,7 +447,7 @@ static void cpia_usb_free_resources(struct usb_cpia *ucpia, int try) ...@@ -447,7 +447,7 @@ static void cpia_usb_free_resources(struct usb_cpia *ucpia, int try)
kfree(ucpia->sbuf[1].data); kfree(ucpia->sbuf[1].data);
ucpia->sbuf[1].data = NULL; ucpia->sbuf[1].data = NULL;
if (ucpia->sbuf[0].urb) { if (ucpia->sbuf[0].urb) {
usb_kill_urb(ucpia->sbuf[0].urb); usb_kill_urb(ucpia->sbuf[0].urb);
usb_free_urb(ucpia->sbuf[0].urb); usb_free_urb(ucpia->sbuf[0].urb);
...@@ -490,7 +490,7 @@ static int cpia_probe(struct usb_interface *intf, ...@@ -490,7 +490,7 @@ static int cpia_probe(struct usb_interface *intf,
struct usb_cpia *ucpia; struct usb_cpia *ucpia;
struct cam_data *cam; struct cam_data *cam;
int ret; int ret;
/* A multi-config CPiA camera? */ /* A multi-config CPiA camera? */
if (udev->descriptor.bNumConfigurations != 1) if (udev->descriptor.bNumConfigurations != 1)
return -ENODEV; return -ENODEV;
...@@ -539,7 +539,7 @@ static int cpia_probe(struct usb_interface *intf, ...@@ -539,7 +539,7 @@ static int cpia_probe(struct usb_interface *intf,
/* Before register_camera, important */ /* Before register_camera, important */
ucpia->present = 1; ucpia->present = 1;
cam = cpia_register_camera(&cpia_usb_ops, ucpia); cam = cpia_register_camera(&cpia_usb_ops, ucpia);
if (!cam) { if (!cam) {
LOG("failed to cpia_register_camera\n"); LOG("failed to cpia_register_camera\n");
...@@ -591,7 +591,7 @@ static void cpia_disconnect(struct usb_interface *intf) ...@@ -591,7 +591,7 @@ static void cpia_disconnect(struct usb_interface *intf)
struct cam_data *cam = usb_get_intfdata(intf); struct cam_data *cam = usb_get_intfdata(intf);
struct usb_cpia *ucpia; struct usb_cpia *ucpia;
struct usb_device *udev; struct usb_device *udev;
usb_set_intfdata(intf, NULL); usb_set_intfdata(intf, NULL);
if (!cam) if (!cam)
return; return;
...@@ -600,7 +600,7 @@ static void cpia_disconnect(struct usb_interface *intf) ...@@ -600,7 +600,7 @@ static void cpia_disconnect(struct usb_interface *intf)
spin_lock( &cam_list_lock_usb ); spin_lock( &cam_list_lock_usb );
list_del(&cam->cam_data_list); list_del(&cam->cam_data_list);
spin_unlock( &cam_list_lock_usb ); spin_unlock( &cam_list_lock_usb );
ucpia->present = 0; ucpia->present = 0;
cpia_unregister_camera(cam); cpia_unregister_camera(cam);
...@@ -631,7 +631,7 @@ static void cpia_disconnect(struct usb_interface *intf) ...@@ -631,7 +631,7 @@ static void cpia_disconnect(struct usb_interface *intf)
static int __init usb_cpia_init(void) static int __init usb_cpia_init(void)
{ {
printk(KERN_INFO "%s v%d.%d.%d\n",ABOUT, printk(KERN_INFO "%s v%d.%d.%d\n",ABOUT,
CPIA_USB_MAJ_VER,CPIA_USB_MIN_VER,CPIA_USB_PATCH_VER); CPIA_USB_MAJ_VER,CPIA_USB_MIN_VER,CPIA_USB_PATCH_VER);
spin_lock_init(&cam_list_lock_usb); spin_lock_init(&cam_list_lock_usb);
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#define __CS8420_H__ #define __CS8420_H__
/* Initialization Sequence */ /* Initialization Sequence */
static __u8 init8420[] = { static __u8 init8420[] = {
1, 0x01, 2, 0x02, 3, 0x00, 4, 0x46, 1, 0x01, 2, 0x02, 3, 0x00, 4, 0x46,
5, 0x24, 6, 0x84, 18, 0x18, 19, 0x13, 5, 0x24, 6, 0x84, 18, 0x18, 19, 0x13,
......
...@@ -86,7 +86,7 @@ static int dabusb_add_buf_tail (pdabusb_t s, struct list_head *dst, struct list_ ...@@ -86,7 +86,7 @@ static int dabusb_add_buf_tail (pdabusb_t s, struct list_head *dst, struct list_
return ret; return ret;
} }
/*-------------------------------------------------------------------*/ /*-------------------------------------------------------------------*/
#ifdef DEBUG #ifdef DEBUG
static void dump_urb (struct urb *urb) static void dump_urb (struct urb *urb)
{ {
dbg("urb :%p", urb); dbg("urb :%p", urb);
...@@ -136,7 +136,7 @@ static int dabusb_free_queue (struct list_head *q) ...@@ -136,7 +136,7 @@ static int dabusb_free_queue (struct list_head *q)
for (p = q->next; p != q;) { for (p = q->next; p != q;) {
b = list_entry (p, buff_t, buff_list); b = list_entry (p, buff_t, buff_list);
#ifdef DEBUG #ifdef DEBUG
dump_urb(b->purb); dump_urb(b->purb);
#endif #endif
kfree(b->purb->transfer_buffer); kfree(b->purb->transfer_buffer);
...@@ -287,7 +287,7 @@ static int dabusb_bulk (pdabusb_t s, pbulk_transfer_t pb) ...@@ -287,7 +287,7 @@ static int dabusb_bulk (pdabusb_t s, pbulk_transfer_t pb)
} }
} }
if( ret == -EPIPE ) { if( ret == -EPIPE ) {
warn("CLEAR_FEATURE request to remove STALL condition."); warn("CLEAR_FEATURE request to remove STALL condition.");
if(usb_clear_halt(s->usbdev, usb_pipeendpoint(pipe))) if(usb_clear_halt(s->usbdev, usb_pipeendpoint(pipe)))
...@@ -328,7 +328,7 @@ static int dabusb_loadmem (pdabusb_t s, const char *fname) ...@@ -328,7 +328,7 @@ static int dabusb_loadmem (pdabusb_t s, const char *fname)
PINTEL_HEX_RECORD ptr = firmware; PINTEL_HEX_RECORD ptr = firmware;
dbg("Enter dabusb_loadmem (internal)"); dbg("Enter dabusb_loadmem (internal)");
ret = dabusb_8051_reset (s, 1); ret = dabusb_8051_reset (s, 1);
while (ptr->Type == 0) { while (ptr->Type == 0) {
...@@ -449,7 +449,7 @@ static int dabusb_startrek (pdabusb_t s) ...@@ -449,7 +449,7 @@ static int dabusb_startrek (pdabusb_t s)
if (!list_empty (&s->free_buff_list)) { if (!list_empty (&s->free_buff_list)) {
pbuff_t end; pbuff_t end;
int ret; int ret;
while (!dabusb_add_buf_tail (s, &s->rec_buff_list, &s->free_buff_list)) { while (!dabusb_add_buf_tail (s, &s->rec_buff_list, &s->free_buff_list)) {
dbg("submitting: end:%p s->rec_buff_list:%p", s->rec_buff_list.prev, &s->rec_buff_list); dbg("submitting: end:%p s->rec_buff_list:%p", s->rec_buff_list.prev, &s->rec_buff_list);
...@@ -506,7 +506,7 @@ static ssize_t dabusb_read (struct file *file, char __user *buf, size_t count, l ...@@ -506,7 +506,7 @@ static ssize_t dabusb_read (struct file *file, char __user *buf, size_t count, l
err("error: rec_buf_list is empty"); err("error: rec_buf_list is empty");
goto err; goto err;
} }
b = list_entry (s->rec_buff_list.next, buff_t, buff_list); b = list_entry (s->rec_buff_list.next, buff_t, buff_list);
purb = b->purb; purb = b->purb;
...@@ -783,9 +783,9 @@ static void dabusb_disconnect (struct usb_interface *intf) ...@@ -783,9 +783,9 @@ static void dabusb_disconnect (struct usb_interface *intf)
pdabusb_t s = usb_get_intfdata (intf); pdabusb_t s = usb_get_intfdata (intf);
dbg("dabusb_disconnect"); dbg("dabusb_disconnect");
init_waitqueue_entry(&__wait, current); init_waitqueue_entry(&__wait, current);
usb_set_intfdata (intf, NULL); usb_set_intfdata (intf, NULL);
if (s) { if (s) {
usb_deregister_dev (intf, &dabusb_class); usb_deregister_dev (intf, &dabusb_class);
...@@ -797,7 +797,7 @@ static void dabusb_disconnect (struct usb_interface *intf) ...@@ -797,7 +797,7 @@ static void dabusb_disconnect (struct usb_interface *intf)
schedule(); schedule();
current->state = TASK_RUNNING; current->state = TASK_RUNNING;
remove_wait_queue(&s->remove_ok, &__wait); remove_wait_queue(&s->remove_ok, &__wait);
s->usbdev = NULL; s->usbdev = NULL;
s->overruns = 0; s->overruns = 0;
} }
......
...@@ -10,7 +10,7 @@ typedef struct ...@@ -10,7 +10,7 @@ typedef struct
#define DABUSB_VERSION 0x1000 #define DABUSB_VERSION 0x1000
#define IOCTL_DAB_BULK _IOWR('d', 0x30, bulk_transfer_t) #define IOCTL_DAB_BULK _IOWR('d', 0x30, bulk_transfer_t)
#define IOCTL_DAB_OVERRUNS _IOR('d', 0x15, int) #define IOCTL_DAB_OVERRUNS _IOR('d', 0x15, int)
#define IOCTL_DAB_VERSION _IOR('d', 0x3f, int) #define IOCTL_DAB_VERSION _IOR('d', 0x3f, int)
#ifdef __KERNEL__ #ifdef __KERNEL__
...@@ -36,7 +36,7 @@ typedef struct ...@@ -36,7 +36,7 @@ typedef struct
struct list_head rec_buff_list; struct list_head rec_buff_list;
} dabusb_t,*pdabusb_t; } dabusb_t,*pdabusb_t;
typedef struct typedef struct
{ {
pdabusb_t s; pdabusb_t s;
struct urb *purb; struct urb *purb;
......
...@@ -37,28 +37,28 @@ ...@@ -37,28 +37,28 @@
Markus: Updates for 2.6.x kernels, code layout changes, name sanitizing Markus: Updates for 2.6.x kernels, code layout changes, name sanitizing
Version 0.30: Version 0.30:
Markus: Updates for 2.5.x kernel and more ISO compliant source Markus: Updates for 2.5.x kernel and more ISO compliant source
Version 0.25: Version 0.25:
PSL and Markus: Cleanup, radio now doesn't stop on device close PSL and Markus: Cleanup, radio now doesn't stop on device close
Version 0.24: Version 0.24:
Markus: Hope I got these silly VIDEO_TUNER_LOW issues finally Markus: Hope I got these silly VIDEO_TUNER_LOW issues finally
right. Some minor cleanup, improved standalone compilation right. Some minor cleanup, improved standalone compilation
Version 0.23: Version 0.23:
Markus: Sign extension bug fixed by declaring transfer_buffer unsigned Markus: Sign extension bug fixed by declaring transfer_buffer unsigned
Version 0.22: Version 0.22:
Markus: Some (brown bag) cleanup in what VIDIOCSTUNER returns, Markus: Some (brown bag) cleanup in what VIDIOCSTUNER returns,
thanks to Mike Cox for pointing the problem out. thanks to Mike Cox for pointing the problem out.
Version 0.21: Version 0.21:
Markus: Minor cleanup, warnings if something goes wrong, lame attempt Markus: Minor cleanup, warnings if something goes wrong, lame attempt
to adhere to Documentation/CodingStyle to adhere to Documentation/CodingStyle
Version 0.2: Version 0.2:
Brad Hards <bradh@dynamite.com.au>: Fixes to make it work as non-module Brad Hards <bradh@dynamite.com.au>: Fixes to make it work as non-module
Markus: Copyright clarification Markus: Copyright clarification
Version 0.01: Markus: initial release Version 0.01: Markus: initial release
...@@ -163,11 +163,11 @@ static struct usb_driver usb_dsbr100_driver = { ...@@ -163,11 +163,11 @@ static struct usb_driver usb_dsbr100_driver = {
static int dsbr100_start(dsbr100_device *radio) static int dsbr100_start(dsbr100_device *radio)
{ {
if (usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0), if (usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0),
USB_REQ_GET_STATUS, USB_REQ_GET_STATUS,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
0x00, 0xC7, radio->transfer_buffer, 8, 300)<0 || 0x00, 0xC7, radio->transfer_buffer, 8, 300)<0 ||
usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0), usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0),
DSB100_ONOFF, DSB100_ONOFF,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
0x01, 0x00, radio->transfer_buffer, 8, 300)<0) 0x01, 0x00, radio->transfer_buffer, 8, 300)<0)
return -1; return -1;
...@@ -179,11 +179,11 @@ static int dsbr100_start(dsbr100_device *radio) ...@@ -179,11 +179,11 @@ static int dsbr100_start(dsbr100_device *radio)
static int dsbr100_stop(dsbr100_device *radio) static int dsbr100_stop(dsbr100_device *radio)
{ {
if (usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0), if (usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0),
USB_REQ_GET_STATUS, USB_REQ_GET_STATUS,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
0x16, 0x1C, radio->transfer_buffer, 8, 300)<0 || 0x16, 0x1C, radio->transfer_buffer, 8, 300)<0 ||
usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0), usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0),
DSB100_ONOFF, DSB100_ONOFF,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
0x00, 0x00, radio->transfer_buffer, 8, 300)<0) 0x00, 0x00, radio->transfer_buffer, 8, 300)<0)
return -1; return -1;
...@@ -195,16 +195,16 @@ static int dsbr100_setfreq(dsbr100_device *radio, int freq) ...@@ -195,16 +195,16 @@ static int dsbr100_setfreq(dsbr100_device *radio, int freq)
{ {
freq = (freq/16*80)/1000+856; freq = (freq/16*80)/1000+856;
if (usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0), if (usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0),
DSB100_TUNE, DSB100_TUNE,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
(freq>>8)&0x00ff, freq&0xff, (freq>>8)&0x00ff, freq&0xff,
radio->transfer_buffer, 8, 300)<0 || radio->transfer_buffer, 8, 300)<0 ||
usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0), usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0),
USB_REQ_GET_STATUS, USB_REQ_GET_STATUS,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
0x96, 0xB7, radio->transfer_buffer, 8, 300)<0 || 0x96, 0xB7, radio->transfer_buffer, 8, 300)<0 ||
usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0), usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0),
USB_REQ_GET_STATUS, USB_REQ_GET_STATUS,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
0x00, 0x24, radio->transfer_buffer, 8, 300)<0) { 0x00, 0x24, radio->transfer_buffer, 8, 300)<0) {
radio->stereo = -1; radio->stereo = -1;
...@@ -219,7 +219,7 @@ sees a stereo signal or not. Pity. */ ...@@ -219,7 +219,7 @@ sees a stereo signal or not. Pity. */
static void dsbr100_getstat(dsbr100_device *radio) static void dsbr100_getstat(dsbr100_device *radio)
{ {
if (usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0), if (usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0),
USB_REQ_GET_STATUS, USB_REQ_GET_STATUS,
USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
0x00 , 0x24, radio->transfer_buffer, 8, 300)<0) 0x00 , 0x24, radio->transfer_buffer, 8, 300)<0)
radio->stereo = -1; radio->stereo = -1;
...@@ -232,7 +232,7 @@ static void dsbr100_getstat(dsbr100_device *radio) ...@@ -232,7 +232,7 @@ static void dsbr100_getstat(dsbr100_device *radio)
/* check if the device is present and register with v4l and /* check if the device is present and register with v4l and
usb if it is */ usb if it is */
static int usb_dsbr100_probe(struct usb_interface *intf, static int usb_dsbr100_probe(struct usb_interface *intf,
const struct usb_device_id *id) const struct usb_device_id *id)
{ {
dsbr100_device *radio; dsbr100_device *radio;
...@@ -243,7 +243,7 @@ static int usb_dsbr100_probe(struct usb_interface *intf, ...@@ -243,7 +243,7 @@ static int usb_dsbr100_probe(struct usb_interface *intf,
kfree(radio); kfree(radio);
return -ENOMEM; return -ENOMEM;
} }
memcpy(radio->videodev, &dsbr100_videodev_template, memcpy(radio->videodev, &dsbr100_videodev_template,
sizeof(dsbr100_videodev_template)); sizeof(dsbr100_videodev_template));
radio->removed = 0; radio->removed = 0;
radio->users = 0; radio->users = 0;
...@@ -310,7 +310,7 @@ static int usb_dsbr100_do_ioctl(struct inode *inode, struct file *file, ...@@ -310,7 +310,7 @@ static int usb_dsbr100_do_ioctl(struct inode *inode, struct file *file,
struct video_tuner *v = arg; struct video_tuner *v = arg;
dsbr100_getstat(radio); dsbr100_getstat(radio);
if(v->tuner) /* Only 1 tuner */ if(v->tuner) /* Only 1 tuner */
return -EINVAL; return -EINVAL;
v->rangelow = FREQ_MIN*FREQ_MUL; v->rangelow = FREQ_MIN*FREQ_MUL;
v->rangehigh = FREQ_MAX*FREQ_MUL; v->rangehigh = FREQ_MAX*FREQ_MUL;
...@@ -355,12 +355,12 @@ static int usb_dsbr100_do_ioctl(struct inode *inode, struct file *file, ...@@ -355,12 +355,12 @@ static int usb_dsbr100_do_ioctl(struct inode *inode, struct file *file,
v->volume = 1; v->volume = 1;
v->step = 1; v->step = 1;
strcpy(v->name, "Radio"); strcpy(v->name, "Radio");
return 0; return 0;
} }
case VIDIOCSAUDIO: { case VIDIOCSAUDIO: {
struct video_audio *v = arg; struct video_audio *v = arg;
if (v->audio) if (v->audio)
return -EINVAL; return -EINVAL;
if (v->flags&VIDEO_AUDIO_MUTE) { if (v->flags&VIDEO_AUDIO_MUTE) {
if (dsbr100_stop(radio)==-1) if (dsbr100_stop(radio)==-1)
......
...@@ -180,7 +180,7 @@ et61x251_match_id(struct et61x251_device* cam, const struct usb_device_id *id) ...@@ -180,7 +180,7 @@ et61x251_match_id(struct et61x251_device* cam, const struct usb_device_id *id)
void void
et61x251_attach_sensor(struct et61x251_device* cam, et61x251_attach_sensor(struct et61x251_device* cam,
struct et61x251_sensor* sensor) struct et61x251_sensor* sensor)
{ {
memcpy(&cam->sensor, sensor, sizeof(struct et61x251_sensor)); memcpy(&cam->sensor, sensor, sizeof(struct et61x251_sensor));
} }
...@@ -199,7 +199,7 @@ do { \ ...@@ -199,7 +199,7 @@ do { \
dev_info(&cam->usbdev->dev, fmt "\n", ## args); \ dev_info(&cam->usbdev->dev, fmt "\n", ## args); \
else if ((level) >= 3) \ else if ((level) >= 3) \
dev_info(&cam->usbdev->dev, "[%s:%d] " fmt "\n", \ dev_info(&cam->usbdev->dev, "[%s:%d] " fmt "\n", \
__FUNCTION__, __LINE__ , ## args); \ __FUNCTION__, __LINE__ , ## args); \
} \ } \
} while (0) } while (0)
# define KDBG(level, fmt, args...) \ # define KDBG(level, fmt, args...) \
...@@ -209,7 +209,7 @@ do { \ ...@@ -209,7 +209,7 @@ do { \
pr_info("et61x251: " fmt "\n", ## args); \ pr_info("et61x251: " fmt "\n", ## args); \
else if ((level) == 3) \ else if ((level) == 3) \
pr_debug("et61x251: [%s:%d] " fmt "\n", __FUNCTION__, \ pr_debug("et61x251: [%s:%d] " fmt "\n", __FUNCTION__, \
__LINE__ , ## args); \ __LINE__ , ## args); \
} \ } \
} while (0) } while (0)
# define V4LDBG(level, name, cmd) \ # define V4LDBG(level, name, cmd) \
...@@ -226,7 +226,7 @@ do { \ ...@@ -226,7 +226,7 @@ do { \
#undef PDBG #undef PDBG
#define PDBG(fmt, args...) \ #define PDBG(fmt, args...) \
dev_info(&cam->usbdev->dev, "[%s:%d] " fmt "\n", \ dev_info(&cam->usbdev->dev, "[%s:%d] " fmt "\n", \
__FUNCTION__, __LINE__ , ## args) __FUNCTION__, __LINE__ , ## args)
#undef PDBGG #undef PDBGG
#define PDBGG(fmt, args...) do {;} while(0) /* placeholder */ #define PDBGG(fmt, args...) do {;} while(0) /* placeholder */
......
...@@ -47,7 +47,7 @@ et61x251_match_id(struct et61x251_device* cam, const struct usb_device_id *id); ...@@ -47,7 +47,7 @@ et61x251_match_id(struct et61x251_device* cam, const struct usb_device_id *id);
extern void extern void
et61x251_attach_sensor(struct et61x251_device* cam, et61x251_attach_sensor(struct et61x251_device* cam,
struct et61x251_sensor* sensor); struct et61x251_sensor* sensor);
/*****************************************************************************/ /*****************************************************************************/
...@@ -56,13 +56,13 @@ extern int et61x251_read_reg(struct et61x251_device*, u16 index); ...@@ -56,13 +56,13 @@ extern int et61x251_read_reg(struct et61x251_device*, u16 index);
extern int et61x251_i2c_write(struct et61x251_device*, u8 address, u8 value); extern int et61x251_i2c_write(struct et61x251_device*, u8 address, u8 value);
extern int et61x251_i2c_read(struct et61x251_device*, u8 address); extern int et61x251_i2c_read(struct et61x251_device*, u8 address);
extern int et61x251_i2c_try_write(struct et61x251_device*, extern int et61x251_i2c_try_write(struct et61x251_device*,
struct et61x251_sensor*, u8 address, struct et61x251_sensor*, u8 address,
u8 value); u8 value);
extern int et61x251_i2c_try_read(struct et61x251_device*, extern int et61x251_i2c_try_read(struct et61x251_device*,
struct et61x251_sensor*, u8 address); struct et61x251_sensor*, u8 address);
extern int et61x251_i2c_raw_write(struct et61x251_device*, u8 n, u8 data1, extern int et61x251_i2c_raw_write(struct et61x251_device*, u8 n, u8 data1,
u8 data2, u8 data3, u8 data4, u8 data5, u8 data2, u8 data3, u8 data4, u8 data5,
u8 data6, u8 data7, u8 data8, u8 address); u8 data6, u8 data7, u8 data8, u8 address);
/*****************************************************************************/ /*****************************************************************************/
...@@ -100,13 +100,13 @@ struct et61x251_sensor { ...@@ -100,13 +100,13 @@ struct et61x251_sensor {
int (*init)(struct et61x251_device* cam); int (*init)(struct et61x251_device* cam);
int (*get_ctrl)(struct et61x251_device* cam, int (*get_ctrl)(struct et61x251_device* cam,
struct v4l2_control* ctrl); struct v4l2_control* ctrl);
int (*set_ctrl)(struct et61x251_device* cam, int (*set_ctrl)(struct et61x251_device* cam,
const struct v4l2_control* ctrl); const struct v4l2_control* ctrl);
int (*set_crop)(struct et61x251_device* cam, int (*set_crop)(struct et61x251_device* cam,
const struct v4l2_rect* rect); const struct v4l2_rect* rect);
int (*set_pix_format)(struct et61x251_device* cam, int (*set_pix_format)(struct et61x251_device* cam,
const struct v4l2_pix_format* pix); const struct v4l2_pix_format* pix);
/* Private */ /* Private */
struct v4l2_queryctrl _qctrl[ET61X251_MAX_CTRLS]; struct v4l2_queryctrl _qctrl[ET61X251_MAX_CTRLS];
......
...@@ -46,20 +46,20 @@ static int tas5130d1b_init(struct et61x251_device* cam) ...@@ -46,20 +46,20 @@ static int tas5130d1b_init(struct et61x251_device* cam)
static int tas5130d1b_set_ctrl(struct et61x251_device* cam, static int tas5130d1b_set_ctrl(struct et61x251_device* cam,
const struct v4l2_control* ctrl) const struct v4l2_control* ctrl)
{ {
int err = 0; int err = 0;
switch (ctrl->id) { switch (ctrl->id) {
case V4L2_CID_GAIN: case V4L2_CID_GAIN:
err += et61x251_i2c_raw_write(cam, 2, 0x20, err += et61x251_i2c_raw_write(cam, 2, 0x20,
0xf6-ctrl->value, 0, 0, 0, 0xf6-ctrl->value, 0, 0, 0,
0, 0, 0, 0); 0, 0, 0, 0);
break; break;
case V4L2_CID_EXPOSURE: case V4L2_CID_EXPOSURE:
err += et61x251_i2c_raw_write(cam, 2, 0x40, err += et61x251_i2c_raw_write(cam, 2, 0x40,
0x47-ctrl->value, 0, 0, 0, 0x47-ctrl->value, 0, 0, 0,
0, 0, 0, 0); 0, 0, 0, 0);
break; break;
default: default:
return -EINVAL; return -EINVAL;
......
This diff is collapsed.
...@@ -130,7 +130,7 @@ ...@@ -130,7 +130,7 @@
#define R511_COMP_QVY 0x76 #define R511_COMP_QVY 0x76
#define R511_COMP_QVUV 0x77 #define R511_COMP_QVUV 0x77
#define R511_COMP_EN 0x78 #define R511_COMP_EN 0x78
#define R511_COMP_LUT_EN 0x79 #define R511_COMP_LUT_EN 0x79
#define R511_COMP_LUT_BEGIN 0x80 #define R511_COMP_LUT_BEGIN 0x80
/* --------------------------------- */ /* --------------------------------- */
...@@ -459,14 +459,14 @@ struct usb_ov511 { ...@@ -459,14 +459,14 @@ struct usb_ov511 {
int subh; /* Pix Array subcapture height */ int subh; /* Pix Array subcapture height */
int curframe; /* Current receiving sbuf */ int curframe; /* Current receiving sbuf */
struct ov511_frame frame[OV511_NUMFRAMES]; struct ov511_frame frame[OV511_NUMFRAMES];
struct ov511_sbuf sbuf[OV511_NUMSBUF]; struct ov511_sbuf sbuf[OV511_NUMSBUF];
wait_queue_head_t wq; /* Processes waiting */ wait_queue_head_t wq; /* Processes waiting */
int snap_enabled; /* Snapshot mode enabled */ int snap_enabled; /* Snapshot mode enabled */
int bridge; /* Type of bridge (BRG_*) */ int bridge; /* Type of bridge (BRG_*) */
int bclass; /* Class of bridge (BCL_*) */ int bclass; /* Class of bridge (BCL_*) */
int sensor; /* Type of image sensor chip (SEN_*) */ int sensor; /* Type of image sensor chip (SEN_*) */
...@@ -512,7 +512,7 @@ struct symbolic_list { ...@@ -512,7 +512,7 @@ struct symbolic_list {
/* Returns the name of the matching element in the symbolic_list array. The /* Returns the name of the matching element in the symbolic_list array. The
* end of the list must be marked with an element that has a NULL name. * end of the list must be marked with an element that has a NULL name.
*/ */
static inline char * static inline char *
symbolic(struct symbolic_list list[], int num) symbolic(struct symbolic_list list[], int num)
{ {
int i; int i;
......
ovcamchip-objs := ovcamchip_core.o ov6x20.o ov6x30.o ov7x10.o ov7x20.o \ ovcamchip-objs := ovcamchip_core.o ov6x20.o ov6x30.o ov7x10.o ov7x20.o \
ov76be.o ov76be.o
obj-$(CONFIG_VIDEO_OVCAMCHIP) += ovcamchip.o obj-$(CONFIG_VIDEO_OVCAMCHIP) += ovcamchip.o
...@@ -266,17 +266,17 @@ static int ovcamchip_detect(struct i2c_client *c) ...@@ -266,17 +266,17 @@ static int ovcamchip_detect(struct i2c_client *c)
PDEBUG(3, "Testing for 0V6xx0"); PDEBUG(3, "Testing for 0V6xx0");
c->addr = OV6xx0_SID; c->addr = OV6xx0_SID;
if (init_camchip(c) < 0) { if (init_camchip(c) < 0) {
return -ENODEV; return -ENODEV;
} else { } else {
if (ov6xx0_detect(c) < 0) { if (ov6xx0_detect(c) < 0) {
PERROR("Failed to init OV6xx0"); PERROR("Failed to init OV6xx0");
return -EIO; return -EIO;
} }
} }
} else { } else {
if (ov7xx0_detect(c) < 0) { if (ov7xx0_detect(c) < 0) {
PERROR("Failed to init OV7xx0"); PERROR("Failed to init OV7xx0");
return -EIO; return -EIO;
} }
} }
......
...@@ -82,6 +82,6 @@ extern int ov_write_regvals(struct i2c_client *c, ...@@ -82,6 +82,6 @@ extern int ov_write_regvals(struct i2c_client *c,
struct ovcamchip_regvals *rvals); struct ovcamchip_regvals *rvals);
extern int ov_write_mask(struct i2c_client *c, unsigned char reg, extern int ov_write_mask(struct i2c_client *c, unsigned char reg,
unsigned char value, unsigned char mask); unsigned char value, unsigned char mask);
#endif #endif
This diff is collapsed.
/* /*
planb - PlanB frame grabber driver planb - PlanB frame grabber driver
PlanB is used in the 7x00/8x00 series of PowerMacintosh PlanB is used in the 7x00/8x00 series of PowerMacintosh
...@@ -167,7 +167,7 @@ struct planb { ...@@ -167,7 +167,7 @@ struct planb {
struct video_device video_dev; struct video_device video_dev;
struct video_picture picture; /* Current picture params */ struct video_picture picture; /* Current picture params */
struct video_audio audio_dev; /* Current audio params */ struct video_audio audio_dev; /* Current audio params */
volatile struct planb_registers *planb_base; /* virt base of planb */ volatile struct planb_registers *planb_base; /* virt base of planb */
struct planb_registers *planb_base_phys; /* phys base of planb */ struct planb_registers *planb_base_phys; /* phys base of planb */
void *priv_space; /* Org. alloc. mem for kfree */ void *priv_space; /* Org. alloc. mem for kfree */
...@@ -209,7 +209,7 @@ struct planb { ...@@ -209,7 +209,7 @@ struct planb {
int gwidth[MAX_GBUFFERS], gheight[MAX_GBUFFERS]; int gwidth[MAX_GBUFFERS], gheight[MAX_GBUFFERS];
unsigned int gfmt[MAX_GBUFFERS]; unsigned int gfmt[MAX_GBUFFERS];
int gnorm_switch[MAX_GBUFFERS]; int gnorm_switch[MAX_GBUFFERS];
volatile unsigned int *frame_stat; volatile unsigned int *frame_stat;
#define GBUFFER_UNUSED 0x00U #define GBUFFER_UNUSED 0x00U
#define GBUFFER_GRABBING 0x01U #define GBUFFER_GRABBING 0x01U
#define GBUFFER_DONE 0x02U #define GBUFFER_DONE 0x02U
......
...@@ -12,10 +12,10 @@ ...@@ -12,10 +12,10 @@
* Most of this code is directly derived from his userspace driver. * Most of this code is directly derived from his userspace driver.
* His driver works so send any reports to alan@redhat.com unless the * His driver works so send any reports to alan@redhat.com unless the
* userspace driver also doesn't work for you... * userspace driver also doesn't work for you...
* *
* Changes: * Changes:
* 08/07/2003 Daniele Bellucci <bellucda@tiscali.it> * 08/07/2003 Daniele Bellucci <bellucda@tiscali.it>
* - pms_capture: report back -EFAULT * - pms_capture: report back -EFAULT
*/ */
#include <linux/module.h> #include <linux/module.h>
...@@ -66,14 +66,14 @@ static int standard = 0; /* 0 - auto 1 - ntsc 2 - pal 3 - secam */ ...@@ -66,14 +66,14 @@ static int standard = 0; /* 0 - auto 1 - ntsc 2 - pal 3 - secam */
/* /*
* I/O ports and Shared Memory * I/O ports and Shared Memory
*/ */
static int io_port = 0x250; static int io_port = 0x250;
static int data_port = 0x251; static int data_port = 0x251;
static int mem_base = 0xC8000; static int mem_base = 0xC8000;
static void __iomem *mem; static void __iomem *mem;
static int video_nr = -1; static int video_nr = -1;
static inline void mvv_write(u8 index, u8 value) static inline void mvv_write(u8 index, u8 value)
{ {
...@@ -90,9 +90,9 @@ static int pms_i2c_stat(u8 slave) ...@@ -90,9 +90,9 @@ static int pms_i2c_stat(u8 slave)
{ {
int counter; int counter;
int i; int i;
outb(0x28, io_port); outb(0x28, io_port);
counter=0; counter=0;
while((inb(data_port)&0x01)==0) while((inb(data_port)&0x01)==0)
if(counter++==256) if(counter++==256)
...@@ -101,9 +101,9 @@ static int pms_i2c_stat(u8 slave) ...@@ -101,9 +101,9 @@ static int pms_i2c_stat(u8 slave)
while((inb(data_port)&0x01)!=0) while((inb(data_port)&0x01)!=0)
if(counter++==256) if(counter++==256)
break; break;
outb(slave, io_port); outb(slave, io_port);
counter=0; counter=0;
while((inb(data_port)&0x01)==0) while((inb(data_port)&0x01)==0)
if(counter++==256) if(counter++==256)
...@@ -112,7 +112,7 @@ static int pms_i2c_stat(u8 slave) ...@@ -112,7 +112,7 @@ static int pms_i2c_stat(u8 slave)
while((inb(data_port)&0x01)!=0) while((inb(data_port)&0x01)!=0)
if(counter++==256) if(counter++==256)
break; break;
for(i=0;i<12;i++) for(i=0;i<12;i++)
{ {
char st=inb(data_port); char st=inb(data_port);
...@@ -122,7 +122,7 @@ static int pms_i2c_stat(u8 slave) ...@@ -122,7 +122,7 @@ static int pms_i2c_stat(u8 slave)
break; break;
} }
outb(0x29, io_port); outb(0x29, io_port);
return inb(data_port); return inb(data_port);
} }
static int pms_i2c_write(u16 slave, u16 sub, u16 data) static int pms_i2c_write(u16 slave, u16 sub, u16 data)
...@@ -130,19 +130,19 @@ static int pms_i2c_write(u16 slave, u16 sub, u16 data) ...@@ -130,19 +130,19 @@ static int pms_i2c_write(u16 slave, u16 sub, u16 data)
int skip=0; int skip=0;
int count; int count;
int i; int i;
for(i=0;i<i2c_count;i++) for(i=0;i<i2c_count;i++)
{ {
if((i2cinfo[i].slave==slave) && if((i2cinfo[i].slave==slave) &&
(i2cinfo[i].sub == sub)) (i2cinfo[i].sub == sub))
{ {
if(i2cinfo[i].data==data) if(i2cinfo[i].data==data)
skip=1; skip=1;
i2cinfo[i].data=data; i2cinfo[i].data=data;
i=i2c_count+1; i=i2c_count+1;
} }
} }
if(i==i2c_count && i2c_count<64) if(i==i2c_count && i2c_count<64)
{ {
i2cinfo[i2c_count].slave=slave; i2cinfo[i2c_count].slave=slave;
...@@ -150,16 +150,16 @@ static int pms_i2c_write(u16 slave, u16 sub, u16 data) ...@@ -150,16 +150,16 @@ static int pms_i2c_write(u16 slave, u16 sub, u16 data)
i2cinfo[i2c_count].data=data; i2cinfo[i2c_count].data=data;
i2c_count++; i2c_count++;
} }
if(skip) if(skip)
return 0; return 0;
mvv_write(0x29, sub); mvv_write(0x29, sub);
mvv_write(0x2A, data); mvv_write(0x2A, data);
mvv_write(0x28, slave); mvv_write(0x28, slave);
outb(0x28, io_port); outb(0x28, io_port);
count=0; count=0;
while((inb(data_port)&1)==0) while((inb(data_port)&1)==0)
if(count>255) if(count>255)
...@@ -167,9 +167,9 @@ static int pms_i2c_write(u16 slave, u16 sub, u16 data) ...@@ -167,9 +167,9 @@ static int pms_i2c_write(u16 slave, u16 sub, u16 data)
while((inb(data_port)&1)!=0) while((inb(data_port)&1)!=0)
if(count>255) if(count>255)
break; break;
count=inb(data_port); count=inb(data_port);
if(count&2) if(count&2)
return -1; return -1;
return count; return count;
...@@ -189,8 +189,8 @@ static int pms_i2c_read(int slave, int sub) ...@@ -189,8 +189,8 @@ static int pms_i2c_read(int slave, int sub)
static void pms_i2c_andor(int slave, int sub, int and, int or) static void pms_i2c_andor(int slave, int sub, int and, int or)
{ {
u8 tmp; u8 tmp;
tmp=pms_i2c_read(slave, sub); tmp=pms_i2c_read(slave, sub);
tmp = (tmp&and)|or; tmp = (tmp&and)|or;
pms_i2c_write(slave, sub, tmp); pms_i2c_write(slave, sub, tmp);
...@@ -199,7 +199,7 @@ static void pms_i2c_andor(int slave, int sub, int and, int or) ...@@ -199,7 +199,7 @@ static void pms_i2c_andor(int slave, int sub, int and, int or)
/* /*
* Control functions * Control functions
*/ */
static void pms_videosource(short source) static void pms_videosource(short source)
{ {
...@@ -234,8 +234,8 @@ static void pms_colour(short colour) ...@@ -234,8 +234,8 @@ static void pms_colour(short colour)
break; break;
} }
} }
static void pms_contrast(short contrast) static void pms_contrast(short contrast)
{ {
switch(decoder) switch(decoder)
...@@ -269,14 +269,14 @@ static void pms_format(short format) ...@@ -269,14 +269,14 @@ static void pms_format(short format)
{ {
int target; int target;
standard = format; standard = format;
if(decoder==PHILIPS1) if(decoder==PHILIPS1)
target=0x42; target=0x42;
else if(decoder==PHILIPS2) else if(decoder==PHILIPS2)
target=0x8A; target=0x8A;
else else
return; return;
switch(format) switch(format)
{ {
case 0: /* Auto */ case 0: /* Auto */
...@@ -302,7 +302,7 @@ static void pms_format(short format) ...@@ -302,7 +302,7 @@ static void pms_format(short format)
/* /*
* These features of the PMS card are not currently exposes. They * These features of the PMS card are not currently exposes. They
* could become a private v4l ioctl for PMSCONFIG or somesuch if * could become a private v4l ioctl for PMSCONFIG or somesuch if
* people need it. We also don't yet use the PMS interrupt. * people need it. We also don't yet use the PMS interrupt.
*/ */
...@@ -324,7 +324,7 @@ static void pms_hstart(short start) ...@@ -324,7 +324,7 @@ static void pms_hstart(short start)
/* /*
* Bandpass filters * Bandpass filters
*/ */
static void pms_bandpass(short pass) static void pms_bandpass(short pass)
{ {
if(decoder==PHILIPS2) if(decoder==PHILIPS2)
...@@ -493,7 +493,7 @@ static void pms_vert(u8 deciden, u8 decinum) ...@@ -493,7 +493,7 @@ static void pms_vert(u8 deciden, u8 decinum)
/* /*
* Turn 16bit ratios into best small ratio the chipset can grok * Turn 16bit ratios into best small ratio the chipset can grok
*/ */
static void pms_vertdeci(unsigned short decinum, unsigned short deciden) static void pms_vertdeci(unsigned short decinum, unsigned short deciden)
{ {
/* Knock it down by /5 once */ /* Knock it down by /5 once */
...@@ -546,7 +546,7 @@ static void pms_horzdeci(short decinum, short deciden) ...@@ -546,7 +546,7 @@ static void pms_horzdeci(short decinum, short deciden)
decinum=512; decinum=512;
deciden=640; /* 768 would be ideal */ deciden=640; /* 768 would be ideal */
} }
while(((decinum|deciden)&1)==0) while(((decinum|deciden)&1)==0)
{ {
decinum>>=1; decinum>>=1;
...@@ -559,7 +559,7 @@ static void pms_horzdeci(short decinum, short deciden) ...@@ -559,7 +559,7 @@ static void pms_horzdeci(short decinum, short deciden)
} }
if(deciden==32) if(deciden==32)
deciden--; deciden--;
mvv_write(0x24, 0x80|deciden); mvv_write(0x24, 0x80|deciden);
mvv_write(0x25, decinum); mvv_write(0x25, decinum);
} }
...@@ -567,14 +567,14 @@ static void pms_horzdeci(short decinum, short deciden) ...@@ -567,14 +567,14 @@ static void pms_horzdeci(short decinum, short deciden)
static void pms_resolution(short width, short height) static void pms_resolution(short width, short height)
{ {
int fg_height; int fg_height;
fg_height=height; fg_height=height;
if(fg_height>280) if(fg_height>280)
fg_height=280; fg_height=280;
mvv_write(0x18, fg_height); mvv_write(0x18, fg_height);
mvv_write(0x19, fg_height>>8); mvv_write(0x19, fg_height>>8);
if(standard==1) if(standard==1)
{ {
mvv_write(0x1A, 0xFC); mvv_write(0x1A, 0xFC);
...@@ -598,7 +598,7 @@ static void pms_resolution(short width, short height) ...@@ -598,7 +598,7 @@ static void pms_resolution(short width, short height)
mvv_write(0x42, 0x00); mvv_write(0x42, 0x00);
mvv_write(0x43, 0x00); mvv_write(0x43, 0x00);
mvv_write(0x44, MVVMEMORYWIDTH); mvv_write(0x44, MVVMEMORYWIDTH);
mvv_write(0x22, width+8); mvv_write(0x22, width+8);
mvv_write(0x23, (width+8)>> 8); mvv_write(0x23, (width+8)>> 8);
...@@ -618,7 +618,7 @@ static void pms_resolution(short width, short height) ...@@ -618,7 +618,7 @@ static void pms_resolution(short width, short height)
/* /*
* Set Input * Set Input
*/ */
static void pms_vcrinput(short input) static void pms_vcrinput(short input)
{ {
if(decoder==PHILIPS2) if(decoder==PHILIPS2)
...@@ -643,20 +643,20 @@ static int pms_capture(struct pms_device *dev, char __user *buf, int rgb555, int ...@@ -643,20 +643,20 @@ static int pms_capture(struct pms_device *dev, char __user *buf, int rgb555, int
mvv_write(0x08,r8); /* capture rgb555/565, init DRAM, PC enable */ mvv_write(0x08,r8); /* capture rgb555/565, init DRAM, PC enable */
/* printf("%d %d %d %d %d %x %x\n",width,height,voff,nom,den,mvv_buf); */ /* printf("%d %d %d %d %d %x %x\n",width,height,voff,nom,den,mvv_buf); */
for (y = 0; y < dev->height; y++ ) for (y = 0; y < dev->height; y++ )
{ {
writeb(0, mem); /* synchronisiert neue Zeile */ writeb(0, mem); /* synchronisiert neue Zeile */
/* /*
* This is in truth a fifo, be very careful as if you * This is in truth a fifo, be very careful as if you
* forgot this odd things will occur 8) * forgot this odd things will occur 8)
*/ */
memcpy_fromio(tmp, mem, dw+32); /* discard 16 word */ memcpy_fromio(tmp, mem, dw+32); /* discard 16 word */
cnt -= dev->height; cnt -= dev->height;
while (cnt <= 0) while (cnt <= 0)
{ {
/* /*
* Don't copy too far * Don't copy too far
*/ */
...@@ -666,7 +666,7 @@ static int pms_capture(struct pms_device *dev, char __user *buf, int rgb555, int ...@@ -666,7 +666,7 @@ static int pms_capture(struct pms_device *dev, char __user *buf, int rgb555, int
cnt += dev->height; cnt += dev->height;
if (copy_to_user(buf, tmp+32, dt)) if (copy_to_user(buf, tmp+32, dt))
return len ? len : -EFAULT; return len ? len : -EFAULT;
buf += dt; buf += dt;
len += dt; len += dt;
} }
} }
...@@ -683,7 +683,7 @@ static int pms_do_ioctl(struct inode *inode, struct file *file, ...@@ -683,7 +683,7 @@ static int pms_do_ioctl(struct inode *inode, struct file *file,
{ {
struct video_device *dev = video_devdata(file); struct video_device *dev = video_devdata(file);
struct pms_device *pd=(struct pms_device *)dev; struct pms_device *pd=(struct pms_device *)dev;
switch(cmd) switch(cmd)
{ {
case VIDIOCGCAP: case VIDIOCGCAP:
...@@ -806,7 +806,7 @@ static int pms_do_ioctl(struct inode *inode, struct file *file, ...@@ -806,7 +806,7 @@ static int pms_do_ioctl(struct inode *inode, struct file *file,
||(p->palette==VIDEO_PALETTE_RGB555 && p->depth==15))) ||(p->palette==VIDEO_PALETTE_RGB555 && p->depth==15)))
return -EINVAL; return -EINVAL;
pd->picture= *p; pd->picture= *p;
/* /*
* Now load the card. * Now load the card.
*/ */
...@@ -815,7 +815,7 @@ static int pms_do_ioctl(struct inode *inode, struct file *file, ...@@ -815,7 +815,7 @@ static int pms_do_ioctl(struct inode *inode, struct file *file,
pms_brightness(p->brightness>>8); pms_brightness(p->brightness>>8);
pms_hue(p->hue>>8); pms_hue(p->hue>>8);
pms_colour(p->colour>>8); pms_colour(p->colour>>8);
pms_contrast(p->contrast>>8); pms_contrast(p->contrast>>8);
mutex_unlock(&pd->lock); mutex_unlock(&pd->lock);
return 0; return 0;
} }
...@@ -873,7 +873,7 @@ static ssize_t pms_read(struct file *file, char __user *buf, ...@@ -873,7 +873,7 @@ static ssize_t pms_read(struct file *file, char __user *buf,
struct video_device *v = video_devdata(file); struct video_device *v = video_devdata(file);
struct pms_device *pd=(struct pms_device *)v; struct pms_device *pd=(struct pms_device *)v;
int len; int len;
mutex_lock(&pd->lock); mutex_lock(&pd->lock);
len=pms_capture(pd, buf, (pd->picture.depth==16)?0:1,count); len=pms_capture(pd, buf, (pd->picture.depth==16)?0:1,count);
mutex_unlock(&pd->lock); mutex_unlock(&pd->lock);
...@@ -905,13 +905,13 @@ static struct pms_device pms_device; ...@@ -905,13 +905,13 @@ static struct pms_device pms_device;
/* /*
* Probe for and initialise the Mediavision PMS * Probe for and initialise the Mediavision PMS
*/ */
static int init_mediavision(void) static int init_mediavision(void)
{ {
int id; int id;
int idec, decst; int idec, decst;
int i; int i;
unsigned char i2c_defs[]={ unsigned char i2c_defs[]={
0x4C,0x30,0x00,0xE8, 0x4C,0x30,0x00,0xE8,
0xB6,0xE2,0x00,0x00, 0xB6,0xE2,0x00,0x00,
...@@ -925,7 +925,7 @@ static int init_mediavision(void) ...@@ -925,7 +925,7 @@ static int init_mediavision(void)
mem = ioremap(mem_base, 0x800); mem = ioremap(mem_base, 0x800);
if (!mem) if (!mem)
return -ENOMEM; return -ENOMEM;
if (!request_region(0x9A01, 1, "Mediavision PMS config")) if (!request_region(0x9A01, 1, "Mediavision PMS config"))
{ {
printk(KERN_WARNING "mediavision: unable to detect: 0x9A01 in use.\n"); printk(KERN_WARNING "mediavision: unable to detect: 0x9A01 in use.\n");
...@@ -941,18 +941,18 @@ static int init_mediavision(void) ...@@ -941,18 +941,18 @@ static int init_mediavision(void)
} }
outb(0xB8, 0x9A01); /* Unlock */ outb(0xB8, 0x9A01); /* Unlock */
outb(io_port>>4, 0x9A01); /* Set IO port */ outb(io_port>>4, 0x9A01); /* Set IO port */
id=mvv_read(3); id=mvv_read(3);
decst=pms_i2c_stat(0x43); decst=pms_i2c_stat(0x43);
if(decst!=-1) if(decst!=-1)
idec=2; idec=2;
else if(pms_i2c_stat(0xb9)!=-1) else if(pms_i2c_stat(0xb9)!=-1)
idec=3; idec=3;
else if(pms_i2c_stat(0x8b)!=-1) else if(pms_i2c_stat(0x8b)!=-1)
idec=1; idec=1;
else else
idec=0; idec=0;
printk(KERN_INFO "PMS type is %d\n", idec); printk(KERN_INFO "PMS type is %d\n", idec);
...@@ -966,11 +966,11 @@ static int init_mediavision(void) ...@@ -966,11 +966,11 @@ static int init_mediavision(void)
/* /*
* Ok we have a PMS of some sort * Ok we have a PMS of some sort
*/ */
mvv_write(0x04, mem_base>>12); /* Set the memory area */ mvv_write(0x04, mem_base>>12); /* Set the memory area */
/* Ok now load the defaults */ /* Ok now load the defaults */
for(i=0;i<0x19;i++) for(i=0;i<0x19;i++)
{ {
if(i2c_defs[i]==0xFF) if(i2c_defs[i]==0xFF)
...@@ -978,7 +978,7 @@ static int init_mediavision(void) ...@@ -978,7 +978,7 @@ static int init_mediavision(void)
else else
pms_i2c_write(0x8A, i, i2c_defs[i]); pms_i2c_write(0x8A, i, i2c_defs[i]);
} }
pms_i2c_write(0xB8,0x00,0x12); pms_i2c_write(0xB8,0x00,0x12);
pms_i2c_write(0xB8,0x04,0x00); pms_i2c_write(0xB8,0x04,0x00);
pms_i2c_write(0xB8,0x07,0x00); pms_i2c_write(0xB8,0x07,0x00);
...@@ -987,18 +987,18 @@ static int init_mediavision(void) ...@@ -987,18 +987,18 @@ static int init_mediavision(void)
pms_i2c_write(0xB8,0x0A,0x00); pms_i2c_write(0xB8,0x0A,0x00);
pms_i2c_write(0xB8,0x0B,0x10); pms_i2c_write(0xB8,0x0B,0x10);
pms_i2c_write(0xB8,0x10,0x03); pms_i2c_write(0xB8,0x10,0x03);
mvv_write(0x01, 0x00); mvv_write(0x01, 0x00);
mvv_write(0x05, 0xA0); mvv_write(0x05, 0xA0);
mvv_write(0x08, 0x25); mvv_write(0x08, 0x25);
mvv_write(0x09, 0x00); mvv_write(0x09, 0x00);
mvv_write(0x0A, 0x20|MVVMEMORYWIDTH); mvv_write(0x0A, 0x20|MVVMEMORYWIDTH);
mvv_write(0x10, 0x02); mvv_write(0x10, 0x02);
mvv_write(0x1E, 0x0C); mvv_write(0x1E, 0x0C);
mvv_write(0x1F, 0x03); mvv_write(0x1F, 0x03);
mvv_write(0x26, 0x06); mvv_write(0x26, 0x06);
mvv_write(0x2B, 0x00); mvv_write(0x2B, 0x00);
mvv_write(0x2C, 0x20); mvv_write(0x2C, 0x20);
mvv_write(0x2D, 0x00); mvv_write(0x2D, 0x00);
...@@ -1018,13 +1018,13 @@ static int init_mediavision(void) ...@@ -1018,13 +1018,13 @@ static int init_mediavision(void)
/* /*
* Initialization and module stuff * Initialization and module stuff
*/ */
static int __init init_pms_cards(void) static int __init init_pms_cards(void)
{ {
printk(KERN_INFO "Mediavision Pro Movie Studio driver 0.02\n"); printk(KERN_INFO "Mediavision Pro Movie Studio driver 0.02\n");
data_port = io_port +1; data_port = io_port +1;
if(init_mediavision()) if(init_mediavision())
{ {
printk(KERN_INFO "Board not found.\n"); printk(KERN_INFO "Board not found.\n");
......
...@@ -15,6 +15,6 @@ default: ...@@ -15,6 +15,6 @@ default:
endif endif
clean: clean:
rm -f *.[oas] .*.flags *.ko .*.cmd .*.d .*.tmp *.mod.c rm -f *.[oas] .*.flags *.ko .*.cmd .*.d .*.tmp *.mod.c
rm -rf .tmp_versions rm -rf .tmp_versions
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/* Linux driver for Philips webcam /* Linux driver for Philips webcam
Various miscellaneous functions and tables. Various miscellaneous functions and tables.
(C) 1999-2003 Nemosoft Unv. (C) 1999-2003 Nemosoft Unv.
(C) 2004 Luc Saillard (luc@saillard.org) (C) 2004 Luc Saillard (luc@saillard.org)
...@@ -44,17 +44,17 @@ int pwc_decode_size(struct pwc_device *pdev, int width, int height) ...@@ -44,17 +44,17 @@ int pwc_decode_size(struct pwc_device *pdev, int width, int height)
int i, find; int i, find;
/* Make sure we don't go beyond our max size. /* Make sure we don't go beyond our max size.
NB: we have different limits for RAW and normal modes. In case NB: we have different limits for RAW and normal modes. In case
you don't have the decompressor loaded or use RAW mode, you don't have the decompressor loaded or use RAW mode,
the maximum viewable size is smaller. the maximum viewable size is smaller.
*/ */
if (pdev->vpalette == VIDEO_PALETTE_RAW) if (pdev->vpalette == VIDEO_PALETTE_RAW)
{ {
if (width > pdev->abs_max.x || height > pdev->abs_max.y) if (width > pdev->abs_max.x || height > pdev->abs_max.y)
{ {
Debug("VIDEO_PALETTE_RAW: going beyond abs_max.\n"); Debug("VIDEO_PALETTE_RAW: going beyond abs_max.\n");
return -1; return -1;
} }
} }
else else
{ {
...@@ -88,8 +88,8 @@ void pwc_construct(struct pwc_device *pdev) ...@@ -88,8 +88,8 @@ void pwc_construct(struct pwc_device *pdev)
pdev->view_min.y = 96; pdev->view_min.y = 96;
pdev->view_max.x = 352; pdev->view_max.x = 352;
pdev->view_max.y = 288; pdev->view_max.y = 288;
pdev->abs_max.x = 352; pdev->abs_max.x = 352;
pdev->abs_max.y = 288; pdev->abs_max.y = 288;
pdev->image_mask = 1 << PSZ_SQCIF | 1 << PSZ_QCIF | 1 << PSZ_CIF; pdev->image_mask = 1 << PSZ_SQCIF | 1 << PSZ_QCIF | 1 << PSZ_CIF;
pdev->vcinterface = 2; pdev->vcinterface = 2;
pdev->vendpoint = 4; pdev->vendpoint = 4;
...@@ -105,8 +105,8 @@ void pwc_construct(struct pwc_device *pdev) ...@@ -105,8 +105,8 @@ void pwc_construct(struct pwc_device *pdev)
pdev->view_max.x = 640; pdev->view_max.x = 640;
pdev->view_max.y = 480; pdev->view_max.y = 480;
pdev->image_mask = 1 << PSZ_SQCIF | 1 << PSZ_QSIF | 1 << PSZ_QCIF | 1 << PSZ_SIF | 1 << PSZ_CIF | 1 << PSZ_VGA; pdev->image_mask = 1 << PSZ_SQCIF | 1 << PSZ_QSIF | 1 << PSZ_QCIF | 1 << PSZ_SIF | 1 << PSZ_CIF | 1 << PSZ_VGA;
pdev->abs_max.x = 640; pdev->abs_max.x = 640;
pdev->abs_max.y = 480; pdev->abs_max.y = 480;
pdev->vcinterface = 3; pdev->vcinterface = 3;
pdev->vendpoint = 4; pdev->vendpoint = 4;
pdev->frame_header_size = 0; pdev->frame_header_size = 0;
...@@ -121,8 +121,8 @@ void pwc_construct(struct pwc_device *pdev) ...@@ -121,8 +121,8 @@ void pwc_construct(struct pwc_device *pdev)
pdev->view_max.x = 640; pdev->view_max.x = 640;
pdev->view_max.y = 480; pdev->view_max.y = 480;
pdev->image_mask = 1 << PSZ_QSIF | 1 << PSZ_SIF | 1 << PSZ_VGA; pdev->image_mask = 1 << PSZ_QSIF | 1 << PSZ_SIF | 1 << PSZ_VGA;
pdev->abs_max.x = 640; pdev->abs_max.x = 640;
pdev->abs_max.y = 480; pdev->abs_max.y = 480;
pdev->vcinterface = 3; pdev->vcinterface = 3;
pdev->vendpoint = 5; pdev->vendpoint = 5;
pdev->frame_header_size = TOUCAM_HEADER_SIZE; pdev->frame_header_size = TOUCAM_HEADER_SIZE;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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