Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OS
U-Boot.Mirror
提交
fc1a79d9
U
U-Boot.Mirror
项目概览
OS
/
U-Boot.Mirror
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
U-Boot.Mirror
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fc1a79d9
编写于
4月 12, 2015
作者:
H
Heiko Schocher
提交者:
Anatolij Gustschin
4月 20, 2015
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
video, lg4573: add support for the lg4573 display
Signed-off-by:
N
Heiko Schocher
<
hs@denx.de
>
上级
cb9f8e6a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
236 addition
and
0 deletion
+236
-0
drivers/video/Makefile
drivers/video/Makefile
+1
-0
drivers/video/lg4573.c
drivers/video/lg4573.c
+231
-0
include/video.h
include/video.h
+4
-0
未找到文件。
drivers/video/Makefile
浏览文件 @
fc1a79d9
...
...
@@ -45,5 +45,6 @@ obj-$(CONFIG_VIDEO_TEGRA) += tegra.o
obj-$(CONFIG_VIDEO_VCXK)
+=
bus_vcxk.o
obj-$(CONFIG_VIDEO_VESA)
+=
vesa_fb.o
obj-$(CONFIG_FORMIKE)
+=
formike.o
obj-$(CONFIG_LG4573)
+=
lg4573.o
obj-$(CONFIG_AM335X_LCD)
+=
am335x-fb.o
obj-$(CONFIG_VIDEO_PARADE)
+=
parade.o
drivers/video/lg4573.c
0 → 100644
浏览文件 @
fc1a79d9
/*
* LCD: LG4573, TFT 4.3", 480x800, RGB24
* LCD initialization via SPI
*
* SPDX-License-Identifier: GPL-2.0
*
*/
#include <common.h>
#include <errno.h>
#include <spi.h>
#define PWR_ON_DELAY_MSECS 120
static
int
lb043wv_spi_write_u16
(
struct
spi_slave
*
spi
,
u16
val
)
{
unsigned
long
flags
=
SPI_XFER_BEGIN
;
unsigned
short
buf16
=
htons
(
val
);
int
ret
=
0
;
flags
|=
SPI_XFER_END
;
ret
=
spi_xfer
(
spi
,
16
,
&
buf16
,
NULL
,
flags
);
if
(
ret
)
debug
(
"%s: Failed to send: %d
\n
"
,
__func__
,
ret
);
return
ret
;
}
static
void
lb043wv_spi_write_u16_array
(
struct
spi_slave
*
spi
,
u16
*
buff
,
int
size
)
{
int
i
;
for
(
i
=
0
;
i
<
size
;
i
++
)
lb043wv_spi_write_u16
(
spi
,
buff
[
i
]);
}
static
void
lb043wv_display_mode_settings
(
struct
spi_slave
*
spi
)
{
static
u16
display_mode_settings
[]
=
{
0x703A
,
0x7270
,
0x70B1
,
0x7208
,
0x723B
,
0x720F
,
0x70B2
,
0x7200
,
0x72C8
,
0x70B3
,
0x7200
,
0x70B4
,
0x7200
,
0x70B5
,
0x7242
,
0x7210
,
0x7210
,
0x7200
,
0x7220
,
0x70B6
,
0x720B
,
0x720F
,
0x723C
,
0x7213
,
0x7213
,
0x72E8
,
0x70B7
,
0x7246
,
0x7206
,
0x720C
,
0x7200
,
0x7200
,
};
debug
(
"transfer display mode settings
\n
"
);
lb043wv_spi_write_u16_array
(
spi
,
display_mode_settings
,
ARRAY_SIZE
(
display_mode_settings
));
}
static
void
lb043wv_power_settings
(
struct
spi_slave
*
spi
)
{
static
u16
power_settings
[]
=
{
0x70C0
,
0x7201
,
0x7211
,
0x70C3
,
0x7207
,
0x7203
,
0x7204
,
0x7204
,
0x7204
,
0x70C4
,
0x7212
,
0x7224
,
0x7218
,
0x7218
,
0x7202
,
0x7249
,
0x70C5
,
0x726F
,
0x70C6
,
0x7241
,
0x7263
,
};
debug
(
"transfer power settings
\n
"
);
lb043wv_spi_write_u16_array
(
spi
,
power_settings
,
ARRAY_SIZE
(
power_settings
));
}
static
void
lb043wv_gamma_settings
(
struct
spi_slave
*
spi
)
{
static
u16
gamma_settings
[]
=
{
0x70D0
,
0x7203
,
0x7207
,
0x7273
,
0x7235
,
0x7200
,
0x7201
,
0x7220
,
0x7200
,
0x7203
,
0x70D1
,
0x7203
,
0x7207
,
0x7273
,
0x7235
,
0x7200
,
0x7201
,
0x7220
,
0x7200
,
0x7203
,
0x70D2
,
0x7203
,
0x7207
,
0x7273
,
0x7235
,
0x7200
,
0x7201
,
0x7220
,
0x7200
,
0x7203
,
0x70D3
,
0x7203
,
0x7207
,
0x7273
,
0x7235
,
0x7200
,
0x7201
,
0x7220
,
0x7200
,
0x7203
,
0x70D4
,
0x7203
,
0x7207
,
0x7273
,
0x7235
,
0x7200
,
0x7201
,
0x7220
,
0x7200
,
0x7203
,
0x70D5
,
0x7203
,
0x7207
,
0x7273
,
0x7235
,
0x7200
,
0x7201
,
0x7220
,
0x7200
,
0x7203
,
};
debug
(
"transfer gamma settings
\n
"
);
lb043wv_spi_write_u16_array
(
spi
,
gamma_settings
,
ARRAY_SIZE
(
gamma_settings
));
}
static
void
lb043wv_display_on
(
struct
spi_slave
*
spi
)
{
static
u16
sleep_out
=
0x7011
;
static
u16
display_on
=
0x7029
;
lb043wv_spi_write_u16
(
spi
,
sleep_out
);
mdelay
(
PWR_ON_DELAY_MSECS
);
lb043wv_spi_write_u16
(
spi
,
display_on
);
}
int
lg4573_spi_startup
(
unsigned
int
bus
,
unsigned
int
cs
,
unsigned
int
max_hz
,
unsigned
int
spi_mode
)
{
struct
spi_slave
*
spi
;
int
ret
;
spi
=
spi_setup_slave
(
bus
,
cs
,
max_hz
,
spi_mode
);
if
(
!
spi
)
{
debug
(
"%s: Failed to set up slave
\n
"
,
__func__
);
return
-
1
;
}
ret
=
spi_claim_bus
(
spi
);
if
(
ret
)
{
debug
(
"%s: Failed to claim SPI bus: %d
\n
"
,
__func__
,
ret
);
goto
err_claim_bus
;
}
lb043wv_display_mode_settings
(
spi
);
lb043wv_power_settings
(
spi
);
lb043wv_gamma_settings
(
spi
);
lb043wv_display_on
(
spi
);
return
0
;
err_claim_bus:
spi_free_slave
(
spi
);
return
-
1
;
}
static
int
do_lgset
(
cmd_tbl_t
*
cmdtp
,
int
flag
,
int
argc
,
char
*
const
argv
[])
{
lg4573_spi_startup
(
0
,
0
,
10000000
,
SPI_MODE_0
);
return
0
;
}
U_BOOT_CMD
(
lgset
,
2
,
1
,
do_lgset
,
"set lgdisplay"
,
""
);
include/video.h
浏览文件 @
fc1a79d9
...
...
@@ -69,4 +69,8 @@ void video_clear(void);
int
kwh043st20_f01_spi_startup
(
unsigned
int
bus
,
unsigned
int
cs
,
unsigned
int
max_hz
,
unsigned
int
spi_mode
);
#endif
#if defined(CONFIG_LG4573)
int
lg4573_spi_startup
(
unsigned
int
bus
,
unsigned
int
cs
,
unsigned
int
max_hz
,
unsigned
int
spi_mode
);
#endif
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录