Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
0ff32977
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0ff32977
编写于
5月 13, 2014
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/gk104/i2c: add aux channel interrupt driver
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
d78fa39a
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
79 addition
and
6 deletion
+79
-6
drivers/gpu/drm/nouveau/Makefile
drivers/gpu/drm/nouveau/Makefile
+1
-0
drivers/gpu/drm/nouveau/core/engine/device/nve0.c
drivers/gpu/drm/nouveau/core/engine/device/nve0.c
+5
-5
drivers/gpu/drm/nouveau/core/include/subdev/i2c.h
drivers/gpu/drm/nouveau/core/include/subdev/i2c.h
+1
-0
drivers/gpu/drm/nouveau/core/subdev/i2c/nvd0.c
drivers/gpu/drm/nouveau/core/subdev/i2c/nvd0.c
+1
-1
drivers/gpu/drm/nouveau/core/subdev/i2c/nve0.c
drivers/gpu/drm/nouveau/core/subdev/i2c/nve0.c
+70
-0
drivers/gpu/drm/nouveau/core/subdev/i2c/priv.h
drivers/gpu/drm/nouveau/core/subdev/i2c/priv.h
+1
-0
未找到文件。
drivers/gpu/drm/nouveau/Makefile
浏览文件 @
0ff32977
...
@@ -137,6 +137,7 @@ nouveau-y += core/subdev/i2c/nv4e.o
...
@@ -137,6 +137,7 @@ nouveau-y += core/subdev/i2c/nv4e.o
nouveau-y
+=
core/subdev/i2c/nv50.o
nouveau-y
+=
core/subdev/i2c/nv50.o
nouveau-y
+=
core/subdev/i2c/nv94.o
nouveau-y
+=
core/subdev/i2c/nv94.o
nouveau-y
+=
core/subdev/i2c/nvd0.o
nouveau-y
+=
core/subdev/i2c/nvd0.o
nouveau-y
+=
core/subdev/i2c/nve0.o
nouveau-y
+=
core/subdev/ibus/nvc0.o
nouveau-y
+=
core/subdev/ibus/nvc0.o
nouveau-y
+=
core/subdev/ibus/nve0.o
nouveau-y
+=
core/subdev/ibus/nve0.o
nouveau-y
+=
core/subdev/ibus/gk20a.o
nouveau-y
+=
core/subdev/ibus/gk20a.o
...
...
drivers/gpu/drm/nouveau/core/engine/device/nve0.c
浏览文件 @
0ff32977
...
@@ -61,7 +61,7 @@ nve0_identify(struct nouveau_device *device)
...
@@ -61,7 +61,7 @@ nve0_identify(struct nouveau_device *device)
device
->
cname
=
"GK104"
;
device
->
cname
=
"GK104"
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_GPIO
]
=
nve0_gpio_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_GPIO
]
=
nve0_gpio_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
nv
d
0_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
nv
e
0_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nve0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nve0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_THERM
]
=
&
nvd0_therm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_THERM
]
=
&
nvd0_therm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MXM
]
=
&
nv50_mxm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MXM
]
=
&
nv50_mxm_oclass
;
...
@@ -94,7 +94,7 @@ nve0_identify(struct nouveau_device *device)
...
@@ -94,7 +94,7 @@ nve0_identify(struct nouveau_device *device)
device
->
cname
=
"GK107"
;
device
->
cname
=
"GK107"
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_GPIO
]
=
nve0_gpio_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_GPIO
]
=
nve0_gpio_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
nv
d
0_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
nv
e
0_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nve0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nve0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_THERM
]
=
&
nvd0_therm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_THERM
]
=
&
nvd0_therm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MXM
]
=
&
nv50_mxm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MXM
]
=
&
nv50_mxm_oclass
;
...
@@ -127,7 +127,7 @@ nve0_identify(struct nouveau_device *device)
...
@@ -127,7 +127,7 @@ nve0_identify(struct nouveau_device *device)
device
->
cname
=
"GK106"
;
device
->
cname
=
"GK106"
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_GPIO
]
=
nve0_gpio_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_GPIO
]
=
nve0_gpio_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
nv
d
0_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
nv
e
0_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nve0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nve0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_THERM
]
=
&
nvd0_therm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_THERM
]
=
&
nvd0_therm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MXM
]
=
&
nv50_mxm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MXM
]
=
&
nv50_mxm_oclass
;
...
@@ -177,7 +177,7 @@ nve0_identify(struct nouveau_device *device)
...
@@ -177,7 +177,7 @@ nve0_identify(struct nouveau_device *device)
device
->
cname
=
"GK110"
;
device
->
cname
=
"GK110"
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_GPIO
]
=
nve0_gpio_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_GPIO
]
=
nve0_gpio_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
nv
d
0_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
nv
e
0_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nve0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nve0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_THERM
]
=
&
nvd0_therm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_THERM
]
=
&
nvd0_therm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MXM
]
=
&
nv50_mxm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MXM
]
=
&
nv50_mxm_oclass
;
...
@@ -243,7 +243,7 @@ nve0_identify(struct nouveau_device *device)
...
@@ -243,7 +243,7 @@ nve0_identify(struct nouveau_device *device)
device
->
cname
=
"GK208"
;
device
->
cname
=
"GK208"
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_GPIO
]
=
nve0_gpio_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_GPIO
]
=
nve0_gpio_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
nv
d
0_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
nv
e
0_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nve0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nve0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_THERM
]
=
&
nvd0_therm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_THERM
]
=
&
nvd0_therm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MXM
]
=
&
nv50_mxm_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MXM
]
=
&
nv50_mxm_oclass
;
...
...
drivers/gpu/drm/nouveau/core/include/subdev/i2c.h
浏览文件 @
0ff32977
...
@@ -80,6 +80,7 @@ extern struct nouveau_oclass *nv4e_i2c_oclass;
...
@@ -80,6 +80,7 @@ extern struct nouveau_oclass *nv4e_i2c_oclass;
extern
struct
nouveau_oclass
*
nv50_i2c_oclass
;
extern
struct
nouveau_oclass
*
nv50_i2c_oclass
;
extern
struct
nouveau_oclass
*
nv94_i2c_oclass
;
extern
struct
nouveau_oclass
*
nv94_i2c_oclass
;
extern
struct
nouveau_oclass
*
nvd0_i2c_oclass
;
extern
struct
nouveau_oclass
*
nvd0_i2c_oclass
;
extern
struct
nouveau_oclass
*
nve0_i2c_oclass
;
static
inline
int
static
inline
int
nv_rdi2cr
(
struct
nouveau_i2c_port
*
port
,
u8
addr
,
u8
reg
)
nv_rdi2cr
(
struct
nouveau_i2c_port
*
port
,
u8
addr
,
u8
reg
)
...
...
drivers/gpu/drm/nouveau/core/subdev/i2c/nvd0.c
浏览文件 @
0ff32977
...
@@ -75,7 +75,7 @@ nvd0_i2c_port_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
...
@@ -75,7 +75,7 @@ nvd0_i2c_port_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
return
0
;
return
0
;
}
}
st
atic
st
ruct
nouveau_oclass
struct
nouveau_oclass
nvd0_i2c_sclass
[]
=
{
nvd0_i2c_sclass
[]
=
{
{
.
handle
=
NV_I2C_TYPE_DCBI2C
(
DCB_I2C_NVIO_BIT
),
{
.
handle
=
NV_I2C_TYPE_DCBI2C
(
DCB_I2C_NVIO_BIT
),
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
...
...
drivers/gpu/drm/nouveau/core/subdev/i2c/nve0.c
0 → 100644
浏览文件 @
0ff32977
/*
* Copyright 2012 Red Hat Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Authors: Ben Skeggs
*/
#include "nv50.h"
static
void
nve0_aux_stat
(
struct
nouveau_i2c
*
i2c
,
u32
*
hi
,
u32
*
lo
,
u32
*
rq
,
u32
*
tx
)
{
u32
intr
=
nv_rd32
(
i2c
,
0x00dc60
);
u32
stat
=
nv_rd32
(
i2c
,
0x00dc68
)
&
intr
,
i
;
for
(
i
=
0
,
*
hi
=
*
lo
=
*
rq
=
*
tx
=
0
;
i
<
8
;
i
++
)
{
if
((
stat
&
(
1
<<
(
i
*
4
))))
*
hi
|=
1
<<
i
;
if
((
stat
&
(
2
<<
(
i
*
4
))))
*
lo
|=
1
<<
i
;
if
((
stat
&
(
4
<<
(
i
*
4
))))
*
rq
|=
1
<<
i
;
if
((
stat
&
(
8
<<
(
i
*
4
))))
*
tx
|=
1
<<
i
;
}
nv_wr32
(
i2c
,
0x00dc60
,
intr
);
}
static
void
nve0_aux_mask
(
struct
nouveau_i2c
*
i2c
,
u32
type
,
u32
mask
,
u32
data
)
{
u32
temp
=
nv_rd32
(
i2c
,
0x00dc68
),
i
;
for
(
i
=
0
;
i
<
8
;
i
++
)
{
if
(
mask
&
(
1
<<
i
))
{
if
(
!
(
data
&
(
1
<<
i
)))
{
temp
&=
~
(
type
<<
(
i
*
4
));
continue
;
}
temp
|=
type
<<
(
i
*
4
);
}
}
nv_wr32
(
i2c
,
0x00dc68
,
temp
);
}
struct
nouveau_oclass
*
nve0_i2c_oclass
=
&
(
struct
nouveau_i2c_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
I2C
,
0xe0
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
_nouveau_i2c_ctor
,
.
dtor
=
_nouveau_i2c_dtor
,
.
init
=
_nouveau_i2c_init
,
.
fini
=
_nouveau_i2c_fini
,
},
.
sclass
=
nvd0_i2c_sclass
,
.
aux
=
4
,
.
aux_stat
=
nve0_aux_stat
,
.
aux_mask
=
nve0_aux_mask
,
}.
base
;
drivers/gpu/drm/nouveau/core/subdev/i2c/priv.h
浏览文件 @
0ff32977
...
@@ -49,6 +49,7 @@ int _nouveau_i2c_init(struct nouveau_object *);
...
@@ -49,6 +49,7 @@ int _nouveau_i2c_init(struct nouveau_object *);
int
_nouveau_i2c_fini
(
struct
nouveau_object
*
,
bool
);
int
_nouveau_i2c_fini
(
struct
nouveau_object
*
,
bool
);
extern
struct
nouveau_oclass
nouveau_anx9805_sclass
[];
extern
struct
nouveau_oclass
nouveau_anx9805_sclass
[];
extern
struct
nouveau_oclass
nvd0_i2c_sclass
[];
extern
const
struct
i2c_algorithm
nouveau_i2c_bit_algo
;
extern
const
struct
i2c_algorithm
nouveau_i2c_bit_algo
;
extern
const
struct
i2c_algorithm
nouveau_i2c_aux_algo
;
extern
const
struct
i2c_algorithm
nouveau_i2c_aux_algo
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录