diff --git a/repos/dde_linux/imx8_fb.list b/repos/dde_linux/imx8_fb.list new file mode 100644 index 000000000..c82d1c0df --- /dev/null +++ b/repos/dde_linux/imx8_fb.list @@ -0,0 +1,214 @@ +linux-x.x.x/drivers/base/component.c +linux-x.x.x/drivers/base/devres.c +linux-x.x.x/drivers/dma-buf/dma-fence.c +linux-x.x.x/drivers/gpu/drm/drm_atomic.c +linux-x.x.x/drivers/gpu/drm/drm_atomic_helper.c +linux-x.x.x/drivers/gpu/drm/drm_blend.c +linux-x.x.x/drivers/gpu/drm/drm_bridge.c +linux-x.x.x/drivers/gpu/drm/drm_connector.c +linux-x.x.x/drivers/gpu/drm/drm_crtc.c +linux-x.x.x/drivers/gpu/drm/drm_crtc_helper_internal.h +linux-x.x.x/drivers/gpu/drm/drm_crtc_internal.h +linux-x.x.x/drivers/gpu/drm/drm_dp_helper.c +linux-x.x.x/drivers/gpu/drm/drm_edid.c +linux-x.x.x/drivers/gpu/drm/drm_encoder.c +linux-x.x.x/drivers/gpu/drm/drm_fourcc.c +linux-x.x.x/drivers/gpu/drm/drm_framebuffer.c +linux-x.x.x/drivers/gpu/drm/drm_gem.c +linux-x.x.x/drivers/gpu/drm/drm_gem_cma_helper.c +linux-x.x.x/drivers/gpu/drm/drm_gem_framebuffer_helper.c +linux-x.x.x/drivers/gpu/drm/drm_internal.h +linux-x.x.x/drivers/gpu/drm/drm_mm.c +linux-x.x.x/drivers/gpu/drm/drm_mode_config.c +linux-x.x.x/drivers/gpu/drm/drm_mode_object.c +linux-x.x.x/drivers/gpu/drm/drm_modes.c +linux-x.x.x/drivers/gpu/drm/drm_modeset_helper.c +linux-x.x.x/drivers/gpu/drm/drm_modeset_lock.c +linux-x.x.x/drivers/gpu/drm/drm_of.c +linux-x.x.x/drivers/gpu/drm/drm_plane.c +linux-x.x.x/drivers/gpu/drm/drm_probe_helper.c +linux-x.x.x/drivers/gpu/drm/drm_property.c +linux-x.x.x/drivers/gpu/drm/drm_rect.c +linux-x.x.x/drivers/gpu/drm/drm_vblank.c +linux-x.x.x/drivers/gpu/drm/drm_vma_manager.c +linux-x.x.x/drivers/gpu/drm/imx/imx-drm.h +linux-x.x.x/drivers/gpu/drm/imx/imx-drm-core.c +linux-x.x.x/drivers/gpu/drm/imx/dcss/dcss-crtc.c +linux-x.x.x/drivers/gpu/drm/imx/dcss/dcss-crtc.h +linux-x.x.x/drivers/gpu/drm/imx/dcss/dcss-kms.c +linux-x.x.x/drivers/gpu/drm/imx/dcss/dcss-kms.h +linux-x.x.x/drivers/gpu/drm/imx/dcss/dcss-plane.c +linux-x.x.x/drivers/gpu/drm/imx/dcss/dcss-plane.h +linux-x.x.x/drivers/gpu/drm/imx/hdp/API_AFE_mcu1_dp.c +linux-x.x.x/drivers/gpu/drm/imx/hdp/API_AFE_mcu1_dp.h +linux-x.x.x/drivers/gpu/drm/imx/hdp/API_AFE_mcu2_dp.c +linux-x.x.x/drivers/gpu/drm/imx/hdp/API_AFE_mcu2_dp.h +linux-x.x.x/drivers/gpu/drm/imx/hdp/API_AFE_ss28fdsoi_kiran_hdmitx.c +linux-x.x.x/drivers/gpu/drm/imx/hdp/API_AFE_ss28fdsoi_kiran_hdmitx.h +linux-x.x.x/drivers/gpu/drm/imx/hdp/API_AFE_t28hpc_hdmitx.c +linux-x.x.x/drivers/gpu/drm/imx/hdp/API_AFE_t28hpc_hdmitx.h +linux-x.x.x/drivers/gpu/drm/imx/hdp/imx-arc.c +linux-x.x.x/drivers/gpu/drm/imx/hdp/imx-dp.c +linux-x.x.x/drivers/gpu/drm/imx/hdp/imx-dp.h +linux-x.x.x/drivers/gpu/drm/imx/hdp/imx-hdcp-private.h +linux-x.x.x/drivers/gpu/drm/imx/hdp/imx-hdcp.c +linux-x.x.x/drivers/gpu/drm/imx/hdp/imx-hdcp.h +linux-x.x.x/drivers/gpu/drm/imx/hdp/imx-hdmi.c +linux-x.x.x/drivers/gpu/drm/imx/hdp/imx-hdmi.h +linux-x.x.x/drivers/gpu/drm/imx/hdp/imx-hdp.c +linux-x.x.x/drivers/gpu/drm/imx/hdp/imx-hdp.h +linux-x.x.x/drivers/gpu/drm/imx/hdp/ss28fdsoi_hdmitx_table.c +linux-x.x.x/drivers/gpu/drm/imx/hdp/ss28fdsoi_hdmitx_table.h +linux-x.x.x/drivers/gpu/drm/imx/hdp/t28hpc_hdmitx_table.c +linux-x.x.x/drivers/gpu/drm/imx/hdp/t28hpc_hdmitx_table.h +linux-x.x.x/drivers/gpu/imx/dcss/dcss-common.c +linux-x.x.x/drivers/gpu/imx/dcss/dcss-blkctl.c +linux-x.x.x/drivers/gpu/imx/dcss/dcss-ctxld.c +linux-x.x.x/drivers/gpu/imx/dcss/dcss-dec400d.c +linux-x.x.x/drivers/gpu/imx/dcss/dcss-dpr.c +linux-x.x.x/drivers/gpu/imx/dcss/dcss-dtg.c +linux-x.x.x/drivers/gpu/imx/dcss/dcss-dtrc.c +linux-x.x.x/drivers/gpu/imx/dcss/dcss-hdr10.c +linux-x.x.x/drivers/gpu/imx/dcss/dcss-hdr10-tables.h +linux-x.x.x/drivers/gpu/imx/dcss/dcss-prv.h +linux-x.x.x/drivers/gpu/imx/dcss/dcss-rdsrc.c +linux-x.x.x/drivers/gpu/imx/dcss/dcss-scaler.c +linux-x.x.x/drivers/gpu/imx/dcss/dcss-ss.c +linux-x.x.x/drivers/gpu/imx/dcss/dcss-wrscl.c +linux-x.x.x/drivers/i2c/i2c-boardinfo.c +linux-x.x.x/drivers/i2c/i2c-core-base.c +linux-x.x.x/drivers/i2c/i2c-core.h +linux-x.x.x/drivers/irqchip/irq-imx-irqsteer.c +linux-x.x.x/drivers/mxc/hdp/API_AFE.c +linux-x.x.x/drivers/mxc/hdp/API_AFE.h +linux-x.x.x/drivers/mxc/hdp/API_DPTX.c +linux-x.x.x/drivers/mxc/hdp/API_DPTX.h +linux-x.x.x/drivers/mxc/hdp/API_General.c +linux-x.x.x/drivers/mxc/hdp/API_General.h +linux-x.x.x/drivers/mxc/hdp/API_HDCP.c +linux-x.x.x/drivers/mxc/hdp/API_HDCP.h +linux-x.x.x/drivers/mxc/hdp/API_HDMITX.c +linux-x.x.x/drivers/mxc/hdp/API_HDMITX.h +linux-x.x.x/drivers/mxc/hdp/API_Infoframe.c +linux-x.x.x/drivers/mxc/hdp/API_Infoframe.h +linux-x.x.x/drivers/mxc/hdp/address.h +linux-x.x.x/drivers/mxc/hdp/all.h +linux-x.x.x/drivers/mxc/hdp/apb_cfg.h +linux-x.x.x/drivers/mxc/hdp/dptx_framer.h +linux-x.x.x/drivers/mxc/hdp/dptx_stream.h +linux-x.x.x/drivers/mxc/hdp/general_handler.h +linux-x.x.x/drivers/mxc/hdp/hdcp.h +linux-x.x.x/drivers/mxc/hdp/hdcp2.h +linux-x.x.x/drivers/mxc/hdp/hdcp_tran.h +linux-x.x.x/drivers/mxc/hdp/hdmi.h +linux-x.x.x/drivers/mxc/hdp/mailBox.h +linux-x.x.x/drivers/mxc/hdp/mhl_hdtx_top.h +linux-x.x.x/drivers/mxc/hdp/opcodes.h +linux-x.x.x/drivers/mxc/hdp/source_car.h +linux-x.x.x/drivers/mxc/hdp/source_phy.h +linux-x.x.x/drivers/mxc/hdp/source_pif.h +linux-x.x.x/drivers/mxc/hdp/source_vif.h +linux-x.x.x/drivers/mxc/hdp/util.c +linux-x.x.x/drivers/mxc/hdp/util.h +linux-x.x.x/drivers/mxc/hdp-cec/imx-hdp-cec.h +linux-x.x.x/drivers/video/hdmi.c +linux-x.x.x/include/asm-generic/atomic64.h +linux-x.x.x/include/asm-generic/bitops/__ffs.h +linux-x.x.x/include/asm-generic/bitops/ffs.h +linux-x.x.x/include/asm-generic/bitops/fls64.h +linux-x.x.x/include/asm-generic/bitops/__fls.h +linux-x.x.x/include/asm-generic/bitops/fls.h +linux-x.x.x/include/asm-generic/bitops/non-atomic.h +linux-x.x.x/include/drm/drm_atomic.h +linux-x.x.x/include/drm/drm_atomic_helper.h +linux-x.x.x/include/drm/drm_auth.h +linux-x.x.x/include/drm/drm_blend.h +linux-x.x.x/include/drm/drm_bridge.h +linux-x.x.x/include/drm/drm_connector.h +linux-x.x.x/include/drm/drm_crtc.h +linux-x.x.x/include/drm/drm_crtc_helper.h +linux-x.x.x/include/drm/drm_debugfs_crc.h +linux-x.x.x/include/drm/drm_device.h +linux-x.x.x/include/drm/drm_displayid.h +linux-x.x.x/include/drm/drm_dp_helper.h +linux-x.x.x/include/drm/drm_drv.h +linux-x.x.x/include/drm/drm_edid.h +linux-x.x.x/include/drm/drm_encoder.h +linux-x.x.x/include/drm/drm_fb_cma_helper.h +linux-x.x.x/include/drm/drm_fb_helper.h +linux-x.x.x/include/drm/drm_file.h +linux-x.x.x/include/drm/drm_fourcc.h +linux-x.x.x/include/drm/drm_framebuffer.h +linux-x.x.x/include/drm/drm_gem.h +linux-x.x.x/include/drm/drm_gem_cma_helper.h +linux-x.x.x/include/drm/drm_gem_framebuffer_helper.h +linux-x.x.x/include/drm/drm_hashtab.h +linux-x.x.x/include/drm/drm_hdcp.h +linux-x.x.x/include/drm/drm_ioctl.h +linux-x.x.x/include/drm/drm_mm.h +linux-x.x.x/include/drm/drm_mode_config.h +linux-x.x.x/include/drm/drm_mode_object.h +linux-x.x.x/include/drm/drm_modeset_helper.h +linux-x.x.x/include/drm/drm_modeset_helper_vtables.h +linux-x.x.x/include/drm/drm_modeset_lock.h +linux-x.x.x/include/drm/drm_modes.h +linux-x.x.x/include/drm/drm_of.h +linux-x.x.x/include/drm/drm_panel.h +linux-x.x.x/include/drm/drmP.h +linux-x.x.x/include/drm/drm_plane.h +linux-x.x.x/include/drm/drm_plane_helper.h +linux-x.x.x/include/drm/drm_prime.h +linux-x.x.x/include/drm/drm_print.h +linux-x.x.x/include/drm/drm_property.h +linux-x.x.x/include/drm/drm_rect.h +linux-x.x.x/include/drm/drm_vblank.h +linux-x.x.x/include/drm/drm_vma_manager.h +linux-x.x.x/include/linux/irqchip/chained_irq.h +linux-x.x.x/include/linux/busfreq-imx.h +linux-x.x.x/include/linux/component.h +linux-x.x.x/include/linux/dma-fence.h +linux-x.x.x/include/linux/fb.h +linux-x.x.x/include/linux/hdmi.h +linux-x.x.x/include/linux/i2c.h +linux-x.x.x/include/linux/idr.h +linux-x.x.x/include/linux/interval_tree_generic.h +linux-x.x.x/include/linux/interval_tree.h +linux-x.x.x/include/linux/irqdomain.h +linux-x.x.x/include/linux/irqhandler.h +linux-x.x.x/include/linux/list.h +linux-x.x.x/include/linux/list_sort.h +linux-x.x.x/include/linux/log2.h +linux-x.x.x/include/linux/math64.h +linux-x.x.x/include/linux/mod_devicetable.h +linux-x.x.x/include/linux/of_graph.h +linux-x.x.x/include/linux/pm_runtime.h +linux-x.x.x/include/linux/pm_wakeirq.h +linux-x.x.x/include/linux/radix-tree.h +linux-x.x.x/include/linux/ratelimit.h +linux-x.x.x/include/linux/rbtree_augmented.h +linux-x.x.x/include/linux/rbtree.h +linux-x.x.x/include/linux/sort.h +linux-x.x.x/include/linux/vga_switcheroo.h +linux-x.x.x/include/soc/imx8/sc/ipc.h +linux-x.x.x/include/soc/imx8/sc/scfw.h +linux-x.x.x/include/soc/imx8/sc/sci.h +linux-x.x.x/include/soc/imx8/sc/types.h +linux-x.x.x/include/soc/imx8/soc.h +linux-x.x.x/include/uapi/drm/drm_fourcc.h +linux-x.x.x/include/uapi/drm/drm.h +linux-x.x.x/include/uapi/drm/drm_mode.h +linux-x.x.x/include/uapi/linux/byteorder/little_endian.h +linux-x.x.x/include/uapi/linux/cec.h +linux-x.x.x/include/uapi/linux/fb.h +linux-x.x.x/include/uapi/linux/i2c.h +linux-x.x.x/include/uapi/linux/media-bus-format.h +linux-x.x.x/include/uapi/linux/swab.h +linux-x.x.x/include/video/display_timing.h +linux-x.x.x/include/video/of_videomode.h +linux-x.x.x/include/video/videomode.h +linux-x.x.x/include/video/viv-metadata.h +linux-x.x.x/include/video/imx-dcss.h +linux-x.x.x/lib/idr.c +linux-x.x.x/lib/list_sort.c +linux-x.x.x/lib/radix-tree.c +linux-x.x.x/lib/rbtree.c diff --git a/repos/dde_linux/lib/import/import-imx8_fb_include.mk b/repos/dde_linux/lib/import/import-imx8_fb_include.mk new file mode 100644 index 000000000..71e9053c8 --- /dev/null +++ b/repos/dde_linux/lib/import/import-imx8_fb_include.mk @@ -0,0 +1,22 @@ +LX_CONTRIB_DIR := $(call select_from_ports,dde_linux)/src/drivers/framebuffer/imx8 +SRC_DIR := $(REP_DIR)/src/drivers/framebuffer/imx8 + +# architecture-dependent includes +ifeq ($(filter-out $(SPECS),arm_64),) + ARCH_SRC_INC_DIR += $(REP_DIR)/src/include/spec/arm_64 \ + $(LX_CONTRIB_DIR)/arch/arm64/include \ + $(LX_CONTRIB_DIR)/arch/arm64/include/uapi \ + $(LX_CONTRIB_DIR)/arch/arm64/include/generated \ + $(LX_CONTRIB_DIR)/arch/arm64/include/generated/uapi +endif # arm_64 + +INC_DIR += $(SRC_DIR)/include \ + $(REP_DIR)/src/include \ + $(ARCH_SRC_INC_DIR) \ + $(LX_CONTRIB_DIR)/drivers/gpu/drm \ + $(LX_CONTRIB_DIR)/drivers/gpu/drm/imx \ + $(LX_CONTRIB_DIR)/include \ + $(LX_CONTRIB_DIR)/include/uapi \ + $(LIB_CACHE_DIR)/imx8_fb_include/include/include/include + +CC_OPT += -U__linux__ -D__KERNEL__ diff --git a/repos/dde_linux/lib/mk/spec/arm_64/imx8_fb_drv.mk b/repos/dde_linux/lib/mk/spec/arm_64/imx8_fb_drv.mk new file mode 100644 index 000000000..d177acfca --- /dev/null +++ b/repos/dde_linux/lib/mk/spec/arm_64/imx8_fb_drv.mk @@ -0,0 +1,47 @@ +LX_CONTRIB_DIR := $(call select_from_ports,dde_linux)/src/drivers/framebuffer/imx8 +SRC_DIR := $(REP_DIR)/src/drivers/framebuffer/imx8 + +LIBS += imx8_fb_include + +SRC_C := +SRC_C += $(notdir $(wildcard $(LX_CONTRIB_DIR)/drivers/dma-buf/*.c)) +SRC_C += $(notdir $(wildcard $(LX_CONTRIB_DIR)/drivers/i2c/*.c)) +SRC_C += $(notdir $(wildcard $(LX_CONTRIB_DIR)/drivers/base/*.c)) +SRC_C += $(notdir $(wildcard $(LX_CONTRIB_DIR)/drivers/gpu/drm/*.c)) +SRC_C += $(notdir $(wildcard $(LX_CONTRIB_DIR)/drivers/gpu/drm/imx/*.c)) +SRC_C += $(notdir $(wildcard $(LX_CONTRIB_DIR)/drivers/gpu/drm/imx/dcss/*.c)) +SRC_C += $(notdir $(wildcard $(LX_CONTRIB_DIR)/drivers/gpu/drm/imx/hdp/*.c)) +SRC_C += $(notdir $(wildcard $(LX_CONTRIB_DIR)/drivers/gpu/imx/dcss/*.c)) +SRC_C += $(notdir $(wildcard $(LX_CONTRIB_DIR)/drivers/irqchip/*.c)) +SRC_C += $(notdir $(wildcard $(LX_CONTRIB_DIR)/drivers/mxc/hdp/*.c)) +SRC_C += $(notdir $(wildcard $(LX_CONTRIB_DIR)/drivers/video/*.c)) +SRC_C += $(notdir $(wildcard $(LX_CONTRIB_DIR)/lib/*.c)) + +# +# Linux sources are C89 with GNU extensions +# +CC_C_OPT += -std=gnu89 + +# +# Reduce build noise of compiling contrib code +# +CC_WARN = -Wall -Wno-uninitialized -Wno-unused-but-set-variable \ + -Wno-unused-variable -Wno-unused-function \ + -Wno-pointer-arith -Wno-pointer-sign \ + -Wno-int-to-pointer-cast -Wno-stringop-truncation + +vpath %.c $(LX_CONTRIB_DIR)/drivers/base +vpath %.c $(LX_CONTRIB_DIR)/drivers/dma-buf +vpath %.c $(LX_CONTRIB_DIR)/drivers/i2c +vpath %.c $(LX_CONTRIB_DIR)/drivers/gpu/drm +vpath %.c $(LX_CONTRIB_DIR)/drivers/gpu/drm/imx +vpath %.c $(LX_CONTRIB_DIR)/drivers/gpu/drm/imx/dcss +vpath %.c $(LX_CONTRIB_DIR)/drivers/gpu/drm/imx/hdp +vpath %.c $(LX_CONTRIB_DIR)/drivers/gpu/imx/dcss +vpath %.c $(LX_CONTRIB_DIR)/drivers/irqchip +vpath %.c $(LX_CONTRIB_DIR)/drivers/mxc/hdp +vpath %.c $(LX_CONTRIB_DIR)/drivers/video +vpath %.c $(LX_CONTRIB_DIR)/lib + + +CC_CXX_WARN_STRICT = diff --git a/repos/dde_linux/lib/mk/spec/arm_64/imx8_fb_include.mk b/repos/dde_linux/lib/mk/spec/arm_64/imx8_fb_include.mk new file mode 100644 index 000000000..e9a3112cf --- /dev/null +++ b/repos/dde_linux/lib/mk/spec/arm_64/imx8_fb_include.mk @@ -0,0 +1,37 @@ +# +# Pseudo library to generate a symlink for each header file included by the +# contrib code. Each symlink points to the same 'lx_emul.h' file, which +# provides our emulation of the Linux kernel API. +# + +ifeq ($(called_from_lib_mk),yes) + +LX_CONTRIB_DIR := $(call select_from_ports,dde_linux)/src/drivers/framebuffer/imx8 +LX_EMUL_H := $(REP_DIR)/src/drivers/framebuffer/imx8/include/lx_emul.h + +# +# Determine the header files included by the contrib code. For each +# of these header files we create a symlink to 'lx_emul.h'. +# +SCAN_DIRS := $(addprefix $(LX_CONTRIB_DIR)/include/, asm-generic drm linux soc uapi video) \ + $(addprefix $(LX_CONTRIB_DIR)/, drivers lib) +GEN_INCLUDES := $(shell grep -rIh "^\#include .*" $(SCAN_DIRS) |\ + sed "s/^\#include [^<\"]*[<\"]\([^>\"]*\)[>\"].*/\1/" |\ + sort | uniq) + +# +# Put Linux headers in 'GEN_INC' dir, since some include use "../../" paths use +# three level include hierarchy +# +GEN_INC := $(shell pwd)/include/include/include +GEN_INCLUDES := $(addprefix $(GEN_INC)/,$(GEN_INCLUDES)) + +all: $(GEN_INCLUDES) + +$(GEN_INCLUDES): + $(VERBOSE)mkdir -p $(dir $@) + $(VERBOSE)ln -sf $(LX_EMUL_H) $@ + +endif + +CC_CXX_WARN_STRICT = diff --git a/repos/dde_linux/patches/imx8_fb_dcss_blkctl.patch b/repos/dde_linux/patches/imx8_fb_dcss_blkctl.patch new file mode 100644 index 000000000..66a974f36 --- /dev/null +++ b/repos/dde_linux/patches/imx8_fb_dcss_blkctl.patch @@ -0,0 +1,23 @@ +dcss_blkctl.patch + +diff --git a/drivers/gpu/imx/dcss/dcss-blkctl.c b/drivers/gpu/imx/dcss/dcss-blkctl.c +index 2f13b33..63d48bf 100644 +--- a/drivers/gpu/imx/dcss/dcss-blkctl.c ++++ b/drivers/gpu/imx/dcss/dcss-blkctl.c +@@ -115,10 +115,14 @@ int dcss_blkctl_init(struct dcss_soc *dcss, unsigned long blkctl_base) + disp_dev = of_get_property(node, "disp-dev", &len); + if (!disp_dev || !strncmp(disp_dev, "hdmi_disp", 9)) + blkctl->hdmi_output = true; +- ++#if 0 ++ /* ++ * XXX: for some reason 'HDMI_MIPI_CLK_SEL' does not work with SOC revision ++ * 0x20 and Genode ++ */ + if (imx8_get_soc_revision() >= B0_SILICON_ID) + blkctl->clk_setting = HDMI_MIPI_CLK_SEL; +- ++#endif + dcss_blkctl_cfg(dcss); + + return 0; diff --git a/repos/dde_linux/patches/imx8_fb_dcss_common.patch b/repos/dde_linux/patches/imx8_fb_dcss_common.patch new file mode 100644 index 000000000..7ccd42503 --- /dev/null +++ b/repos/dde_linux/patches/imx8_fb_dcss_common.patch @@ -0,0 +1,23 @@ +dcss_common.patch + +diff --git a/drivers/gpu/imx/dcss/dcss-common.c b/drivers/gpu/imx/dcss/dcss-common.c +index cb15533..90b6b4d 100644 +--- a/drivers/gpu/imx/dcss/dcss-common.c ++++ b/drivers/gpu/imx/dcss/dcss-common.c +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + #include + #include