Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
918cae14
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看板
提交
918cae14
编写于
2月 12, 2010
作者:
T
Tony Lindgren
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-tony' of
git://gitorious.org/linux-omap-dss2/linux
into omap-for-linus
上级
0482e3c6
7f049ad1
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
618 addition
and
12 deletion
+618
-12
arch/arm/mach-omap2/board-am3517evm.c
arch/arm/mach-omap2/board-am3517evm.c
+145
-0
arch/arm/mach-omap2/board-cm-t35.c
arch/arm/mach-omap2/board-cm-t35.c
+238
-1
arch/arm/mach-omap2/board-omap3evm.c
arch/arm/mach-omap2/board-omap3evm.c
+235
-11
未找到文件。
arch/arm/mach-omap2/board-am3517evm.c
浏览文件 @
918cae14
...
...
@@ -29,9 +29,151 @@
#include <plat/board.h>
#include <plat/common.h>
#include <plat/usb.h>
#include <plat/display.h>
#include "mux.h"
#define LCD_PANEL_PWR 176
#define LCD_PANEL_BKLIGHT_PWR 182
#define LCD_PANEL_PWM 181
static
int
lcd_enabled
;
static
int
dvi_enabled
;
static
void
__init
am3517_evm_display_init
(
void
)
{
int
r
;
omap_mux_init_gpio
(
LCD_PANEL_PWR
,
OMAP_PIN_INPUT_PULLUP
);
omap_mux_init_gpio
(
LCD_PANEL_BKLIGHT_PWR
,
OMAP_PIN_INPUT_PULLDOWN
);
omap_mux_init_gpio
(
LCD_PANEL_PWM
,
OMAP_PIN_INPUT_PULLDOWN
);
/*
* Enable GPIO 182 = LCD Backlight Power
*/
r
=
gpio_request
(
LCD_PANEL_BKLIGHT_PWR
,
"lcd_backlight_pwr"
);
if
(
r
)
{
printk
(
KERN_ERR
"failed to get lcd_backlight_pwr
\n
"
);
return
;
}
gpio_direction_output
(
LCD_PANEL_BKLIGHT_PWR
,
1
);
/*
* Enable GPIO 181 = LCD Panel PWM
*/
r
=
gpio_request
(
LCD_PANEL_PWM
,
"lcd_pwm"
);
if
(
r
)
{
printk
(
KERN_ERR
"failed to get lcd_pwm
\n
"
);
goto
err_1
;
}
gpio_direction_output
(
LCD_PANEL_PWM
,
1
);
/*
* Enable GPIO 176 = LCD Panel Power enable pin
*/
r
=
gpio_request
(
LCD_PANEL_PWR
,
"lcd_panel_pwr"
);
if
(
r
)
{
printk
(
KERN_ERR
"failed to get lcd_panel_pwr
\n
"
);
goto
err_2
;
}
gpio_direction_output
(
LCD_PANEL_PWR
,
1
);
printk
(
KERN_INFO
"Display initialized successfully
\n
"
);
return
;
err_2:
gpio_free
(
LCD_PANEL_PWM
);
err_1:
gpio_free
(
LCD_PANEL_BKLIGHT_PWR
);
}
static
int
am3517_evm_panel_enable_lcd
(
struct
omap_dss_device
*
dssdev
)
{
if
(
dvi_enabled
)
{
printk
(
KERN_ERR
"cannot enable LCD, DVI is enabled
\n
"
);
return
-
EINVAL
;
}
gpio_set_value
(
LCD_PANEL_PWR
,
1
);
lcd_enabled
=
1
;
return
0
;
}
static
void
am3517_evm_panel_disable_lcd
(
struct
omap_dss_device
*
dssdev
)
{
gpio_set_value
(
LCD_PANEL_PWR
,
0
);
lcd_enabled
=
0
;
}
static
struct
omap_dss_device
am3517_evm_lcd_device
=
{
.
type
=
OMAP_DISPLAY_TYPE_DPI
,
.
name
=
"lcd"
,
.
driver_name
=
"sharp_lq_panel"
,
.
phy
.
dpi
.
data_lines
=
16
,
.
platform_enable
=
am3517_evm_panel_enable_lcd
,
.
platform_disable
=
am3517_evm_panel_disable_lcd
,
};
static
int
am3517_evm_panel_enable_tv
(
struct
omap_dss_device
*
dssdev
)
{
return
0
;
}
static
void
am3517_evm_panel_disable_tv
(
struct
omap_dss_device
*
dssdev
)
{
}
static
struct
omap_dss_device
am3517_evm_tv_device
=
{
.
type
=
OMAP_DISPLAY_TYPE_VENC
,
.
name
=
"tv"
,
.
driver_name
=
"venc"
,
.
phy
.
venc
.
type
=
OMAP_DSS_VENC_TYPE_SVIDEO
,
.
platform_enable
=
am3517_evm_panel_enable_tv
,
.
platform_disable
=
am3517_evm_panel_disable_tv
,
};
static
int
am3517_evm_panel_enable_dvi
(
struct
omap_dss_device
*
dssdev
)
{
if
(
lcd_enabled
)
{
printk
(
KERN_ERR
"cannot enable DVI, LCD is enabled
\n
"
);
return
-
EINVAL
;
}
dvi_enabled
=
1
;
return
0
;
}
static
void
am3517_evm_panel_disable_dvi
(
struct
omap_dss_device
*
dssdev
)
{
dvi_enabled
=
0
;
}
static
struct
omap_dss_device
am3517_evm_dvi_device
=
{
.
type
=
OMAP_DISPLAY_TYPE_DPI
,
.
name
=
"dvi"
,
.
driver_name
=
"generic_panel"
,
.
phy
.
dpi
.
data_lines
=
24
,
.
platform_enable
=
am3517_evm_panel_enable_dvi
,
.
platform_disable
=
am3517_evm_panel_disable_dvi
,
};
static
struct
omap_dss_device
*
am3517_evm_dss_devices
[]
=
{
&
am3517_evm_lcd_device
,
&
am3517_evm_tv_device
,
&
am3517_evm_dvi_device
,
};
static
struct
omap_dss_board_info
am3517_evm_dss_data
=
{
.
num_devices
=
ARRAY_SIZE
(
am3517_evm_dss_devices
),
.
devices
=
am3517_evm_dss_devices
,
.
default_device
=
&
am3517_evm_lcd_device
,
};
struct
platform_device
am3517_evm_dss_device
=
{
.
name
=
"omapdss"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
am3517_evm_dss_data
,
},
};
/*
* Board initialization
*/
...
...
@@ -39,6 +181,7 @@ static struct omap_board_config_kernel am3517_evm_config[] __initdata = {
};
static
struct
platform_device
*
am3517_evm_devices
[]
__initdata
=
{
&
am3517_evm_dss_device
,
};
static
void
__init
am3517_evm_init_irq
(
void
)
...
...
@@ -78,6 +221,8 @@ static void __init am3517_evm_init(void)
omap_serial_init
();
usb_ehci_init
(
&
ehci_pdata
);
/* DSS */
am3517_evm_display_init
();
}
static
void
__init
am3517_evm_map_io
(
void
)
...
...
arch/arm/mach-omap2/board-cm-t35.c
浏览文件 @
918cae14
...
...
@@ -32,6 +32,9 @@
#include <linux/i2c/twl.h>
#include <linux/regulator/machine.h>
#include <linux/spi/spi.h>
#include <linux/spi/tdo24m.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
...
...
@@ -41,6 +44,7 @@
#include <plat/nand.h>
#include <plat/gpmc.h>
#include <plat/usb.h>
#include <plat/display.h>
#include <mach/hardware.h>
...
...
@@ -248,7 +252,6 @@ static inline void cm_t35_init_nand(void) {}
#if defined(CONFIG_TOUCHSCREEN_ADS7846) || \
defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
#include <linux/spi/spi.h>
#include <linux/spi/ads7846.h>
#include <plat/mcspi.h>
...
...
@@ -304,6 +307,193 @@ static void __init cm_t35_init_ads7846(void)
static
inline
void
cm_t35_init_ads7846
(
void
)
{}
#endif
#define CM_T35_LCD_EN_GPIO 157
#define CM_T35_LCD_BL_GPIO 58
#define CM_T35_DVI_EN_GPIO 54
static
int
lcd_bl_gpio
;
static
int
lcd_en_gpio
;
static
int
dvi_en_gpio
;
static
int
lcd_enabled
;
static
int
dvi_enabled
;
static
int
cm_t35_panel_enable_lcd
(
struct
omap_dss_device
*
dssdev
)
{
if
(
dvi_enabled
)
{
printk
(
KERN_ERR
"cannot enable LCD, DVI is enabled
\n
"
);
return
-
EINVAL
;
}
gpio_set_value
(
lcd_en_gpio
,
1
);
gpio_set_value
(
lcd_bl_gpio
,
1
);
lcd_enabled
=
1
;
return
0
;
}
static
void
cm_t35_panel_disable_lcd
(
struct
omap_dss_device
*
dssdev
)
{
lcd_enabled
=
0
;
gpio_set_value
(
lcd_bl_gpio
,
0
);
gpio_set_value
(
lcd_en_gpio
,
0
);
}
static
int
cm_t35_panel_enable_dvi
(
struct
omap_dss_device
*
dssdev
)
{
if
(
lcd_enabled
)
{
printk
(
KERN_ERR
"cannot enable DVI, LCD is enabled
\n
"
);
return
-
EINVAL
;
}
gpio_set_value
(
dvi_en_gpio
,
0
);
dvi_enabled
=
1
;
return
0
;
}
static
void
cm_t35_panel_disable_dvi
(
struct
omap_dss_device
*
dssdev
)
{
gpio_set_value
(
dvi_en_gpio
,
1
);
dvi_enabled
=
0
;
}
static
int
cm_t35_panel_enable_tv
(
struct
omap_dss_device
*
dssdev
)
{
return
0
;
}
static
void
cm_t35_panel_disable_tv
(
struct
omap_dss_device
*
dssdev
)
{
}
static
struct
omap_dss_device
cm_t35_lcd_device
=
{
.
name
=
"lcd"
,
.
driver_name
=
"toppoly_tdo35s_panel"
,
.
type
=
OMAP_DISPLAY_TYPE_DPI
,
.
phy
.
dpi
.
data_lines
=
18
,
.
platform_enable
=
cm_t35_panel_enable_lcd
,
.
platform_disable
=
cm_t35_panel_disable_lcd
,
};
static
struct
omap_dss_device
cm_t35_dvi_device
=
{
.
name
=
"dvi"
,
.
driver_name
=
"generic_panel"
,
.
type
=
OMAP_DISPLAY_TYPE_DPI
,
.
phy
.
dpi
.
data_lines
=
24
,
.
platform_enable
=
cm_t35_panel_enable_dvi
,
.
platform_disable
=
cm_t35_panel_disable_dvi
,
};
static
struct
omap_dss_device
cm_t35_tv_device
=
{
.
name
=
"tv"
,
.
driver_name
=
"venc"
,
.
type
=
OMAP_DISPLAY_TYPE_VENC
,
.
phy
.
venc
.
type
=
OMAP_DSS_VENC_TYPE_SVIDEO
,
.
platform_enable
=
cm_t35_panel_enable_tv
,
.
platform_disable
=
cm_t35_panel_disable_tv
,
};
static
struct
omap_dss_device
*
cm_t35_dss_devices
[]
=
{
&
cm_t35_lcd_device
,
&
cm_t35_dvi_device
,
&
cm_t35_tv_device
,
};
static
struct
omap_dss_board_info
cm_t35_dss_data
=
{
.
num_devices
=
ARRAY_SIZE
(
cm_t35_dss_devices
),
.
devices
=
cm_t35_dss_devices
,
.
default_device
=
&
cm_t35_dvi_device
,
};
static
struct
platform_device
cm_t35_dss_device
=
{
.
name
=
"omapdss"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
cm_t35_dss_data
,
},
};
static
struct
omap2_mcspi_device_config
tdo24m_mcspi_config
=
{
.
turbo_mode
=
0
,
.
single_channel
=
1
,
/* 0: slave, 1: master */
};
static
struct
tdo24m_platform_data
tdo24m_config
=
{
.
model
=
TDO35S
,
};
static
struct
spi_board_info
cm_t35_lcd_spi_board_info
[]
__initdata
=
{
{
.
modalias
=
"tdo24m"
,
.
bus_num
=
4
,
.
chip_select
=
0
,
.
max_speed_hz
=
1000000
,
.
controller_data
=
&
tdo24m_mcspi_config
,
.
platform_data
=
&
tdo24m_config
,
},
};
static
void
__init
cm_t35_init_display
(
void
)
{
int
err
;
lcd_en_gpio
=
CM_T35_LCD_EN_GPIO
;
lcd_bl_gpio
=
CM_T35_LCD_BL_GPIO
;
dvi_en_gpio
=
CM_T35_DVI_EN_GPIO
;
spi_register_board_info
(
cm_t35_lcd_spi_board_info
,
ARRAY_SIZE
(
cm_t35_lcd_spi_board_info
));
err
=
gpio_request
(
lcd_en_gpio
,
"LCD RST"
);
if
(
err
)
{
pr_err
(
"CM-T35: failed to get LCD reset GPIO
\n
"
);
goto
out
;
}
err
=
gpio_request
(
lcd_bl_gpio
,
"LCD BL"
);
if
(
err
)
{
pr_err
(
"CM-T35: failed to get LCD backlight control GPIO
\n
"
);
goto
err_lcd_bl
;
}
err
=
gpio_request
(
dvi_en_gpio
,
"DVI EN"
);
if
(
err
)
{
pr_err
(
"CM-T35: failed to get DVI reset GPIO
\n
"
);
goto
err_dvi_en
;
}
gpio_export
(
lcd_en_gpio
,
0
);
gpio_export
(
lcd_bl_gpio
,
0
);
gpio_export
(
dvi_en_gpio
,
0
);
gpio_direction_output
(
lcd_en_gpio
,
0
);
gpio_direction_output
(
lcd_bl_gpio
,
0
);
gpio_direction_output
(
dvi_en_gpio
,
1
);
msleep
(
50
);
gpio_set_value
(
lcd_en_gpio
,
1
);
err
=
platform_device_register
(
&
cm_t35_dss_device
);
if
(
err
)
{
pr_err
(
"CM-T35: failed to register DSS device
\n
"
);
goto
err_dev_reg
;
}
return
;
err_dev_reg:
gpio_free
(
dvi_en_gpio
);
err_dvi_en:
gpio_free
(
lcd_bl_gpio
);
err_lcd_bl:
gpio_free
(
lcd_en_gpio
);
out:
return
;
}
static
struct
regulator_consumer_supply
cm_t35_vmmc1_supply
=
{
.
supply
=
"vmmc"
,
};
...
...
@@ -312,6 +502,16 @@ static struct regulator_consumer_supply cm_t35_vsim_supply = {
.
supply
=
"vmmc_aux"
,
};
static
struct
regulator_consumer_supply
cm_t35_vdac_supply
=
{
.
supply
=
"vdda_dac"
,
.
dev
=
&
cm_t35_dss_device
.
dev
,
};
static
struct
regulator_consumer_supply
cm_t35_vdvi_supply
=
{
.
supply
=
"vdvi"
,
.
dev
=
&
cm_t35_dss_device
.
dev
,
};
/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
static
struct
regulator_init_data
cm_t35_vmmc1
=
{
.
constraints
=
{
...
...
@@ -342,6 +542,35 @@ static struct regulator_init_data cm_t35_vsim = {
.
consumer_supplies
=
&
cm_t35_vsim_supply
,
};
/* VDAC for DSS driving S-Video (8 mA unloaded, max 65 mA) */
static
struct
regulator_init_data
cm_t35_vdac
=
{
.
constraints
=
{
.
min_uV
=
1800000
,
.
max_uV
=
1800000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
|
REGULATOR_MODE_STANDBY
,
.
valid_ops_mask
=
REGULATOR_CHANGE_MODE
|
REGULATOR_CHANGE_STATUS
,
},
.
num_consumer_supplies
=
1
,
.
consumer_supplies
=
&
cm_t35_vdac_supply
,
};
/* VPLL2 for digital video outputs */
static
struct
regulator_init_data
cm_t35_vpll2
=
{
.
constraints
=
{
.
name
=
"VDVI"
,
.
min_uV
=
1800000
,
.
max_uV
=
1800000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
|
REGULATOR_MODE_STANDBY
,
.
valid_ops_mask
=
REGULATOR_CHANGE_MODE
|
REGULATOR_CHANGE_STATUS
,
},
.
num_consumer_supplies
=
1
,
.
consumer_supplies
=
&
cm_t35_vdvi_supply
,
};
static
struct
twl4030_usb_data
cm_t35_usb_data
=
{
.
usb_mode
=
T2_USB_MODE_ULPI
,
};
...
...
@@ -445,6 +674,8 @@ static struct twl4030_platform_data cm_t35_twldata = {
.
gpio
=
&
cm_t35_gpio_data
,
.
vmmc1
=
&
cm_t35_vmmc1
,
.
vsim
=
&
cm_t35_vsim
,
.
vdac
=
&
cm_t35_vdac
,
.
vpll2
=
&
cm_t35_vpll2
,
};
static
struct
i2c_board_info
__initdata
cm_t35_i2c_boardinfo
[]
=
{
...
...
@@ -568,6 +799,11 @@ static struct omap_board_mux board_mux[] __initdata = {
OMAP3_MUX
(
DSS_DATA22
,
OMAP_MUX_MODE0
|
OMAP_PIN_OUTPUT
),
OMAP3_MUX
(
DSS_DATA23
,
OMAP_MUX_MODE0
|
OMAP_PIN_OUTPUT
),
/* display controls */
OMAP3_MUX
(
MCBSP1_FSR
,
OMAP_MUX_MODE4
|
OMAP_PIN_OUTPUT
),
OMAP3_MUX
(
GPMC_NCS7
,
OMAP_MUX_MODE4
|
OMAP_PIN_OUTPUT
),
OMAP3_MUX
(
GPMC_NCS3
,
OMAP_MUX_MODE4
|
OMAP_PIN_OUTPUT
),
/* TPS IRQ */
OMAP3_MUX
(
SYS_NIRQ
,
OMAP_MUX_MODE0
|
OMAP_WAKEUP_EN
|
\
OMAP_PIN_INPUT_PULLUP
),
...
...
@@ -584,6 +820,7 @@ static void __init cm_t35_init(void)
cm_t35_init_ads7846
();
cm_t35_init_ethernet
();
cm_t35_init_led
();
cm_t35_init_display
();
usb_musb_init
();
}
...
...
arch/arm/mach-omap2/board-omap3evm.c
浏览文件 @
918cae14
...
...
@@ -41,6 +41,7 @@
#include <plat/usb.h>
#include <plat/common.h>
#include <plat/mcspi.h>
#include <plat/display.h>
#include "mux.h"
#include "sdram-micron-mt46h32m32lf-6.h"
...
...
@@ -147,6 +148,187 @@ static inline void __init omap3evm_init_smsc911x(void)
static
inline
void
__init
omap3evm_init_smsc911x
(
void
)
{
return
;
}
#endif
/*
* OMAP3EVM LCD Panel control signals
*/
#define OMAP3EVM_LCD_PANEL_LR 2
#define OMAP3EVM_LCD_PANEL_UD 3
#define OMAP3EVM_LCD_PANEL_INI 152
#define OMAP3EVM_LCD_PANEL_ENVDD 153
#define OMAP3EVM_LCD_PANEL_QVGA 154
#define OMAP3EVM_LCD_PANEL_RESB 155
#define OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO 210
#define OMAP3EVM_DVI_PANEL_EN_GPIO 199
static
int
lcd_enabled
;
static
int
dvi_enabled
;
static
void
__init
omap3_evm_display_init
(
void
)
{
int
r
;
r
=
gpio_request
(
OMAP3EVM_LCD_PANEL_RESB
,
"lcd_panel_resb"
);
if
(
r
)
{
printk
(
KERN_ERR
"failed to get lcd_panel_resb
\n
"
);
return
;
}
gpio_direction_output
(
OMAP3EVM_LCD_PANEL_RESB
,
1
);
r
=
gpio_request
(
OMAP3EVM_LCD_PANEL_INI
,
"lcd_panel_ini"
);
if
(
r
)
{
printk
(
KERN_ERR
"failed to get lcd_panel_ini
\n
"
);
goto
err_1
;
}
gpio_direction_output
(
OMAP3EVM_LCD_PANEL_INI
,
1
);
r
=
gpio_request
(
OMAP3EVM_LCD_PANEL_QVGA
,
"lcd_panel_qvga"
);
if
(
r
)
{
printk
(
KERN_ERR
"failed to get lcd_panel_qvga
\n
"
);
goto
err_2
;
}
gpio_direction_output
(
OMAP3EVM_LCD_PANEL_QVGA
,
0
);
r
=
gpio_request
(
OMAP3EVM_LCD_PANEL_LR
,
"lcd_panel_lr"
);
if
(
r
)
{
printk
(
KERN_ERR
"failed to get lcd_panel_lr
\n
"
);
goto
err_3
;
}
gpio_direction_output
(
OMAP3EVM_LCD_PANEL_LR
,
1
);
r
=
gpio_request
(
OMAP3EVM_LCD_PANEL_UD
,
"lcd_panel_ud"
);
if
(
r
)
{
printk
(
KERN_ERR
"failed to get lcd_panel_ud
\n
"
);
goto
err_4
;
}
gpio_direction_output
(
OMAP3EVM_LCD_PANEL_UD
,
1
);
r
=
gpio_request
(
OMAP3EVM_LCD_PANEL_ENVDD
,
"lcd_panel_envdd"
);
if
(
r
)
{
printk
(
KERN_ERR
"failed to get lcd_panel_envdd
\n
"
);
goto
err_5
;
}
gpio_direction_output
(
OMAP3EVM_LCD_PANEL_ENVDD
,
0
);
return
;
err_5:
gpio_free
(
OMAP3EVM_LCD_PANEL_UD
);
err_4:
gpio_free
(
OMAP3EVM_LCD_PANEL_LR
);
err_3:
gpio_free
(
OMAP3EVM_LCD_PANEL_QVGA
);
err_2:
gpio_free
(
OMAP3EVM_LCD_PANEL_INI
);
err_1:
gpio_free
(
OMAP3EVM_LCD_PANEL_RESB
);
}
static
int
omap3_evm_enable_lcd
(
struct
omap_dss_device
*
dssdev
)
{
if
(
dvi_enabled
)
{
printk
(
KERN_ERR
"cannot enable LCD, DVI is enabled
\n
"
);
return
-
EINVAL
;
}
gpio_set_value
(
OMAP3EVM_LCD_PANEL_ENVDD
,
0
);
if
(
get_omap3_evm_rev
()
>=
OMAP3EVM_BOARD_GEN_2
)
gpio_set_value
(
OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO
,
0
);
else
gpio_set_value
(
OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO
,
1
);
lcd_enabled
=
1
;
return
0
;
}
static
void
omap3_evm_disable_lcd
(
struct
omap_dss_device
*
dssdev
)
{
gpio_set_value
(
OMAP3EVM_LCD_PANEL_ENVDD
,
1
);
if
(
get_omap3_evm_rev
()
>=
OMAP3EVM_BOARD_GEN_2
)
gpio_set_value
(
OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO
,
1
);
else
gpio_set_value
(
OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO
,
0
);
lcd_enabled
=
0
;
}
static
struct
omap_dss_device
omap3_evm_lcd_device
=
{
.
name
=
"lcd"
,
.
driver_name
=
"sharp_ls_panel"
,
.
type
=
OMAP_DISPLAY_TYPE_DPI
,
.
phy
.
dpi
.
data_lines
=
18
,
.
platform_enable
=
omap3_evm_enable_lcd
,
.
platform_disable
=
omap3_evm_disable_lcd
,
};
static
int
omap3_evm_enable_tv
(
struct
omap_dss_device
*
dssdev
)
{
return
0
;
}
static
void
omap3_evm_disable_tv
(
struct
omap_dss_device
*
dssdev
)
{
}
static
struct
omap_dss_device
omap3_evm_tv_device
=
{
.
name
=
"tv"
,
.
driver_name
=
"venc"
,
.
type
=
OMAP_DISPLAY_TYPE_VENC
,
.
phy
.
venc
.
type
=
OMAP_DSS_VENC_TYPE_SVIDEO
,
.
platform_enable
=
omap3_evm_enable_tv
,
.
platform_disable
=
omap3_evm_disable_tv
,
};
static
int
omap3_evm_enable_dvi
(
struct
omap_dss_device
*
dssdev
)
{
if
(
lcd_enabled
)
{
printk
(
KERN_ERR
"cannot enable DVI, LCD is enabled
\n
"
);
return
-
EINVAL
;
}
gpio_set_value
(
OMAP3EVM_DVI_PANEL_EN_GPIO
,
1
);
dvi_enabled
=
1
;
return
0
;
}
static
void
omap3_evm_disable_dvi
(
struct
omap_dss_device
*
dssdev
)
{
gpio_set_value
(
OMAP3EVM_DVI_PANEL_EN_GPIO
,
0
);
dvi_enabled
=
0
;
}
static
struct
omap_dss_device
omap3_evm_dvi_device
=
{
.
name
=
"dvi"
,
.
driver_name
=
"generic_panel"
,
.
type
=
OMAP_DISPLAY_TYPE_DPI
,
.
phy
.
dpi
.
data_lines
=
24
,
.
platform_enable
=
omap3_evm_enable_dvi
,
.
platform_disable
=
omap3_evm_disable_dvi
,
};
static
struct
omap_dss_device
*
omap3_evm_dss_devices
[]
=
{
&
omap3_evm_lcd_device
,
&
omap3_evm_tv_device
,
&
omap3_evm_dvi_device
,
};
static
struct
omap_dss_board_info
omap3_evm_dss_data
=
{
.
num_devices
=
ARRAY_SIZE
(
omap3_evm_dss_devices
),
.
devices
=
omap3_evm_dss_devices
,
.
default_device
=
&
omap3_evm_lcd_device
,
};
static
struct
platform_device
omap3_evm_dss_device
=
{
.
name
=
"omapdss"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
omap3_evm_dss_data
,
},
};
static
struct
regulator_consumer_supply
omap3evm_vmmc1_supply
=
{
.
supply
=
"vmmc"
,
};
...
...
@@ -236,6 +418,14 @@ static int omap3evm_twl_gpio_setup(struct device *dev,
* the P2 connector; notably LEDA for the LCD backlight.
*/
/* TWL4030_GPIO_MAX + 0 == ledA, LCD Backlight control */
gpio_request
(
gpio
+
TWL4030_GPIO_MAX
,
"EN_LCD_BKL"
);
gpio_direction_output
(
gpio
+
TWL4030_GPIO_MAX
,
0
);
/* gpio + 7 == DVI Enable */
gpio_request
(
gpio
+
7
,
"EN_DVI"
);
gpio_direction_output
(
gpio
+
7
,
0
);
/* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */
gpio_leds
[
2
].
gpio
=
gpio
+
TWL4030_GPIO_MAX
+
1
;
...
...
@@ -300,6 +490,47 @@ static struct twl4030_codec_data omap3evm_codec_data = {
.
audio
=
&
omap3evm_audio_data
,
};
static
struct
regulator_consumer_supply
omap3_evm_vdda_dac_supply
=
{
.
supply
=
"vdda_dac"
,
.
dev
=
&
omap3_evm_dss_device
.
dev
,
};
/* VDAC for DSS driving S-Video */
static
struct
regulator_init_data
omap3_evm_vdac
=
{
.
constraints
=
{
.
min_uV
=
1800000
,
.
max_uV
=
1800000
,
.
apply_uV
=
true
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
|
REGULATOR_MODE_STANDBY
,
.
valid_ops_mask
=
REGULATOR_CHANGE_MODE
|
REGULATOR_CHANGE_STATUS
,
},
.
num_consumer_supplies
=
1
,
.
consumer_supplies
=
&
omap3_evm_vdda_dac_supply
,
};
/* VPLL2 for digital video outputs */
static
struct
regulator_consumer_supply
omap3_evm_vpll2_supply
=
{
.
supply
=
"vdvi"
,
.
dev
=
&
omap3_evm_lcd_device
.
dev
,
};
static
struct
regulator_init_data
omap3_evm_vpll2
=
{
.
constraints
=
{
.
name
=
"VDVI"
,
.
min_uV
=
1800000
,
.
max_uV
=
1800000
,
.
apply_uV
=
true
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
|
REGULATOR_MODE_STANDBY
,
.
valid_ops_mask
=
REGULATOR_CHANGE_MODE
|
REGULATOR_CHANGE_STATUS
,
},
.
num_consumer_supplies
=
1
,
.
consumer_supplies
=
&
omap3_evm_vpll2_supply
,
};
static
struct
twl4030_platform_data
omap3evm_twldata
=
{
.
irq_base
=
TWL4030_IRQ_BASE
,
.
irq_end
=
TWL4030_IRQ_END
,
...
...
@@ -310,6 +541,8 @@ static struct twl4030_platform_data omap3evm_twldata = {
.
usb
=
&
omap3evm_usb_data
,
.
gpio
=
&
omap3evm_gpio_data
,
.
codec
=
&
omap3evm_codec_data
,
.
vdac
=
&
omap3_evm_vdac
,
.
vpll2
=
&
omap3_evm_vpll2
,
};
static
struct
i2c_board_info
__initdata
omap3evm_i2c_boardinfo
[]
=
{
...
...
@@ -337,15 +570,6 @@ static int __init omap3_evm_i2c_init(void)
return
0
;
}
static
struct
platform_device
omap3_evm_lcd_device
=
{
.
name
=
"omap3evm_lcd"
,
.
id
=
-
1
,
};
static
struct
omap_lcd_config
omap3_evm_lcd_config
__initdata
=
{
.
ctrl_name
=
"internal"
,
};
static
void
ads7846_dev_init
(
void
)
{
if
(
gpio_request
(
OMAP3_EVM_TS_GPIO
,
"ADS7846 pendown"
)
<
0
)
...
...
@@ -393,7 +617,6 @@ struct spi_board_info omap3evm_spi_board_info[] = {
};
static
struct
omap_board_config_kernel
omap3_evm_config
[]
__initdata
=
{
{
OMAP_TAG_LCD
,
&
omap3_evm_lcd_config
},
};
static
void
__init
omap3_evm_init_irq
(
void
)
...
...
@@ -406,7 +629,7 @@ static void __init omap3_evm_init_irq(void)
}
static
struct
platform_device
*
omap3_evm_devices
[]
__initdata
=
{
&
omap3_evm_
lcd
_device
,
&
omap3_evm_
dss
_device
,
};
static
struct
ehci_hcd_omap_platform_data
ehci_pdata
__initconst
=
{
...
...
@@ -473,6 +696,7 @@ static void __init omap3_evm_init(void)
usb_ehci_init
(
&
ehci_pdata
);
ads7846_dev_init
();
omap3evm_init_smsc911x
();
omap3_evm_display_init
();
}
static
void
__init
omap3_evm_map_io
(
void
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录