Skip to content

Commit 7525512

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> Link: https://lore.kernel.org/r/a8ca722539672d6369d6e4092e1e08cb6b58c546.1645535955.git.geert@linux-m68k.org Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
1 parent 644c4ba commit 7525512

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
@@ -159,6 +159,12 @@ static void ccache_flush_range(phys_addr_t start, size_t len)
159159
}
160160
}
161161

162+
void sifive_ccache_flush_range(phys_addr_t start, size_t len)
163+
{
164+
ccache_flush_range(start, len);
165+
}
166+
EXPORT_SYMBOL_GPL(sifive_ccache_flush_range);
167+
162168
static const struct riscv_nonstd_cache_ops ccache_mgmt_ops __initconst = {
163169
.wback = &ccache_flush_range,
164170
.inv = &ccache_flush_range,

drivers/gpu/drm/Kconfig

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

323323
source "drivers/gpu/drm/sun4i/Kconfig"
324324

325+
source "drivers/gpu/drm/starfive/Kconfig"
326+
325327
source "drivers/gpu/drm/omapdrm/Kconfig"
326328

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

drivers/gpu/drm/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ obj-$(CONFIG_DRM_ATMEL_HLCDC) += atmel-hlcdc/
163163
obj-y += renesas/
164164
obj-y += omapdrm/
165165
obj-$(CONFIG_DRM_SUN4I) += sun4i/
166+
obj-$(CONFIG_DRM_STARFIVE) += starfive/
166167
obj-y += tilcdc/
167168
obj-$(CONFIG_DRM_QXL) += qxl/
168169
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)