Skip to content

Commit 54a67c0

Browse files
sw.multimediaesmil
authored andcommitted
drm/starfive: Add StarFive drm driver
Add starfive DRM Display driver framework Signed-off-by: jack.zhu <jack.zhu@starfivetech.com> Signed-off-by: keith.zhao <keith.zhao@starfivetech.com> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: José Expósito <jose.exposito89@gmail.com> Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
1 parent ca5428c commit 54a67c0

21 files changed

Lines changed: 3394 additions & 0 deletions

drivers/cache/sifive_ccache.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,12 @@ static void ccache_flush_range(phys_addr_t start, size_t len)
161161
}
162162
}
163163

164+
void sifive_ccache_flush_range(phys_addr_t start, size_t len)
165+
{
166+
ccache_flush_range(start, len);
167+
}
168+
EXPORT_SYMBOL_GPL(sifive_ccache_flush_range);
169+
164170
static const struct riscv_nonstd_cache_ops ccache_mgmt_ops __initconst = {
165171
.wback = &ccache_flush_range,
166172
.inv = &ccache_flush_range,

drivers/gpu/drm/Kconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,8 @@ source "drivers/gpu/drm/renesas/Kconfig"
347347

348348
source "drivers/gpu/drm/sun4i/Kconfig"
349349

350+
source "drivers/gpu/drm/starfive/Kconfig"
351+
350352
source "drivers/gpu/drm/omapdrm/Kconfig"
351353

352354
source "drivers/gpu/drm/tilcdc/Kconfig"

drivers/gpu/drm/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ obj-$(CONFIG_DRM_ATMEL_HLCDC) += atmel-hlcdc/
182182
obj-y += renesas/
183183
obj-y += omapdrm/
184184
obj-$(CONFIG_DRM_SUN4I) += sun4i/
185+
obj-$(CONFIG_DRM_STARFIVE) += starfive/
185186
obj-y += tilcdc/
186187
obj-$(CONFIG_DRM_QXL) += qxl/
187188
obj-$(CONFIG_DRM_VIRTIO_GPU) += virtio/

drivers/gpu/drm/starfive/Kconfig

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# SPDX-License-Identifier: GPL-2.0
2+
# Copyright (C) 2021 StarFive Technology Co., Ltd.
3+
4+
config DRM_STARFIVE
5+
tristate "DRM Support for StarFive SoCs"
6+
depends on DRM
7+
depends on SIFIVE_CCACHE && RISCV_NONSTANDARD_CACHE_OPS
8+
depends on SOC_STARFIVE || COMPILE_TEST
9+
select DRM_GEM_DMA_HELPER
10+
select DRM_KMS_HELPER
11+
select DRM_MIPI_DSI
12+
select DRM_PANEL
13+
help
14+
Choose this option if you have a StarFive SoCs.
15+
The module will be called starfive-drm
16+
This driver provides kernel mode setting and
17+
buffer management to userspace.

drivers/gpu/drm/starfive/Makefile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# SPDX-License-Identifier: GPL-2.0
2+
#
3+
# Copyright (C) 2021 StarFive Technology Co., Ltd.
4+
#
5+
starfive-drm-y := starfive_drm_drv.o \
6+
starfive_drm_gem.o \
7+
starfive_drm_crtc.o \
8+
starfive_drm_encoder.o \
9+
starfive_drm_plane.o \
10+
starfive_drm_lcdc.o \
11+
starfive_drm_vpp.o
12+
13+
obj-$(CONFIG_DRM_STARFIVE) += starfive-drm.o
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
Display Subsystem:(default FBdev)
2+
3+
Steps switch to DRM:
4+
1、Disable fbdev,close below config items:
5+
CONFIG_FB_STARFIVE=y
6+
CONFIG_FB_STARFIVE_HDMI_TDA998X=y
7+
CONFIG_FB_STARFIVE_VIDEO=y
8+
9+
2、open DRM hdmi pipeline,enable items:
10+
CONFIG_DRM_I2C_NXP_TDA998X=y
11+
CONFIG_DRM_I2C_NXP_TDA9950=y
12+
CONFIG_DRM_STARFIVE=y
13+
CONFIG_FRAMEBUFFER_CONSOLE=y
14+
15+
Precautions:when use DRM hdmi pipeline,please make sure CONFIG_DRM_STARFIVE_MIPI_DSI is disable ,
16+
or will cause color abnormal.
17+
18+
3、open DRM mipi pipeline
19+
20+
enable items:
21+
CONFIG_PHY_M31_DPHY_RX0=y
22+
CONFIG_DRM_STARFIVE_MIPI_DSI=y
23+
24+
25+
change jh7100.dtsi display-encoder as below:
26+
27+
display-encoder {
28+
compatible = "starfive,display-encoder";
29+
encoder-type = <6>; //2-TMDS, 3-LVDS, 6-DSI, 8-DPI
30+
status = "okay";
31+
32+
ports {
33+
port@0 {
34+
endpoint {
35+
remote-endpoint = <&dsi_out_port>;
36+
};
37+
};
38+
39+
port@1 {
40+
endpoint {
41+
remote-endpoint = <&crtc_0_out>;
42+
};
43+
};
44+
};
45+
};
46+
47+
install libdrm:
48+
make buildroot_initramfs-menuconfig
49+
choose:
50+
BR2_PACKAGE_LIBDRM=y
51+
BR2_PACKAGE_LIBDRM_RADEON=y
52+
BR2_PACKAGE_LIBDRM_AMDGPU=y
53+
BR2_PACKAGE_LIBDRM_NOUVEAU=y
54+
BR2_PACKAGE_LIBDRM_ETNAVIV=y
55+
BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
56+

0 commit comments

Comments
 (0)