notes-pmos-samsung-serranolte/drivers/display/general.md

6.0 KiB

SerranoLTE display configuration

TODO: split in multiple files like: fb, gpu, display, 2D accel, 3D accel

Specs

Display is 540x960 so QHD resolution.

Kernel config

#
# Graphics support
#
CONFIG_ION=y
CONFIG_ION_MSM=y
CONFIG_MSM_KGSL=y
CONFIG_MSM_KGSL_2D=y
CONFIG_KGSL_PER_PROCESS_PAGE_TABLE=y
CONFIG_MSM_KGSL_PAGE_TABLE_SIZE=0xFFF0000
CONFIG_MSM_KGSL_PAGE_TABLE_COUNT=24
CONFIG_MSM_KGSL_MMU_PAGE_FAULT=y
CONFIG_FB=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_SYS_FILLRECT=y
CONFIG_FB_SYS_COPYAREA=y
CONFIG_FB_SYS_IMAGEBLIT=y
CONFIG_FB_SYS_FOPS=y

#
# Frame buffer hardware drivers
#
CONFIG_FB_VIRTUAL=y
CONFIG_MSM_VIDC=y
CONFIG_MSM_VIDC_1080P=y
CONFIG_MSM_VIDC_VENC=y
CONFIG_MSM_VIDC_VDEC=y

#
# Mhl(sii8240) device support
#
CONFIG_MHL_VERSION=0x20
CONFIG_FB_MSM=y
CONFIG_FB_MSM_LCDC_HW=y
CONFIG_FB_MSM_TRIPLE_BUFFER=y
CONFIG_FB_MSM_MDP_HW=y
CONFIG_FB_MSM_MDP40=y
CONFIG_FEATURE_FLIPLR=y
CONFIG_FB_MSM_MIPI_DSI=y
CONFIG_FB_MSM_OVERLAY=y
CONFIG_FB_MSM_DTV=y
CONFIG_FB_MSM_MIPI_DSI_SAMSUNG_OLED=y
CONFIG_FB_MSM_MIPI_SAMSUNG_OLED_VIDEO_QHD_PT=y
CONFIG_FB_MSM_NO_MDP_PIPE_CTRL=y
CONFIG_FB_MSM_OVERLAY0_WRITEBACK=y
CONFIG_FB_MSM_OVERLAY1_WRITEBACK=y
CONFIG_FB_MSM_WRITEBACK_MSM_PANEL=y
CONFIG_FB_MSM_MIPI_SAMSUNG_OLED_VIDEO_QHD_PT_PANEL=y
CONFIG_FB_MSM_EXT_INTERFACE_COMMON=y
CONFIG_FB_MSM_HDMI_COMMON=y
CONFIG_FB_MSM_HDMI_3D=y
CONFIG_FB_MSM_HDMI_MSM_PANEL=y
CONFIG_FB_MSM_TVOUT_NONE=y
CONFIG_FB_MSM_DEFAULT_DEPTH_RGBA8888=y
CONFIG_FB_MSM_CAMERA_CSC=y
CONFIG_MIPI_DSI_RESET_LP11=y
CONFIG_MDP_SHUTDOWN=y
CONFIG_MDNIE_LITE_TUNING=y
CONFIG_MIPI_SAMSUNG_OLED_VIDEO_QHD_MIPICLK_461=y
CONFIG_RUNTIME_MIPI_CLK_CHANGE=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_GENERIC=y

Virtual FrameBuffer

In drivers/video/Makefile:

# the test framebuffer is last
obj-$(CONFIG_FB_VIRTUAL)          += vfb.o

In drivers/video/Kconfig:

Line 40:

