Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
14983d81
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
14983d81
编写于
12月 22, 2008
作者:
M
Mauro Carvalho Chehab
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
V4L/DVB (9970): em28xx: Allow get/set registers for debug on i2c slave chips
Signed-off-by:
N
Mauro Carvalho Chehab
<
mchehab@redhat.com
>
上级
bc974305
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
41 addition
and
5 deletion
+41
-5
drivers/media/video/em28xx/em28xx-video.c
drivers/media/video/em28xx/em28xx-video.c
+41
-5
未找到文件。
drivers/media/video/em28xx/em28xx-video.c
浏览文件 @
14983d81
...
...
@@ -39,6 +39,7 @@
#include "em28xx.h"
#include <media/v4l2-common.h>
#include <media/v4l2-ioctl.h>
#include <media/v4l2-chip-ident.h>
#include <media/msp3400.h>
#include <media/tuner.h>
...
...
@@ -1214,6 +1215,21 @@ static int em28xx_reg_len(int reg)
}
}
static
int
vidioc_g_chip_ident
(
struct
file
*
file
,
void
*
priv
,
struct
v4l2_chip_ident
*
chip
)
{
struct
em28xx_fh
*
fh
=
priv
;
struct
em28xx
*
dev
=
fh
->
dev
;
chip
->
ident
=
V4L2_IDENT_NONE
;
chip
->
revision
=
0
;
em28xx_i2c_call_clients
(
dev
,
VIDIOC_G_CHIP_IDENT
,
chip
);
return
0
;
}
static
int
vidioc_g_register
(
struct
file
*
file
,
void
*
priv
,
struct
v4l2_register
*
reg
)
{
...
...
@@ -1221,7 +1237,8 @@ static int vidioc_g_register(struct file *file, void *priv,
struct
em28xx
*
dev
=
fh
->
dev
;
int
ret
;
if
(
reg
->
match_type
==
V4L2_CHIP_MATCH_AC97
)
{
switch
(
reg
->
match_type
)
{
case
V4L2_CHIP_MATCH_AC97
:
mutex_lock
(
&
dev
->
lock
);
ret
=
em28xx_read_ac97
(
dev
,
reg
->
reg
);
mutex_unlock
(
&
dev
->
lock
);
...
...
@@ -1230,11 +1247,18 @@ static int vidioc_g_register(struct file *file, void *priv,
reg
->
val
=
ret
;
return
0
;
}
if
(
!
v4l2_chip_match_host
(
reg
->
match_type
,
reg
->
match_chip
))
case
V4L2_CHIP_MATCH_I2C_DRIVER
:
em28xx_i2c_call_clients
(
dev
,
VIDIOC_DBG_G_REGISTER
,
reg
);
return
0
;
case
V4L2_CHIP_MATCH_I2C_ADDR
:
/* Not supported yet */
return
-
EINVAL
;
default:
if
(
!
v4l2_chip_match_host
(
reg
->
match_type
,
reg
->
match_chip
))
return
-
EINVAL
;
}
/* Match host */
if
(
em28xx_reg_len
(
reg
->
reg
)
==
1
)
{
mutex_lock
(
&
dev
->
lock
);
ret
=
em28xx_read_reg
(
dev
,
reg
->
reg
);
...
...
@@ -1267,14 +1291,25 @@ static int vidioc_s_register(struct file *file, void *priv,
__le64
buf
;
int
rc
;
if
(
reg
->
match_type
==
V4L2_CHIP_MATCH_AC97
)
{
switch
(
reg
->
match_type
)
{
case
V4L2_CHIP_MATCH_AC97
:
mutex_lock
(
&
dev
->
lock
);
rc
=
em28xx_write_ac97
(
dev
,
reg
->
reg
,
reg
->
val
);
mutex_unlock
(
&
dev
->
lock
);
return
rc
;
case
V4L2_CHIP_MATCH_I2C_DRIVER
:
em28xx_i2c_call_clients
(
dev
,
VIDIOC_DBG_S_REGISTER
,
reg
);
return
0
;
case
V4L2_CHIP_MATCH_I2C_ADDR
:
/* Not supported yet */
return
-
EINVAL
;
default:
if
(
!
v4l2_chip_match_host
(
reg
->
match_type
,
reg
->
match_chip
))
return
-
EINVAL
;
}
/* Match host */
buf
=
cpu_to_le64
(
reg
->
val
);
mutex_lock
(
&
dev
->
lock
);
...
...
@@ -1927,6 +1962,7 @@ static const struct v4l2_ioctl_ops video_ioctl_ops = {
#ifdef CONFIG_VIDEO_ADV_DEBUG
.
vidioc_g_register
=
vidioc_g_register
,
.
vidioc_s_register
=
vidioc_s_register
,
.
vidioc_g_chip_ident
=
vidioc_g_chip_ident
,
#endif
#ifdef CONFIG_VIDEO_V4L1_COMPAT
.
vidiocgmbuf
=
vidiocgmbuf
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录