Skip to content

arm64: dts: qcom: lemans-draco-evk: Add AUO G133HAN01 LVDS panel overlay - #2014

Open
anan-tiwa wants to merge 14 commits into
qualcomm-linux:early/hwe/dracofrom
anan-tiwa:draco_lvds_auo
Open

anan-tiwa wants to merge 14 commits into
qualcomm-linux:early/hwe/dracofrom
anan-tiwa:draco_lvds_auo

Conversation

@anan-tiwa

Copy link
Copy Markdown

Add an overlay for the AUO G133HAN01 13.3" 1920x1080 LVDS display
panel.

The panel is attached through a TI SN65DSI83 DSI-to-LVDS bridge
daughter card connected to the display B2B connector shared with
the LT9611UXD HDMI bridge, so the bridge and HDMI connector are
disabled when this overlay is applied.

Configure the HAT I2C pins required by the bridge and
enable PCA9685 PWM support for panel backlight control.

Add the compatible string for the Qualcomm LeMans Draco EVK board
(SA8775P/QCS9100 SoC). The compatible chain is:
  qcom,lemans-draco-evk
  qcom,lemans-draco-evk-som
  qcom,qcs9100
  qcom,sa8775p

Signed-off-by: Gopikishan Thawre <gthawre@qti.qualcomm.com>
Add build entry for the LeMans Draco EVK board DTB.

Signed-off-by: Gopikishan Thawre <gthawre@qti.qualcomm.com>
Add device tree for the LeMans Draco EVK System-on-Module (SOM)
based on the SA8775P/QCS9100 SoC. The SOM includes:

- Complete RPMH regulator configuration for three pmm8654au PMICs:
  pmic-id a: smps4/5/9 and ldo4/5/6/7/8/9
  pmic-id c: ldo1/2/3/4/5/6/7/8/9
  pmic-id e: smps4/7/9 and ldo6/8
- Firmware paths for QUP firmware and remote processors
  (ADSP, CDSP0)
- Debug UART (uart0)
- XO board clock at 38.4 MHz, sleep clock at 32.768 kHz

Signed-off-by: Gopikishan Thawre <gthawre@qti.qualcomm.com>
Add top-level board device tree and extend the SOM DTSI with
peripherals for the Qualcomm LeMans Draco EVK carrier board:

- Five I2C GPIO expanders on i2c2: four TCA6416-compatible at 0x20-0x23
  (U236, U238, U422, U417) for camera/display MUX and power enables,
  one PCA9534-compatible (U445) at 0x38 for camera MCLK enables
- EEPROM (U?,giantec,gt24c256c) at 0x50 with MAC address nvmem layout
- uart10 as the geni-debug-uart (console)
- ufs_mem_hc and ufs_mem_phy with regulator assignments
- USB nodes: usb_0, usb_0_hsphy, usb_0_qmpphy, usb_2 and usb_2_hsphy
- pmm8654au_2 GPIO states for USB interrupt and ID lines
- Remoteproc SMMU stream IDs for ADSP, CDSP0/1, GPDSP0/1
- Correct mmc1 alias (was mmc0); serial0 -> uart10, serial2 -> uart0
- Remove pcie0, pcie1 and ethernet0 -- not present on this board

Signed-off-by: Gopikishan Thawre <gthawre@qti.qualcomm.com>
Enable PCIe0 and PCIe1 on the Lemans based Draco EVK
platform. PCIe0 connects to the NTN3 switch while PCIe1
can be routed either to an x4 slot or M.2 M-key slot
based on dip switches configuration.

Upstream-Status: Pending
Signed-off-by: Sushrut Shree Trivedi <sushrut.trivedi@oss.qualcomm.com>
…_config_sid_1_9_0()

qcom_pcie_config_sid_1_9_0() reads the "iommu-map" property as an array
of fixed four-word {rid-base, phandle, sid, rid-len} entries to program
the BDF to SID translation table. But that layout only holds for an
IOMMU with '#iommu-cells = <1>'. The PCIe SMMUs on these SoCs use
'#iommu-cells = <2>' (SID and mask), so per the pci-iommu binding each
entry is really five cells long.

This used to work only because the DTs were themselves broken. They
described iommu-map with four-cell entries that omitted the SID mask,
which of_map_id() tolerated via its of_check_bad_map() fallback, and the
four-word parsing coincidentally matched that malformed shape.