menuconfig FB
	tristate "Support for frame buffer devices"
	---help---
	  The frame buffer device provides an abstraction for the graphics
	  hardware. It represents the frame buffer of some video hardware and
	  allows application software to access the graphics hardware through
	  a well-defined interface, so the software doesn't need to know
	  anything about the low-level (hardware register) stuff.

	  Frame buffer devices work identically across the different
	  architectures supported by Linux and make the implementation of
	  application programs easier and more portable; at this point, an X
	  server exists which uses the frame buffer device exclusively.
	  On several non-X86 architectures, the frame buffer device is the
	  only way to use the graphics hardware.

	  The device is accessed through special device nodes, usually located
	  in the /dev directory, i.e. /dev/fb*.

	  You need an utility program called fbset to make full use of frame
	  buffer devices. Please read <file:Documentation/fb/framebuffer.txt>
	  and the Framebuffer-HOWTO at
	  <http://www.munted.org.uk/programming/Framebuffer-HOWTO-1.3.html> for more
	  information.

	  Say Y here and to the driver for your graphics board below if you
	  are compiling a kernel for a non-x86 architecture.

	  If you are compiling for the x86 architecture, you can say Y if you
	  want to play with it, but it is not essential. Please note that
	  running graphical applications that directly touch the hardware
	  (e.g. an accelerated X server) and that are not frame buffer
	  device-aware may cause unexpected results. If unsure, say N.

Line 2246:

config FB_VIRTUAL
	tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)"
	depends on FB
	select FB_SYS_FILLRECT
	select FB_SYS_COPYAREA
	select FB_SYS_IMAGEBLIT
	select FB_SYS_FOPS
	---help---
	  This is a `virtual' frame buffer device. It operates on a chunk of
	  unswappable kernel memory instead of on the memory of a graphics
	  board. This means you cannot see any output sent to this frame
	  buffer device, while it does consume precious memory. The main use
	  of this frame buffer device is testing and debugging the frame
	  buffer subsystem. Do NOT enable it for normal systems! To protect
	  the innocent, it has to be enabled explicitly at boot time using the
	  kernel option `video=vfb:'.

	  To compile this driver as a module, choose M here: the
	  module will be called vfb. In order to load it, you must use
	  the vfb_enable=1 option.

	  If unsure, say N.

MSM FrameBuffer

In drivers/video/msm/Kconfig

config FB_MSM
	tristate "MSM Framebuffer support"
	depends on FB && ARCH_MSM
	select FB_BACKLIGHT if FB_MSM_BACKLIGHT
	select NEW_LEDS
	select LEDS_CLASS
	select FB_CFB_FILLRECT
	select FB_CFB_COPYAREA
	select FB_CFB_IMAGEBLIT
	---help---
	  Support for MSM Framebuffer.

Video Core

In drivers/video/msm/vidc/Kconfig:

#
# VIDEO CORE
#
menuconfig MSM_VIDC
	bool "Video Core Driver"
	depends on ARCH_MSM8X60 || ARCH_MSM7X30 || ARCH_MSM8960
	default y
	---help---
	Say Y here to see options for video device drivers.
	If you say N, all options in this submenu will be skipped and disabled.

config MSM_VIDC_720P
	bool "720P Video Core"
	depends on MSM_VIDC && ARCH_MSM7X30
	default y
	help
	This option enables support for Video core.

config MSM_VIDC_1080P
	bool "1080P Video Core"
	depends on MSM_VIDC && (ARCH_MSM8X60 || ARCH_MSM8960)
	default y
	help
	This option enables support for Video core.

config MSM_VIDC_VENC
	tristate "Video encoder"
	depends on MSM_VIDC
	default y
	help
	This option enables support for Video encoder.

config MSM_VIDC_VDEC
	tristate "Video decoder"
	depends on MSM_VIDC
	default y
	help
	This option enables support for Video decoder.

config MSM_VIDC_CONTENT_PROTECTION
	bool "Enable Content Protection"
	help
	  Enable content protection feature for Video.

WiFi Display Driver

In drivers/media/video/msm_wfd/Kconfig:

menuconfig MSM_WFD
	bool "Qualcomm MSM Wifi Display Driver"
		depends on (MSM_VIDC_1080P || MSM_VIDC_V4L2)
		---help---
		Enables the Wifi Display driver.

Huh?!