Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
9253d2d8
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
9253d2d8
编写于
10月 18, 2012
作者:
T
Tomi Valkeinen
浏览文件
操作
浏览文件
下载
差异文件
Merge branch '3.8/dss-version'
Merge omapdss code to remove cpu_is_* checks from the driver.
上级
da6c5687
97fbd0fc
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
162 addition
and
59 deletion
+162
-59
arch/arm/mach-omap2/display.c
arch/arm/mach-omap2/display.c
+38
-0
drivers/video/omap2/dss/Kconfig
drivers/video/omap2/dss/Kconfig
+0
-5
drivers/video/omap2/dss/core.c
drivers/video/omap2/dss/core.c
+1
-1
drivers/video/omap2/dss/dispc.c
drivers/video/omap2/dss/dispc.c
+31
-17
drivers/video/omap2/dss/dss.c
drivers/video/omap2/dss/dss.c
+28
-12
drivers/video/omap2/dss/dss_features.c
drivers/video/omap2/dss/dss_features.c
+44
-20
drivers/video/omap2/dss/dss_features.h
drivers/video/omap2/dss/dss_features.h
+3
-2
drivers/video/omap2/dss/hdmi.c
drivers/video/omap2/dss/hdmi.c
+2
-1
drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
+1
-1
include/video/omapdss.h
include/video/omapdss.h
+14
-0
未找到文件。
arch/arm/mach-omap2/display.c
浏览文件 @
9253d2d8
...
...
@@ -284,6 +284,35 @@ static struct platform_device *create_simple_dss_pdev(const char *pdev_name,
return
ERR_PTR
(
r
);
}
static
enum
omapdss_version
__init
omap_display_get_version
(
void
)
{
if
(
cpu_is_omap24xx
())
return
OMAPDSS_VER_OMAP24xx
;
else
if
(
cpu_is_omap3630
())
return
OMAPDSS_VER_OMAP3630
;
else
if
(
cpu_is_omap34xx
())
{
if
(
soc_is_am35xx
())
{
return
OMAPDSS_VER_AM35xx
;
}
else
{
if
(
omap_rev
()
<
OMAP3430_REV_ES3_0
)
return
OMAPDSS_VER_OMAP34xx_ES1
;
else
return
OMAPDSS_VER_OMAP34xx_ES3
;
}
}
else
if
(
omap_rev
()
==
OMAP4430_REV_ES1_0
)
return
OMAPDSS_VER_OMAP4430_ES1
;
else
if
(
omap_rev
()
==
OMAP4430_REV_ES2_0
||
omap_rev
()
==
OMAP4430_REV_ES2_1
||
omap_rev
()
==
OMAP4430_REV_ES2_2
)
return
OMAPDSS_VER_OMAP4430_ES2
;
else
if
(
cpu_is_omap44xx
())
return
OMAPDSS_VER_OMAP4
;
else
if
(
soc_is_omap54xx
())
return
OMAPDSS_VER_OMAP5
;
else
return
OMAPDSS_VER_UNKNOWN
;
}
int
__init
omap_display_init
(
struct
omap_dss_board_info
*
board_data
)
{
int
r
=
0
;
...
...
@@ -291,9 +320,18 @@ int __init omap_display_init(struct omap_dss_board_info *board_data)
int
i
,
oh_count
;
const
struct
omap_dss_hwmod_data
*
curr_dss_hwmod
;
struct
platform_device
*
dss_pdev
;
enum
omapdss_version
ver
;
/* create omapdss device */
ver
=
omap_display_get_version
();
if
(
ver
==
OMAPDSS_VER_UNKNOWN
)
{
pr_err
(
"DSS not supported on this SoC
\n
"
);
return
-
ENODEV
;
}
board_data
->
version
=
ver
;
board_data
->
dsi_enable_pads
=
omap_dsi_enable_pads
;
board_data
->
dsi_disable_pads
=
omap_dsi_disable_pads
;
board_data
->
get_context_loss_count
=
omap_pm_get_dev_context_loss_count
;
...
...
drivers/video/omap2/dss/Kconfig
浏览文件 @
9253d2d8
menuconfig OMAP2_DSS
tristate "OMAP2+ Display Subsystem support"
depends on ARCH_OMAP2PLUS
help
OMAP2+ Display Subsystem support.
...
...
@@ -72,7 +71,6 @@ config OMAP2_DSS_VENC
config OMAP4_DSS_HDMI
bool "HDMI support"
depends on ARCH_OMAP4
default y
help
HDMI Interface. This adds the High Definition Multimedia Interface.
...
...
@@ -80,11 +78,9 @@ config OMAP4_DSS_HDMI
config OMAP4_DSS_HDMI_AUDIO
bool
depends on OMAP4_DSS_HDMI
config OMAP2_DSS_SDI
bool "SDI support"
depends on ARCH_OMAP3
default n
help
SDI (Serial Display Interface) support.
...
...
@@ -94,7 +90,6 @@ config OMAP2_DSS_SDI
config OMAP2_DSS_DSI
bool "DSI support"
depends on ARCH_OMAP3 || ARCH_OMAP4 || ARCH_OMAP5
default n
help
MIPI DSI (Display Serial Interface) support.
...
...
drivers/video/omap2/dss/core.c
浏览文件 @
9253d2d8
...
...
@@ -232,7 +232,7 @@ static int __init omap_dss_probe(struct platform_device *pdev)
core
.
pdev
=
pdev
;
dss_features_init
();
dss_features_init
(
pdata
->
version
);
dss_apply_init
();
...
...
drivers/video/omap2/dss/dispc.c
浏览文件 @
9253d2d8
...
...
@@ -36,8 +36,7 @@
#include <linux/interrupt.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <plat/cpu.h>
#include <linux/sizes.h>
#include <video/omapdss.h>
...
...
@@ -3353,7 +3352,7 @@ static void dispc_dump_regs(struct seq_file *s)
#define DISPC_REG(i, name) name(i)
#define DUMPREG(i, r) seq_printf(s, "%s(%s)%*s %08x\n", #r, p_names[i], \
48 - strlen(#r) - strlen(p_names[i]
), " ", \
(int)(48 - strlen(#r) - strlen(p_names[i])
), " ", \
dispc_read_reg(DISPC_REG(i, r)))
p_names
=
mgr_names
;
...
...
@@ -3430,7 +3429,7 @@ static void dispc_dump_regs(struct seq_file *s)
#define DISPC_REG(plane, name, i) name(plane, i)
#define DUMPREG(plane, name, i) \
seq_printf(s, "%s_%d(%s)%*s %08x\n", #name, i, p_names[plane], \
46 - strlen(#name) - strlen(p_names[plane]
), " ", \
(int)(46 - strlen(#name) - strlen(p_names[plane])
), " ", \
dispc_read_reg(DISPC_REG(plane, name, i)))
/* Video pipeline coefficient registers */
...
...
@@ -4032,29 +4031,44 @@ static const struct dispc_features omap44xx_dispc_feats __initconst = {
.
gfx_fifo_workaround
=
true
,
};
static
int
__init
dispc_init_features
(
struct
device
*
dev
)
static
int
__init
dispc_init_features
(
struct
platform_device
*
p
dev
)
{
struct
omap_dss_board_info
*
pdata
=
pdev
->
dev
.
platform_data
;
const
struct
dispc_features
*
src
;
struct
dispc_features
*
dst
;
dst
=
devm_kzalloc
(
dev
,
sizeof
(
*
dst
),
GFP_KERNEL
);
dst
=
devm_kzalloc
(
&
pdev
->
dev
,
sizeof
(
*
dst
),
GFP_KERNEL
);
if
(
!
dst
)
{
dev_err
(
dev
,
"Failed to allocate DISPC Features
\n
"
);
dev_err
(
&
pdev
->
dev
,
"Failed to allocate DISPC Features
\n
"
);
return
-
ENOMEM
;
}
if
(
cpu_is_omap24xx
())
{
switch
(
pdata
->
version
)
{
case
OMAPDSS_VER_OMAP24xx
:
src
=
&
omap24xx_dispc_feats
;
}
else
if
(
cpu_is_omap34xx
())
{
if
(
omap_rev
()
<
OMAP3430_REV_ES3_0
)
src
=
&
omap34xx_rev1_0_dispc_feats
;
else
src
=
&
omap34xx_rev3_0_dispc_feats
;
}
else
if
(
cpu_is_omap44xx
())
{
break
;
case
OMAPDSS_VER_OMAP34xx_ES1
:
src
=
&
omap34xx_rev1_0_dispc_feats
;
break
;
case
OMAPDSS_VER_OMAP34xx_ES3
:
case
OMAPDSS_VER_OMAP3630
:
case
OMAPDSS_VER_AM35xx
:
src
=
&
omap34xx_rev3_0_dispc_feats
;
break
;
case
OMAPDSS_VER_OMAP4430_ES1
:
case
OMAPDSS_VER_OMAP4430_ES2
:
case
OMAPDSS_VER_OMAP4
:
src
=
&
omap44xx_dispc_feats
;
}
else
if
(
soc_is_omap54xx
())
{
break
;
case
OMAPDSS_VER_OMAP5
:
src
=
&
omap44xx_dispc_feats
;
}
else
{
break
;
default:
return
-
ENODEV
;
}
...
...
@@ -4074,7 +4088,7 @@ static int __init omap_dispchw_probe(struct platform_device *pdev)
dispc
.
pdev
=
pdev
;
r
=
dispc_init_features
(
&
dispc
.
pdev
->
dev
);
r
=
dispc_init_features
(
dispc
.
p
dev
);
if
(
r
)
return
r
;
...
...
drivers/video/omap2/dss/dss.c
浏览文件 @
9253d2d8
...
...
@@ -32,11 +32,10 @@
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/gfp.h>
#include <linux/sizes.h>
#include <video/omapdss.h>
#include <plat/cpu.h>
#include "dss.h"
#include "dss_features.h"
...
...
@@ -792,29 +791,46 @@ static const struct dss_features omap54xx_dss_feats __initconst = {
.
dpi_select_source
=
&
dss_dpi_select_source_omap5
,
};
static
int
__init
dss_init_features
(
struct
device
*
dev
)
static
int
__init
dss_init_features
(
struct
platform_device
*
p
dev
)
{
struct
omap_dss_board_info
*
pdata
=
pdev
->
dev
.
platform_data
;
const
struct
dss_features
*
src
;
struct
dss_features
*
dst
;
dst
=
devm_kzalloc
(
dev
,
sizeof
(
*
dst
),
GFP_KERNEL
);
dst
=
devm_kzalloc
(
&
pdev
->
dev
,
sizeof
(
*
dst
),
GFP_KERNEL
);
if
(
!
dst
)
{
dev_err
(
dev
,
"Failed to allocate local DSS Features
\n
"
);
dev_err
(
&
pdev
->
dev
,
"Failed to allocate local DSS Features
\n
"
);
return
-
ENOMEM
;
}
if
(
cpu_is_omap24xx
())
switch
(
pdata
->
version
)
{
case
OMAPDSS_VER_OMAP24xx
:
src
=
&
omap24xx_dss_feats
;
else
if
(
cpu_is_omap34xx
())
break
;
case
OMAPDSS_VER_OMAP34xx_ES1
:
case
OMAPDSS_VER_OMAP34xx_ES3
:
case
OMAPDSS_VER_AM35xx
:
src
=
&
omap34xx_dss_feats
;
else
if
(
cpu_is_omap3630
())
break
;
case
OMAPDSS_VER_OMAP3630
:
src
=
&
omap3630_dss_feats
;
else
if
(
cpu_is_omap44xx
())
break
;
case
OMAPDSS_VER_OMAP4430_ES1
:
case
OMAPDSS_VER_OMAP4430_ES2
:
case
OMAPDSS_VER_OMAP4
:
src
=
&
omap44xx_dss_feats
;
else
if
(
soc_is_omap54xx
())
break
;
case
OMAPDSS_VER_OMAP5
:
src
=
&
omap54xx_dss_feats
;
else
break
;
default:
return
-
ENODEV
;
}
memcpy
(
dst
,
src
,
sizeof
(
*
dst
));
dss
.
feat
=
dst
;
...
...
@@ -831,7 +847,7 @@ static int __init omap_dsshw_probe(struct platform_device *pdev)
dss
.
pdev
=
pdev
;
r
=
dss_init_features
(
&
dss
.
pdev
->
dev
);
r
=
dss_init_features
(
dss
.
p
dev
);
if
(
r
)
return
r
;
...
...
drivers/video/omap2/dss/dss_features.c
浏览文件 @
9253d2d8
...
...
@@ -23,7 +23,6 @@
#include <linux/slab.h>
#include <video/omapdss.h>
#include <plat/cpu.h>
#include "dss.h"
#include "dss_features.h"
...
...
@@ -825,10 +824,20 @@ static const struct ti_hdmi_ip_ops omap4_hdmi_functions = {
};
void
dss_init_hdmi_ip_ops
(
struct
hdmi_ip_data
*
ip_data
)
void
dss_init_hdmi_ip_ops
(
struct
hdmi_ip_data
*
ip_data
,
enum
omapdss_version
version
)
{
if
(
cpu_is_omap44xx
())
switch
(
version
)
{
case
OMAPDSS_VER_OMAP4430_ES1
:
case
OMAPDSS_VER_OMAP4430_ES2
:
case
OMAPDSS_VER_OMAP4
:
ip_data
->
ops
=
&
omap4_hdmi_functions
;
break
;
default:
ip_data
->
ops
=
NULL
;
}
WARN_ON
(
ip_data
->
ops
==
NULL
);
}
#endif
...
...
@@ -929,29 +938,44 @@ bool dss_feat_rotation_type_supported(enum omap_dss_rotation_type rot_type)
return
omap_current_dss_features
->
supported_rotation_types
&
rot_type
;
}
void
dss_features_init
(
void
)
void
dss_features_init
(
enum
omapdss_version
version
)
{
if
(
cpu_is_omap24xx
())
switch
(
version
)
{
case
OMAPDSS_VER_OMAP24xx
:
omap_current_dss_features
=
&
omap2_dss_features
;
else
if
(
cpu_is_omap3630
())
break
;
case
OMAPDSS_VER_OMAP34xx_ES1
:
case
OMAPDSS_VER_OMAP34xx_ES3
:
omap_current_dss_features
=
&
omap3430_dss_features
;
break
;
case
OMAPDSS_VER_OMAP3630
:
omap_current_dss_features
=
&
omap3630_dss_features
;
else
if
(
cpu_is_omap34xx
())
{
if
(
soc_is_am35xx
())
{
omap_current_dss_features
=
&
am35xx_dss_features
;
}
else
{
omap_current_dss_features
=
&
omap3430_dss_features
;
}
}
else
if
(
omap_rev
()
==
OMAP4430_REV_ES1_0
)
break
;
case
OMAPDSS_VER_OMAP4430_ES1
:
omap_current_dss_features
=
&
omap4430_es1_0_dss_features
;
else
if
(
omap_rev
()
==
OMAP4430_REV_ES2_0
||
omap_rev
()
==
OMAP4430_REV_ES2_1
||
omap_rev
()
==
OMAP4430_REV_ES2_2
)
break
;
case
OMAPDSS_VER_OMAP4430_ES2
:
omap_current_dss_features
=
&
omap4430_es2_0_1_2_dss_features
;
else
if
(
cpu_is_omap44xx
())
break
;
case
OMAPDSS_VER_OMAP4
:
omap_current_dss_features
=
&
omap4_dss_features
;
else
if
(
soc_is_omap54xx
())
break
;
case
OMAPDSS_VER_OMAP5
:
omap_current_dss_features
=
&
omap5_dss_features
;
else
break
;
case
OMAPDSS_VER_AM35xx
:
omap_current_dss_features
=
&
am35xx_dss_features
;
break
;
default:
DSSWARN
(
"Unsupported OMAP version"
);
break
;
}
}
drivers/video/omap2/dss/dss_features.h
浏览文件 @
9253d2d8
...
...
@@ -123,8 +123,9 @@ bool dss_feat_rotation_type_supported(enum omap_dss_rotation_type rot_type);
bool
dss_has_feature
(
enum
dss_feat_id
id
);
void
dss_feat_get_reg_field
(
enum
dss_feat_reg_field
id
,
u8
*
start
,
u8
*
end
);
void
dss_features_init
(
void
);
void
dss_features_init
(
enum
omapdss_version
version
);
#if defined(CONFIG_OMAP4_DSS_HDMI)
void
dss_init_hdmi_ip_ops
(
struct
hdmi_ip_data
*
ip_data
);
void
dss_init_hdmi_ip_ops
(
struct
hdmi_ip_data
*
ip_data
,
enum
omapdss_version
version
);
#endif
#endif
drivers/video/omap2/dss/hdmi.c
浏览文件 @
9253d2d8
...
...
@@ -323,6 +323,7 @@ static void hdmi_runtime_put(void)
static
int
__init
hdmi_init_display
(
struct
omap_dss_device
*
dssdev
)
{
struct
omap_dss_board_info
*
pdata
=
hdmi
.
pdev
->
dev
.
platform_data
;
int
r
;
struct
gpio
gpios
[]
=
{
...
...
@@ -333,7 +334,7 @@ static int __init hdmi_init_display(struct omap_dss_device *dssdev)
DSSDBG
(
"init_display
\n
"
);
dss_init_hdmi_ip_ops
(
&
hdmi
.
ip_data
);
dss_init_hdmi_ip_ops
(
&
hdmi
.
ip_data
,
pdata
->
version
);
if
(
hdmi
.
vdda_hdmi_dac_reg
==
NULL
)
{
struct
regulator
*
reg
;
...
...
drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
浏览文件 @
9253d2d8
...
...
@@ -899,7 +899,7 @@ void ti_hdmi_4xxx_core_dump(struct hdmi_ip_data *ip_data, struct seq_file *s)
#define DUMPCOREAV(r) seq_printf(s, "%-35s %08x\n", #r,\
hdmi_read_reg(hdmi_av_base(ip_data), r))
#define DUMPCOREAV2(i, r) seq_printf(s, "%s[%d]%*s %08x\n", #r, i, \
(i < 10) ? 32 -
strlen(#r) : 31 -
strlen(#r), " ", \
(i < 10) ? 32 -
(int)strlen(#r) : 31 - (int)
strlen(#r), " ", \
hdmi_read_reg(hdmi_av_base(ip_data), CORE_REG(i, r)))
DUMPCORE
(
HDMI_CORE_SYS_VND_IDL
);
...
...
include/video/omapdss.h
浏览文件 @
9253d2d8
...
...
@@ -314,6 +314,19 @@ int dsi_vc_send_bta_sync(struct omap_dss_device *dssdev, int channel);
int
dsi_enable_video_output
(
struct
omap_dss_device
*
dssdev
,
int
channel
);
void
dsi_disable_video_output
(
struct
omap_dss_device
*
dssdev
,
int
channel
);
enum
omapdss_version
{
OMAPDSS_VER_UNKNOWN
=
0
,
OMAPDSS_VER_OMAP24xx
,
OMAPDSS_VER_OMAP34xx_ES1
,
/* OMAP3430 ES1.0, 2.0 */
OMAPDSS_VER_OMAP34xx_ES3
,
/* OMAP3430 ES3.0+ */
OMAPDSS_VER_OMAP3630
,
OMAPDSS_VER_AM35xx
,
OMAPDSS_VER_OMAP4430_ES1
,
/* OMAP4430 ES1.0 */
OMAPDSS_VER_OMAP4430_ES2
,
/* OMAP4430 ES2.0, 2.1, 2.2 */
OMAPDSS_VER_OMAP4
,
/* All other OMAP4s */
OMAPDSS_VER_OMAP5
,
};
/* Board specific data */
struct
omap_dss_board_info
{
int
(
*
get_context_loss_count
)(
struct
device
*
dev
);
...
...
@@ -323,6 +336,7 @@ struct omap_dss_board_info {
int
(
*
dsi_enable_pads
)(
int
dsi_id
,
unsigned
lane_mask
);
void
(
*
dsi_disable_pads
)(
int
dsi_id
,
unsigned
lane_mask
);
int
(
*
set_min_bus_tput
)(
struct
device
*
dev
,
unsigned
long
r
);
enum
omapdss_version
version
;
};
/* Init with the board info */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录