Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
64a9de8f
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看板
提交
64a9de8f
编写于
1月 28, 2012
作者:
F
Florian Tobias Schandinat
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-3.3-rc' of
git://gitorious.org/linux-omap-dss2/linux
into fbdev-for-linus
上级
f7f5ef0a
c49d005b
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
110 addition
and
22 deletion
+110
-22
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-4430sdp.c
+14
-4
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-omap2/board-omap4panda.c
+14
-4
arch/arm/mach-omap2/display.c
arch/arm/mach-omap2/display.c
+0
-4
drivers/video/omap2/dss/dispc.c
drivers/video/omap2/dss/dispc.c
+1
-1
drivers/video/omap2/dss/dsi.c
drivers/video/omap2/dss/dsi.c
+1
-1
drivers/video/omap2/dss/dss.c
drivers/video/omap2/dss/dss.c
+1
-1
drivers/video/omap2/dss/hdmi.c
drivers/video/omap2/dss/hdmi.c
+4
-1
drivers/video/omap2/dss/rfbi.c
drivers/video/omap2/dss/rfbi.c
+1
-1
drivers/video/omap2/dss/ti_hdmi.h
drivers/video/omap2/dss/ti_hdmi.h
+4
-0
drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
+64
-4
drivers/video/omap2/dss/venc.c
drivers/video/omap2/dss/venc.c
+1
-1
include/video/omapdss.h
include/video/omapdss.h
+5
-0
未找到文件。
arch/arm/mach-omap2/board-4430sdp.c
浏览文件 @
64a9de8f
...
...
@@ -52,8 +52,9 @@
#define ETH_KS8851_QUART 138
#define OMAP4_SFH7741_SENSOR_OUTPUT_GPIO 184
#define OMAP4_SFH7741_ENABLE_GPIO 188
#define HDMI_GPIO_
HPD 60
/* Hot plug pin for HDMI
*/
#define HDMI_GPIO_
CT_CP_HPD 60
/* HPD mode enable/disable
*/
#define HDMI_GPIO_LS_OE 41
/* Level shifter for HDMI */
#define HDMI_GPIO_HPD 63
/* Hotplug detect */
#define DISPLAY_SEL_GPIO 59
/* LCD2/PicoDLP switch */
#define DLP_POWER_ON_GPIO 40
...
...
@@ -596,8 +597,9 @@ static void __init omap_sfh7741prox_init(void)
}
static
struct
gpio
sdp4430_hdmi_gpios
[]
=
{
{
HDMI_GPIO_
HPD
,
GPIOF_OUT_INIT_HIGH
,
"hdmi_gpio_hpd"
},
{
HDMI_GPIO_
CT_CP_HPD
,
GPIOF_OUT_INIT_HIGH
,
"hdmi_gpio_ct_cp_hpd"
},
{
HDMI_GPIO_LS_OE
,
GPIOF_OUT_INIT_HIGH
,
"hdmi_gpio_ls_oe"
},
{
HDMI_GPIO_HPD
,
GPIOF_DIR_IN
,
"hdmi_gpio_hpd"
},
};
static
int
sdp4430_panel_enable_hdmi
(
struct
omap_dss_device
*
dssdev
)
...
...
@@ -614,8 +616,7 @@ static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev)
static
void
sdp4430_panel_disable_hdmi
(
struct
omap_dss_device
*
dssdev
)
{
gpio_free
(
HDMI_GPIO_LS_OE
);
gpio_free
(
HDMI_GPIO_HPD
);
gpio_free_array
(
sdp4430_hdmi_gpios
,
ARRAY_SIZE
(
sdp4430_hdmi_gpios
));
}
static
struct
nokia_dsi_panel_data
dsi1_panel
=
{
...
...
@@ -731,6 +732,10 @@ static void sdp4430_lcd_init(void)
pr_err
(
"%s: Could not get lcd2_reset_gpio
\n
"
,
__func__
);
}
static
struct
omap_dss_hdmi_data
sdp4430_hdmi_data
=
{
.
hpd_gpio
=
HDMI_GPIO_HPD
,
};
static
struct
omap_dss_device
sdp4430_hdmi_device
=
{
.
name
=
"hdmi"
,
.
driver_name
=
"hdmi_panel"
,
...
...
@@ -738,6 +743,7 @@ static struct omap_dss_device sdp4430_hdmi_device = {
.
platform_enable
=
sdp4430_panel_enable_hdmi
,
.
platform_disable
=
sdp4430_panel_disable_hdmi
,
.
channel
=
OMAP_DSS_CHANNEL_DIGIT
,
.
data
=
&
sdp4430_hdmi_data
,
};
static
struct
picodlp_panel_data
sdp4430_picodlp_pdata
=
{
...
...
@@ -822,6 +828,10 @@ static void omap_4430sdp_display_init(void)
omap_hdmi_init
(
OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP
);
else
omap_hdmi_init
(
0
);
omap_mux_init_gpio
(
HDMI_GPIO_LS_OE
,
OMAP_PIN_OUTPUT
);
omap_mux_init_gpio
(
HDMI_GPIO_CT_CP_HPD
,
OMAP_PIN_OUTPUT
);
omap_mux_init_gpio
(
HDMI_GPIO_HPD
,
OMAP_PIN_INPUT_PULLDOWN
);
}
#ifdef CONFIG_OMAP_MUX
...
...
arch/arm/mach-omap2/board-omap4panda.c
浏览文件 @
64a9de8f
...
...
@@ -51,8 +51,9 @@
#define GPIO_HUB_NRESET 62
#define GPIO_WIFI_PMENA 43
#define GPIO_WIFI_IRQ 53
#define HDMI_GPIO_
HPD 60
/* Hot plug pin for HDMI
*/
#define HDMI_GPIO_
CT_CP_HPD 60
/* HPD mode enable/disable
*/
#define HDMI_GPIO_LS_OE 41
/* Level shifter for HDMI */
#define HDMI_GPIO_HPD 63
/* Hotplug detect */
/* wl127x BT, FM, GPS connectivity chip */
static
int
wl1271_gpios
[]
=
{
46
,
-
1
,
-
1
};
...
...
@@ -479,8 +480,9 @@ int __init omap4_panda_dvi_init(void)
}
static
struct
gpio
panda_hdmi_gpios
[]
=
{
{
HDMI_GPIO_
HPD
,
GPIOF_OUT_INIT_HIGH
,
"hdmi_gpio_hpd"
},
{
HDMI_GPIO_
CT_CP_HPD
,
GPIOF_OUT_INIT_HIGH
,
"hdmi_gpio_ct_cp_hpd"
},
{
HDMI_GPIO_LS_OE
,
GPIOF_OUT_INIT_HIGH
,
"hdmi_gpio_ls_oe"
},
{
HDMI_GPIO_HPD
,
GPIOF_DIR_IN
,
"hdmi_gpio_hpd"
},
};
static
int
omap4_panda_panel_enable_hdmi
(
struct
omap_dss_device
*
dssdev
)
...
...
@@ -497,10 +499,13 @@ static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev)
static
void
omap4_panda_panel_disable_hdmi
(
struct
omap_dss_device
*
dssdev
)
{
gpio_free
(
HDMI_GPIO_LS_OE
);
gpio_free
(
HDMI_GPIO_HPD
);
gpio_free_array
(
panda_hdmi_gpios
,
ARRAY_SIZE
(
panda_hdmi_gpios
));
}
static
struct
omap_dss_hdmi_data
omap4_panda_hdmi_data
=
{
.
hpd_gpio
=
HDMI_GPIO_HPD
,
};
static
struct
omap_dss_device
omap4_panda_hdmi_device
=
{
.
name
=
"hdmi"
,
.
driver_name
=
"hdmi_panel"
,
...
...
@@ -508,6 +513,7 @@ static struct omap_dss_device omap4_panda_hdmi_device = {
.
platform_enable
=
omap4_panda_panel_enable_hdmi
,
.
platform_disable
=
omap4_panda_panel_disable_hdmi
,
.
channel
=
OMAP_DSS_CHANNEL_DIGIT
,
.
data
=
&
omap4_panda_hdmi_data
,
};
static
struct
omap_dss_device
*
omap4_panda_dss_devices
[]
=
{
...
...
@@ -539,6 +545,10 @@ void omap4_panda_display_init(void)
omap_hdmi_init
(
OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP
);
else
omap_hdmi_init
(
0
);
omap_mux_init_gpio
(
HDMI_GPIO_LS_OE
,
OMAP_PIN_OUTPUT
);
omap_mux_init_gpio
(
HDMI_GPIO_CT_CP_HPD
,
OMAP_PIN_OUTPUT
);
omap_mux_init_gpio
(
HDMI_GPIO_HPD
,
OMAP_PIN_INPUT_PULLDOWN
);
}
static
void
__init
omap4_panda_init
(
void
)
...
...
arch/arm/mach-omap2/display.c
浏览文件 @
64a9de8f
...
...
@@ -102,12 +102,8 @@ static void omap4_hdmi_mux_pads(enum omap_hdmi_flags flags)
u32
reg
;
u16
control_i2c_1
;
/* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
omap_mux_init_signal
(
"hdmi_hpd"
,
OMAP_PIN_INPUT_PULLUP
);
omap_mux_init_signal
(
"hdmi_cec"
,
OMAP_PIN_INPUT_PULLUP
);
/* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
omap_mux_init_signal
(
"hdmi_ddc_scl"
,
OMAP_PIN_INPUT_PULLUP
);
omap_mux_init_signal
(
"hdmi_ddc_sda"
,
...
...
drivers/video/omap2/dss/dispc.c
浏览文件 @
64a9de8f
...
...
@@ -401,7 +401,7 @@ void dispc_runtime_put(void)
DSSDBG
(
"dispc_runtime_put
\n
"
);
r
=
pm_runtime_put
(
&
dispc
.
pdev
->
dev
);
r
=
pm_runtime_put
_sync
(
&
dispc
.
pdev
->
dev
);
WARN_ON
(
r
<
0
);
}
...
...
drivers/video/omap2/dss/dsi.c
浏览文件 @
64a9de8f
...
...
@@ -1079,7 +1079,7 @@ void dsi_runtime_put(struct platform_device *dsidev)
DSSDBG
(
"dsi_runtime_put
\n
"
);
r
=
pm_runtime_put
(
&
dsi
->
pdev
->
dev
);
r
=
pm_runtime_put
_sync
(
&
dsi
->
pdev
->
dev
);
WARN_ON
(
r
<
0
);
}
...
...
drivers/video/omap2/dss/dss.c
浏览文件 @
64a9de8f
...
...
@@ -720,7 +720,7 @@ void dss_runtime_put(void)
DSSDBG
(
"dss_runtime_put
\n
"
);
r
=
pm_runtime_put
(
&
dss
.
pdev
->
dev
);
r
=
pm_runtime_put
_sync
(
&
dss
.
pdev
->
dev
);
WARN_ON
(
r
<
0
);
}
...
...
drivers/video/omap2/dss/hdmi.c
浏览文件 @
64a9de8f
...
...
@@ -176,7 +176,7 @@ static void hdmi_runtime_put(void)
DSSDBG
(
"hdmi_runtime_put
\n
"
);
r
=
pm_runtime_put
(
&
hdmi
.
pdev
->
dev
);
r
=
pm_runtime_put
_sync
(
&
hdmi
.
pdev
->
dev
);
WARN_ON
(
r
<
0
);
}
...
...
@@ -497,6 +497,7 @@ bool omapdss_hdmi_detect(void)
int
omapdss_hdmi_display_enable
(
struct
omap_dss_device
*
dssdev
)
{
struct
omap_dss_hdmi_data
*
priv
=
dssdev
->
data
;
int
r
=
0
;
DSSDBG
(
"ENTER hdmi_display_enable
\n
"
);
...
...
@@ -509,6 +510,8 @@ int omapdss_hdmi_display_enable(struct omap_dss_device *dssdev)
goto
err0
;
}
hdmi
.
ip_data
.
hpd_gpio
=
priv
->
hpd_gpio
;
r
=
omap_dss_start_device
(
dssdev
);
if
(
r
)
{
DSSERR
(
"failed to start device
\n
"
);
...
...
drivers/video/omap2/dss/rfbi.c
浏览文件 @
64a9de8f
...
...
@@ -140,7 +140,7 @@ static void rfbi_runtime_put(void)
DSSDBG
(
"rfbi_runtime_put
\n
"
);
r
=
pm_runtime_put
(
&
rfbi
.
pdev
->
dev
);
r
=
pm_runtime_put
_sync
(
&
rfbi
.
pdev
->
dev
);
WARN_ON
(
r
<
0
);
}
...
...
drivers/video/omap2/dss/ti_hdmi.h
浏览文件 @
64a9de8f
...
...
@@ -126,6 +126,10 @@ struct hdmi_ip_data {
const
struct
ti_hdmi_ip_ops
*
ops
;
struct
hdmi_config
cfg
;
struct
hdmi_pll_info
pll_data
;
/* ti_hdmi_4xxx_ip private data. These should be in a separate struct */
int
hpd_gpio
;
bool
phy_tx_enabled
;
};
int
ti_hdmi_4xxx_phy_enable
(
struct
hdmi_ip_data
*
ip_data
);
void
ti_hdmi_4xxx_phy_disable
(
struct
hdmi_ip_data
*
ip_data
);
...
...
drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
浏览文件 @
64a9de8f
...
...
@@ -28,6 +28,7 @@
#include <linux/delay.h>
#include <linux/string.h>
#include <linux/seq_file.h>
#include <linux/gpio.h>
#include "ti_hdmi_4xxx_ip.h"
#include "dss.h"
...
...
@@ -223,6 +224,49 @@ void ti_hdmi_4xxx_pll_disable(struct hdmi_ip_data *ip_data)
hdmi_set_pll_pwr
(
ip_data
,
HDMI_PLLPWRCMD_ALLOFF
);
}
static
int
hdmi_check_hpd_state
(
struct
hdmi_ip_data
*
ip_data
)
{
unsigned
long
flags
;
bool
hpd
;
int
r
;
/* this should be in ti_hdmi_4xxx_ip private data */
static
DEFINE_SPINLOCK
(
phy_tx_lock
);
spin_lock_irqsave
(
&
phy_tx_lock
,
flags
);
hpd
=
gpio_get_value
(
ip_data
->
hpd_gpio
);
if
(
hpd
==
ip_data
->
phy_tx_enabled
)
{
spin_unlock_irqrestore
(
&
phy_tx_lock
,
flags
);
return
0
;
}
if
(
hpd
)
r
=
hdmi_set_phy_pwr
(
ip_data
,
HDMI_PHYPWRCMD_TXON
);
else
r
=
hdmi_set_phy_pwr
(
ip_data
,
HDMI_PHYPWRCMD_LDOON
);
if
(
r
)
{
DSSERR
(
"Failed to %s PHY TX power
\n
"
,
hpd
?
"enable"
:
"disable"
);
goto
err
;
}
ip_data
->
phy_tx_enabled
=
hpd
;
err:
spin_unlock_irqrestore
(
&
phy_tx_lock
,
flags
);
return
r
;
}
static
irqreturn_t
hpd_irq_handler
(
int
irq
,
void
*
data
)
{
struct
hdmi_ip_data
*
ip_data
=
data
;
hdmi_check_hpd_state
(
ip_data
);
return
IRQ_HANDLED
;
}
int
ti_hdmi_4xxx_phy_enable
(
struct
hdmi_ip_data
*
ip_data
)
{
u16
r
=
0
;
...
...
@@ -232,10 +276,6 @@ int ti_hdmi_4xxx_phy_enable(struct hdmi_ip_data *ip_data)
if
(
r
)
return
r
;
r
=
hdmi_set_phy_pwr
(
ip_data
,
HDMI_PHYPWRCMD_TXON
);
if
(
r
)
return
r
;
/*
* Read address 0 in order to get the SCP reset done completed
* Dummy access performed to make sure reset is done
...
...
@@ -257,12 +297,32 @@ int ti_hdmi_4xxx_phy_enable(struct hdmi_ip_data *ip_data)
/* Write to phy address 3 to change the polarity control */
REG_FLD_MOD
(
phy_base
,
HDMI_TXPHY_PAD_CFG_CTRL
,
0x1
,
27
,
27
);
r
=
request_threaded_irq
(
gpio_to_irq
(
ip_data
->
hpd_gpio
),
NULL
,
hpd_irq_handler
,
IRQF_DISABLED
|
IRQF_TRIGGER_RISING
|
IRQF_TRIGGER_FALLING
,
"hpd"
,
ip_data
);
if
(
r
)
{
DSSERR
(
"HPD IRQ request failed
\n
"
);
hdmi_set_phy_pwr
(
ip_data
,
HDMI_PHYPWRCMD_OFF
);
return
r
;
}
r
=
hdmi_check_hpd_state
(
ip_data
);
if
(
r
)
{
free_irq
(
gpio_to_irq
(
ip_data
->
hpd_gpio
),
ip_data
);
hdmi_set_phy_pwr
(
ip_data
,
HDMI_PHYPWRCMD_OFF
);
return
r
;
}
return
0
;
}
void
ti_hdmi_4xxx_phy_disable
(
struct
hdmi_ip_data
*
ip_data
)
{
free_irq
(
gpio_to_irq
(
ip_data
->
hpd_gpio
),
ip_data
);
hdmi_set_phy_pwr
(
ip_data
,
HDMI_PHYPWRCMD_OFF
);
ip_data
->
phy_tx_enabled
=
false
;
}
static
int
hdmi_core_ddc_init
(
struct
hdmi_ip_data
*
ip_data
)
...
...
drivers/video/omap2/dss/venc.c
浏览文件 @
64a9de8f
...
...
@@ -401,7 +401,7 @@ static void venc_runtime_put(void)
DSSDBG
(
"venc_runtime_put
\n
"
);
r
=
pm_runtime_put
(
&
venc
.
pdev
->
dev
);
r
=
pm_runtime_put
_sync
(
&
venc
.
pdev
->
dev
);
WARN_ON
(
r
<
0
);
}
...
...
include/video/omapdss.h
浏览文件 @
64a9de8f
...
...
@@ -590,6 +590,11 @@ struct omap_dss_device {
int
(
*
get_backlight
)(
struct
omap_dss_device
*
dssdev
);
};
struct
omap_dss_hdmi_data
{
int
hpd_gpio
;
};
struct
omap_dss_driver
{
struct
device_driver
driver
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录