Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
38a2bea
BACKPORT: drm/bridge: add next_bridge pointer to struct drm_bridge
Jul 18, 2026
520ba01
BACKPORT: drm/bridge: refactor HDMI InfoFrame callbacks
Jul 18, 2026
e266078
BACKPORT: drm/display: bridge_connector: move audio_infoframe checks …
lumag Jan 26, 2026
e205300
BACKPORT: drm: Rename struct drm_atomic_state to drm_atomic_commit
Jul 18, 2026
8a7b134
BACKPORT: drm/atomic: Add dev pointer to drm_private_obj
mripard Oct 14, 2025
e9142fe
BACKPORT: drm/atomic: Make drm_atomic_private_obj_init fallible
mripard Jan 28, 2026
ce27e0e
BACKPORT: drm/atomic: Add new atomic_create_state callback to drm_pri…
mripard Jan 28, 2026
d87dfa9
BACKPORT: drm/atomic-helper: Add private_obj atomic_create_state helper
mripard Jan 28, 2026
0a20b98
BACKPORT: drm/bridge: Switch private_obj initialization to atomic_cre…
mripard Jan 28, 2026
0254521
BACKPORT: drm/bridge: Add new atomic_create_state callback
mripard Jun 19, 2026
e0fb1ea
BACKPORT: drm/atomic-state-helper: Add drm_atomic_helper_bridge_creat…
mripard Jun 19, 2026
cd73147
BACKPORT: drm/bridge: add of_drm_find_and_get_bridge()
lucaceresoli Dec 16, 2025
bf028d9
BACKPORT: drm/bridge: add of_drm_get_bridge_by_endpoint()
lucaceresoli May 11, 2026
b8f38d9
FROMLIST: dt-bindings: bridge: Add Lontium LT9611C(EX/UXD) MIPI DSI t…
Aug 8, 2026
f1b7693
FROMLIST: drm/bridge: Add Lontium LT9611C(EX/UXD) MIPI DSI to HDMI dr…
Aug 8, 2026
4a47441
FROMLIST: arm64: dts: qcom: shikra-iqs-evk: Add LT9611UXD HDMI bridge…
mohitdsor Aug 9, 2026
829f1eb
FROMLIST: arm64: defconfig: Enable LT9611C bridge driver
mohitdsor Aug 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 10 additions & 0 deletions Documentation/ABI/testing/sysfs-lontium-firmware
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
What: /sys/bus/i2c/drivers/<driver>/.../firmware
Date: July 2026
KernelVersion: 7.3
Contact: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
Description:
Read: Returns the current firmware version loaded on the
Lontium bridge chip in hex format (e.g. "0x0105").

Write: Triggers a firmware upgrade of the chip using the
firmware file loaded via the firmware loader.
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,23 @@
$id: http://devicetree.org/schemas/display/bridge/lontium,lt9611.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Lontium LT9611(UXC) 2 Port MIPI to HDMI Bridge
title: Lontium LT9611(UXC/C/EX/UXD) 2 Port MIPI DSI to HDMI Bridge

maintainers:
- Vinod Koul <vkoul@kernel.org>

description: |
The LT9611 and LT9611UXC are bridge devices which convert DSI to HDMI
The LT9611, LT9611UXC, LT9611C, LT9611EX, and LT9611UXD
are bridge devices which convert DSI to HDMI

properties:
compatible:
enum:
- lontium,lt9611
- lontium,lt9611c
- lontium,lt9611ex
- lontium,lt9611uxc
- lontium,lt9611uxd

reg:
maxItems: 1
Expand Down Expand Up @@ -71,6 +75,16 @@ required:

allOf:
- $ref: /schemas/sound/dai-common.yaml#
- if:
properties:
compatible:
contains:
const: lontium,lt9611c
then:
properties:
ports:
properties:
port@1: false

unevaluatedProperties: false

Expand Down
14 changes: 7 additions & 7 deletions Documentation/gpu/drm-kms.rst
Original file line number Diff line number Diff line change
Expand Up @@ -206,11 +206,11 @@ Atomic Mode Setting
style=dashed
label="Free-standing state"

"drm_atomic_state" -> "duplicated drm_plane_state A"
"drm_atomic_state" -> "duplicated drm_plane_state B"
"drm_atomic_state" -> "duplicated drm_crtc_state"
"drm_atomic_state" -> "duplicated drm_connector_state"
"drm_atomic_state" -> "duplicated driver private state"
"drm_atomic_commit" -> "duplicated drm_plane_state A"
"drm_atomic_commit" -> "duplicated drm_plane_state B"
"drm_atomic_commit" -> "duplicated drm_crtc_state"
"drm_atomic_commit" -> "duplicated drm_connector_state"
"drm_atomic_commit" -> "duplicated driver private state"
}

subgraph cluster_current {
Expand All @@ -230,7 +230,7 @@ Atomic Mode Setting
"driver private object" -> "driver private state"
}

