Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
9253d2d8
Commit
9253d2d8
authored
Oct 18, 2012
by
Tomi Valkeinen
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '3.8/dss-version'
Merge omapdss code to remove cpu_is_* checks from the driver.
parents
da6c5687
97fbd0fc
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
162 additions
and
59 deletions
+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
No files found.
arch/arm/mach-omap2/display.c
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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 */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment