Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
cf9e1509
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
cf9e1509
编写于
11月 23, 2007
作者:
C
Christopher Pascoe
提交者:
Mauro Carvalho Chehab
5月 18, 2010
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
V4L/DVB (12820): tm6000: fix i2c readings
Signed-off-by:
N
Mauro Carvalho Chehab
<
mchehab@redhat.com
>
上级
3716ae3e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
7 deletion
+26
-7
drivers/staging/tm6000/tm6000-i2c.c
drivers/staging/tm6000/tm6000-i2c.c
+26
-7
未找到文件。
drivers/staging/tm6000/tm6000-i2c.c
浏览文件 @
cf9e1509
...
...
@@ -94,7 +94,7 @@ static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap,
{
struct
tm6000_core
*
dev
=
i2c_adap
->
algo_data
;
int
addr
,
rc
,
i
,
byte
;
u8
prev_reg
=
0
;
int
prev_reg
=
-
1
;
if
(
num
<=
0
)
return
0
;
...
...
@@ -113,16 +113,38 @@ static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap,
out of message data.
*/
/* SMBus Read Byte command */
if
(
prev_reg
<
0
)
printk
(
"XXX read from unknown prev_reg
\n
"
);
rc
=
tm6000_read_write_usb
(
dev
,
USB_DIR_IN
|
USB_TYPE_VENDOR
|
USB_RECIP_DEVICE
,
REQ_16_SET_GET_I2CSEQ
,
addr
|
(
prev_reg
<<
8
),
0
,
msgs
[
i
].
buf
,
msgs
[
i
].
len
);
if
(
prev_reg
>=
0
)
prev_reg
+=
msgs
[
i
].
len
;
if
(
i2c_debug
>=
2
)
{
for
(
byte
=
0
;
byte
<
msgs
[
i
].
len
;
byte
++
)
{
printk
(
" %02x"
,
msgs
[
i
].
buf
[
byte
]);
}
}
}
else
if
(
i
+
1
<
num
&&
msgs
[
i
].
len
==
2
&&
(
msgs
[
i
+
1
].
flags
&
I2C_M_RD
)
&&
msgs
[
i
].
addr
==
msgs
[
i
+
1
].
addr
)
{
i2c_dprintk
(
2
,
"msg %d: write 2, read %d"
,
i
,
msgs
[
i
+
1
].
len
);
/* Write 2 Read N command */
rc
=
tm6000_read_write_usb
(
dev
,
USB_DIR_IN
|
USB_TYPE_VENDOR
|
USB_RECIP_DEVICE
,
REQ_14_SET_GET_EEPROM_PAGE
,
/* XXX wrong name */
addr
|
msgs
[
i
].
buf
[
0
]
<<
8
,
msgs
[
i
].
buf
[
1
],
msgs
[
i
+
1
].
buf
,
msgs
[
i
+
1
].
len
);
i
++
;
if
(
i2c_debug
>=
2
)
{
for
(
byte
=
0
;
byte
<
msgs
[
i
].
len
;
byte
++
)
{
printk
(
" %02x"
,
msgs
[
i
].
buf
[
byte
]);
}
}
prev_reg
=
-
1
;
}
else
{
/* write bytes */
if
(
i2c_debug
>=
2
)
{
...
...
@@ -134,6 +156,8 @@ static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap,
if
(
msgs
[
i
].
len
==
1
&&
i
+
1
<
num
&&
msgs
[
i
+
1
].
flags
&
I2C_M_RD
&&
msgs
[
i
+
1
].
addr
==
msgs
[
i
].
addr
)
{
prev_reg
=
msgs
[
i
].
buf
[
0
];
if
(
i2c_debug
>=
2
)
printk
(
"
\n
"
);
continue
;
}
...
...
@@ -143,12 +167,7 @@ static int tm6000_i2c_xfer(struct i2c_adapter *i2c_adap,
addr
|
(
*
msgs
[
i
].
buf
)
<<
8
,
0
,
msgs
[
i
].
buf
+
1
,
msgs
[
i
].
len
-
1
);
if
(
msgs
[
i
].
len
>=
1
)
{
prev_reg
=
msgs
[
i
].
buf
[
0
];
}
else
{
prev_reg
=
0
;
}
prev_reg
=
-
1
;
}
if
(
i2c_debug
>=
2
)
printk
(
"
\n
"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录