Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
002b40d8
Commit
002b40d8
authored
Oct 27, 2002
by
Alan Cox
Committed by
Linus Torvalds
Oct 27, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] cpia driver update from maintainer
parent
4a142aba
Changes
4
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1179 additions
and
391 deletions
+1179
-391
drivers/media/video/cpia.c
drivers/media/video/cpia.c
+1129
-368
drivers/media/video/cpia.h
drivers/media/video/cpia.h
+41
-16
drivers/media/video/cpia_pp.c
drivers/media/video/cpia_pp.c
+5
-4
drivers/media/video/cpia_usb.c
drivers/media/video/cpia_usb.c
+4
-3
No files found.
drivers/media/video/cpia.c
View file @
002b40d8
This diff is collapsed.
Click to expand it.
drivers/media/video/cpia.h
View file @
002b40d8
...
@@ -26,13 +26,13 @@
...
@@ -26,13 +26,13 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
*/
#define CPIA_MAJ_VER
0
#define CPIA_MAJ_VER
1
#define CPIA_MIN_VER
8
#define CPIA_MIN_VER
2
#define CPIA_PATCH_VER
1
#define CPIA_PATCH_VER
2
#define CPIA_PP_MAJ_VER
0
#define CPIA_PP_MAJ_VER
1
#define CPIA_PP_MIN_VER
8
#define CPIA_PP_MIN_VER
2
#define CPIA_PP_PATCH_VER
1
#define CPIA_PP_PATCH_VER
2
#define CPIA_MAX_FRAME_SIZE_UNALIGNED (352 * 288 * 4)
/* CIF at RGB32 */
#define CPIA_MAX_FRAME_SIZE_UNALIGNED (352 * 288 * 4)
/* CIF at RGB32 */
#define CPIA_MAX_FRAME_SIZE ((CPIA_MAX_FRAME_SIZE_UNALIGNED + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
/* align above to PAGE_SIZE */
#define CPIA_MAX_FRAME_SIZE ((CPIA_MAX_FRAME_SIZE_UNALIGNED + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
/* align above to PAGE_SIZE */
...
@@ -93,6 +93,11 @@ struct cpia_camera_ops
...
@@ -93,6 +93,11 @@ struct cpia_camera_ops
* 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
*/
struct
module
*
owner
;
};
};
struct
cpia_frame
{
struct
cpia_frame
{
...
@@ -150,7 +155,7 @@ struct cam_params {
...
@@ -150,7 +155,7 @@ struct cam_params {
u8
blueComp
;
u8
blueComp
;
}
exposure
;
}
exposure
;
struct
{
struct
{
u8
balanceMode
IsAuto
;
u8
balanceMode
;
u8
redGain
;
u8
redGain
;
u8
greenGain
;
u8
greenGain
;
u8
blueGain
;
u8
blueGain
;
...
@@ -166,9 +171,10 @@ struct cam_params {
...
@@ -166,9 +171,10 @@ struct cam_params {
u8
gain8
;
u8
gain8
;
}
apcor
;
}
apcor
;
struct
{
struct
{
u8
disabled
;
u8
flickerMode
;
u8
flickerMode
;
u8
coarseJump
;
u8
coarseJump
;
u8
allowableOverExposure
;
int
allowableOverExposure
;
}
flickerControl
;
}
flickerControl
;
struct
{
struct
{
u8
gain1
;
u8
gain1
;
...
@@ -261,6 +267,7 @@ struct cam_data {
...
@@ -261,6 +267,7 @@ struct cam_data {
struct
video_device
vdev
;
/* v4l videodev */
struct
video_device
vdev
;
/* v4l videodev */
struct
video_picture
vp
;
/* v4l camera settings */
struct
video_picture
vp
;
/* v4l camera settings */
struct
video_window
vw
;
/* v4l capture area */
struct
video_window
vw
;
/* v4l capture area */
struct
video_capture
vc
;
/* v4l subcapture area */
/* mmap interface */
/* mmap interface */
int
curframe
;
/* the current frame to grab into */
int
curframe
;
/* the current frame to grab into */
...
@@ -271,6 +278,8 @@ struct cam_data {
...
@@ -271,6 +278,8 @@ struct cam_data {
int
first_frame
;
int
first_frame
;
int
mmap_kludge
;
/* 'wrong' byte order for mmap */
int
mmap_kludge
;
/* 'wrong' byte order for mmap */
volatile
u32
cmd_queue
;
/* queued commands */
volatile
u32
cmd_queue
;
/* queued commands */
int
exposure_status
;
/* EXPOSURE_* */
int
exposure_count
;
/* number of frames at this status */
};
};
/* cpia_register_camera is called by low level driver for each camera.
/* cpia_register_camera is called by low level driver for each camera.
...
@@ -382,15 +391,27 @@ void cpia_unregister_camera(struct cam_data *cam);
...
@@ -382,15 +391,27 @@ void cpia_unregister_camera(struct cam_data *cam);
#define VP_STATE_ACB_RMAX 0x40
#define VP_STATE_ACB_RMAX 0x40
#define VP_STATE_ACB_GMAX 0x80
#define VP_STATE_ACB_GMAX 0x80
/* default (minimum) compensation values */
#define COMP_RED 220
#define COMP_GREEN1 214
#define COMP_GREEN2 COMP_GREEN1
#define COMP_BLUE 230
/* exposure status */
#define EXPOSURE_VERY_LIGHT 0
#define EXPOSURE_LIGHT 1
#define EXPOSURE_NORMAL 2
#define EXPOSURE_DARK 3
#define EXPOSURE_VERY_DARK 4
/* ErrorCode */
/* ErrorCode */
#define ERROR_FLICKER_BELOW_MIN_EXP 0x01
/*flicker exposure got below minimum exposure */
#define ERROR_FLICKER_BELOW_MIN_EXP 0x01
/*flicker exposure got below minimum exposure */
#define ALOG(fmt,args...) printk(fmt, ##args)
#define ALOG(fmt,args...) printk(fmt, ##args)
#define LOG(fmt,args...) ALOG(KERN_INFO __FILE__ ":%s(%d):" fmt, __FUNCTION__ , __LINE__ , ##args)
#define LOG(fmt,args...) ALOG(KERN_INFO __FILE__ ":%s(%d):" fmt, __FUNCTION__ , __LINE__ , ##args)
#ifdef _CPIA_DEBUG_
#ifdef _CPIA_DEBUG_
#define ADBG(
lineno,fmt,args...) printk(fmt, jiffies, lineno
, ##args)
#define ADBG(
fmt,args...) printk(fmt, jiffies
, ##args)
#define DBG(fmt,args...) ADBG(
(__LINE__), KERN_DEBUG __FILE__" (%ld):" __FUNCTION__ "(%d):" fmt
, ##args)
#define DBG(fmt,args...) ADBG(
KERN_DEBUG __FILE__" (%ld):%s(%d):" fmt, __FUNCTION__, __LINE__
, ##args)
#else
#else
#define DBG(fmn,args...) do {} while(0)
#define DBG(fmn,args...) do {} while(0)
#endif
#endif
...
@@ -400,15 +421,19 @@ void cpia_unregister_camera(struct cam_data *cam);
...
@@ -400,15 +421,19 @@ void cpia_unregister_camera(struct cam_data *cam);
(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);
static
inline
void
cpia_add_to_list
(
struct
cam_data
*
l
,
struct
cam_data
*
drv
)
static
inline
void
cpia_add_to_list
(
struct
cam_data
*
*
l
,
struct
cam_data
**
drv_p
)
{
{
drv
->
next
=
l
;
struct
cam_data
*
drv
;
drv
->
previous
=
&
l
;
drv
=
*
drv_p
;
l
=
drv
;
drv
->
next
=
*
l
;
drv
->
previous
=
l
;
*
l
=
drv
;
}
}
static
inline
void
cpia_remove_from_list
(
struct
cam_data
*
drv
)
static
inline
void
cpia_remove_from_list
(
struct
cam_data
*
*
drv_p
)
{
{
struct
cam_data
*
drv
;
drv
=
*
drv_p
;
if
(
drv
->
previous
!=
NULL
)
{
if
(
drv
->
previous
!=
NULL
)
{
if
(
drv
->
next
!=
NULL
)
if
(
drv
->
next
!=
NULL
)
drv
->
next
->
previous
=
drv
->
previous
;
drv
->
next
->
previous
=
drv
->
previous
;
...
...
drivers/media/video/cpia_pp.c
View file @
002b40d8
...
@@ -157,7 +157,8 @@ static struct cpia_camera_ops cpia_pp_ops =
...
@@ -157,7 +157,8 @@ static struct cpia_camera_ops cpia_pp_ops =
cpia_pp_streamStop
,
cpia_pp_streamStop
,
cpia_pp_streamRead
,
cpia_pp_streamRead
,
cpia_pp_close
,
cpia_pp_close
,
1
1
,
THIS_MODULE
};
};
static
struct
cam_data
*
cam_list
;
static
struct
cam_data
*
cam_list
;
...
@@ -565,7 +566,7 @@ static int cpia_pp_register(struct parport *port)
...
@@ -565,7 +566,7 @@ static int cpia_pp_register(struct parport *port)
return
-
ENXIO
;
return
-
ENXIO
;
}
}
spin_lock
(
&
cam_list_lock_pp
);
spin_lock
(
&
cam_list_lock_pp
);
cpia_add_to_list
(
cam_list
,
cpia
);
cpia_add_to_list
(
&
cam_list
,
&
cpia
);
spin_unlock
(
&
cam_list_lock_pp
);
spin_unlock
(
&
cam_list_lock_pp
);
return
0
;
return
0
;
...
@@ -575,11 +576,11 @@ static void cpia_pp_detach (struct parport *port)
...
@@ -575,11 +576,11 @@ static void cpia_pp_detach (struct parport *port)
{
{
struct
cam_data
*
cpia
;
struct
cam_data
*
cpia
;
spin_lock
(
&
cam_list_lock_pp
);
for
(
cpia
=
cam_list
;
cpia
!=
NULL
;
cpia
=
cpia
->
next
)
{
for
(
cpia
=
cam_list
;
cpia
!=
NULL
;
cpia
=
cpia
->
next
)
{
struct
pp_cam_entry
*
cam
=
cpia
->
lowlevel_data
;
struct
pp_cam_entry
*
cam
=
cpia
->
lowlevel_data
;
if
(
cam
&&
cam
->
port
->
number
==
port
->
number
)
{
if
(
cam
&&
cam
->
port
->
number
==
port
->
number
)
{
cpia_remove_from_list
(
cpia
);
spin_lock
(
&
cam_list_lock_pp
);
cpia_remove_from_list
(
&
cpia
);
spin_unlock
(
&
cam_list_lock_pp
);
spin_unlock
(
&
cam_list_lock_pp
);
cpia_unregister_camera
(
cpia
);
cpia_unregister_camera
(
cpia
);
...
...
drivers/media/video/cpia_usb.c
View file @
002b40d8
...
@@ -100,7 +100,8 @@ static struct cpia_camera_ops cpia_usb_ops = {
...
@@ -100,7 +100,8 @@ static struct cpia_camera_ops cpia_usb_ops = {
cpia_usb_streamStop
,
cpia_usb_streamStop
,
cpia_usb_streamRead
,
cpia_usb_streamRead
,
cpia_usb_close
,
cpia_usb_close
,
0
0
,
THIS_MODULE
};
};
static
struct
cam_data
*
cam_list
;
static
struct
cam_data
*
cam_list
;
...
@@ -548,7 +549,7 @@ static int cpia_probe(struct usb_interface *intf,
...
@@ -548,7 +549,7 @@ static int cpia_probe(struct usb_interface *intf,
}
}
spin_lock
(
&
cam_list_lock_usb
);
spin_lock
(
&
cam_list_lock_usb
);
cpia_add_to_list
(
cam_list
,
cam
);
cpia_add_to_list
(
&
cam_list
,
&
cam
);
spin_unlock
(
&
cam_list_lock_usb
);
spin_unlock
(
&
cam_list_lock_usb
);
dev_set_drvdata
(
&
intf
->
dev
,
cam
);
dev_set_drvdata
(
&
intf
->
dev
,
cam
);
...
@@ -602,7 +603,7 @@ static void cpia_disconnect(struct usb_interface *intf)
...
@@ -602,7 +603,7 @@ static void cpia_disconnect(struct usb_interface *intf)
ucpia
=
(
struct
usb_cpia
*
)
cam
->
lowlevel_data
;
ucpia
=
(
struct
usb_cpia
*
)
cam
->
lowlevel_data
;
spin_lock
(
&
cam_list_lock_usb
);
spin_lock
(
&
cam_list_lock_usb
);
cpia_remove_from_list
(
cam
);
cpia_remove_from_list
(
&
cam
);
spin_unlock
(
&
cam_list_lock_usb
);
spin_unlock
(
&
cam_list_lock_usb
);
/* Don't even try to reset the altsetting if we're disconnected */
/* Don't even try to reset the altsetting if we're disconnected */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment