From dee78f4cfbe1c035c904728ca97b687d26d8c47b Mon Sep 17 00:00:00 2001 From: Marijn Suijten Date: Tue, 22 Aug 2023 16:39:08 +0200 Subject: [PATCH 1/2] panel: Chain in `post-panel-on-command` This is a perfect contended for the `.prepare()` -> `.enable()` split; on Sony panels the unblank command is typically in `post-panel-on` to make it happen after the panel is prepared, the bridge is on, and pixel data is flowing. Without this pretty much all our panels are generated with a driver that never unblanks the panel. --- driver.py | 3 +++ panel.py | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/driver.py b/driver.py index bd97174..25ad230 100644 --- a/driver.py +++ b/driver.py @@ -136,6 +136,9 @@ def generate_commands(p: Panel, options: Options, cmd_name: str) -> str: s += '\n' block = '{' in c.generated + if cmd_name == 'on' and 'panel_power_on' in cmd.generated: + s += '/* FIXME: Call this in .enable() */\n' + s += c.generated + '\n' if c.wait and c.wait > options.ignore_wait: s += f'\t{msleep(c.wait)};\n' diff --git a/panel.py b/panel.py index eb4774a..430c204 100644 --- a/panel.py +++ b/panel.py @@ -156,6 +156,10 @@ def __init__(self, fdt: Fdt2, node: int, cmd: str) -> None: if init: itr = itertools.chain(init, itr) + on = fdt.getprop_or_none(node, 'qcom,mdss-dsi-post-panel-on-command') + if on: + itr = itertools.chain(itr, on) + on = fdt.getprop_or_none(node, 'lge,display-on-cmds') if on: itr = itertools.chain(itr, on) From baa7ffa29d5984a16d30839e08e56de3994ceeec Mon Sep 17 00:00:00 2001 From: Marijn Suijten Date: Thu, 31 Aug 2023 00:51:58 +0200 Subject: [PATCH 2/2] panel: Chain `on` command from `post-on-backlight` Someone linked this: https://github.com/Saikatsaha1996/android_kernel_oneplus_sm8350/blob/9c86b0cf0172c8ca42ed377af48c0e877ba7a050/arch/arm64/boot/dts/vendor/oplus/porsche/dsi-panel-oplus21617-samsung-ams662zs01-1080-2400-dvt-dsc-cmd.dtsi#L158-L161 And their generated panel indeed never unblanks at the end of _on(): https://github.com/Saikatsaha1996/linux-sm8350/blob/b7975f1ae5fd4aa9eac89b2777df0d72ba3e2082/drivers/gpu/drm/panel/panel-samsung-ams662zs01.c#L108 --- panel.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/panel.py b/panel.py index 430c204..ac0c12c 100644 --- a/panel.py +++ b/panel.py @@ -160,6 +160,10 @@ def __init__(self, fdt: Fdt2, node: int, cmd: str) -> None: if on: itr = itertools.chain(itr, on) + on = fdt.getprop_or_none(node, 'qcom,mdss-dsi-post-on-backlight') + if on: + itr = itertools.chain(itr, on) + on = fdt.getprop_or_none(node, 'lge,display-on-cmds') if on: itr = itertools.chain(itr, on)