Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
f2fd7ce6
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
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看板
提交
f2fd7ce6
编写于
6月 08, 2014
作者:
M
Mauro Carvalho Chehab
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[media] au0828/au8522: Add PAL-M support
Signed-off-by:
N
Mauro Carvalho Chehab
<
m.chehab@samsung.com
>
上级
c9f5ccc2
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
41 addition
and
10 deletion
+41
-10
drivers/media/dvb-frontends/au8522_decoder.c
drivers/media/dvb-frontends/au8522_decoder.c
+34
-6
drivers/media/dvb-frontends/au8522_priv.h
drivers/media/dvb-frontends/au8522_priv.h
+1
-0
drivers/media/usb/au0828/au0828-video.c
drivers/media/usb/au0828/au0828-video.c
+6
-4
未找到文件。
drivers/media/dvb-frontends/au8522_decoder.c
浏览文件 @
f2fd7ce6
...
...
@@ -248,12 +248,23 @@ static void setup_decoder_defaults(struct au8522_state *state, bool is_svideo)
AU8522_TVDEC_COMB_MODE_REG015H_CVBS
);
au8522_writereg
(
state
,
AU8522_TVDED_DBG_MODE_REG060H
,
AU8522_TVDED_DBG_MODE_REG060H_CVBS
);
au8522_writereg
(
state
,
AU8522_TVDEC_FORMAT_CTRL1_REG061H
,
AU8522_TVDEC_FORMAT_CTRL1_REG061H_FIELD_LEN_525
|
AU8522_TVDEC_FORMAT_CTRL1_REG061H_LINE_LEN_63_492
|
AU8522_TVDEC_FORMAT_CTRL1_REG061H_SUBCARRIER_NTSC_MN
);
au8522_writereg
(
state
,
AU8522_TVDEC_FORMAT_CTRL2_REG062H
,
AU8522_TVDEC_FORMAT_CTRL2_REG062H_STD_NTSC
);
if
(
state
->
std
==
V4L2_STD_PAL_M
)
{
au8522_writereg
(
state
,
AU8522_TVDEC_FORMAT_CTRL1_REG061H
,
AU8522_TVDEC_FORMAT_CTRL1_REG061H_FIELD_LEN_525
|
AU8522_TVDEC_FORMAT_CTRL1_REG061H_LINE_LEN_63_492
|
AU8522_TVDEC_FORMAT_CTRL1_REG061H_SUBCARRIER_NTSC_AUTO
);
au8522_writereg
(
state
,
AU8522_TVDEC_FORMAT_CTRL2_REG062H
,
AU8522_TVDEC_FORMAT_CTRL2_REG062H_STD_PAL_M
);
}
else
{
/* NTSC */
au8522_writereg
(
state
,
AU8522_TVDEC_FORMAT_CTRL1_REG061H
,
AU8522_TVDEC_FORMAT_CTRL1_REG061H_FIELD_LEN_525
|
AU8522_TVDEC_FORMAT_CTRL1_REG061H_LINE_LEN_63_492
|
AU8522_TVDEC_FORMAT_CTRL1_REG061H_SUBCARRIER_NTSC_MN
);
au8522_writereg
(
state
,
AU8522_TVDEC_FORMAT_CTRL2_REG062H
,
AU8522_TVDEC_FORMAT_CTRL2_REG062H_STD_NTSC
);
}
au8522_writereg
(
state
,
AU8522_TVDEC_VCR_DET_LLIM_REG063H
,
AU8522_TVDEC_VCR_DET_LLIM_REG063H_CVBS
);
au8522_writereg
(
state
,
AU8522_TVDEC_VCR_DET_HLIM_REG064H
,
...
...
@@ -624,6 +635,21 @@ static int au8522_s_video_routing(struct v4l2_subdev *sd,
return
0
;
}
static
int
au8522_s_std
(
struct
v4l2_subdev
*
sd
,
v4l2_std_id
std
)
{
struct
au8522_state
*
state
=
to_state
(
sd
);
if
((
std
&
(
V4L2_STD_PAL_M
|
V4L2_STD_NTSC_M
))
==
0
)
return
-
EINVAL
;
state
->
std
=
std
;
if
(
state
->
operational_mode
==
AU8522_ANALOG_MODE
)
au8522_video_set
(
state
);
return
0
;
}
static
int
au8522_s_audio_routing
(
struct
v4l2_subdev
*
sd
,
u32
input
,
u32
output
,
u32
config
)
{
...
...
@@ -681,6 +707,7 @@ static const struct v4l2_subdev_audio_ops au8522_audio_ops = {
static
const
struct
v4l2_subdev_video_ops
au8522_video_ops
=
{
.
s_routing
=
au8522_s_video_routing
,
.
s_stream
=
au8522_s_stream
,
.
s_std
=
au8522_s_std
,
};
static
const
struct
v4l2_subdev_ops
au8522_ops
=
{
...
...
@@ -763,6 +790,7 @@ static int au8522_probe(struct i2c_client *client,
}
state
->
c
=
client
;
state
->
std
=
V4L2_STD_NTSC_M
;
state
->
vid_input
=
AU8522_COMPOSITE_CH1
;
state
->
aud_input
=
AU8522_AUDIO_NONE
;
state
->
id
=
8522
;
...
...
drivers/media/dvb-frontends/au8522_priv.h
浏览文件 @
f2fd7ce6
...
...
@@ -348,6 +348,7 @@ int au8522_led_ctrl(struct au8522_state *state, int led);
/* Format control 2 */
#define AU8522_TVDEC_FORMAT_CTRL2_REG062H_STD_AUTODETECT 0x00
#define AU8522_TVDEC_FORMAT_CTRL2_REG062H_STD_NTSC 0x01
#define AU8522_TVDEC_FORMAT_CTRL2_REG062H_STD_PAL_M 0x02
#define AU8522_INPUT_CONTROL_REG081H_ATSC 0xC4
...
...
drivers/media/usb/au0828/au0828-video.c
浏览文件 @
f2fd7ce6
...
...
@@ -1364,9 +1364,11 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id norm)
i2c_gate_ctrl
(
dev
,
1
);
/* FIXME: when we support something other than NTSC, we are going to
have to make the au0828 bridge adjust the size of its capture
buffer, which is currently hardcoded at 720x480 */
/*
* FIXME: when we support something other than 60Hz standards,
* we are going to have to make the au0828 bridge adjust the size
* of its capture buffer, which is currently hardcoded at 720x480
*/
v4l2_device_call_all
(
&
dev
->
v4l2_dev
,
0
,
video
,
s_std
,
norm
);
...
...
@@ -1915,7 +1917,7 @@ static const struct video_device au0828_video_template = {
.
fops
=
&
au0828_v4l_fops
,
.
release
=
video_device_release
,
.
ioctl_ops
=
&
video_ioctl_ops
,
.
tvnorms
=
V4L2_STD_NTSC_M
,
.
tvnorms
=
V4L2_STD_NTSC_M
|
V4L2_STD_PAL_M
,
};
/**************************************************************************/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录