"drm_atomic_state" -> "drm_device" [label="atomic_commit"]
"drm_atomic_commit" -> "drm_device" [label="atomic_commit"]
"duplicated drm_plane_state A" -> "drm_device"[style=invis]
}

Expand Down Expand Up @@ -265,7 +265,7 @@ Taken all together there's two consequences for the atomic design:
drm_private_state<drm_private_state>`.

- An atomic update is assembled and validated as an entirely free-standing pile
of structures within the :c:type:`drm_atomic_state <drm_atomic_state>`
of structures within the :c:type:`drm_atomic_commit <drm_atomic_commit>`
container. Driver private state structures are also tracked in the same
structure; see the next chapter. Only when a state is committed is it applied
to the driver and modeset objects. This way rolling back an update boils down
Expand Down
6 changes: 3 additions & 3 deletions Documentation/gpu/komeda-kms.rst
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ So, one KMS-Obj represents a sub-pipeline of komeda resources.
So, for komeda, we treat KMS crtc/plane/connector as users of pipeline and
component, and at any one time a pipeline/component only can be used by one
user. And pipeline/component will be treated as private object of DRM-KMS; the
state will be managed by drm_atomic_state as well.
state will be managed by drm_atomic_commit as well.

How to map plane to Layer(input) pipeline
-----------------------------------------
Expand Down Expand Up @@ -416,7 +416,7 @@ Add :c:type:`drm_private_obj` to :c:type:`komeda_component`, :c:type:`komeda_pip
...
}

Tracking component_state/pipeline_state by drm_atomic_state
Tracking component_state/pipeline_state by drm_atomic_commit
-----------------------------------------------------------

Add :c:type:`drm_private_state` and user to :c:type:`komeda_component_state`,
Expand Down Expand Up @@ -454,7 +454,7 @@ similar, usually including the following steps:
put the data flow into next stage.
Setup 2: check user_state with component features and capabilities to see
if requirements can be met; if not, return fail.
Setup 3: get component_state from drm_atomic_state, and try set to set
Setup 3: get component_state from drm_atomic_commit, and try set to set
user to component; fail if component has been assigned to another
user already.
Setup 3: configure the component_state, like set its input component,
Expand Down
12 changes: 6 additions & 6 deletions Documentation/gpu/todo.rst
Original file line number Diff line number Diff line change
Expand Up @@ -120,24 +120,24 @@ Contact: Simona Vetter, respective driver maintainers

Level: Advanced

Rename drm_atomic_state
Rename drm_atomic_commit
-----------------------

The KMS framework uses two slightly different definitions for the ``state``
concept. For a given object (plane, CRTC, encoder, etc., so
``drm_$OBJECT_state``), the state is the entire state of that object. However,
at the device level, ``drm_atomic_state`` refers to a state update for a
at the device level, ``drm_atomic_commit`` refers to a state update for a
limited number of objects.

The state isn't the entire device state, but only the full state of some
objects in that device. This is confusing to newcomers, and
``drm_atomic_state`` should be renamed to something clearer like
``drm_atomic_commit`` should be renamed to something clearer like
``drm_atomic_commit``.

In addition to renaming the structure itself, it would also imply renaming some
related functions (``drm_atomic_state_alloc``, ``drm_atomic_state_get``,
``drm_atomic_state_put``, ``drm_atomic_state_init``,
``__drm_atomic_state_free``, etc.).
related functions (``drm_atomic_commit_alloc``, ``drm_atomic_commit_get``,
``drm_atomic_commit_put``, ``drm_atomic_commit_init``,
``__drm_atomic_commit_free``, etc.).

Contact: Maxime Ripard <mripard@kernel.org>

Expand Down
115 changes: 115 additions & 0 deletions arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "shikra-iqs-som.dtsi"
#include "shikra-evk.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/net/ti-dp83867.h>

/ {
Expand All @@ -27,6 +28,17 @@
stdout-path = "serial0:115200n8";
};

hdmi-connector {
compatible = "hdmi-connector";
type = "a";

port {
hdmi_con: endpoint {
remote-endpoint = <&lt9611_out>;
};
};
};

sound {
compatible = "qcom,shikra-iqs-sndcard";
model = "shikra-iqs-evk";
Expand Down Expand Up @@ -104,6 +116,25 @@
regulator-always-on;
};

vreg_lt9611_vcc: regulator-lt9611-vcc {
compatible = "regulator-fixed";
regulator-name = "lt9611_vcc";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&pm8150_gpios 4 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-0 = <&hdmi_reg_en>;
pinctrl-names = "default";
};

vreg_lt9611_vdd: regulator-lt9611-vdd {
compatible = "regulator-fixed";
regulator-name = "lt9611_vdd";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};

vreg_wlan_3p3_dummy: regulator-wlan-3p3-dummy {
compatible = "regulator-fixed";
regulator-name = "wlan_3p3_dummy";
Expand Down Expand Up @@ -376,6 +407,62 @@
};
};

