Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
e8d6d615
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看板
提交
e8d6d615
编写于
1月 08, 2010
作者:
D
Dave Airlie
浏览文件
操作
浏览文件
下载
差异文件
Merge remote branch 'korg/drm-radeon-testing' into drm-testing
上级
a3a06cb6
003e69f9
变更
30
隐藏空白更改
内联
并排
Showing
30 changed file
with
649 addition
and
468 deletion
+649
-468
drivers/gpu/drm/drm_crtc.c
drivers/gpu/drm/drm_crtc.c
+1
-0
drivers/gpu/drm/drm_irq.c
drivers/gpu/drm/drm_irq.c
+4
-1
drivers/gpu/drm/radeon/ObjectID.h
drivers/gpu/drm/radeon/ObjectID.h
+433
-368
drivers/gpu/drm/radeon/atombios_dp.c
drivers/gpu/drm/radeon/atombios_dp.c
+4
-2
drivers/gpu/drm/radeon/mkregtable.c
drivers/gpu/drm/radeon/mkregtable.c
+3
-1
drivers/gpu/drm/radeon/r100.c
drivers/gpu/drm/radeon/r100.c
+14
-9
drivers/gpu/drm/radeon/r300.c
drivers/gpu/drm/radeon/r300.c
+16
-1
drivers/gpu/drm/radeon/r420.c
drivers/gpu/drm/radeon/r420.c
+32
-0
drivers/gpu/drm/radeon/r520.c
drivers/gpu/drm/radeon/r520.c
+1
-0
drivers/gpu/drm/radeon/r600.c
drivers/gpu/drm/radeon/r600.c
+13
-8
drivers/gpu/drm/radeon/r600_blit_kms.c
drivers/gpu/drm/radeon/r600_blit_kms.c
+2
-2
drivers/gpu/drm/radeon/radeon.h
drivers/gpu/drm/radeon/radeon.h
+6
-3
drivers/gpu/drm/radeon/radeon_agp.c
drivers/gpu/drm/radeon/radeon_agp.c
+2
-4
drivers/gpu/drm/radeon/radeon_asic.h
drivers/gpu/drm/radeon/radeon_asic.h
+0
-12
drivers/gpu/drm/radeon/radeon_atombios.c
drivers/gpu/drm/radeon/radeon_atombios.c
+40
-1
drivers/gpu/drm/radeon/radeon_combios.c
drivers/gpu/drm/radeon/radeon_combios.c
+14
-0
drivers/gpu/drm/radeon/radeon_connectors.c
drivers/gpu/drm/radeon/radeon_connectors.c
+17
-6
drivers/gpu/drm/radeon/radeon_display.c
drivers/gpu/drm/radeon/radeon_display.c
+5
-2
drivers/gpu/drm/radeon/radeon_encoders.c
drivers/gpu/drm/radeon/radeon_encoders.c
+8
-6
drivers/gpu/drm/radeon/radeon_gem.c
drivers/gpu/drm/radeon/radeon_gem.c
+0
-2
drivers/gpu/drm/radeon/radeon_irq_kms.c
drivers/gpu/drm/radeon/radeon_irq_kms.c
+8
-2
drivers/gpu/drm/radeon/radeon_legacy_tv.c
drivers/gpu/drm/radeon/radeon_legacy_tv.c
+7
-7
drivers/gpu/drm/radeon/radeon_mode.h
drivers/gpu/drm/radeon/radeon_mode.h
+0
-26
drivers/gpu/drm/radeon/radeon_object.c
drivers/gpu/drm/radeon/radeon_object.c
+3
-2
drivers/gpu/drm/radeon/rs400.c
drivers/gpu/drm/radeon/rs400.c
+2
-0
drivers/gpu/drm/radeon/rs600.c
drivers/gpu/drm/radeon/rs600.c
+9
-1
drivers/gpu/drm/radeon/rs690.c
drivers/gpu/drm/radeon/rs690.c
+2
-0
drivers/gpu/drm/radeon/rv515.c
drivers/gpu/drm/radeon/rv515.c
+1
-0
drivers/gpu/drm/radeon/rv770.c
drivers/gpu/drm/radeon/rv770.c
+1
-2
include/drm/drm_mode.h
include/drm/drm_mode.h
+1
-0
未找到文件。
drivers/gpu/drm/drm_crtc.c
浏览文件 @
e8d6d615
...
@@ -158,6 +158,7 @@ static struct drm_conn_prop_enum_list drm_connector_enum_list[] =
...
@@ -158,6 +158,7 @@ static struct drm_conn_prop_enum_list drm_connector_enum_list[] =
{
DRM_MODE_CONNECTOR_HDMIA
,
"HDMI Type A"
,
0
},
{
DRM_MODE_CONNECTOR_HDMIA
,
"HDMI Type A"
,
0
},
{
DRM_MODE_CONNECTOR_HDMIB
,
"HDMI Type B"
,
0
},
{
DRM_MODE_CONNECTOR_HDMIB
,
"HDMI Type B"
,
0
},
{
DRM_MODE_CONNECTOR_TV
,
"TV"
,
0
},
{
DRM_MODE_CONNECTOR_TV
,
"TV"
,
0
},
{
DRM_MODE_CONNECTOR_eDP
,
"Embedded DisplayPort"
,
0
},
};
};
static
struct
drm_prop_enum_list
drm_encoder_enum_list
[]
=
static
struct
drm_prop_enum_list
drm_encoder_enum_list
[]
=
...
...
drivers/gpu/drm/drm_irq.c
浏览文件 @
e8d6d615
...
@@ -115,6 +115,7 @@ void drm_vblank_cleanup(struct drm_device *dev)
...
@@ -115,6 +115,7 @@ void drm_vblank_cleanup(struct drm_device *dev)
dev
->
num_crtcs
=
0
;
dev
->
num_crtcs
=
0
;
}
}
EXPORT_SYMBOL
(
drm_vblank_cleanup
);
int
drm_vblank_init
(
struct
drm_device
*
dev
,
int
num_crtcs
)
int
drm_vblank_init
(
struct
drm_device
*
dev
,
int
num_crtcs
)
{
{
...
@@ -163,7 +164,6 @@ int drm_vblank_init(struct drm_device *dev, int num_crtcs)
...
@@ -163,7 +164,6 @@ int drm_vblank_init(struct drm_device *dev, int num_crtcs)
}
}
dev
->
vblank_disable_allowed
=
0
;
dev
->
vblank_disable_allowed
=
0
;
return
0
;
return
0
;
err:
err:
...
@@ -493,6 +493,9 @@ EXPORT_SYMBOL(drm_vblank_off);
...
@@ -493,6 +493,9 @@ EXPORT_SYMBOL(drm_vblank_off);
*/
*/
void
drm_vblank_pre_modeset
(
struct
drm_device
*
dev
,
int
crtc
)
void
drm_vblank_pre_modeset
(
struct
drm_device
*
dev
,
int
crtc
)
{
{
/* vblank is not initialized (IRQ not installed ?) */
if
(
!
dev
->
num_crtcs
)
return
;
/*
/*
* To avoid all the problems that might happen if interrupts
* To avoid all the problems that might happen if interrupts
* were enabled/disabled around or between these calls, we just
* were enabled/disabled around or between these calls, we just
...
...
drivers/gpu/drm/radeon/ObjectID.h
浏览文件 @
e8d6d615
/*
/*
* Copyright 2006-2007 Advanced Micro Devices, Inc.
* Copyright 2006-2007 Advanced Micro Devices, Inc.
*
*
* Permission is hereby granted, free of charge, to any person obtaining a
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* copy of this software and associated documentation files (the "Software"),
...
@@ -41,14 +41,14 @@
...
@@ -41,14 +41,14 @@
/****************************************************/
/****************************************************/
/* Encoder Object ID Definition */
/* Encoder Object ID Definition */
/****************************************************/
/****************************************************/
#define ENCODER_OBJECT_ID_NONE 0x00
#define ENCODER_OBJECT_ID_NONE 0x00
/* Radeon Class Display Hardware */
/* Radeon Class Display Hardware */
#define ENCODER_OBJECT_ID_INTERNAL_LVDS 0x01
#define ENCODER_OBJECT_ID_INTERNAL_LVDS 0x01
#define ENCODER_OBJECT_ID_INTERNAL_TMDS1 0x02
#define ENCODER_OBJECT_ID_INTERNAL_TMDS1 0x02
#define ENCODER_OBJECT_ID_INTERNAL_TMDS2 0x03
#define ENCODER_OBJECT_ID_INTERNAL_TMDS2 0x03
#define ENCODER_OBJECT_ID_INTERNAL_DAC1 0x04
#define ENCODER_OBJECT_ID_INTERNAL_DAC1 0x04
#define ENCODER_OBJECT_ID_INTERNAL_DAC2 0x05
/* TV/CV DAC */
#define ENCODER_OBJECT_ID_INTERNAL_DAC2 0x05
/* TV/CV DAC */
#define ENCODER_OBJECT_ID_INTERNAL_SDVOA 0x06
#define ENCODER_OBJECT_ID_INTERNAL_SDVOA 0x06
#define ENCODER_OBJECT_ID_INTERNAL_SDVOB 0x07
#define ENCODER_OBJECT_ID_INTERNAL_SDVOB 0x07
...
@@ -56,11 +56,11 @@
...
@@ -56,11 +56,11 @@
#define ENCODER_OBJECT_ID_SI170B 0x08
#define ENCODER_OBJECT_ID_SI170B 0x08
#define ENCODER_OBJECT_ID_CH7303 0x09
#define ENCODER_OBJECT_ID_CH7303 0x09
#define ENCODER_OBJECT_ID_CH7301 0x0A
#define ENCODER_OBJECT_ID_CH7301 0x0A
#define ENCODER_OBJECT_ID_INTERNAL_DVO1 0x0B
/* This belongs to Radeon Class Display Hardware */
#define ENCODER_OBJECT_ID_INTERNAL_DVO1 0x0B
/* This belongs to Radeon Class Display Hardware */
#define ENCODER_OBJECT_ID_EXTERNAL_SDVOA 0x0C
#define ENCODER_OBJECT_ID_EXTERNAL_SDVOA 0x0C
#define ENCODER_OBJECT_ID_EXTERNAL_SDVOB 0x0D
#define ENCODER_OBJECT_ID_EXTERNAL_SDVOB 0x0D
#define ENCODER_OBJECT_ID_TITFP513 0x0E
#define ENCODER_OBJECT_ID_TITFP513 0x0E
#define ENCODER_OBJECT_ID_INTERNAL_LVTM1 0x0F
/* not used for Radeon */
#define ENCODER_OBJECT_ID_INTERNAL_LVTM1 0x0F
/* not used for Radeon */
#define ENCODER_OBJECT_ID_VT1623 0x10
#define ENCODER_OBJECT_ID_VT1623 0x10
#define ENCODER_OBJECT_ID_HDMI_SI1930 0x11
#define ENCODER_OBJECT_ID_HDMI_SI1930 0x11
#define ENCODER_OBJECT_ID_HDMI_INTERNAL 0x12
#define ENCODER_OBJECT_ID_HDMI_INTERNAL 0x12
...
@@ -68,9 +68,9 @@
...
@@ -68,9 +68,9 @@
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 0x13
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 0x13
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1 0x14
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1 0x14
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1 0x15
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1 0x15
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2 0x16
/* Shared with CV/TV and CRT */
#define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2 0x16
/* Shared with CV/TV and CRT */
#define ENCODER_OBJECT_ID_SI178 0X17
/* External TMDS (dual link, no HDCP.) */
#define ENCODER_OBJECT_ID_SI178 0X17
/* External TMDS (dual link, no HDCP.) */
#define ENCODER_OBJECT_ID_MVPU_FPGA 0x18
/* MVPU FPGA chip */
#define ENCODER_OBJECT_ID_MVPU_FPGA 0x18
/* MVPU FPGA chip */
#define ENCODER_OBJECT_ID_INTERNAL_DDI 0x19
#define ENCODER_OBJECT_ID_INTERNAL_DDI 0x19
#define ENCODER_OBJECT_ID_VT1625 0x1A
#define ENCODER_OBJECT_ID_VT1625 0x1A
#define ENCODER_OBJECT_ID_HDMI_SI1932 0x1B
#define ENCODER_OBJECT_ID_HDMI_SI1932 0x1B
...
@@ -86,7 +86,7 @@
...
@@ -86,7 +86,7 @@
/****************************************************/
/****************************************************/
/* Connector Object ID Definition */
/* Connector Object ID Definition */
/****************************************************/
/****************************************************/
#define CONNECTOR_OBJECT_ID_NONE 0x00
#define CONNECTOR_OBJECT_ID_NONE 0x00
#define CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I 0x01
#define CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I 0x01
#define CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I 0x02
#define CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I 0x02
#define CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D 0x03
#define CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D 0x03
...
@@ -96,7 +96,7 @@
...
@@ -96,7 +96,7 @@
#define CONNECTOR_OBJECT_ID_SVIDEO 0x07
#define CONNECTOR_OBJECT_ID_SVIDEO 0x07
#define CONNECTOR_OBJECT_ID_YPbPr 0x08
#define CONNECTOR_OBJECT_ID_YPbPr 0x08
#define CONNECTOR_OBJECT_ID_D_CONNECTOR 0x09
#define CONNECTOR_OBJECT_ID_D_CONNECTOR 0x09
#define CONNECTOR_OBJECT_ID_9PIN_DIN 0x0A
/* Supports both CV & TV */
#define CONNECTOR_OBJECT_ID_9PIN_DIN 0x0A
/* Supports both CV & TV */
#define CONNECTOR_OBJECT_ID_SCART 0x0B
#define CONNECTOR_OBJECT_ID_SCART 0x0B
#define CONNECTOR_OBJECT_ID_HDMI_TYPE_A 0x0C
#define CONNECTOR_OBJECT_ID_HDMI_TYPE_A 0x0C
#define CONNECTOR_OBJECT_ID_HDMI_TYPE_B 0x0D
#define CONNECTOR_OBJECT_ID_HDMI_TYPE_B 0x0D
...
@@ -106,6 +106,8 @@
...
@@ -106,6 +106,8 @@
#define CONNECTOR_OBJECT_ID_CROSSFIRE 0x11
#define CONNECTOR_OBJECT_ID_CROSSFIRE 0x11
#define CONNECTOR_OBJECT_ID_HARDCODE_DVI 0x12
#define CONNECTOR_OBJECT_ID_HARDCODE_DVI 0x12
#define CONNECTOR_OBJECT_ID_DISPLAYPORT 0x13
#define CONNECTOR_OBJECT_ID_DISPLAYPORT 0x13
#define CONNECTOR_OBJECT_ID_eDP 0x14
#define CONNECTOR_OBJECT_ID_MXM 0x15
/* deleted */
/* deleted */
...
@@ -115,6 +117,14 @@
...
@@ -115,6 +117,14 @@
#define ROUTER_OBJECT_ID_NONE 0x00
#define ROUTER_OBJECT_ID_NONE 0x00
#define ROUTER_OBJECT_ID_I2C_EXTENDER_CNTL 0x01
#define ROUTER_OBJECT_ID_I2C_EXTENDER_CNTL 0x01
/****************************************************/
/* Generic Object ID Definition */
/****************************************************/
#define GENERIC_OBJECT_ID_NONE 0x00
#define GENERIC_OBJECT_ID_GLSYNC 0x01
#define GENERIC_OBJECT_ID_PX2_NON_DRIVABLE 0x02
#define GENERIC_OBJECT_ID_MXM_OPM 0x03
/****************************************************/
/****************************************************/
/* Graphics Object ENUM ID Definition */
/* Graphics Object ENUM ID Definition */
/****************************************************/
/****************************************************/
...
@@ -124,6 +134,7 @@
...
@@ -124,6 +134,7 @@
#define GRAPH_OBJECT_ENUM_ID4 0x04
#define GRAPH_OBJECT_ENUM_ID4 0x04
#define GRAPH_OBJECT_ENUM_ID5 0x05
#define GRAPH_OBJECT_ENUM_ID5 0x05
#define GRAPH_OBJECT_ENUM_ID6 0x06
#define GRAPH_OBJECT_ENUM_ID6 0x06
#define GRAPH_OBJECT_ENUM_ID7 0x07
/****************************************************/
/****************************************************/
/* Graphics Object ID Bit definition */
/* Graphics Object ID Bit definition */
...
@@ -133,35 +144,35 @@
...
@@ -133,35 +144,35 @@
#define RESERVED1_ID_MASK 0x0800
#define RESERVED1_ID_MASK 0x0800
#define OBJECT_TYPE_MASK 0x7000
#define OBJECT_TYPE_MASK 0x7000
#define RESERVED2_ID_MASK 0x8000
#define RESERVED2_ID_MASK 0x8000
#define OBJECT_ID_SHIFT 0x00
#define OBJECT_ID_SHIFT 0x00
#define ENUM_ID_SHIFT 0x08
#define ENUM_ID_SHIFT 0x08
#define OBJECT_TYPE_SHIFT 0x0C
#define OBJECT_TYPE_SHIFT 0x0C
/****************************************************/
/****************************************************/
/* Graphics Object family definition */
/* Graphics Object family definition */
/****************************************************/
/****************************************************/
#define CONSTRUCTOBJECTFAMILYID(GRAPHICS_OBJECT_TYPE, GRAPHICS_OBJECT_ID) \
#define CONSTRUCTOBJECTFAMILYID(GRAPHICS_OBJECT_TYPE, GRAPHICS_OBJECT_ID) (GRAPHICS_OBJECT_TYPE << OBJECT_TYPE_SHIFT | \
(GRAPHICS_OBJECT_TYPE << OBJECT_TYPE_SHIFT | \
GRAPHICS_OBJECT_ID << OBJECT_ID_SHIFT)
GRAPHICS_OBJECT_ID << OBJECT_ID_SHIFT)
/****************************************************/
/****************************************************/
/* GPU Object ID definition - Shared with BIOS */
/* GPU Object ID definition - Shared with BIOS */
/****************************************************/
/****************************************************/
#define GPU_ENUM_ID1
(
GRAPH_OBJECT_TYPE_GPU << OBJECT_TYPE_SHIFT |\
#define GPU_ENUM_ID1
(
GRAPH_OBJECT_TYPE_GPU << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT)
/****************************************************/
/****************************************************/
/* Encoder Object ID definition - Shared with BIOS */
/* Encoder Object ID definition - Shared with BIOS */
/****************************************************/
/****************************************************/
/*
/*
#define ENCODER_INTERNAL_LVDS_ENUM_ID1 0x2101
#define ENCODER_INTERNAL_LVDS_ENUM_ID1 0x2101
#define ENCODER_INTERNAL_TMDS1_ENUM_ID1 0x2102
#define ENCODER_INTERNAL_TMDS1_ENUM_ID1 0x2102
#define ENCODER_INTERNAL_TMDS2_ENUM_ID1 0x2103
#define ENCODER_INTERNAL_TMDS2_ENUM_ID1 0x2103
#define ENCODER_INTERNAL_DAC1_ENUM_ID1 0x2104
#define ENCODER_INTERNAL_DAC1_ENUM_ID1 0x2104
#define ENCODER_INTERNAL_DAC2_ENUM_ID1 0x2105
#define ENCODER_INTERNAL_DAC2_ENUM_ID1 0x2105
#define ENCODER_INTERNAL_SDVOA_ENUM_ID1 0x2106
#define ENCODER_INTERNAL_SDVOA_ENUM_ID1 0x2106
#define ENCODER_INTERNAL_SDVOB_ENUM_ID1 0x2107
#define ENCODER_INTERNAL_SDVOB_ENUM_ID1 0x2107
#define ENCODER_SIL170B_ENUM_ID1 0x2108
#define ENCODER_SIL170B_ENUM_ID1 0x2108
#define ENCODER_CH7303_ENUM_ID1 0x2109
#define ENCODER_CH7303_ENUM_ID1 0x2109
#define ENCODER_CH7301_ENUM_ID1 0x210A
#define ENCODER_CH7301_ENUM_ID1 0x210A
#define ENCODER_INTERNAL_DVO1_ENUM_ID1 0x210B
#define ENCODER_INTERNAL_DVO1_ENUM_ID1 0x210B
...
@@ -175,8 +186,8 @@
...
@@ -175,8 +186,8 @@
#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID1 0x2113
#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID1 0x2113
#define ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1 0x2114
#define ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1 0x2114
#define ENCODER_INTERNAL_KLDSCP_DAC1_ENUM_ID1 0x2115
#define ENCODER_INTERNAL_KLDSCP_DAC1_ENUM_ID1 0x2115
#define ENCODER_INTERNAL_KLDSCP_DAC2_ENUM_ID1 0x2116
#define ENCODER_INTERNAL_KLDSCP_DAC2_ENUM_ID1 0x2116
#define ENCODER_SI178_ENUM_ID1 0x2117
#define ENCODER_SI178_ENUM_ID1 0x2117
#define ENCODER_MVPU_FPGA_ENUM_ID1 0x2118
#define ENCODER_MVPU_FPGA_ENUM_ID1 0x2118
#define ENCODER_INTERNAL_DDI_ENUM_ID1 0x2119
#define ENCODER_INTERNAL_DDI_ENUM_ID1 0x2119
#define ENCODER_VT1625_ENUM_ID1 0x211A
#define ENCODER_VT1625_ENUM_ID1 0x211A
...
@@ -185,205 +196,169 @@
...
@@ -185,205 +196,169 @@
#define ENCODER_DP_DP501_ENUM_ID1 0x211D
#define ENCODER_DP_DP501_ENUM_ID1 0x211D
#define ENCODER_INTERNAL_UNIPHY_ENUM_ID1 0x211E
#define ENCODER_INTERNAL_UNIPHY_ENUM_ID1 0x211E
*/
*/
#define ENCODER_INTERNAL_LVDS_ENUM_ID1 \
#define ENCODER_INTERNAL_LVDS_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_LVDS << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_INTERNAL_LVDS << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_TMDS1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_INTERNAL_TMDS1_ENUM_ID1 \
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_TMDS1 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_TMDS1 << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_TMDS2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_INTERNAL_TMDS2_ENUM_ID1 \
ENCODER_OBJECT_ID_INTERNAL_TMDS2 << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_INTERNAL_DAC1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_TMDS2 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_DAC1 << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_DAC1_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_INTERNAL_DAC2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_DAC1 << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_INTERNAL_DAC2 << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_DAC2_ENUM_ID1 \
#define ENCODER_INTERNAL_SDVOA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_SDVOA << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_INTERNAL_DAC2 << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_SDVOA_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_INTERNAL_SDVOA_ENUM_ID1 \
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_SDVOA << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_SDVOA << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_SDVOB_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_INTERNAL_SDVOA_ENUM_ID2 \
ENCODER_OBJECT_ID_INTERNAL_SDVOB << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
#define ENCODER_SIL170B_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_SDVOA << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_SI170B << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_SDVOB_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_CH7303_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_SDVOB << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_CH7303 << OBJECT_ID_SHIFT)
#define ENCODER_SIL170B_ENUM_ID1 \
#define ENCODER_CH7301_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_CH7301 << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_SI170B << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_DVO1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_CH7303_ENUM_ID1 \
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_DVO1 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_CH7303 << OBJECT_ID_SHIFT)
#define ENCODER_EXTERNAL_SDVOA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_CH7301_ENUM_ID1 \
ENCODER_OBJECT_ID_EXTERNAL_SDVOA << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_EXTERNAL_SDVOA_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_CH7301 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_EXTERNAL_SDVOA << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_DVO1_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_EXTERNAL_SDVOB_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_DVO1 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_EXTERNAL_SDVOB << OBJECT_ID_SHIFT)
#define ENCODER_EXTERNAL_SDVOA_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_TITFP513_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_EXTERNAL_SDVOA << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_TITFP513 << OBJECT_ID_SHIFT)
#define ENCODER_EXTERNAL_SDVOA_ENUM_ID2 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_INTERNAL_LVTM1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_EXTERNAL_SDVOA << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_INTERNAL_LVTM1 << OBJECT_ID_SHIFT)
#define ENCODER_EXTERNAL_SDVOB_ENUM_ID1 \
#define ENCODER_VT1623_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_VT1623 << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_EXTERNAL_SDVOB << OBJECT_ID_SHIFT)
#define ENCODER_HDMI_SI1930_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_TITFP513_ENUM_ID1 \
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_HDMI_SI1930 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_TITFP513 << OBJECT_ID_SHIFT)
#define ENCODER_HDMI_INTERNAL_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_INTERNAL_LVTM1_ENUM_ID1 \
ENCODER_OBJECT_ID_HDMI_INTERNAL << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_LVTM1 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 << OBJECT_ID_SHIFT)
#define ENCODER_VT1623_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_VT1623 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 << OBJECT_ID_SHIFT)
#define ENCODER_HDMI_SI1930_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_HDMI_SI1930 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1 << OBJECT_ID_SHIFT)
#define ENCODER_HDMI_INTERNAL_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_INTERNAL_KLDSCP_DAC1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_HDMI_INTERNAL << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1 << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID1 \
#define ENCODER_INTERNAL_KLDSCP_DAC2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2 << OBJECT_ID_SHIFT) // Shared with CV/TV and CRT
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 << OBJECT_ID_SHIFT)
#define ENCODER_SI178_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID2 \
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_SI178 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1 << OBJECT_ID_SHIFT)
#define ENCODER_MVPU_FPGA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1 \
ENCODER_OBJECT_ID_MVPU_FPGA << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_INTERNAL_DDI_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_DDI << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_KLDSCP_DAC1_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_VT1625_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1 << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_VT1625 << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_KLDSCP_DAC2_ENUM_ID1 \
#define ENCODER_HDMI_SI1932_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_HDMI_SI1932 << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2 << OBJECT_ID_SHIFT)
/* Shared with CV/TV and CRT */
#define ENCODER_DP_DP501_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_SI178_ENUM_ID1 \
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_DP_DP501 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_SI178 << OBJECT_ID_SHIFT)
#define ENCODER_DP_AN9801_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_MVPU_FPGA_ENUM_ID1 \
ENCODER_OBJECT_ID_DP_AN9801 << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_INTERNAL_UNIPHY_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_MVPU_FPGA << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_UNIPHY << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_DDI_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_INTERNAL_UNIPHY_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_DDI << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_INTERNAL_UNIPHY << OBJECT_ID_SHIFT)
#define ENCODER_VT1625_ENUM_ID1 \
#define ENCODER_INTERNAL_KLDSCP_LVTMA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_VT1625 << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_HDMI_SI1932_ENUM_ID1 \
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_HDMI_SI1932 << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
#define ENCODER_DP_DP501_ENUM_ID1 \
ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
ENCODER_OBJECT_ID_DP_DP501 << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
#define ENCODER_DP_AN9801_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_DP_AN9801 << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_UNIPHY_ENUM_ID1 \
#define ENCODER_GENERAL_EXTERNAL_DVO_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_GENERAL_EXTERNAL_DVO << OBJECT_ID_SHIFT)
ENCODER_OBJECT_ID_INTERNAL_UNIPHY << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_UNIPHY_ENUM_ID2 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_UNIPHY << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_KLDSCP_LVTMA_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID2 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID2 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT)
#define ENCODER_GENERAL_EXTERNAL_DVO_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ENCODER_OBJECT_ID_GENERAL_EXTERNAL_DVO << OBJECT_ID_SHIFT)
/****************************************************/
/****************************************************/
/* Connector Object ID definition - Shared with BIOS */
/* Connector Object ID definition - Shared with BIOS */
...
@@ -406,167 +381,253 @@
...
@@ -406,167 +381,253 @@
#define CONNECTOR_7PIN_DIN_ENUM_ID1 0x310F
#define CONNECTOR_7PIN_DIN_ENUM_ID1 0x310F
#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID1 0x3110
#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID1 0x3110
*/
*/
#define CONNECTOR_LVDS_ENUM_ID1 \
#define CONNECTOR_LVDS_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_LVDS << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_LVDS << OBJECT_ID_SHIFT)
#define CONNECTOR_LVDS_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_SINGLE_LINK_DVI_I_ENUM_ID1 \
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_LVDS << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I << OBJECT_ID_SHIFT)
#define CONNECTOR_eDP_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define CONNECTOR_SINGLE_LINK_DVI_I_ENUM_ID2 \
CONNECTOR_OBJECT_ID_eDP << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
#define CONNECTOR_eDP_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_eDP << OBJECT_ID_SHIFT)
#define CONNECTOR_DUAL_LINK_DVI_I_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_SINGLE_LINK_DVI_I_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I << OBJECT_ID_SHIFT)
#define CONNECTOR_DUAL_LINK_DVI_I_ENUM_ID2 \
#define CONNECTOR_SINGLE_LINK_DVI_I_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I << OBJECT_ID_SHIFT)
#define CONNECTOR_DUAL_LINK_DVI_I_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID1 \
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D << OBJECT_ID_SHIFT)
#define CONNECTOR_DUAL_LINK_DVI_I_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
#define CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID2 \
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
#define CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D << OBJECT_ID_SHIFT)
#define CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_SINGLE_LINK_DVI_D_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_D << OBJECT_ID_SHIFT)
#define CONNECTOR_VGA_ENUM_ID1 \
#define CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_VGA << OBJECT_ID_SHIFT)
#define CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_VGA_ENUM_ID2 \
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_VGA << OBJECT_ID_SHIFT)
#define CONNECTOR_DUAL_LINK_DVI_D_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
#define CONNECTOR_COMPOSITE_ENUM_ID1 \
CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define CONNECTOR_VGA_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_COMPOSITE << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_VGA << OBJECT_ID_SHIFT)
#define CONNECTOR_SVIDEO_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_VGA_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_SVIDEO << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_VGA << OBJECT_ID_SHIFT)
#define CONNECTOR_YPbPr_ENUM_ID1 \
#define CONNECTOR_COMPOSITE_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_COMPOSITE << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_YPbPr << OBJECT_ID_SHIFT)
#define CONNECTOR_COMPOSITE_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_D_CONNECTOR_ENUM_ID1 \
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_COMPOSITE << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_D_CONNECTOR << OBJECT_ID_SHIFT)
#define CONNECTOR_SVIDEO_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define CONNECTOR_9PIN_DIN_ENUM_ID1 \
CONNECTOR_OBJECT_ID_SVIDEO << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define CONNECTOR_SVIDEO_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_9PIN_DIN << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_SVIDEO << OBJECT_ID_SHIFT)
#define CONNECTOR_SCART_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_YPbPr_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_SCART << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_YPbPr << OBJECT_ID_SHIFT)
#define CONNECTOR_HDMI_TYPE_A_ENUM_ID1 \
#define CONNECTOR_YPbPr_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_YPbPr << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT)
#define CONNECTOR_D_CONNECTOR_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_HDMI_TYPE_B_ENUM_ID1 \
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_D_CONNECTOR << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_HDMI_TYPE_B << OBJECT_ID_SHIFT)
#define CONNECTOR_D_CONNECTOR_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
#define CONNECTOR_7PIN_DIN_ENUM_ID1 \
CONNECTOR_OBJECT_ID_D_CONNECTOR << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define CONNECTOR_9PIN_DIN_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_7PIN_DIN << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_9PIN_DIN << OBJECT_ID_SHIFT)
#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_9PIN_DIN_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_PCIE_CONNECTOR << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_9PIN_DIN << OBJECT_ID_SHIFT)
#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID2 \
#define CONNECTOR_SCART_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_SCART << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_PCIE_CONNECTOR << OBJECT_ID_SHIFT)
#define CONNECTOR_SCART_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_CROSSFIRE_ENUM_ID1 \
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_SCART << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_CROSSFIRE << OBJECT_ID_SHIFT)
#define CONNECTOR_HDMI_TYPE_A_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define CONNECTOR_CROSSFIRE_ENUM_ID2 \
CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
#define CONNECTOR_HDMI_TYPE_A_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_CROSSFIRE << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT)
#define CONNECTOR_HARDCODE_DVI_ENUM_ID1 \
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_HDMI_TYPE_A_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_HARDCODE_DVI << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_HDMI_TYPE_A << OBJECT_ID_SHIFT)
#define CONNECTOR_HARDCODE_DVI_ENUM_ID2 \
#define CONNECTOR_HDMI_TYPE_B_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_HDMI_TYPE_B << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_HARDCODE_DVI << OBJECT_ID_SHIFT)
#define CONNECTOR_HDMI_TYPE_B_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_DISPLAYPORT_ENUM_ID1 \
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_HDMI_TYPE_B << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
#define CONNECTOR_7PIN_DIN_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
#define CONNECTOR_DISPLAYPORT_ENUM_ID2 \
CONNECTOR_OBJECT_ID_7PIN_DIN << OBJECT_ID_SHIFT)
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_7PIN_DIN_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_7PIN_DIN << OBJECT_ID_SHIFT)
#define CONNECTOR_DISPLAYPORT_ENUM_ID3 \
#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_PCIE_CONNECTOR << OBJECT_ID_SHIFT)
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
#define CONNECTOR_PCIE_CONNECTOR_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
#define CONNECTOR_DISPLAYPORT_ENUM_ID4 \
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
(GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
CONNECTOR_OBJECT_ID_PCIE_CONNECTOR << OBJECT_ID_SHIFT)
GRAPH_OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
#define CONNECTOR_CROSSFIRE_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_CROSSFIRE << OBJECT_ID_SHIFT)
#define CONNECTOR_CROSSFIRE_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_CROSSFIRE << OBJECT_ID_SHIFT)
#define CONNECTOR_HARDCODE_DVI_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_HARDCODE_DVI << OBJECT_ID_SHIFT)
#define CONNECTOR_HARDCODE_DVI_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_HARDCODE_DVI << OBJECT_ID_SHIFT)
#define CONNECTOR_DISPLAYPORT_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
#define CONNECTOR_DISPLAYPORT_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
#define CONNECTOR_DISPLAYPORT_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
#define CONNECTOR_DISPLAYPORT_ENUM_ID4 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
#define CONNECTOR_DISPLAYPORT_ENUM_ID5 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID5 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
#define CONNECTOR_DISPLAYPORT_ENUM_ID6 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID6 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT)
#define CONNECTOR_MXM_ENUM_ID1 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DP_A
#define CONNECTOR_MXM_ENUM_ID2 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DP_B
#define CONNECTOR_MXM_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DP_C
#define CONNECTOR_MXM_ENUM_ID4 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DP_D
#define CONNECTOR_MXM_ENUM_ID5 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID5 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_LVDS_TXxx
#define CONNECTOR_MXM_ENUM_ID6 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID6 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_LVDS_UXxx
#define CONNECTOR_MXM_ENUM_ID7 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID7 << ENUM_ID_SHIFT |\
CONNECTOR_OBJECT_ID_MXM << OBJECT_ID_SHIFT) //Mapping to MXM_DAC
/****************************************************/
/****************************************************/
/* Router Object ID definition - Shared with BIOS */
/* Router Object ID definition - Shared with BIOS */
/****************************************************/
/****************************************************/
#define ROUTER_I2C_EXTENDER_CNTL_ENUM_ID1 \
#define ROUTER_I2C_EXTENDER_CNTL_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ROUTER << OBJECT_TYPE_SHIFT |\
(GRAPH_OBJECT_TYPE_ROUTER << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
ROUTER_OBJECT_ID_I2C_EXTENDER_CNTL << OBJECT_ID_SHIFT)
ROUTER_OBJECT_ID_I2C_EXTENDER_CNTL << OBJECT_ID_SHIFT)
/* deleted */
/* deleted */
/****************************************************/
/* Generic Object ID definition - Shared with BIOS */
/****************************************************/
#define GENERICOBJECT_GLSYNC_ENUM_ID1 (GRAPH_OBJECT_TYPE_GENERIC << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GENERIC_OBJECT_ID_GLSYNC << OBJECT_ID_SHIFT)
#define GENERICOBJECT_PX2_NON_DRIVABLE_ID1 (GRAPH_OBJECT_TYPE_GENERIC << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GENERIC_OBJECT_ID_PX2_NON_DRIVABLE<< OBJECT_ID_SHIFT)
#define GENERICOBJECT_PX2_NON_DRIVABLE_ID2 (GRAPH_OBJECT_TYPE_GENERIC << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\
GENERIC_OBJECT_ID_PX2_NON_DRIVABLE<< OBJECT_ID_SHIFT)
#define GENERICOBJECT_MXM_OPM_ENUM_ID1 (GRAPH_OBJECT_TYPE_GENERIC << OBJECT_TYPE_SHIFT |\
GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\
GENERIC_OBJECT_ID_MXM_OPM << OBJECT_ID_SHIFT)
/****************************************************/
/****************************************************/
/* Object Cap definition - Shared with BIOS */
/* Object Cap definition - Shared with BIOS */
/****************************************************/
/****************************************************/
#define GRAPHICS_OBJECT_CAP_I2C 0x00000001L
#define GRAPHICS_OBJECT_CAP_I2C 0x00000001L
#define GRAPHICS_OBJECT_CAP_TABLE_ID 0x00000002L
#define GRAPHICS_OBJECT_CAP_TABLE_ID 0x00000002L
#define GRAPHICS_OBJECT_I2CCOMMAND_TABLE_ID 0x01
#define GRAPHICS_OBJECT_I2CCOMMAND_TABLE_ID 0x01
#define GRAPHICS_OBJECT_HOTPLUGDETECTIONINTERUPT_TABLE_ID 0x02
#define GRAPHICS_OBJECT_HOTPLUGDETECTIONINTERUPT_TABLE_ID 0x02
#define GRAPHICS_OBJECT_ENCODER_OUTPUT_PROTECTION_TABLE_ID 0x03
#define GRAPHICS_OBJECT_ENCODER_OUTPUT_PROTECTION_TABLE_ID 0x03
...
@@ -575,4 +636,8 @@
...
@@ -575,4 +636,8 @@
#pragma pack()
#pragma pack()
#endif
#endif
#endif
/*GRAPHICTYPE */
#endif
/*GRAPHICTYPE */
drivers/gpu/drm/radeon/atombios_dp.c
浏览文件 @
e8d6d615
...
@@ -468,7 +468,8 @@ void radeon_dp_set_link_config(struct drm_connector *connector,
...
@@ -468,7 +468,8 @@ void radeon_dp_set_link_config(struct drm_connector *connector,
struct
radeon_connector
*
radeon_connector
;
struct
radeon_connector
*
radeon_connector
;
struct
radeon_connector_atom_dig
*
dig_connector
;
struct
radeon_connector_atom_dig
*
dig_connector
;
if
(
connector
->
connector_type
!=
DRM_MODE_CONNECTOR_DisplayPort
)
if
((
connector
->
connector_type
!=
DRM_MODE_CONNECTOR_DisplayPort
)
||
(
connector
->
connector_type
!=
DRM_MODE_CONNECTOR_eDP
))
return
;
return
;
radeon_connector
=
to_radeon_connector
(
connector
);
radeon_connector
=
to_radeon_connector
(
connector
);
...
@@ -582,7 +583,8 @@ void dp_link_train(struct drm_encoder *encoder,
...
@@ -582,7 +583,8 @@ void dp_link_train(struct drm_encoder *encoder,
u8
train_set
[
4
];
u8
train_set
[
4
];
int
i
;
int
i
;
if
(
connector
->
connector_type
!=
DRM_MODE_CONNECTOR_DisplayPort
)
if
((
connector
->
connector_type
!=
DRM_MODE_CONNECTOR_DisplayPort
)
||
(
connector
->
connector_type
!=
DRM_MODE_CONNECTOR_eDP
))
return
;
return
;
if
(
!
radeon_encoder
->
enc_priv
)
if
(
!
radeon_encoder
->
enc_priv
)
...
...
drivers/gpu/drm/radeon/mkregtable.c
浏览文件 @
e8d6d615
...
@@ -661,8 +661,10 @@ static int parser_auth(struct table *t, const char *filename)
...
@@ -661,8 +661,10 @@ static int parser_auth(struct table *t, const char *filename)
fseek
(
file
,
0
,
SEEK_SET
);
fseek
(
file
,
0
,
SEEK_SET
);
/* get header */
/* get header */
if
(
fgets
(
buf
,
1024
,
file
)
==
NULL
)
if
(
fgets
(
buf
,
1024
,
file
)
==
NULL
)
{
fclose
(
file
);
return
-
1
;
return
-
1
;
}
/* first line will contain the last register
/* first line will contain the last register
* and gpu name */
* and gpu name */
...
...
drivers/gpu/drm/radeon/r100.c
浏览文件 @
e8d6d615
...
@@ -131,7 +131,8 @@ void r100_hpd_init(struct radeon_device *rdev)
...
@@ -131,7 +131,8 @@ void r100_hpd_init(struct radeon_device *rdev)
break
;
break
;
}
}
}
}
r100_irq_set
(
rdev
);
if
(
rdev
->
irq
.
installed
)
r100_irq_set
(
rdev
);
}
}
void
r100_hpd_fini
(
struct
radeon_device
*
rdev
)
void
r100_hpd_fini
(
struct
radeon_device
*
rdev
)
...
@@ -243,6 +244,11 @@ int r100_irq_set(struct radeon_device *rdev)
...
@@ -243,6 +244,11 @@ int r100_irq_set(struct radeon_device *rdev)
{
{
uint32_t
tmp
=
0
;
uint32_t
tmp
=
0
;
if
(
!
rdev
->
irq
.
installed
)
{
WARN
(
1
,
"Can't enable IRQ/MSI because no handler is installed.
\n
"
);
WREG32
(
R_000040_GEN_INT_CNTL
,
0
);
return
-
EINVAL
;
}
if
(
rdev
->
irq
.
sw_int
)
{
if
(
rdev
->
irq
.
sw_int
)
{
tmp
|=
RADEON_SW_INT_ENABLE
;
tmp
|=
RADEON_SW_INT_ENABLE
;
}
}
...
@@ -356,6 +362,11 @@ void r100_fence_ring_emit(struct radeon_device *rdev,
...
@@ -356,6 +362,11 @@ void r100_fence_ring_emit(struct radeon_device *rdev,
/* Wait until IDLE & CLEAN */
/* Wait until IDLE & CLEAN */
radeon_ring_write
(
rdev
,
PACKET0
(
0x1720
,
0
));
radeon_ring_write
(
rdev
,
PACKET0
(
0x1720
,
0
));
radeon_ring_write
(
rdev
,
(
1
<<
16
)
|
(
1
<<
17
));
radeon_ring_write
(
rdev
,
(
1
<<
16
)
|
(
1
<<
17
));
radeon_ring_write
(
rdev
,
PACKET0
(
RADEON_HOST_PATH_CNTL
,
0
));
radeon_ring_write
(
rdev
,
rdev
->
config
.
r100
.
hdp_cntl
|
RADEON_HDP_READ_BUFFER_INVALIDATE
);
radeon_ring_write
(
rdev
,
PACKET0
(
RADEON_HOST_PATH_CNTL
,
0
));
radeon_ring_write
(
rdev
,
rdev
->
config
.
r100
.
hdp_cntl
);
/* Emit fence sequence & fire IRQ */
/* Emit fence sequence & fire IRQ */
radeon_ring_write
(
rdev
,
PACKET0
(
rdev
->
fence_drv
.
scratch_reg
,
0
));
radeon_ring_write
(
rdev
,
PACKET0
(
rdev
->
fence_drv
.
scratch_reg
,
0
));
radeon_ring_write
(
rdev
,
fence
->
seq
);
radeon_ring_write
(
rdev
,
fence
->
seq
);
...
@@ -1713,14 +1724,6 @@ void r100_gpu_init(struct radeon_device *rdev)
...
@@ -1713,14 +1724,6 @@ void r100_gpu_init(struct radeon_device *rdev)
r100_hdp_reset
(
rdev
);
r100_hdp_reset
(
rdev
);
}
}
void
r100_hdp_flush
(
struct
radeon_device
*
rdev
)
{
u32
tmp
;
tmp
=
RREG32
(
RADEON_HOST_PATH_CNTL
);
tmp
|=
RADEON_HDP_READ_BUFFER_INVALIDATE
;
WREG32
(
RADEON_HOST_PATH_CNTL
,
tmp
);
}
void
r100_hdp_reset
(
struct
radeon_device
*
rdev
)
void
r100_hdp_reset
(
struct
radeon_device
*
rdev
)
{
{
uint32_t
tmp
;
uint32_t
tmp
;
...
@@ -3313,6 +3316,7 @@ static int r100_startup(struct radeon_device *rdev)
...
@@ -3313,6 +3316,7 @@ static int r100_startup(struct radeon_device *rdev)
}
}
/* Enable IRQ */
/* Enable IRQ */
r100_irq_set
(
rdev
);
r100_irq_set
(
rdev
);
rdev
->
config
.
r100
.
hdp_cntl
=
RREG32
(
RADEON_HOST_PATH_CNTL
);
/* 1M ring buffer */
/* 1M ring buffer */
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
if
(
r
)
{
if
(
r
)
{
...
@@ -3371,6 +3375,7 @@ void r100_fini(struct radeon_device *rdev)
...
@@ -3371,6 +3375,7 @@ void r100_fini(struct radeon_device *rdev)
radeon_gem_fini
(
rdev
);
radeon_gem_fini
(
rdev
);
if
(
rdev
->
flags
&
RADEON_IS_PCI
)
if
(
rdev
->
flags
&
RADEON_IS_PCI
)
r100_pci_gart_fini
(
rdev
);
r100_pci_gart_fini
(
rdev
);
radeon_agp_fini
(
rdev
);
radeon_irq_kms_fini
(
rdev
);
radeon_irq_kms_fini
(
rdev
);
radeon_fence_driver_fini
(
rdev
);
radeon_fence_driver_fini
(
rdev
);
radeon_bo_fini
(
rdev
);
radeon_bo_fini
(
rdev
);
...
...
drivers/gpu/drm/radeon/r300.c
浏览文件 @
e8d6d615
...
@@ -36,7 +36,15 @@
...
@@ -36,7 +36,15 @@
#include "rv350d.h"
#include "rv350d.h"
#include "r300_reg_safe.h"
#include "r300_reg_safe.h"
/* This files gather functions specifics to: r300,r350,rv350,rv370,rv380 */
/* This files gather functions specifics to: r300,r350,rv350,rv370,rv380
*
* GPU Errata:
* - HOST_PATH_CNTL: r300 family seems to dislike write to HOST_PATH_CNTL
* using MMIO to flush host path read cache, this lead to HARDLOCKUP.
* However, scheduling such write to the ring seems harmless, i suspect
* the CP read collide with the flush somehow, or maybe the MC, hard to
* tell. (Jerome Glisse)
*/
/*
/*
* rv370,rv380 PCIE GART
* rv370,rv380 PCIE GART
...
@@ -178,6 +186,11 @@ void r300_fence_ring_emit(struct radeon_device *rdev,
...
@@ -178,6 +186,11 @@ void r300_fence_ring_emit(struct radeon_device *rdev,
/* Wait until IDLE & CLEAN */
/* Wait until IDLE & CLEAN */
radeon_ring_write
(
rdev
,
PACKET0
(
0x1720
,
0
));
radeon_ring_write
(
rdev
,
PACKET0
(
0x1720
,
0
));
radeon_ring_write
(
rdev
,
(
1
<<
17
)
|
(
1
<<
16
)
|
(
1
<<
9
));
radeon_ring_write
(
rdev
,
(
1
<<
17
)
|
(
1
<<
16
)
|
(
1
<<
9
));
radeon_ring_write
(
rdev
,
PACKET0
(
RADEON_HOST_PATH_CNTL
,
0
));
radeon_ring_write
(
rdev
,
rdev
->
config
.
r300
.
hdp_cntl
|
RADEON_HDP_READ_BUFFER_INVALIDATE
);
radeon_ring_write
(
rdev
,
PACKET0
(
RADEON_HOST_PATH_CNTL
,
0
));
radeon_ring_write
(
rdev
,
rdev
->
config
.
r300
.
hdp_cntl
);
/* Emit fence sequence & fire IRQ */
/* Emit fence sequence & fire IRQ */
radeon_ring_write
(
rdev
,
PACKET0
(
rdev
->
fence_drv
.
scratch_reg
,
0
));
radeon_ring_write
(
rdev
,
PACKET0
(
rdev
->
fence_drv
.
scratch_reg
,
0
));
radeon_ring_write
(
rdev
,
fence
->
seq
);
radeon_ring_write
(
rdev
,
fence
->
seq
);
...
@@ -1258,6 +1271,7 @@ static int r300_startup(struct radeon_device *rdev)
...
@@ -1258,6 +1271,7 @@ static int r300_startup(struct radeon_device *rdev)
}
}
/* Enable IRQ */
/* Enable IRQ */
r100_irq_set
(
rdev
);
r100_irq_set
(
rdev
);
rdev
->
config
.
r300
.
hdp_cntl
=
RREG32
(
RADEON_HOST_PATH_CNTL
);
/* 1M ring buffer */
/* 1M ring buffer */
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
if
(
r
)
{
if
(
r
)
{
...
@@ -1322,6 +1336,7 @@ void r300_fini(struct radeon_device *rdev)
...
@@ -1322,6 +1336,7 @@ void r300_fini(struct radeon_device *rdev)
rv370_pcie_gart_fini
(
rdev
);
rv370_pcie_gart_fini
(
rdev
);
if
(
rdev
->
flags
&
RADEON_IS_PCI
)
if
(
rdev
->
flags
&
RADEON_IS_PCI
)
r100_pci_gart_fini
(
rdev
);
r100_pci_gart_fini
(
rdev
);
radeon_agp_fini
(
rdev
);
radeon_irq_kms_fini
(
rdev
);
radeon_irq_kms_fini
(
rdev
);
radeon_fence_driver_fini
(
rdev
);
radeon_fence_driver_fini
(
rdev
);
radeon_bo_fini
(
rdev
);
radeon_bo_fini
(
rdev
);
...
...
drivers/gpu/drm/radeon/r420.c
浏览文件 @
e8d6d615
...
@@ -30,6 +30,7 @@
...
@@ -30,6 +30,7 @@
#include "radeon_reg.h"
#include "radeon_reg.h"
#include "radeon.h"
#include "radeon.h"
#include "atom.h"
#include "atom.h"
#include "r100d.h"
#include "r420d.h"
#include "r420d.h"
int
r420_mc_init
(
struct
radeon_device
*
rdev
)
int
r420_mc_init
(
struct
radeon_device
*
rdev
)
...
@@ -165,6 +166,34 @@ static void r420_clock_resume(struct radeon_device *rdev)
...
@@ -165,6 +166,34 @@ static void r420_clock_resume(struct radeon_device *rdev)
WREG32_PLL
(
R_00000D_SCLK_CNTL
,
sclk_cntl
);
WREG32_PLL
(
R_00000D_SCLK_CNTL
,
sclk_cntl
);
}
}
static
void
r420_cp_errata_init
(
struct
radeon_device
*
rdev
)
{
/* RV410 and R420 can lock up if CP DMA to host memory happens
* while the 2D engine is busy.
*
* The proper workaround is to queue a RESYNC at the beginning
* of the CP init, apparently.
*/
radeon_scratch_get
(
rdev
,
&
rdev
->
config
.
r300
.
resync_scratch
);
radeon_ring_lock
(
rdev
,
8
);
radeon_ring_write
(
rdev
,
PACKET0
(
R300_CP_RESYNC_ADDR
,
1
));
radeon_ring_write
(
rdev
,
rdev
->
config
.
r300
.
resync_scratch
);
radeon_ring_write
(
rdev
,
0xDEADBEEF
);
radeon_ring_unlock_commit
(
rdev
);
}
static
void
r420_cp_errata_fini
(
struct
radeon_device
*
rdev
)
{
/* Catch the RESYNC we dispatched all the way back,
* at the very beginning of the CP init.
*/
radeon_ring_lock
(
rdev
,
8
);
radeon_ring_write
(
rdev
,
PACKET0
(
R300_RB3D_DSTCACHE_CTLSTAT
,
0
));
radeon_ring_write
(
rdev
,
R300_RB3D_DC_FINISH
);
radeon_ring_unlock_commit
(
rdev
);
radeon_scratch_free
(
rdev
,
rdev
->
config
.
r300
.
resync_scratch
);
}
static
int
r420_startup
(
struct
radeon_device
*
rdev
)
static
int
r420_startup
(
struct
radeon_device
*
rdev
)
{
{
int
r
;
int
r
;
...
@@ -190,12 +219,14 @@ static int r420_startup(struct radeon_device *rdev)
...
@@ -190,12 +219,14 @@ static int r420_startup(struct radeon_device *rdev)
r420_pipes_init
(
rdev
);
r420_pipes_init
(
rdev
);
/* Enable IRQ */
/* Enable IRQ */
r100_irq_set
(
rdev
);
r100_irq_set
(
rdev
);
rdev
->
config
.
r300
.
hdp_cntl
=
RREG32
(
RADEON_HOST_PATH_CNTL
);
/* 1M ring buffer */
/* 1M ring buffer */
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
if
(
r
)
{
if
(
r
)
{
dev_err
(
rdev
->
dev
,
"failled initializing CP (%d).
\n
"
,
r
);
dev_err
(
rdev
->
dev
,
"failled initializing CP (%d).
\n
"
,
r
);
return
r
;
return
r
;
}
}
r420_cp_errata_init
(
rdev
);
r
=
r100_wb_init
(
rdev
);
r
=
r100_wb_init
(
rdev
);
if
(
r
)
{
if
(
r
)
{
dev_err
(
rdev
->
dev
,
"failled initializing WB (%d).
\n
"
,
r
);
dev_err
(
rdev
->
dev
,
"failled initializing WB (%d).
\n
"
,
r
);
...
@@ -238,6 +269,7 @@ int r420_resume(struct radeon_device *rdev)
...
@@ -238,6 +269,7 @@ int r420_resume(struct radeon_device *rdev)
int
r420_suspend
(
struct
radeon_device
*
rdev
)
int
r420_suspend
(
struct
radeon_device
*
rdev
)
{
{
r420_cp_errata_fini
(
rdev
);
r100_cp_disable
(
rdev
);
r100_cp_disable
(
rdev
);
r100_wb_disable
(
rdev
);
r100_wb_disable
(
rdev
);
r100_irq_disable
(
rdev
);
r100_irq_disable
(
rdev
);
...
...
drivers/gpu/drm/radeon/r520.c
浏览文件 @
e8d6d615
...
@@ -186,6 +186,7 @@ static int r520_startup(struct radeon_device *rdev)
...
@@ -186,6 +186,7 @@ static int r520_startup(struct radeon_device *rdev)
}
}
/* Enable IRQ */
/* Enable IRQ */
rs600_irq_set
(
rdev
);
rs600_irq_set
(
rdev
);
rdev
->
config
.
r300
.
hdp_cntl
=
RREG32
(
RADEON_HOST_PATH_CNTL
);
/* 1M ring buffer */
/* 1M ring buffer */
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
if
(
r
)
{
if
(
r
)
{
...
...
drivers/gpu/drm/radeon/r600.c
浏览文件 @
e8d6d615
...
@@ -285,7 +285,8 @@ void r600_hpd_init(struct radeon_device *rdev)
...
@@ -285,7 +285,8 @@ void r600_hpd_init(struct radeon_device *rdev)
}
}
}
}
}
}
r600_irq_set
(
rdev
);
if
(
rdev
->
irq
.
installed
)
r600_irq_set
(
rdev
);
}
}
void
r600_hpd_fini
(
struct
radeon_device
*
rdev
)
void
r600_hpd_fini
(
struct
radeon_device
*
rdev
)
...
@@ -726,6 +727,10 @@ int r600_mc_init(struct radeon_device *rdev)
...
@@ -726,6 +727,10 @@ int r600_mc_init(struct radeon_device *rdev)
a
.
full
=
rfixed_const
(
100
);
a
.
full
=
rfixed_const
(
100
);
rdev
->
pm
.
sclk
.
full
=
rfixed_const
(
rdev
->
clock
.
default_sclk
);
rdev
->
pm
.
sclk
.
full
=
rfixed_const
(
rdev
->
clock
.
default_sclk
);
rdev
->
pm
.
sclk
.
full
=
rfixed_div
(
rdev
->
pm
.
sclk
,
a
);
rdev
->
pm
.
sclk
.
full
=
rfixed_div
(
rdev
->
pm
.
sclk
,
a
);
if
(
rdev
->
flags
&
RADEON_IS_IGP
)
rdev
->
mc
.
igp_sideport_enabled
=
radeon_atombios_sideport_present
(
rdev
);
return
0
;
return
0
;
}
}
...
@@ -1384,11 +1389,6 @@ void r600_pciep_wreg(struct radeon_device *rdev, u32 reg, u32 v)
...
@@ -1384,11 +1389,6 @@ void r600_pciep_wreg(struct radeon_device *rdev, u32 reg, u32 v)
(
void
)
RREG32
(
PCIE_PORT_DATA
);
(
void
)
RREG32
(
PCIE_PORT_DATA
);
}
}
void
r600_hdp_flush
(
struct
radeon_device
*
rdev
)
{
WREG32
(
R_005480_HDP_MEM_COHERENCY_FLUSH_CNTL
,
0x1
);
}
/*
/*
* CP & Ring
* CP & Ring
*/
*/
...
@@ -1785,6 +1785,8 @@ void r600_fence_ring_emit(struct radeon_device *rdev,
...
@@ -1785,6 +1785,8 @@ void r600_fence_ring_emit(struct radeon_device *rdev,
radeon_ring_write
(
rdev
,
PACKET3
(
PACKET3_SET_CONFIG_REG
,
1
));
radeon_ring_write
(
rdev
,
PACKET3
(
PACKET3_SET_CONFIG_REG
,
1
));
radeon_ring_write
(
rdev
,
((
rdev
->
fence_drv
.
scratch_reg
-
PACKET3_SET_CONFIG_REG_OFFSET
)
>>
2
));
radeon_ring_write
(
rdev
,
((
rdev
->
fence_drv
.
scratch_reg
-
PACKET3_SET_CONFIG_REG_OFFSET
)
>>
2
));
radeon_ring_write
(
rdev
,
fence
->
seq
);
radeon_ring_write
(
rdev
,
fence
->
seq
);
radeon_ring_write
(
rdev
,
PACKET0
(
R_005480_HDP_MEM_COHERENCY_FLUSH_CNTL
,
0
));
radeon_ring_write
(
rdev
,
1
);
/* CP_INTERRUPT packet 3 no longer exists, use packet 0 */
/* CP_INTERRUPT packet 3 no longer exists, use packet 0 */
radeon_ring_write
(
rdev
,
PACKET0
(
CP_INT_STATUS
,
0
));
radeon_ring_write
(
rdev
,
PACKET0
(
CP_INT_STATUS
,
0
));
radeon_ring_write
(
rdev
,
RB_INT_STAT
);
radeon_ring_write
(
rdev
,
RB_INT_STAT
);
...
@@ -2089,8 +2091,7 @@ void r600_fini(struct radeon_device *rdev)
...
@@ -2089,8 +2091,7 @@ void r600_fini(struct radeon_device *rdev)
radeon_gem_fini
(
rdev
);
radeon_gem_fini
(
rdev
);
radeon_fence_driver_fini
(
rdev
);
radeon_fence_driver_fini
(
rdev
);
radeon_clocks_fini
(
rdev
);
radeon_clocks_fini
(
rdev
);
if
(
rdev
->
flags
&
RADEON_IS_AGP
)
radeon_agp_fini
(
rdev
);
radeon_agp_fini
(
rdev
);
radeon_bo_fini
(
rdev
);
radeon_bo_fini
(
rdev
);
radeon_atombios_fini
(
rdev
);
radeon_atombios_fini
(
rdev
);
kfree
(
rdev
->
bios
);
kfree
(
rdev
->
bios
);
...
@@ -2461,6 +2462,10 @@ int r600_irq_set(struct radeon_device *rdev)
...
@@ -2461,6 +2462,10 @@ int r600_irq_set(struct radeon_device *rdev)
u32
mode_int
=
0
;
u32
mode_int
=
0
;
u32
hpd1
,
hpd2
,
hpd3
,
hpd4
=
0
,
hpd5
=
0
,
hpd6
=
0
;
u32
hpd1
,
hpd2
,
hpd3
,
hpd4
=
0
,
hpd5
=
0
,
hpd6
=
0
;
if
(
!
rdev
->
irq
.
installed
)
{
WARN
(
1
,
"Can't enable IRQ/MSI because no handler is installed.
\n
"
);
return
-
EINVAL
;
}
/* don't enable anything if the ih is disabled */
/* don't enable anything if the ih is disabled */
if
(
!
rdev
->
ih
.
enabled
)
if
(
!
rdev
->
ih
.
enabled
)
return
0
;
return
0
;
...
...
drivers/gpu/drm/radeon/r600_blit_kms.c
浏览文件 @
e8d6d615
...
@@ -577,9 +577,9 @@ int r600_blit_prepare_copy(struct radeon_device *rdev, int size_bytes)
...
@@ -577,9 +577,9 @@ int r600_blit_prepare_copy(struct radeon_device *rdev, int size_bytes)
ring_size
=
num_loops
*
dwords_per_loop
;
ring_size
=
num_loops
*
dwords_per_loop
;
/* set default + shaders */
/* set default + shaders */
ring_size
+=
40
;
/* shaders + def state */
ring_size
+=
40
;
/* shaders + def state */
ring_size
+=
5
;
/* fence emit for VB IB */
ring_size
+=
7
;
/* fence emit for VB IB */
ring_size
+=
5
;
/* done copy */
ring_size
+=
5
;
/* done copy */
ring_size
+=
5
;
/* fence emit for done copy */
ring_size
+=
7
;
/* fence emit for done copy */
r
=
radeon_ring_lock
(
rdev
,
ring_size
);
r
=
radeon_ring_lock
(
rdev
,
ring_size
);
WARN_ON
(
r
);
WARN_ON
(
r
);
...
...
drivers/gpu/drm/radeon/radeon.h
浏览文件 @
e8d6d615
...
@@ -319,10 +319,12 @@ struct radeon_mc {
...
@@ -319,10 +319,12 @@ struct radeon_mc {
u64
real_vram_size
;
u64
real_vram_size
;
int
vram_mtrr
;
int
vram_mtrr
;
bool
vram_is_ddr
;
bool
vram_is_ddr
;
bool
igp_sideport_enabled
;
};
};
int
radeon_mc_setup
(
struct
radeon_device
*
rdev
);
int
radeon_mc_setup
(
struct
radeon_device
*
rdev
);
bool
radeon_combios_sideport_present
(
struct
radeon_device
*
rdev
);
bool
radeon_atombios_sideport_present
(
struct
radeon_device
*
rdev
);
/*
/*
* GPU scratch registers structures, functions & helpers
* GPU scratch registers structures, functions & helpers
...
@@ -654,7 +656,6 @@ struct radeon_asic {
...
@@ -654,7 +656,6 @@ struct radeon_asic {
uint32_t
offset
,
uint32_t
obj_size
);
uint32_t
offset
,
uint32_t
obj_size
);
int
(
*
clear_surface_reg
)(
struct
radeon_device
*
rdev
,
int
reg
);
int
(
*
clear_surface_reg
)(
struct
radeon_device
*
rdev
,
int
reg
);
void
(
*
bandwidth_update
)(
struct
radeon_device
*
rdev
);
void
(
*
bandwidth_update
)(
struct
radeon_device
*
rdev
);
void
(
*
hdp_flush
)(
struct
radeon_device
*
rdev
);
void
(
*
hpd_init
)(
struct
radeon_device
*
rdev
);
void
(
*
hpd_init
)(
struct
radeon_device
*
rdev
);
void
(
*
hpd_fini
)(
struct
radeon_device
*
rdev
);
void
(
*
hpd_fini
)(
struct
radeon_device
*
rdev
);
bool
(
*
hpd_sense
)(
struct
radeon_device
*
rdev
,
enum
radeon_hpd_id
hpd
);
bool
(
*
hpd_sense
)(
struct
radeon_device
*
rdev
,
enum
radeon_hpd_id
hpd
);
...
@@ -667,11 +668,14 @@ struct radeon_asic {
...
@@ -667,11 +668,14 @@ struct radeon_asic {
struct
r100_asic
{
struct
r100_asic
{
const
unsigned
*
reg_safe_bm
;
const
unsigned
*
reg_safe_bm
;
unsigned
reg_safe_bm_size
;
unsigned
reg_safe_bm_size
;
u32
hdp_cntl
;
};
};
struct
r300_asic
{
struct
r300_asic
{
const
unsigned
*
reg_safe_bm
;
const
unsigned
*
reg_safe_bm
;
unsigned
reg_safe_bm_size
;
unsigned
reg_safe_bm_size
;
u32
resync_scratch
;
u32
hdp_cntl
;
};
};
struct
r600_asic
{
struct
r600_asic
{
...
@@ -1007,7 +1011,6 @@ static inline void radeon_ring_write(struct radeon_device *rdev, uint32_t v)
...
@@ -1007,7 +1011,6 @@ static inline void radeon_ring_write(struct radeon_device *rdev, uint32_t v)
#define radeon_set_surface_reg(rdev, r, f, p, o, s) ((rdev)->asic->set_surface_reg((rdev), (r), (f), (p), (o), (s)))
#define radeon_set_surface_reg(rdev, r, f, p, o, s) ((rdev)->asic->set_surface_reg((rdev), (r), (f), (p), (o), (s)))
#define radeon_clear_surface_reg(rdev, r) ((rdev)->asic->clear_surface_reg((rdev), (r)))
#define radeon_clear_surface_reg(rdev, r) ((rdev)->asic->clear_surface_reg((rdev), (r)))
#define radeon_bandwidth_update(rdev) (rdev)->asic->bandwidth_update((rdev))
#define radeon_bandwidth_update(rdev) (rdev)->asic->bandwidth_update((rdev))
#define radeon_hdp_flush(rdev) (rdev)->asic->hdp_flush((rdev))
#define radeon_hpd_init(rdev) (rdev)->asic->hpd_init((rdev))
#define radeon_hpd_init(rdev) (rdev)->asic->hpd_init((rdev))
#define radeon_hpd_fini(rdev) (rdev)->asic->hpd_fini((rdev))
#define radeon_hpd_fini(rdev) (rdev)->asic->hpd_fini((rdev))
#define radeon_hpd_sense(rdev, hpd) (rdev)->asic->hpd_sense((rdev), (hpd))
#define radeon_hpd_sense(rdev, hpd) (rdev)->asic->hpd_sense((rdev), (hpd))
...
...
drivers/gpu/drm/radeon/radeon_agp.c
浏览文件 @
e8d6d615
...
@@ -252,10 +252,8 @@ void radeon_agp_resume(struct radeon_device *rdev)
...
@@ -252,10 +252,8 @@ void radeon_agp_resume(struct radeon_device *rdev)
void
radeon_agp_fini
(
struct
radeon_device
*
rdev
)
void
radeon_agp_fini
(
struct
radeon_device
*
rdev
)
{
{
#if __OS_HAS_AGP
#if __OS_HAS_AGP
if
(
rdev
->
flags
&
RADEON_IS_AGP
)
{
if
(
rdev
->
ddev
->
agp
&&
rdev
->
ddev
->
agp
->
acquired
)
{
if
(
rdev
->
ddev
->
agp
&&
rdev
->
ddev
->
agp
->
acquired
)
{
drm_agp_release
(
rdev
->
ddev
);
drm_agp_release
(
rdev
->
ddev
);
}
}
}
#endif
#endif
}
}
drivers/gpu/drm/radeon/radeon_asic.h
浏览文件 @
e8d6d615
...
@@ -77,7 +77,6 @@ int r100_clear_surface_reg(struct radeon_device *rdev, int reg);
...
@@ -77,7 +77,6 @@ int r100_clear_surface_reg(struct radeon_device *rdev, int reg);
void
r100_bandwidth_update
(
struct
radeon_device
*
rdev
);
void
r100_bandwidth_update
(
struct
radeon_device
*
rdev
);
void
r100_ring_ib_execute
(
struct
radeon_device
*
rdev
,
struct
radeon_ib
*
ib
);
void
r100_ring_ib_execute
(
struct
radeon_device
*
rdev
,
struct
radeon_ib
*
ib
);
int
r100_ring_test
(
struct
radeon_device
*
rdev
);
int
r100_ring_test
(
struct
radeon_device
*
rdev
);
void
r100_hdp_flush
(
struct
radeon_device
*
rdev
);
void
r100_hpd_init
(
struct
radeon_device
*
rdev
);
void
r100_hpd_init
(
struct
radeon_device
*
rdev
);
void
r100_hpd_fini
(
struct
radeon_device
*
rdev
);
void
r100_hpd_fini
(
struct
radeon_device
*
rdev
);
bool
r100_hpd_sense
(
struct
radeon_device
*
rdev
,
enum
radeon_hpd_id
hpd
);
bool
r100_hpd_sense
(
struct
radeon_device
*
rdev
,
enum
radeon_hpd_id
hpd
);
...
@@ -114,7 +113,6 @@ static struct radeon_asic r100_asic = {
...
@@ -114,7 +113,6 @@ static struct radeon_asic r100_asic = {
.
set_surface_reg
=
r100_set_surface_reg
,
.
set_surface_reg
=
r100_set_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
bandwidth_update
=
&
r100_bandwidth_update
,
.
bandwidth_update
=
&
r100_bandwidth_update
,
.
hdp_flush
=
&
r100_hdp_flush
,
.
hpd_init
=
&
r100_hpd_init
,
.
hpd_init
=
&
r100_hpd_init
,
.
hpd_fini
=
&
r100_hpd_fini
,
.
hpd_fini
=
&
r100_hpd_fini
,
.
hpd_sense
=
&
r100_hpd_sense
,
.
hpd_sense
=
&
r100_hpd_sense
,
...
@@ -174,7 +172,6 @@ static struct radeon_asic r300_asic = {
...
@@ -174,7 +172,6 @@ static struct radeon_asic r300_asic = {
.
set_surface_reg
=
r100_set_surface_reg
,
.
set_surface_reg
=
r100_set_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
bandwidth_update
=
&
r100_bandwidth_update
,
.
bandwidth_update
=
&
r100_bandwidth_update
,
.
hdp_flush
=
&
r100_hdp_flush
,
.
hpd_init
=
&
r100_hpd_init
,
.
hpd_init
=
&
r100_hpd_init
,
.
hpd_fini
=
&
r100_hpd_fini
,
.
hpd_fini
=
&
r100_hpd_fini
,
.
hpd_sense
=
&
r100_hpd_sense
,
.
hpd_sense
=
&
r100_hpd_sense
,
...
@@ -218,7 +215,6 @@ static struct radeon_asic r420_asic = {
...
@@ -218,7 +215,6 @@ static struct radeon_asic r420_asic = {
.
set_surface_reg
=
r100_set_surface_reg
,
.
set_surface_reg
=
r100_set_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
bandwidth_update
=
&
r100_bandwidth_update
,
.
bandwidth_update
=
&
r100_bandwidth_update
,
.
hdp_flush
=
&
r100_hdp_flush
,
.
hpd_init
=
&
r100_hpd_init
,
.
hpd_init
=
&
r100_hpd_init
,
.
hpd_fini
=
&
r100_hpd_fini
,
.
hpd_fini
=
&
r100_hpd_fini
,
.
hpd_sense
=
&
r100_hpd_sense
,
.
hpd_sense
=
&
r100_hpd_sense
,
...
@@ -267,7 +263,6 @@ static struct radeon_asic rs400_asic = {
...
@@ -267,7 +263,6 @@ static struct radeon_asic rs400_asic = {
.
set_surface_reg
=
r100_set_surface_reg
,
.
set_surface_reg
=
r100_set_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
bandwidth_update
=
&
r100_bandwidth_update
,
.
bandwidth_update
=
&
r100_bandwidth_update
,
.
hdp_flush
=
&
r100_hdp_flush
,
.
hpd_init
=
&
r100_hpd_init
,
.
hpd_init
=
&
r100_hpd_init
,
.
hpd_fini
=
&
r100_hpd_fini
,
.
hpd_fini
=
&
r100_hpd_fini
,
.
hpd_sense
=
&
r100_hpd_sense
,
.
hpd_sense
=
&
r100_hpd_sense
,
...
@@ -324,7 +319,6 @@ static struct radeon_asic rs600_asic = {
...
@@ -324,7 +319,6 @@ static struct radeon_asic rs600_asic = {
.
set_pcie_lanes
=
NULL
,
.
set_pcie_lanes
=
NULL
,
.
set_clock_gating
=
&
radeon_atom_set_clock_gating
,
.
set_clock_gating
=
&
radeon_atom_set_clock_gating
,
.
bandwidth_update
=
&
rs600_bandwidth_update
,
.
bandwidth_update
=
&
rs600_bandwidth_update
,
.
hdp_flush
=
&
r100_hdp_flush
,
.
hpd_init
=
&
rs600_hpd_init
,
.
hpd_init
=
&
rs600_hpd_init
,
.
hpd_fini
=
&
rs600_hpd_fini
,
.
hpd_fini
=
&
rs600_hpd_fini
,
.
hpd_sense
=
&
rs600_hpd_sense
,
.
hpd_sense
=
&
rs600_hpd_sense
,
...
@@ -372,7 +366,6 @@ static struct radeon_asic rs690_asic = {
...
@@ -372,7 +366,6 @@ static struct radeon_asic rs690_asic = {
.
set_surface_reg
=
r100_set_surface_reg
,
.
set_surface_reg
=
r100_set_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
bandwidth_update
=
&
rs690_bandwidth_update
,
.
bandwidth_update
=
&
rs690_bandwidth_update
,
.
hdp_flush
=
&
r100_hdp_flush
,
.
hpd_init
=
&
rs600_hpd_init
,
.
hpd_init
=
&
rs600_hpd_init
,
.
hpd_fini
=
&
rs600_hpd_fini
,
.
hpd_fini
=
&
rs600_hpd_fini
,
.
hpd_sense
=
&
rs600_hpd_sense
,
.
hpd_sense
=
&
rs600_hpd_sense
,
...
@@ -424,7 +417,6 @@ static struct radeon_asic rv515_asic = {
...
@@ -424,7 +417,6 @@ static struct radeon_asic rv515_asic = {
.
set_surface_reg
=
r100_set_surface_reg
,
.
set_surface_reg
=
r100_set_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
bandwidth_update
=
&
rv515_bandwidth_update
,
.
bandwidth_update
=
&
rv515_bandwidth_update
,
.
hdp_flush
=
&
r100_hdp_flush
,
.
hpd_init
=
&
rs600_hpd_init
,
.
hpd_init
=
&
rs600_hpd_init
,
.
hpd_fini
=
&
rs600_hpd_fini
,
.
hpd_fini
=
&
rs600_hpd_fini
,
.
hpd_sense
=
&
rs600_hpd_sense
,
.
hpd_sense
=
&
rs600_hpd_sense
,
...
@@ -467,7 +459,6 @@ static struct radeon_asic r520_asic = {
...
@@ -467,7 +459,6 @@ static struct radeon_asic r520_asic = {
.
set_surface_reg
=
r100_set_surface_reg
,
.
set_surface_reg
=
r100_set_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
clear_surface_reg
=
r100_clear_surface_reg
,
.
bandwidth_update
=
&
rv515_bandwidth_update
,
.
bandwidth_update
=
&
rv515_bandwidth_update
,
.
hdp_flush
=
&
r100_hdp_flush
,
.
hpd_init
=
&
rs600_hpd_init
,
.
hpd_init
=
&
rs600_hpd_init
,
.
hpd_fini
=
&
rs600_hpd_fini
,
.
hpd_fini
=
&
rs600_hpd_fini
,
.
hpd_sense
=
&
rs600_hpd_sense
,
.
hpd_sense
=
&
rs600_hpd_sense
,
...
@@ -508,7 +499,6 @@ int r600_ring_test(struct radeon_device *rdev);
...
@@ -508,7 +499,6 @@ int r600_ring_test(struct radeon_device *rdev);
int
r600_copy_blit
(
struct
radeon_device
*
rdev
,
int
r600_copy_blit
(
struct
radeon_device
*
rdev
,
uint64_t
src_offset
,
uint64_t
dst_offset
,
uint64_t
src_offset
,
uint64_t
dst_offset
,
unsigned
num_pages
,
struct
radeon_fence
*
fence
);
unsigned
num_pages
,
struct
radeon_fence
*
fence
);
void
r600_hdp_flush
(
struct
radeon_device
*
rdev
);
void
r600_hpd_init
(
struct
radeon_device
*
rdev
);
void
r600_hpd_init
(
struct
radeon_device
*
rdev
);
void
r600_hpd_fini
(
struct
radeon_device
*
rdev
);
void
r600_hpd_fini
(
struct
radeon_device
*
rdev
);
bool
r600_hpd_sense
(
struct
radeon_device
*
rdev
,
enum
radeon_hpd_id
hpd
);
bool
r600_hpd_sense
(
struct
radeon_device
*
rdev
,
enum
radeon_hpd_id
hpd
);
...
@@ -544,7 +534,6 @@ static struct radeon_asic r600_asic = {
...
@@ -544,7 +534,6 @@ static struct radeon_asic r600_asic = {
.
set_surface_reg
=
r600_set_surface_reg
,
.
set_surface_reg
=
r600_set_surface_reg
,
.
clear_surface_reg
=
r600_clear_surface_reg
,
.
clear_surface_reg
=
r600_clear_surface_reg
,
.
bandwidth_update
=
&
rv515_bandwidth_update
,
.
bandwidth_update
=
&
rv515_bandwidth_update
,
.
hdp_flush
=
&
r600_hdp_flush
,
.
hpd_init
=
&
r600_hpd_init
,
.
hpd_init
=
&
r600_hpd_init
,
.
hpd_fini
=
&
r600_hpd_fini
,
.
hpd_fini
=
&
r600_hpd_fini
,
.
hpd_sense
=
&
r600_hpd_sense
,
.
hpd_sense
=
&
r600_hpd_sense
,
...
@@ -589,7 +578,6 @@ static struct radeon_asic rv770_asic = {
...
@@ -589,7 +578,6 @@ static struct radeon_asic rv770_asic = {
.
set_surface_reg
=
r600_set_surface_reg
,
.
set_surface_reg
=
r600_set_surface_reg
,
.
clear_surface_reg
=
r600_clear_surface_reg
,
.
clear_surface_reg
=
r600_clear_surface_reg
,
.
bandwidth_update
=
&
rv515_bandwidth_update
,
.
bandwidth_update
=
&
rv515_bandwidth_update
,
.
hdp_flush
=
&
r600_hdp_flush
,
.
hpd_init
=
&
r600_hpd_init
,
.
hpd_init
=
&
r600_hpd_init
,
.
hpd_fini
=
&
r600_hpd_fini
,
.
hpd_fini
=
&
r600_hpd_fini
,
.
hpd_sense
=
&
r600_hpd_sense
,
.
hpd_sense
=
&
r600_hpd_sense
,
...
...
drivers/gpu/drm/radeon/radeon_atombios.c
浏览文件 @
e8d6d615
...
@@ -346,7 +346,9 @@ const int object_connector_convert[] = {
...
@@ -346,7 +346,9 @@ const int object_connector_convert[] = {
DRM_MODE_CONNECTOR_Unknown
,
DRM_MODE_CONNECTOR_Unknown
,
DRM_MODE_CONNECTOR_Unknown
,
DRM_MODE_CONNECTOR_Unknown
,
DRM_MODE_CONNECTOR_Unknown
,
DRM_MODE_CONNECTOR_Unknown
,
DRM_MODE_CONNECTOR_DisplayPort
DRM_MODE_CONNECTOR_DisplayPort
,
DRM_MODE_CONNECTOR_eDP
,
DRM_MODE_CONNECTOR_Unknown
};
};
bool
radeon_get_atom_connector_info_from_object_table
(
struct
drm_device
*
dev
)
bool
radeon_get_atom_connector_info_from_object_table
(
struct
drm_device
*
dev
)
...
@@ -936,6 +938,43 @@ bool radeon_atom_get_clock_info(struct drm_device *dev)
...
@@ -936,6 +938,43 @@ bool radeon_atom_get_clock_info(struct drm_device *dev)
return
false
;
return
false
;
}
}
union
igp_info
{
struct
_ATOM_INTEGRATED_SYSTEM_INFO
info
;
struct
_ATOM_INTEGRATED_SYSTEM_INFO_V2
info_2
;
};
bool
radeon_atombios_sideport_present
(
struct
radeon_device
*
rdev
)
{
struct
radeon_mode_info
*
mode_info
=
&
rdev
->
mode_info
;
int
index
=
GetIndexIntoMasterTable
(
DATA
,
IntegratedSystemInfo
);
union
igp_info
*
igp_info
;
u8
frev
,
crev
;
u16
data_offset
;
atom_parse_data_header
(
mode_info
->
atom_context
,
index
,
NULL
,
&
frev
,
&
crev
,
&
data_offset
);
igp_info
=
(
union
igp_info
*
)(
mode_info
->
atom_context
->
bios
+
data_offset
);
if
(
igp_info
)
{
switch
(
crev
)
{
case
1
:
if
(
igp_info
->
info
.
ucMemoryType
&
0xf0
)
return
true
;
break
;
case
2
:
if
(
igp_info
->
info_2
.
ucMemoryType
&
0x0f
)
return
true
;
break
;
default:
DRM_ERROR
(
"Unsupported IGP table: %d %d
\n
"
,
frev
,
crev
);
break
;
}
}
return
false
;
}
bool
radeon_atombios_get_tmds_info
(
struct
radeon_encoder
*
encoder
,
bool
radeon_atombios_get_tmds_info
(
struct
radeon_encoder
*
encoder
,
struct
radeon_encoder_int_tmds
*
tmds
)
struct
radeon_encoder_int_tmds
*
tmds
)
{
{
...
...
drivers/gpu/drm/radeon/radeon_combios.c
浏览文件 @
e8d6d615
...
@@ -595,6 +595,20 @@ bool radeon_combios_get_clock_info(struct drm_device *dev)
...
@@ -595,6 +595,20 @@ bool radeon_combios_get_clock_info(struct drm_device *dev)
return
false
;
return
false
;
}
}
bool
radeon_combios_sideport_present
(
struct
radeon_device
*
rdev
)
{
struct
drm_device
*
dev
=
rdev
->
ddev
;
u16
igp_info
;
igp_info
=
combios_get_table_offset
(
dev
,
COMBIOS_INTEGRATED_SYSTEM_INFO_TABLE
);
if
(
igp_info
)
{
if
(
RBIOS16
(
igp_info
+
0x4
))
return
true
;
}
return
false
;
}
static
const
uint32_t
default_primarydac_adj
[
CHIP_LAST
]
=
{
static
const
uint32_t
default_primarydac_adj
[
CHIP_LAST
]
=
{
0x00000808
,
/* r100 */
0x00000808
,
/* r100 */
0x00000808
,
/* rv100 */
0x00000808
,
/* rv100 */
...
...
drivers/gpu/drm/radeon/radeon_connectors.c
浏览文件 @
e8d6d615
...
@@ -49,8 +49,10 @@ void radeon_connector_hotplug(struct drm_connector *connector)
...
@@ -49,8 +49,10 @@ void radeon_connector_hotplug(struct drm_connector *connector)
if
(
radeon_connector
->
hpd
.
hpd
!=
RADEON_HPD_NONE
)
if
(
radeon_connector
->
hpd
.
hpd
!=
RADEON_HPD_NONE
)
radeon_hpd_set_polarity
(
rdev
,
radeon_connector
->
hpd
.
hpd
);
radeon_hpd_set_polarity
(
rdev
,
radeon_connector
->
hpd
.
hpd
);
if
(
connector
->
connector_type
==
DRM_MODE_CONNECTOR_DisplayPort
)
{
if
((
connector
->
connector_type
==
DRM_MODE_CONNECTOR_DisplayPort
)
||
if
(
radeon_dp_getsinktype
(
radeon_connector
)
==
CONNECTOR_OBJECT_ID_DISPLAYPORT
)
{
(
connector
->
connector_type
==
DRM_MODE_CONNECTOR_eDP
))
{
if
((
radeon_dp_getsinktype
(
radeon_connector
)
==
CONNECTOR_OBJECT_ID_DISPLAYPORT
)
||
(
radeon_dp_getsinktype
(
radeon_connector
)
==
CONNECTOR_OBJECT_ID_eDP
))
{
if
(
radeon_dp_needs_link_train
(
radeon_connector
))
{
if
(
radeon_dp_needs_link_train
(
radeon_connector
))
{
if
(
connector
->
encoder
)
if
(
connector
->
encoder
)
dp_link_train
(
connector
->
encoder
,
connector
);
dp_link_train
(
connector
->
encoder
,
connector
);
...
@@ -967,7 +969,8 @@ static enum drm_connector_status radeon_dp_detect(struct drm_connector *connecto
...
@@ -967,7 +969,8 @@ static enum drm_connector_status radeon_dp_detect(struct drm_connector *connecto
}
}
sink_type
=
radeon_dp_getsinktype
(
radeon_connector
);
sink_type
=
radeon_dp_getsinktype
(
radeon_connector
);
if
(
sink_type
==
CONNECTOR_OBJECT_ID_DISPLAYPORT
)
{
if
((
sink_type
==
CONNECTOR_OBJECT_ID_DISPLAYPORT
)
||
(
sink_type
==
CONNECTOR_OBJECT_ID_eDP
))
{
if
(
radeon_dp_getdpcd
(
radeon_connector
))
{
if
(
radeon_dp_getdpcd
(
radeon_connector
))
{
radeon_dig_connector
->
dp_sink_type
=
sink_type
;
radeon_dig_connector
->
dp_sink_type
=
sink_type
;
ret
=
connector_status_connected
;
ret
=
connector_status_connected
;
...
@@ -992,7 +995,8 @@ static int radeon_dp_mode_valid(struct drm_connector *connector,
...
@@ -992,7 +995,8 @@ static int radeon_dp_mode_valid(struct drm_connector *connector,
/* XXX check mode bandwidth */
/* XXX check mode bandwidth */
if
(
radeon_dig_connector
->
dp_sink_type
==
CONNECTOR_OBJECT_ID_DISPLAYPORT
)
if
((
radeon_dig_connector
->
dp_sink_type
==
CONNECTOR_OBJECT_ID_DISPLAYPORT
)
||
(
radeon_dig_connector
->
dp_sink_type
==
CONNECTOR_OBJECT_ID_eDP
))
return
radeon_dp_mode_valid_helper
(
radeon_connector
,
mode
);
return
radeon_dp_mode_valid_helper
(
radeon_connector
,
mode
);
else
else
return
MODE_OK
;
return
MODE_OK
;
...
@@ -1145,6 +1149,7 @@ radeon_add_atom_connector(struct drm_device *dev,
...
@@ -1145,6 +1149,7 @@ radeon_add_atom_connector(struct drm_device *dev,
subpixel_order
=
SubPixelHorizontalRGB
;
subpixel_order
=
SubPixelHorizontalRGB
;
break
;
break
;
case
DRM_MODE_CONNECTOR_DisplayPort
:
case
DRM_MODE_CONNECTOR_DisplayPort
:
case
DRM_MODE_CONNECTOR_eDP
:
radeon_dig_connector
=
kzalloc
(
sizeof
(
struct
radeon_connector_atom_dig
),
GFP_KERNEL
);
radeon_dig_connector
=
kzalloc
(
sizeof
(
struct
radeon_connector_atom_dig
),
GFP_KERNEL
);
if
(
!
radeon_dig_connector
)
if
(
!
radeon_dig_connector
)
goto
failed
;
goto
failed
;
...
@@ -1157,10 +1162,16 @@ radeon_add_atom_connector(struct drm_device *dev,
...
@@ -1157,10 +1162,16 @@ radeon_add_atom_connector(struct drm_device *dev,
goto
failed
;
goto
failed
;
if
(
i2c_bus
->
valid
)
{
if
(
i2c_bus
->
valid
)
{
/* add DP i2c bus */
/* add DP i2c bus */
radeon_dig_connector
->
dp_i2c_bus
=
radeon_i2c_create_dp
(
dev
,
i2c_bus
,
"DP-auxch"
);
if
(
connector_type
==
DRM_MODE_CONNECTOR_eDP
)
radeon_dig_connector
->
dp_i2c_bus
=
radeon_i2c_create_dp
(
dev
,
i2c_bus
,
"eDP-auxch"
);
else
radeon_dig_connector
->
dp_i2c_bus
=
radeon_i2c_create_dp
(
dev
,
i2c_bus
,
"DP-auxch"
);
if
(
!
radeon_dig_connector
->
dp_i2c_bus
)
if
(
!
radeon_dig_connector
->
dp_i2c_bus
)
goto
failed
;
goto
failed
;
radeon_connector
->
ddc_bus
=
radeon_i2c_create
(
dev
,
i2c_bus
,
"DP"
);
if
(
connector_type
==
DRM_MODE_CONNECTOR_eDP
)
radeon_connector
->
ddc_bus
=
radeon_i2c_create
(
dev
,
i2c_bus
,
"eDP"
);
else
radeon_connector
->
ddc_bus
=
radeon_i2c_create
(
dev
,
i2c_bus
,
"DP"
);
if
(
!
radeon_connector
->
ddc_bus
)
if
(
!
radeon_connector
->
ddc_bus
)
goto
failed
;
goto
failed
;
}
}
...
...
drivers/gpu/drm/radeon/radeon_display.c
浏览文件 @
e8d6d615
...
@@ -234,7 +234,7 @@ static const char *encoder_names[34] = {
...
@@ -234,7 +234,7 @@ static const char *encoder_names[34] = {
"INTERNAL_UNIPHY2"
,
"INTERNAL_UNIPHY2"
,
};
};
static
const
char
*
connector_names
[
1
3
]
=
{
static
const
char
*
connector_names
[
1
5
]
=
{
"Unknown"
,
"Unknown"
,
"VGA"
,
"VGA"
,
"DVI-I"
,
"DVI-I"
,
...
@@ -248,6 +248,8 @@ static const char *connector_names[13] = {
...
@@ -248,6 +248,8 @@ static const char *connector_names[13] = {
"DisplayPort"
,
"DisplayPort"
,
"HDMI-A"
,
"HDMI-A"
,
"HDMI-B"
,
"HDMI-B"
,
"TV"
,
"eDP"
,
};
};
static
const
char
*
hpd_names
[
7
]
=
{
static
const
char
*
hpd_names
[
7
]
=
{
...
@@ -352,7 +354,8 @@ int radeon_ddc_get_modes(struct radeon_connector *radeon_connector)
...
@@ -352,7 +354,8 @@ int radeon_ddc_get_modes(struct radeon_connector *radeon_connector)
{
{
int
ret
=
0
;
int
ret
=
0
;
if
(
radeon_connector
->
base
.
connector_type
==
DRM_MODE_CONNECTOR_DisplayPort
)
{
if
((
radeon_connector
->
base
.
connector_type
==
DRM_MODE_CONNECTOR_DisplayPort
)
||
(
radeon_connector
->
base
.
connector_type
==
DRM_MODE_CONNECTOR_eDP
))
{
struct
radeon_connector_atom_dig
*
dig
=
radeon_connector
->
con_priv
;
struct
radeon_connector_atom_dig
*
dig
=
radeon_connector
->
con_priv
;
if
(
dig
->
dp_i2c_bus
)
if
(
dig
->
dp_i2c_bus
)
radeon_connector
->
edid
=
drm_get_edid
(
&
radeon_connector
->
base
,
&
dig
->
dp_i2c_bus
->
adapter
);
radeon_connector
->
edid
=
drm_get_edid
(
&
radeon_connector
->
base
,
&
dig
->
dp_i2c_bus
->
adapter
);
...
...
drivers/gpu/drm/radeon/radeon_encoders.c
浏览文件 @
e8d6d615
...
@@ -596,21 +596,23 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
...
@@ -596,21 +596,23 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
return
ATOM_ENCODER_MODE_LVDS
;
return
ATOM_ENCODER_MODE_LVDS
;
break
;
break
;
case
DRM_MODE_CONNECTOR_DisplayPort
:
case
DRM_MODE_CONNECTOR_DisplayPort
:
case
DRM_MODE_CONNECTOR_eDP
:
radeon_dig_connector
=
radeon_connector
->
con_priv
;
radeon_dig_connector
=
radeon_connector
->
con_priv
;
if
(
radeon_dig_connector
->
dp_sink_type
==
CONNECTOR_OBJECT_ID_DISPLAYPORT
)
if
((
radeon_dig_connector
->
dp_sink_type
==
CONNECTOR_OBJECT_ID_DISPLAYPORT
)
||
(
radeon_dig_connector
->
dp_sink_type
==
CONNECTOR_OBJECT_ID_eDP
))
return
ATOM_ENCODER_MODE_DP
;
return
ATOM_ENCODER_MODE_DP
;
else
if
(
drm_detect_hdmi_monitor
(
radeon_connector
->
edid
))
else
if
(
drm_detect_hdmi_monitor
(
radeon_connector
->
edid
))
return
ATOM_ENCODER_MODE_HDMI
;
return
ATOM_ENCODER_MODE_HDMI
;
else
else
return
ATOM_ENCODER_MODE_DVI
;
return
ATOM_ENCODER_MODE_DVI
;
break
;
break
;
case
CONNECTOR_DVI_
A
:
case
DRM_MODE_CONNECTOR_DVI
A
:
case
CONNECTOR_VGA
:
case
DRM_MODE_
CONNECTOR_VGA
:
return
ATOM_ENCODER_MODE_CRT
;
return
ATOM_ENCODER_MODE_CRT
;
break
;
break
;
case
CONNECTOR_STV
:
case
DRM_MODE_CONNECTOR_Composite
:
case
CONNECTOR_CTV
:
case
DRM_MODE_CONNECTOR_SVIDEO
:
case
CONNECTOR_
DIN
:
case
DRM_MODE_CONNECTOR_9Pin
DIN
:
/* fix me */
/* fix me */
return
ATOM_ENCODER_MODE_TV
;
return
ATOM_ENCODER_MODE_TV
;
/*return ATOM_ENCODER_MODE_CV;*/
/*return ATOM_ENCODER_MODE_CV;*/
...
...
drivers/gpu/drm/radeon/radeon_gem.c
浏览文件 @
e8d6d615
...
@@ -131,7 +131,6 @@ int radeon_gem_set_domain(struct drm_gem_object *gobj,
...
@@ -131,7 +131,6 @@ int radeon_gem_set_domain(struct drm_gem_object *gobj,
printk
(
KERN_ERR
"Failed to wait for object !
\n
"
);
printk
(
KERN_ERR
"Failed to wait for object !
\n
"
);
return
r
;
return
r
;
}
}
radeon_hdp_flush
(
robj
->
rdev
);
}
}
return
0
;
return
0
;
}
}
...
@@ -312,7 +311,6 @@ int radeon_gem_wait_idle_ioctl(struct drm_device *dev, void *data,
...
@@ -312,7 +311,6 @@ int radeon_gem_wait_idle_ioctl(struct drm_device *dev, void *data,
mutex_lock
(
&
dev
->
struct_mutex
);
mutex_lock
(
&
dev
->
struct_mutex
);
drm_gem_object_unreference
(
gobj
);
drm_gem_object_unreference
(
gobj
);
mutex_unlock
(
&
dev
->
struct_mutex
);
mutex_unlock
(
&
dev
->
struct_mutex
);
radeon_hdp_flush
(
robj
->
rdev
);
return
r
;
return
r
;
}
}
...
...
drivers/gpu/drm/radeon/radeon_irq_kms.c
浏览文件 @
e8d6d615
...
@@ -97,6 +97,7 @@ void radeon_driver_irq_uninstall_kms(struct drm_device *dev)
...
@@ -97,6 +97,7 @@ void radeon_driver_irq_uninstall_kms(struct drm_device *dev)
rdev
->
irq
.
sw_int
=
false
;
rdev
->
irq
.
sw_int
=
false
;
for
(
i
=
0
;
i
<
2
;
i
++
)
{
for
(
i
=
0
;
i
<
2
;
i
++
)
{
rdev
->
irq
.
crtc_vblank_int
[
i
]
=
false
;
rdev
->
irq
.
crtc_vblank_int
[
i
]
=
false
;
rdev
->
irq
.
hpd
[
i
]
=
false
;
}
}
radeon_irq_set
(
rdev
);
radeon_irq_set
(
rdev
);
}
}
...
@@ -128,17 +129,22 @@ int radeon_irq_kms_init(struct radeon_device *rdev)
...
@@ -128,17 +129,22 @@ int radeon_irq_kms_init(struct radeon_device *rdev)
DRM_INFO
(
"radeon: using MSI.
\n
"
);
DRM_INFO
(
"radeon: using MSI.
\n
"
);
}
}
}
}
drm_irq_install
(
rdev
->
ddev
);
rdev
->
irq
.
installed
=
true
;
rdev
->
irq
.
installed
=
true
;
r
=
drm_irq_install
(
rdev
->
ddev
);
if
(
r
)
{
rdev
->
irq
.
installed
=
false
;
return
r
;
}
DRM_INFO
(
"radeon: irq initialized.
\n
"
);
DRM_INFO
(
"radeon: irq initialized.
\n
"
);
return
0
;
return
0
;
}
}
void
radeon_irq_kms_fini
(
struct
radeon_device
*
rdev
)
void
radeon_irq_kms_fini
(
struct
radeon_device
*
rdev
)
{
{
drm_vblank_cleanup
(
rdev
->
ddev
);
if
(
rdev
->
irq
.
installed
)
{
if
(
rdev
->
irq
.
installed
)
{
rdev
->
irq
.
installed
=
false
;
drm_irq_uninstall
(
rdev
->
ddev
);
drm_irq_uninstall
(
rdev
->
ddev
);
rdev
->
irq
.
installed
=
false
;
if
(
rdev
->
msi_enabled
)
if
(
rdev
->
msi_enabled
)
pci_disable_msi
(
rdev
->
pdev
);
pci_disable_msi
(
rdev
->
pdev
);
}
}
...
...
drivers/gpu/drm/radeon/radeon_legacy_tv.c
浏览文件 @
e8d6d615
...
@@ -77,7 +77,7 @@ struct radeon_tv_mode_constants {
...
@@ -77,7 +77,7 @@ struct radeon_tv_mode_constants {
unsigned
pix_to_tv
;
unsigned
pix_to_tv
;
};
};
static
const
uint16_t
hor_timing_NTSC
[]
=
{
static
const
uint16_t
hor_timing_NTSC
[
MAX_H_CODE_TIMING_LEN
]
=
{
0x0007
,
0x0007
,
0x003f
,
0x003f
,
0x0263
,
0x0263
,
...
@@ -98,7 +98,7 @@ static const uint16_t hor_timing_NTSC[] = {
...
@@ -98,7 +98,7 @@ static const uint16_t hor_timing_NTSC[] = {
0
0
};
};
static
const
uint16_t
vert_timing_NTSC
[]
=
{
static
const
uint16_t
vert_timing_NTSC
[
MAX_V_CODE_TIMING_LEN
]
=
{
0x2001
,
0x2001
,
0x200d
,
0x200d
,
0x1006
,
0x1006
,
...
@@ -115,7 +115,7 @@ static const uint16_t vert_timing_NTSC[] = {
...
@@ -115,7 +115,7 @@ static const uint16_t vert_timing_NTSC[] = {
0
0
};
};
static
const
uint16_t
hor_timing_PAL
[]
=
{
static
const
uint16_t
hor_timing_PAL
[
MAX_H_CODE_TIMING_LEN
]
=
{
0x0007
,
0x0007
,
0x0058
,
0x0058
,
0x027c
,
0x027c
,
...
@@ -136,7 +136,7 @@ static const uint16_t hor_timing_PAL[] = {
...
@@ -136,7 +136,7 @@ static const uint16_t hor_timing_PAL[] = {
0
0
};
};
static
const
uint16_t
vert_timing_PAL
[
]
=
{
static
const
uint16_t
vert_timing_PAL
[
MAX_V_CODE_TIMING_LEN
]
=
{
0x2001
,
0x2001
,
0x200c
,
0x200c
,
0x1005
,
0x1005
,
...
@@ -623,9 +623,9 @@ void radeon_legacy_tv_mode_set(struct drm_encoder *encoder,
...
@@ -623,9 +623,9 @@ void radeon_legacy_tv_mode_set(struct drm_encoder *encoder,
}
}
flicker_removal
=
(
tmp
+
500
)
/
1000
;
flicker_removal
=
(
tmp
+
500
)
/
1000
;
if
(
flicker_removal
<
3
)
if
(
flicker_removal
<
2
)
flicker_removal
=
3
;
flicker_removal
=
2
;
for
(
i
=
0
;
i
<
6
;
++
i
)
{
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
SLOPE_limit
)
;
++
i
)
{
if
(
flicker_removal
==
SLOPE_limit
[
i
])
if
(
flicker_removal
==
SLOPE_limit
[
i
])
break
;
break
;
}
}
...
...
drivers/gpu/drm/radeon/radeon_mode.h
浏览文件 @
e8d6d615
...
@@ -46,32 +46,6 @@ struct radeon_device;
...
@@ -46,32 +46,6 @@ struct radeon_device;
#define to_radeon_encoder(x) container_of(x, struct radeon_encoder, base)
#define to_radeon_encoder(x) container_of(x, struct radeon_encoder, base)
#define to_radeon_framebuffer(x) container_of(x, struct radeon_framebuffer, base)
#define to_radeon_framebuffer(x) container_of(x, struct radeon_framebuffer, base)
enum
radeon_connector_type
{
CONNECTOR_NONE
,
CONNECTOR_VGA
,
CONNECTOR_DVI_I
,
CONNECTOR_DVI_D
,
CONNECTOR_DVI_A
,
CONNECTOR_STV
,
CONNECTOR_CTV
,
CONNECTOR_LVDS
,
CONNECTOR_DIGITAL
,
CONNECTOR_SCART
,
CONNECTOR_HDMI_TYPE_A
,
CONNECTOR_HDMI_TYPE_B
,
CONNECTOR_0XC
,
CONNECTOR_0XD
,
CONNECTOR_DIN
,
CONNECTOR_DISPLAY_PORT
,
CONNECTOR_UNSUPPORTED
};
enum
radeon_dvi_type
{
DVI_AUTO
,
DVI_DIGITAL
,
DVI_ANALOG
};
enum
radeon_rmx_type
{
enum
radeon_rmx_type
{
RMX_OFF
,
RMX_OFF
,
RMX_FULL
,
RMX_FULL
,
...
...
drivers/gpu/drm/radeon/radeon_object.c
浏览文件 @
e8d6d615
...
@@ -221,8 +221,9 @@ int radeon_bo_unpin(struct radeon_bo *bo)
...
@@ -221,8 +221,9 @@ int radeon_bo_unpin(struct radeon_bo *bo)
int
radeon_bo_evict_vram
(
struct
radeon_device
*
rdev
)
int
radeon_bo_evict_vram
(
struct
radeon_device
*
rdev
)
{
{
if
(
rdev
->
flags
&
RADEON_IS_IGP
)
{
if
(
rdev
->
flags
&
RADEON_IS_IGP
)
{
/* Useless to evict on IGP chips */
if
(
rdev
->
mc
.
igp_sideport_enabled
==
false
)
return
0
;
/* Useless to evict on IGP chips */
return
0
;
}
}
return
ttm_bo_evict_mm
(
&
rdev
->
mman
.
bdev
,
TTM_PL_VRAM
);
return
ttm_bo_evict_mm
(
&
rdev
->
mman
.
bdev
,
TTM_PL_VRAM
);
}
}
...
...
drivers/gpu/drm/radeon/rs400.c
浏览文件 @
e8d6d615
...
@@ -356,6 +356,7 @@ static int rs400_mc_init(struct radeon_device *rdev)
...
@@ -356,6 +356,7 @@ static int rs400_mc_init(struct radeon_device *rdev)
rdev
->
mc
.
vram_location
=
G_00015C_MC_FB_START
(
tmp
)
<<
16
;
rdev
->
mc
.
vram_location
=
G_00015C_MC_FB_START
(
tmp
)
<<
16
;
rdev
->
mc
.
gtt_location
=
0xFFFFFFFFUL
;
rdev
->
mc
.
gtt_location
=
0xFFFFFFFFUL
;
r
=
radeon_mc_setup
(
rdev
);
r
=
radeon_mc_setup
(
rdev
);
rdev
->
mc
.
igp_sideport_enabled
=
radeon_combios_sideport_present
(
rdev
);
if
(
r
)
if
(
r
)
return
r
;
return
r
;
return
0
;
return
0
;
...
@@ -395,6 +396,7 @@ static int rs400_startup(struct radeon_device *rdev)
...
@@ -395,6 +396,7 @@ static int rs400_startup(struct radeon_device *rdev)
return
r
;
return
r
;
/* Enable IRQ */
/* Enable IRQ */
r100_irq_set
(
rdev
);
r100_irq_set
(
rdev
);
rdev
->
config
.
r300
.
hdp_cntl
=
RREG32
(
RADEON_HOST_PATH_CNTL
);
/* 1M ring buffer */
/* 1M ring buffer */
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
if
(
r
)
{
if
(
r
)
{
...
...
drivers/gpu/drm/radeon/rs600.c
浏览文件 @
e8d6d615
...
@@ -56,6 +56,7 @@ int rs600_mc_init(struct radeon_device *rdev)
...
@@ -56,6 +56,7 @@ int rs600_mc_init(struct radeon_device *rdev)
rdev
->
mc
.
vram_location
=
G_000004_MC_FB_START
(
tmp
)
<<
16
;
rdev
->
mc
.
vram_location
=
G_000004_MC_FB_START
(
tmp
)
<<
16
;
rdev
->
mc
.
gtt_location
=
0xffffffffUL
;
rdev
->
mc
.
gtt_location
=
0xffffffffUL
;
r
=
radeon_mc_setup
(
rdev
);
r
=
radeon_mc_setup
(
rdev
);
rdev
->
mc
.
igp_sideport_enabled
=
radeon_atombios_sideport_present
(
rdev
);
if
(
r
)
if
(
r
)
return
r
;
return
r
;
return
0
;
return
0
;
...
@@ -134,7 +135,8 @@ void rs600_hpd_init(struct radeon_device *rdev)
...
@@ -134,7 +135,8 @@ void rs600_hpd_init(struct radeon_device *rdev)
break
;
break
;
}
}
}
}
rs600_irq_set
(
rdev
);
if
(
rdev
->
irq
.
installed
)
rs600_irq_set
(
rdev
);
}
}
void
rs600_hpd_fini
(
struct
radeon_device
*
rdev
)
void
rs600_hpd_fini
(
struct
radeon_device
*
rdev
)
...
@@ -315,6 +317,11 @@ int rs600_irq_set(struct radeon_device *rdev)
...
@@ -315,6 +317,11 @@ int rs600_irq_set(struct radeon_device *rdev)
u32
hpd2
=
RREG32
(
R_007D18_DC_HOT_PLUG_DETECT2_INT_CONTROL
)
&
u32
hpd2
=
RREG32
(
R_007D18_DC_HOT_PLUG_DETECT2_INT_CONTROL
)
&
~
S_007D18_DC_HOT_PLUG_DETECT2_INT_EN
(
1
);
~
S_007D18_DC_HOT_PLUG_DETECT2_INT_EN
(
1
);
if
(
!
rdev
->
irq
.
installed
)
{
WARN
(
1
,
"Can't enable IRQ/MSI because no handler is installed.
\n
"
);
WREG32
(
R_000040_GEN_INT_CNTL
,
0
);
return
-
EINVAL
;
}
if
(
rdev
->
irq
.
sw_int
)
{
if
(
rdev
->
irq
.
sw_int
)
{
tmp
|=
S_000040_SW_INT_EN
(
1
);
tmp
|=
S_000040_SW_INT_EN
(
1
);
}
}
...
@@ -553,6 +560,7 @@ static int rs600_startup(struct radeon_device *rdev)
...
@@ -553,6 +560,7 @@ static int rs600_startup(struct radeon_device *rdev)
return
r
;
return
r
;
/* Enable IRQ */
/* Enable IRQ */
rs600_irq_set
(
rdev
);
rs600_irq_set
(
rdev
);
rdev
->
config
.
r300
.
hdp_cntl
=
RREG32
(
RADEON_HOST_PATH_CNTL
);
/* 1M ring buffer */
/* 1M ring buffer */
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
if
(
r
)
{
if
(
r
)
{
...
...
drivers/gpu/drm/radeon/rs690.c
浏览文件 @
e8d6d615
...
@@ -172,6 +172,7 @@ static int rs690_mc_init(struct radeon_device *rdev)
...
@@ -172,6 +172,7 @@ static int rs690_mc_init(struct radeon_device *rdev)
rdev
->
mc
.
vram_location
=
G_000100_MC_FB_START
(
tmp
)
<<
16
;
rdev
->
mc
.
vram_location
=
G_000100_MC_FB_START
(
tmp
)
<<
16
;
rdev
->
mc
.
gtt_location
=
0xFFFFFFFFUL
;
rdev
->
mc
.
gtt_location
=
0xFFFFFFFFUL
;
r
=
radeon_mc_setup
(
rdev
);
r
=
radeon_mc_setup
(
rdev
);
rdev
->
mc
.
igp_sideport_enabled
=
radeon_atombios_sideport_present
(
rdev
);
if
(
r
)
if
(
r
)
return
r
;
return
r
;
return
0
;
return
0
;
...
@@ -625,6 +626,7 @@ static int rs690_startup(struct radeon_device *rdev)
...
@@ -625,6 +626,7 @@ static int rs690_startup(struct radeon_device *rdev)
return
r
;
return
r
;
/* Enable IRQ */
/* Enable IRQ */
rs600_irq_set
(
rdev
);
rs600_irq_set
(
rdev
);
rdev
->
config
.
r300
.
hdp_cntl
=
RREG32
(
RADEON_HOST_PATH_CNTL
);
/* 1M ring buffer */
/* 1M ring buffer */
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
if
(
r
)
{
if
(
r
)
{
...
...
drivers/gpu/drm/radeon/rv515.c
浏览文件 @
e8d6d615
...
@@ -479,6 +479,7 @@ static int rv515_startup(struct radeon_device *rdev)
...
@@ -479,6 +479,7 @@ static int rv515_startup(struct radeon_device *rdev)
}
}
/* Enable IRQ */
/* Enable IRQ */
rs600_irq_set
(
rdev
);
rs600_irq_set
(
rdev
);
rdev
->
config
.
r300
.
hdp_cntl
=
RREG32
(
RADEON_HOST_PATH_CNTL
);
/* 1M ring buffer */
/* 1M ring buffer */
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
r
=
r100_cp_init
(
rdev
,
1024
*
1024
);
if
(
r
)
{
if
(
r
)
{
...
...
drivers/gpu/drm/radeon/rv770.c
浏览文件 @
e8d6d615
...
@@ -1096,8 +1096,7 @@ void rv770_fini(struct radeon_device *rdev)
...
@@ -1096,8 +1096,7 @@ void rv770_fini(struct radeon_device *rdev)
radeon_gem_fini
(
rdev
);
radeon_gem_fini
(
rdev
);
radeon_fence_driver_fini
(
rdev
);
radeon_fence_driver_fini
(
rdev
);
radeon_clocks_fini
(
rdev
);
radeon_clocks_fini
(
rdev
);
if
(
rdev
->
flags
&
RADEON_IS_AGP
)
radeon_agp_fini
(
rdev
);
radeon_agp_fini
(
rdev
);
radeon_bo_fini
(
rdev
);
radeon_bo_fini
(
rdev
);
radeon_atombios_fini
(
rdev
);
radeon_atombios_fini
(
rdev
);
kfree
(
rdev
->
bios
);
kfree
(
rdev
->
bios
);
...
...
include/drm/drm_mode.h
浏览文件 @
e8d6d615
...
@@ -160,6 +160,7 @@ struct drm_mode_get_encoder {
...
@@ -160,6 +160,7 @@ struct drm_mode_get_encoder {
#define DRM_MODE_CONNECTOR_HDMIA 11
#define DRM_MODE_CONNECTOR_HDMIA 11
#define DRM_MODE_CONNECTOR_HDMIB 12
#define DRM_MODE_CONNECTOR_HDMIB 12
#define DRM_MODE_CONNECTOR_TV 13
#define DRM_MODE_CONNECTOR_TV 13
#define DRM_MODE_CONNECTOR_eDP 14
struct
drm_mode_get_connector
{
struct
drm_mode_get_connector
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录