Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
cc2a9071
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
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看板
提交
cc2a9071
编写于
9月 15, 2014
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/gt214-/disp: enable dp audio
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
d889c524
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
30 addition
and
22 deletion
+30
-22
drivers/gpu/drm/nouveau/core/engine/disp/hdanva3.c
drivers/gpu/drm/nouveau/core/engine/disp/hdanva3.c
+11
-4
drivers/gpu/drm/nouveau/core/engine/disp/hdanvd0.c
drivers/gpu/drm/nouveau/core/engine/disp/hdanvd0.c
+12
-8
drivers/gpu/drm/nouveau/core/engine/disp/hdminvd0.c
drivers/gpu/drm/nouveau/core/engine/disp/hdminvd0.c
+0
-3
drivers/gpu/drm/nouveau/core/engine/disp/hdminve0.c
drivers/gpu/drm/nouveau/core/engine/disp/hdminve0.c
+0
-3
drivers/gpu/drm/nouveau/nv50_display.c
drivers/gpu/drm/nouveau/nv50_display.c
+7
-4
未找到文件。
drivers/gpu/drm/nouveau/core/engine/disp/hdanva3.c
浏览文件 @
cc2a9071
...
...
@@ -26,6 +26,8 @@
#include <nvif/unpack.h>
#include <nvif/class.h>
#include <subdev/timer.h>
#include "nv50.h"
int
...
...
@@ -46,16 +48,21 @@ nva3_hda_eld(NV50_DISP_MTHD_V1)
return
ret
;
if
(
size
&&
args
->
v0
.
data
[
0
])
{
if
(
outp
->
info
.
type
==
DCB_OUTPUT_DP
)
{
nv_mask
(
priv
,
0x61c1e0
+
soff
,
0x8000000d
,
0x80000001
);
nv_wait
(
priv
,
0x61c1e0
+
soff
,
0x80000000
,
0x00000000
);
}
for
(
i
=
0
;
i
<
size
;
i
++
)
nv_wr32
(
priv
,
0x61c440
+
soff
,
(
i
<<
8
)
|
args
->
v0
.
data
[
0
]);
for
(;
i
<
0x60
;
i
++
)
nv_wr32
(
priv
,
0x61c440
+
soff
,
(
i
<<
8
));
nv_mask
(
priv
,
0x61c448
+
soff
,
0x80000003
,
0x80000003
);
}
else
if
(
size
)
{
nv_mask
(
priv
,
0x61c448
+
soff
,
0x80000003
,
0x80000001
);
}
else
{
nv_mask
(
priv
,
0x61c448
+
soff
,
0x80000003
,
0x80000000
);
if
(
outp
->
info
.
type
==
DCB_OUTPUT_DP
)
{
nv_mask
(
priv
,
0x61c1e0
+
soff
,
0x80000001
,
0x80000000
);
nv_wait
(
priv
,
0x61c1e0
+
soff
,
0x80000000
,
0x00000000
);
}
nv_mask
(
priv
,
0x61c448
+
soff
,
0x80000003
,
0x80000000
|
!!
size
);
}
return
0
;
...
...
drivers/gpu/drm/nouveau/core/engine/disp/hdanvd0.c
浏览文件 @
cc2a9071
...
...
@@ -26,10 +26,7 @@
#include <nvif/unpack.h>
#include <nvif/class.h>
#include <subdev/bios.h>
#include <subdev/bios/dcb.h>
#include <subdev/bios/dp.h>
#include <subdev/bios/init.h>
#include <subdev/timer.h>
#include "nv50.h"
...
...
@@ -40,6 +37,7 @@ nvd0_hda_eld(NV50_DISP_MTHD_V1)
struct
nv50_disp_sor_hda_eld_v0
v0
;
}
*
args
=
data
;
const
u32
soff
=
outp
->
or
*
0x030
;
const
u32
hoff
=
head
*
0x800
;
int
ret
,
i
;
nv_ioctl
(
object
,
"disp sor hda eld size %d
\n
"
,
size
);
...
...
@@ -51,16 +49,22 @@ nvd0_hda_eld(NV50_DISP_MTHD_V1)
return
ret
;
if
(
size
&&
args
->
v0
.
data
[
0
])
{
if
(
outp
->
info
.
type
==
DCB_OUTPUT_DP
)
{
nv_mask
(
priv
,
0x616618
+
hoff
,
0x8000000c
,
0x80000001
);
nv_wait
(
priv
,
0x616618
+
hoff
,
0x80000000
,
0x00000000
);
}
nv_mask
(
priv
,
0x616548
+
hoff
,
0x00000070
,
0x00000000
);
for
(
i
=
0
;
i
<
size
;
i
++
)
nv_wr32
(
priv
,
0x10ec00
+
soff
,
(
i
<<
8
)
|
args
->
v0
.
data
[
i
]);
for
(;
i
<
0x60
;
i
++
)
nv_wr32
(
priv
,
0x10ec00
+
soff
,
(
i
<<
8
));
nv_mask
(
priv
,
0x10ec10
+
soff
,
0x80000003
,
0x80000003
);
}
else
if
(
size
)
{
nv_mask
(
priv
,
0x10ec10
+
soff
,
0x80000003
,
0x80000001
);
}
else
{
nv_mask
(
priv
,
0x10ec10
+
soff
,
0x80000003
,
0x80000000
);
if
(
outp
->
info
.
type
==
DCB_OUTPUT_DP
)
{
nv_mask
(
priv
,
0x616618
+
hoff
,
0x80000001
,
0x80000000
);
nv_wait
(
priv
,
0x616618
+
hoff
,
0x80000000
,
0x00000000
);
}
nv_mask
(
priv
,
0x10ec10
+
soff
,
0x80000003
,
0x80000000
|
!!
size
);
}
return
0
;
...
...
drivers/gpu/drm/nouveau/core/engine/disp/hdminvd0.c
浏览文件 @
cc2a9071
...
...
@@ -75,8 +75,5 @@ nvd0_hdmi_ctrl(NV50_DISP_MTHD_V1)
/* HDMI_CTRL */
nv_mask
(
priv
,
0x616798
+
hoff
,
0x401f007f
,
ctrl
);
/* NFI, audio doesn't work without it though.. */
nv_mask
(
priv
,
0x616548
+
hoff
,
0x00000070
,
0x00000000
);
return
0
;
}
drivers/gpu/drm/nouveau/core/engine/disp/hdminve0.c
浏览文件 @
cc2a9071
...
...
@@ -79,8 +79,5 @@ nve0_hdmi_ctrl(NV50_DISP_MTHD_V1)
/* HDMI_CTRL */
nv_mask
(
priv
,
0x616798
+
hoff
,
0x401f007f
,
ctrl
);
/* NFI, audio doesn't work without it though.. */
nv_mask
(
priv
,
0x616548
+
hoff
,
0x00000070
,
0x00000000
);
return
0
;
}
drivers/gpu/drm/nouveau/nv50_display.c
浏览文件 @
cc2a9071
...
...
@@ -1656,6 +1656,7 @@ static void
nv50_audio_mode_set
(
struct
drm_encoder
*
encoder
,
struct
drm_display_mode
*
mode
)
{
struct
nouveau_encoder
*
nv_encoder
=
nouveau_encoder
(
encoder
);
struct
nouveau_crtc
*
nv_crtc
=
nouveau_crtc
(
encoder
->
crtc
);
struct
nouveau_connector
*
nv_connector
;
struct
nv50_disp
*
disp
=
nv50_disp
(
encoder
->
dev
);
struct
__packed
{
...
...
@@ -1668,7 +1669,8 @@ nv50_audio_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode)
.
base
.
mthd
.
version
=
1
,
.
base
.
mthd
.
method
=
NV50_DISP_MTHD_V1_SOR_HDA_ELD
,
.
base
.
mthd
.
hasht
=
nv_encoder
->
dcb
->
hasht
,
.
base
.
mthd
.
hashm
=
nv_encoder
->
dcb
->
hashm
,
.
base
.
mthd
.
hashm
=
(
0xf0ff
&
nv_encoder
->
dcb
->
hashm
)
|
(
0x0100
<<
nv_crtc
->
index
),
};
nv_connector
=
nouveau_encoder_connector_get
(
nv_encoder
);
...
...
@@ -1682,7 +1684,7 @@ nv50_audio_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode)
}
static
void
nv50_audio_disconnect
(
struct
drm_encoder
*
encoder
)
nv50_audio_disconnect
(
struct
drm_encoder
*
encoder
,
struct
nouveau_crtc
*
nv_crtc
)
{
struct
nouveau_encoder
*
nv_encoder
=
nouveau_encoder
(
encoder
);
struct
nv50_disp
*
disp
=
nv50_disp
(
encoder
->
dev
);
...
...
@@ -1693,7 +1695,8 @@ nv50_audio_disconnect(struct drm_encoder *encoder)
.
base
.
version
=
1
,
.
base
.
method
=
NV50_DISP_MTHD_V1_SOR_HDA_ELD
,
.
base
.
hasht
=
nv_encoder
->
dcb
->
hasht
,
.
base
.
hashm
=
nv_encoder
->
dcb
->
hashm
,
.
base
.
hashm
=
(
0xf0ff
&
nv_encoder
->
dcb
->
hashm
)
|
(
0x0100
<<
nv_crtc
->
index
),
};
nvif_mthd
(
disp
->
disp
,
0
,
&
args
,
sizeof
(
args
));
...
...
@@ -1860,7 +1863,7 @@ nv50_sor_disconnect(struct drm_encoder *encoder)
if
(
nv_crtc
)
{
nv50_crtc_prepare
(
&
nv_crtc
->
base
);
nv50_sor_ctrl
(
nv_encoder
,
1
<<
nv_crtc
->
index
,
0
);
nv50_audio_disconnect
(
encoder
);
nv50_audio_disconnect
(
encoder
,
nv_crtc
);
nv50_hdmi_disconnect
(
&
nv_encoder
->
base
.
base
,
nv_crtc
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录