&i2c4 {
status = "okay";

lt9611uxd: lt9611uxd@41 {
compatible = "lontium,lt9611uxd";
reg = <0x41>;
interrupts-extended = <&tlmm 85 IRQ_TYPE_EDGE_FALLING>;
reset-gpios = <&tlmm 76 GPIO_ACTIVE_LOW>;
vcc-supply = <&vreg_lt9611_vcc>;
vdd-supply = <&vreg_lt9611_vdd>;

pinctrl-0 = <&lt9611_irq_pin &lt9611_rst_pin>;
pinctrl-names = "default";

ports {
#address-cells = <1>;
#size-cells = <0>;

port@0 {
reg = <0>;

lt9611_a: endpoint {
remote-endpoint = <&mdss_dsi0_out>;
};
};

port@2 {
reg = <2>;

lt9611_out: endpoint {
remote-endpoint = <&hdmi_con>;
};
};
};
};
};

&mdss {
status = "okay";
};

&mdss_dsi0 {
vdda-supply = <&pm8150_l11>;

status = "okay";
};

&mdss_dsi0_out {
remote-endpoint = <&lt9611_a>;
data-lanes = <0 1 2 3>;
};

&mdss_dsi0_phy {
status = "okay";
};

&pcie {
wake-gpios = <&tlmm 119 GPIO_ACTIVE_LOW>;

Expand Down Expand Up @@ -484,6 +571,20 @@
status = "okay";
};

&pm8150_gpios {
hdmi_reg_en: hdmi-reg-en-state {
pins = "gpio4";
function = PMIC_GPIO_FUNC_NORMAL;
bias-disable;
};
};

&pm8150_l11 {
regulator-min-microvolt = <1232000>;
regulator-max-microvolt = <1232000>;
regulator-allow-set-load;
};

&q6apmbedai {
#address-cells = <1>;
#size-cells = <0>;
Expand Down Expand Up @@ -631,6 +732,20 @@
bias-disable;
};

lt9611_irq_pin: lt9611-irq-state {
pins = "gpio85";
function = "gpio";
drive-strength = <2>;
bias-disable;
};

lt9611_rst_pin: lt9611-rst-state {
pins = "gpio76";
function = "gpio";
drive-strength = <8>;
bias-disable;
};

max98091_default: max98091-default-state {
pins = "gpio28";
function = "gpio";
Expand Down
1 change: 1 addition & 0 deletions arch/arm64/configs/defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -972,6 +972,7 @@ CONFIG_DRM_LONTIUM_LT8713SX=m
CONFIG_DRM_LONTIUM_LT8912B=m
CONFIG_DRM_LONTIUM_LT9211=m
CONFIG_DRM_LONTIUM_LT9611=m
CONFIG_DRM_LONTIUM_LT9611C=m
CONFIG_DRM_LONTIUM_LT9611UXC=m
CONFIG_DRM_ITE_IT66121=m
CONFIG_DRM_NWL_MIPI_DSI=m
Expand Down
12 changes: 6 additions & 6 deletions drivers/gpu/drm/adp/adp_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ struct adp_drv_private {
#define crtc_to_adp(x) container_of(x, struct adp_drv_private, crtc)

static int adp_plane_atomic_check(struct drm_plane *plane,
struct drm_atomic_state *state)
struct drm_atomic_commit *state)
{
struct drm_plane_state *new_plane_state;
struct drm_crtc_state *crtc_state;
Expand All @@ -150,7 +150,7 @@ static int adp_plane_atomic_check(struct drm_plane *plane,
}

static void adp_plane_atomic_update(struct drm_plane *plane,
struct drm_atomic_state *state)
struct drm_atomic_commit *state)
{
struct adp_drv_private *adp;
struct drm_rect src_rect;
Expand Down Expand Up @@ -192,7 +192,7 @@ static void adp_plane_atomic_update(struct drm_plane *plane,
}

static void adp_plane_atomic_disable(struct drm_plane *plane,
struct drm_atomic_state *state)
struct drm_atomic_commit *state)
{
struct adp_drv_private *adp = to_adp(plane->dev);

Expand Down Expand Up @@ -278,7 +278,7 @@ static void adp_crtc_disable_vblank(struct drm_crtc *crtc)
}

static void adp_crtc_atomic_enable(struct drm_crtc *crtc,
struct drm_atomic_state *state)
struct drm_atomic_commit *state)
{
struct adp_drv_private *adp = crtc_to_adp(crtc);

Expand All @@ -291,7 +291,7 @@ static void adp_crtc_atomic_enable(struct drm_crtc *crtc,
}

static void adp_crtc_atomic_disable(struct drm_crtc *crtc,
struct drm_atomic_state *state)
struct drm_atomic_commit *state)
{
struct adp_drv_private *adp = crtc_to_adp(crtc);
struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, crtc);
Expand All @@ -307,7 +307,7 @@ static void adp_crtc_atomic_disable(struct drm_crtc *crtc,
}

static void adp_crtc_atomic_flush(struct drm_crtc *crtc,
struct drm_atomic_state *state)
struct drm_atomic_commit *state)
{
u32 frame_num = 1;
unsigned long flags;
Expand Down
Loading