Since commit ccb2fd7 ("of: Respect #{iommu,msi}-cells in maps") the
OF core parses such maps correctly, so the device trees were converted
to proper five-cell entries, e.g. commit c41749e ("arm64: dts:
qcom: sm8250: Fix the PCIe iommu-map entries"). With five-cell entries
the fixed four-word stride slips by one cell for each entry after the
first, so qcom_pcie_config_sid_1_9_0() reads the endpoint mapping's RID
from the preceding entry's length cell and its SID from the phandle cell.
As the RID is the hash key, the endpoint's real RID is never programmed
into the BDF to SID table. Its DMA then hashes to an unprogrammed slot,
gets tagged with SID 0 and the SMMU faults like below on QCS8300:

  arm-smmu 15200000.iommu: Unhandled context fault: fsr=0x402, iova=0xffa00000, cbfrsynra=0x0, cb=1

To fix this, walk the map with a stride of 3 + '#iommu-cells' of the
referenced IOMMU and take the SID from the first specifier cell, which is
all the BDF to SID table needs. Validate the layout instead of trusting
the array size. Also, preserve the legacy behavior of the old DTs by
detecting the same pattern that of_check_bad_map() recognizes and
falling back to a stride of four.

Fixes: 4c93988 ("PCI: qcom: Add support for configuring BDF to SID mapping for SM8250")
Reported-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260907143349.317495-1-mani@kernel.org
Signed-off-by: Ziyue Zhang <ziyue.zhang@oss.qualcomm.com>
Signed-off-by: Miaoqing Pan <miaoqing.pan@oss.qualcomm.com>
Upstream-Status: Pending
Enable the M.2 E-key connectivity slot on Lemans Draco EVK by describing
its always-on 3.3 V supply and PCIe and UART graph connections.

Describe W_DISABLE2# so pwrseq-pcie-m2 can control Bluetooth power through
UART17.

Upstream-Status: Pending

Signed-off-by: Wei Deng <wei.deng@oss.qualcomm.com>
…e support

Enable the MDSS display subsystem on the Qualcomm Lemans Draco EVK
board and add the Lontium LT9611UXD DSI-to-HDMI bridge node.

Signed-off-by: Mohit Dsor <mohit.dsor@oss.qualcomm.com>
Enabled Native DP0, DP1, DP2, DP3 support for Lemans Draco EVK.

Signed-off-by: Vishnu Saini <vishnu.saini@oss.qualcomm.com>
Enable GPU for lemans-draco-evk-som platform.

Signed-off-by: Kishor Buchi <kbuchi@qti.qualcomm.com>
…rlay

Add lemans-draco-evk-raspberrypi-dsi-7inch.dtso to drive the 22-pin
Raspberry Pi 7" DSI touchscreen off DSI0, as an alternative to the
onboard LT9611UXD HDMI bridge that the two paths mutually exclusively
share.
Label the base dts's hdmi-connector node so the overlay can
disable it.

Signed-off-by: Vishnu Saini <vishnu.saini@oss.qualcomm.com>
Add an overlay for the Waveshare 8" DSI touchscreen panel,
The panel and its Goodix touch controller sit behind a
waveshare,dsi-touch-gpio GPIO expander on the i2c1 mux channel
shared with the LT9611UXD HDMI bridge, so the bridge and HDMI connector
are disabled when this overlay is applied.

Signed-off-by: Vishnu Saini <vishnu.saini@oss.qualcomm.com>
Add an overlay for the DLC0697 6.97" 1080x1920 MIPI-DSI video-mode
panel on the DLC display daughter card.

The card plugs into the display B2B connector shared with the LT9611UXD
HDMI bridge, so the bridge and HDMI connector are disabled when this
overlay is applied. DSI0 must be routed to the B2B connector with
DIPSW2.4 set to ON.

Signed-off-by: Vishnu Saini <vishnu.saini@oss.qualcomm.com>
Add an overlay for the AUO G133HAN01 13.3" 1920x1080 LVDS display
panel.

The panel is attached through a TI SN65DSI83 DSI-to-LVDS bridge
daughter card connected to the display B2B connector shared with
the LT9611UXD HDMI bridge, so the bridge and HDMI connector are
disabled when this overlay is applied.

Configure the HAT I2C pins required by the bridge and enable
PCA9685 PWM backlight support for panel brightness control.

Signed-off-by: Anand Tiwari <anand.tiwari@oss.qualcomm.com>
@anan-tiwa anan-tiwa changed the title Add AUO G133HAN01 LVDS panel overlay arm64: dts: qcom: lemans-draco-evk: Add AUO G133HAN01 LVDS panel overlay Oct 10, 2026

&hdmi_connector {
status = "disabled";
};

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Define nodes in order

#include <dt-bindings/interrupt-controller/irq.h>

&{/} {
vreg_disp0_bl_en: regulator-disp0-bl-en {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use same supply from base dt

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • The base DT has no backlight-enable supply for display 0. It only has vreg_bridge_1p2 and vreg_bridge_3p3, and both are on expander2 P0_1.

  • The backlight enable is a different line: expander2 P0_2 → DISP0_BL_EN → PDISP1 pin 51 → LED_BACKLIGHT_EN. So reusing vreg_bridge_3p3 would not control the backlight.

};
};

&vreg_bridge_1p2 {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why this is defined ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Both bridge rails (vreg_bridge_1p2, vreg_bridge_3p3) are enabled by the same signal, expander2 P0_1, and the base DT gives both gpio = <&expander2 1 …>.

  • Two consumers of one GPIO go through gpio-shared-proxy. When both probe before the line has been set as an output, the proxy refuses with -EPERM. Both regulators then fail, the pca9548 mux defers, and the bridge never probes. Whether it fails depends on probe order, and I saw it on a cold boot.

  • Chaining 1.2 V from 3.3 V (vin-supply, no GPIO) describes the hardware correctly and fixed it.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why this is a problem for LVDS are you using this supply for LVDS ?

@anan-tiwa anan-tiwa Oct 11, 2026 •

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No. LVDS uses vreg_bridge_3p3 for the SN65DSI84 vcc. vreg_bridge_1p2 is used only by the HDMI bridge, which the overlay disables.

  • Both regulators claim expander2 P0_1.

  • regulator-fixed nodes probe even when nothing uses them. If the two collide, gpio-shared-proxy can reject the 3.3 V claim too (-EPERM), and that breaks the bridge.

  • So the override isn't about the 1.2 V rail; it protects the 3.3 V that LVDS needs.
    However, we can use below:
    &vreg_bridge_1p2 {
    status = "disabled";
    };
    but I need to test this.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In that case it needs to be fixed in base DT for HDMI

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants