All Projects → msm8916-mainline → linux-mdss-dsi-panel-driver-generator

msm8916-mainline / linux-mdss-dsi-panel-driver-generator

Licence: GPL-2.0 license
Generate Linux DRM panel kernel driver based on QCOM MDSS DSI device tree

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to linux-mdss-dsi-panel-driver-generator

Uiadmin
UIAdmin - UI Kit 3 Responsive Admin Panel
Stars: ✭ 155 (+278.05%)
Mutual labels:  panel
Panel
Pterodactyl is an open-source game server management panel built with PHP 7, React, and Go. Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive UI to end users.
Stars: ✭ 2,988 (+7187.8%)
Mutual labels:  panel
electron-dockable
dockable panel for electron (work in progress...)
Stars: ✭ 50 (+21.95%)
Mutual labels:  panel
Kinto Admin
Kinto Web Administration Console
Stars: ✭ 175 (+326.83%)
Mutual labels:  panel
Dynamic Panel Transparency
Adds Transparency To The Gnome Shell Panel
Stars: ✭ 189 (+360.98%)
Mutual labels:  panel
Elasticsearch Comrade
Elasticsearch admin panel built for ops and monitoring
Stars: ✭ 214 (+421.95%)
Mutual labels:  panel
Linux Dotfiles
I configure lots of things, sorting them out here
Stars: ✭ 137 (+234.15%)
Mutual labels:  panel
electron-panel
Manipulate panels in window for Electron.
Stars: ✭ 14 (-65.85%)
Mutual labels:  panel
Cfpmp
Cloudflare Partner Management Panel
Stars: ✭ 194 (+373.17%)
Mutual labels:  panel
Panel
A Snapchat inspired ScrollView Controller Written in Swift
Stars: ✭ 22 (-46.34%)
Mutual labels:  panel
Imscp
i-MSCP Main Repository
Stars: ✭ 184 (+348.78%)
Mutual labels:  panel
Library Management System
📚 An automated library management system developed in Laravel 4.2 PHP MVC Framework
Stars: ✭ 189 (+360.98%)
Mutual labels:  panel
Jspanel4
A JavaScript library to create highly configurable floating panels, modals, tooltips, hints/notifiers/alerts or contextmenus for use in backend solutions and other web applications.
Stars: ✭ 217 (+429.27%)
Mutual labels:  panel
Desktopfolder
Bring your Desktop Back to Life
Stars: ✭ 171 (+317.07%)
Mutual labels:  panel
SharpPanel
C# Admin Control Panel Finder For Windows
Stars: ✭ 34 (-17.07%)
Mutual labels:  panel
Panelswitchhelper
✔️ A framework that helps the keyboard smoothly transition to the function panel 一个帮助键盘平稳过渡到功能面板的框架,支持动画无缝衔接,支持 activity/fragment/dialog/dialogFragment/popupWindow 容器,支持IM/直播/视频播放/信息流评论等场景,支持全屏模式。
Stars: ✭ 1,957 (+4673.17%)
Mutual labels:  panel
Nwg Launchers
GTK-based launchers: application grid, button bar, dmenu for sway and other window managers
Stars: ✭ 211 (+414.63%)
Mutual labels:  panel
UnityGUI
UGUI Panel Systems for navigation, animation and more
Stars: ✭ 80 (+95.12%)
Mutual labels:  panel
grafana-dynamictext-panel
A dynamic, data-driven text for @grafana.
Stars: ✭ 42 (+2.44%)
Mutual labels:  panel
Side Menu.ios
Animated side menu with customizable UI
Stars: ✭ 2,702 (+6490.24%)
Mutual labels:  panel

linux-mdss-dsi-panel-driver-generator (lmdpdg)

The downstream kernel for Qualcomm-based Android devices describes panel properties and initialization sequences in the device tree.
(See DSI Panel Driver Porting for details)

This tool uses the information provided in the device tree to automatically generate a simple DRM panel driver, for use in mainline together with Freedreno. As far as possible, it attempts to generate clean C code, so that only minimal changes are necessary for upstreaming the generated panel driver.

Preparation

Requirements

  • Python 3.7+
  • pylibfdt compiled for Python 3

Extracting device tree blob (DTB)

lmdpdg operates on the compiled device tree blob (dtb), not the original source file from the kernel source. This means that it can be easily used even when the kernel source is not available.

The device tree blob can be easily extracted from a stock boot image (boot.img):

$ tools/unpackbootimg.py boot.img
$ tools/unpackqcdt.py dt.img

This will produce multiple *.dtb files in the correct directory. You will need to try multiple (or all) of them to find the correct one.

Compiling from source .dtsi

If you have only the source .dtsi for the panel, or would like to make changes in it, you can still use it as input for this tool. You just need to pretend to have a full device tree blob by setting up the needed device nodes:

/dts-v1/;

/ {
	mdp {
		compatible = "qcom,mdss_mdp";

		/* Add your panels here */
		dsi_sim_vid: qcom,mdss_dsi_sim_video {
			qcom,mdss-dsi-panel-name = "Simulator video mode dsi panel";
			//qcom,mdss-dsi-panel-controller = <&mdss_dsi0>;
			qcom,mdss-dsi-panel-type = "dsi_video_mode";
			/* ... */
		};
	};
};

Comment out entries that refer to other devices (see above).

Compile it using dtc: dtc -O your.dtb your.dts. That's it! Yay!

Usage

Got the device tree blob? Then you are ready to go:

$ ./lmdpdg.py <dtbs...>

The generator has a couple of command line options that can be used to generate additional code (e.g. to enable a regulator to power on the panel). The script will gladly inform you about available options if you pass --help.

Currently there are 4 files generated:

  • panel-xyz.c: The main (full) panel driver for Linux.
  • panel-simple-xyz.c: A snippet to use for panel-simple.c in Linux. Can be used if the full panel driver is causing problems.
  • panel-xyz.dtsi: An example for the relevant panel setup in the device tree.
  • lk_panel_xyz.h: A panel header for Qualcomm's Little Kernel (LK) bootloader. Can be used to turn the display on for splash screens there.

Making final edits

In most cases, the driver should work as-is, no changes required. If you would like to use it permanently, or even upstream it, here are a few things that you may want to update:

  • The compatible string in the device tree match table
  • MODULE_AUTHOR
  • MODULE_DESCRIPTION (eventually)
  • License header
  • If you have comments in your device tree source file (e.g. for the on/off command sequence), you may want to apply them to the driver to make the code a bit less magic.

Adding it to drivers/gpu/drm/panel, together with adding needed Kconfig and Makefile entries should be straightforward.

Warning

This tool is like a human: it can make mistakes. Nobody knows what will happen to your panel if you send it bad commands or turn it on incorrectly. In most cases it will just refuse to work.

However, this tool is mainly intended as a helping hand when porting new panels. You should verify that its output makes sense before using the generated driver.

Questions?

Feel free to open an issue! :)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].