* [PATCH 1/4] dt-bindings: display: bridge: Add Parade PS195
2026-11-12 10:15 [PATCH 0/4] Add Parade PS195 bridge support to enable HDMI on Glymur/Mahua/Kalambo CRDs Nabige Aala
@ 2026-11-12 10:15 ` Nabige Aala
2026-11-12 16:23 ` Krzysztof Kozlowski
2026-11-12 10:15 ` [PATCH 2/4] drm/bridge: Add a driver for the " Nabige Aala
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Nabige Aala @ 2026-11-12 10:15 UTC (permalink / raw)
To: Mahadevan P, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Luca Ceresoli,
David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bjorn Andersson, Konrad Dybcio, Abel Vesa
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, Nabige Aala
From: Mahadevan P <mahadevan.p@oss.qualcomm.com>
Add bindings for the Parade PS195 DisplayPort to HDMI bridge, describing
its power supplies, optional reset GPIO and display ports.
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
Signed-off-by: Nabige Aala <nabige.aala@oss.qualcomm.com>
---
.../bindings/display/bridge/parade,ps195.yaml | 98 ++++++++++++++++++++++
MAINTAINERS | 6 ++
2 files changed, 104 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/bridge/parade,ps195.yaml b/Documentation/devicetree/bindings/display/bridge/parade,ps195.yaml
new file mode 100644
index 000000000000..089191570ef0
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/bridge/parade,ps195.yaml
@@ -0,0 +1,98 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/bridge/parade,ps195.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Parade PS195 DisplayPort to HDMI protocol converter
+
+maintainers:
+ - Mahadevan P <mahadevan.p@oss.qualcomm.com>
+
+description:
+ The PS195 converts DisplayPort input to HDMI output. Firmware loaded from
+ an external SPI flash handles link training, EDID access and hotplug
+ detection. This binding describes operation without host control of
+ the device registers. The optional I2C control port is not required for
+ display operation. Reset may be controlled by a GPIO or released by a
+ board resistor-capacitor network.
+
+properties:
+ compatible:
+ const: parade,ps195
+
+ vdd09-supply:
+ description: 0.95 V core and analog supply.
+
+ vdd12-supply:
+ description: 1.2 V I/O supply.
+
+ vdd33-supply:
+ description: 3.3 V supply.
+
+ reset-gpios:
+ maxItems: 1
+ description: GPIO connected to the active-low RESETB input.
+
+ ports:
+ $ref: /schemas/graph.yaml#/properties/ports
+ unevaluatedProperties: false
+
+ properties:
+ port@0:
+ $ref: /schemas/graph.yaml#/properties/port
+ unevaluatedProperties: false
+ description: DisplayPort input.
+
+ port@1:
+ $ref: /schemas/graph.yaml#/properties/port
+ unevaluatedProperties: false
+ description: HDMI output.
+
+ required:
+ - port@0
+ - port@1
+
+required:
+ - compatible
+ - vdd09-supply
+ - vdd12-supply
+ - vdd33-supply
+ - ports
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ hdmi-bridge {
+ compatible = "parade,ps195";
+
+ vdd09-supply = <&vreg_hdmi_0p95>;
+ vdd12-supply = <&vreg_hdmi_1p2>;
+ vdd33-supply = <&vreg_hdmi_3p3>;
+
+ reset-gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ bridge_in: endpoint {
+ remote-endpoint = <&dp_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ bridge_out: endpoint {
+ remote-endpoint = <&hdmi_connector_in>;
+ };
+ };
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 46c416cadacd..9e1db88ec1c9 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8581,6 +8581,12 @@ S: Maintained
F: Documentation/devicetree/bindings/display/panel/olimex,lcd-olinuxino.yaml
F: drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c
+DRM DRIVER FOR PARADE PS195 BRIDGE CHIP
+M: Mahadevan P <mahadevan.p@oss.qualcomm.com>
+L: dri-devel@lists.freedesktop.org
+S: Maintained
+F: Documentation/devicetree/bindings/display/bridge/parade,ps195.yaml
+
DRM DRIVER FOR PARADE PS8640 BRIDGE CHIP
R: Douglas Anderson <dianders@chromium.org>
F: Documentation/devicetree/bindings/display/bridge/ps8640.yaml
--
2.34.1
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH 1/4] dt-bindings: display: bridge: Add Parade PS195
2026-11-12 10:15 ` [PATCH 1/4] dt-bindings: display: bridge: Add Parade PS195 Nabige Aala
@ 2026-11-12 16:23 ` Krzysztof Kozlowski
0 siblings, 0 replies; 9+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-12 16:23 UTC (permalink / raw)
To: Nabige Aala, Mahadevan P, Andrzej Hajda, Neil Armstrong,
Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
Luca Ceresoli, David Airlie, Simona Vetter, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Konrad Dybcio, Abel Vesa
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm
On 12/11/2026 11:15, Nabige Aala wrote:
> From: Mahadevan P <mahadevan.p@oss.qualcomm.com>
>
> Add bindings for the Parade PS195 DisplayPort to HDMI bridge, describing
> its power supplies, optional reset GPIO and display ports.
>
> Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
> Signed-off-by: Nabige Aala <nabige.aala@oss.qualcomm.com>
> ---
> .../bindings/display/bridge/parade,ps195.yaml | 98 ++++++++++++++++++++++
> MAINTAINERS | 6 ++
> 2 files changed, 104 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/display/bridge/parade,ps195.yaml b/Documentation/devicetree/bindings/display/bridge/parade,ps195.yaml
> new file mode 100644
> index 000000000000..089191570ef0
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/bridge/parade,ps195.yaml
> @@ -0,0 +1,98 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/bridge/parade,ps195.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Parade PS195 DisplayPort to HDMI protocol converter
> +
> +maintainers:
> + - Mahadevan P <mahadevan.p@oss.qualcomm.com>
> +
> +description:
> + The PS195 converts DisplayPort input to HDMI output. Firmware loaded from
> + an external SPI flash handles link training, EDID access and hotplug
> + detection. This binding describes operation without host control of
Please post complete binding.
> + the device registers. The optional I2C control port is not required for
> + display operation. Reset may be controlled by a GPIO or released by a
So this can does not have to be connected to I2C bus at all? I checked
datasheet and it does not really mention having SDA/SCL floating
(disconnected).
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/4] drm/bridge: Add a driver for the Parade PS195
2026-11-12 10:15 [PATCH 0/4] Add Parade PS195 bridge support to enable HDMI on Glymur/Mahua/Kalambo CRDs Nabige Aala
2026-11-12 10:15 ` [PATCH 1/4] dt-bindings: display: bridge: Add Parade PS195 Nabige Aala
@ 2026-11-12 10:15 ` Nabige Aala
2026-11-12 16:18 ` Krzysztof Kozlowski
2026-11-12 10:15 ` [PATCH 3/4] arm64: defconfig: Enable the Parade PS195 bridge Nabige Aala
2026-11-12 10:15 ` [PATCH 4/4] arm64: dts: qcom: glymur-crd: Enable HDMI output via PS195 Nabige Aala
3 siblings, 1 reply; 9+ messages in thread
From: Nabige Aala @ 2026-11-12 10:15 UTC (permalink / raw)
To: Mahadevan P, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Luca Ceresoli,
David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bjorn Andersson, Konrad Dybcio, Abel Vesa
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, Nabige Aala
From: Mahadevan P <mahadevan.p@oss.qualcomm.com>
The Parade PS195 is a DisplayPort to HDMI converter that runs firmware
from external SPI flash. Add a platform bridge driver to sequence its
power supplies and optional reset GPIO.
Keep the bridge powered for AUX and HPD handling between modesets. Use
late suspend and early resume to order power transitions around the
display controller.
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
Signed-off-by: Nabige Aala <nabige.aala@oss.qualcomm.com>
---
MAINTAINERS | 1 +
drivers/gpu/drm/bridge/Kconfig | 10 ++
drivers/gpu/drm/bridge/Makefile | 1 +
drivers/gpu/drm/bridge/parade-ps195.c | 197 ++++++++++++++++++++++++++++++++++
4 files changed, 209 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index 9e1db88ec1c9..cd83b47d9f85 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8586,6 +8586,7 @@ M: Mahadevan P <mahadevan.p@oss.qualcomm.com>
L: dri-devel@lists.freedesktop.org
S: Maintained
F: Documentation/devicetree/bindings/display/bridge/parade,ps195.yaml
+F: drivers/gpu/drm/bridge/parade-ps195.c
DRM DRIVER FOR PARADE PS8640 BRIDGE CHIP
R: Douglas Anderson <dianders@chromium.org>
diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
index c7da6b02d7b6..abb1aa36ce3d 100644
--- a/drivers/gpu/drm/bridge/Kconfig
+++ b/drivers/gpu/drm/bridge/Kconfig
@@ -273,6 +273,16 @@ config DRM_OF_DISPLAY_MODE_BRIDGE
It exists for compatibility with legacy display mode parsing, in order
to conform to the panel-bridge framework.
+config DRM_PARADE_PS195
+ tristate "Parade PS195 DisplayPort to HDMI converter"
+ depends on OF && REGULATOR
+ select DRM_KMS_HELPER
+ help
+ Enable support for the Parade PS195 DisplayPort to HDMI converter.
+ Its firmware handles the display protocol; this driver controls
+ the power supplies and reset input.
+ When built as a module, the module is called parade-ps195.
+
config DRM_PARADE_PS8622
tristate "Parade eDP/LVDS bridge"
depends on OF
diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile
index 15cc821d85b7..425722c7becb 100644
--- a/drivers/gpu/drm/bridge/Makefile
+++ b/drivers/gpu/drm/bridge/Makefile
@@ -23,6 +23,7 @@ obj-$(CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW) += megachips-stdpxxxx-ge-b850v
obj-$(CONFIG_DRM_MICROCHIP_LVDS_SERIALIZER) += microchip-lvds.o
obj-$(CONFIG_DRM_NXP_PTN3460) += nxp-ptn3460.o
obj-$(CONFIG_DRM_OF_DISPLAY_MODE_BRIDGE) += of-display-mode-bridge.o
+obj-$(CONFIG_DRM_PARADE_PS195) += parade-ps195.o
obj-$(CONFIG_DRM_PARADE_PS8622) += parade-ps8622.o
obj-$(CONFIG_DRM_PARADE_PS8640) += parade-ps8640.o
obj-$(CONFIG_DRM_SAMSUNG_DSIM) += samsung-dsim.o
diff --git a/drivers/gpu/drm/bridge/parade-ps195.c b/drivers/gpu/drm/bridge/parade-ps195.c
new file mode 100644
index 000000000000..beddb23c38ae
--- /dev/null
+++ b/drivers/gpu/drm/bridge/parade-ps195.c
@@ -0,0 +1,197 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Parade PS195 DisplayPort to HDMI protocol converter
+ *
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+#include <linux/delay.h>
+#include <linux/gpio/consumer.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/pm.h>
+#include <linux/regulator/consumer.h>
+
+#include <drm/drm_atomic_state_helper.h>
+#include <drm/drm_bridge.h>
+
+/* Enable the supplies in this order and disable them in reverse. */
+static const char * const ps195_supply_names[] = {
+ "vdd09",
+ "vdd12",
+ "vdd33",
+};
+
+struct ps195 {
+ struct drm_bridge bridge;
+ struct device *dev;
+ struct regulator_bulk_data supplies[ARRAY_SIZE(ps195_supply_names)];
+ struct gpio_desc *reset_gpio;
+ bool powered;
+};
+
+static void ps195_disable_supplies(struct ps195 *ps195, unsigned int count)
+{
+ int ret;
+
+ while (count) {
+ count--;
+ ret = regulator_disable(ps195->supplies[count].consumer);
+ if (ret)
+ dev_err(ps195->dev, "Failed to disable %s: %d\n",
+ ps195->supplies[count].supply, ret);
+
+ /* Allow discharge before disabling the next rail. */
+ if (count)
+ usleep_range(1000, 2000);
+ }
+}
+
+static void ps195_power_off(struct ps195 *ps195)
+{
+ if (!ps195->powered)
+ return;
+
+ gpiod_set_value_cansleep(ps195->reset_gpio, 1);
+ ps195_disable_supplies(ps195, ARRAY_SIZE(ps195->supplies));
+ ps195->powered = false;
+}
+
+static int ps195_power_on(struct ps195 *ps195)
+{
+ unsigned int i;
+ int ret;
+
+ if (ps195->powered)
+ return 0;
+
+ gpiod_set_value_cansleep(ps195->reset_gpio, 1);
+ for (i = 0; i < ARRAY_SIZE(ps195->supplies); i++) {
+ ret = regulator_enable(ps195->supplies[i].consumer);
+ if (ret) {
+ dev_err(ps195->dev, "Failed to enable %s: %d\n",
+ ps195->supplies[i].supply, ret);
+ goto err_disable;
+ }
+
+ /* Allow the rail to settle before continuing. */
+ usleep_range(2000, 3000);
+ }
+
+ gpiod_set_value_cansleep(ps195->reset_gpio, 0);
+ ps195->powered = true;
+
+ return 0;
+
+err_disable:
+ ps195_disable_supplies(ps195, i);
+ return ret;
+}
+
+static void ps195_power_off_action(void *data)
+{
+ ps195_power_off(data);
+}
+
+static int ps195_suspend(struct device *dev)
+{
+ ps195_power_off(dev_get_drvdata(dev));
+ return 0;
+}
+
+static int ps195_resume(struct device *dev)
+{
+ return ps195_power_on(dev_get_drvdata(dev));
+}
+
+static const struct dev_pm_ops ps195_pm_ops = {
+ /* Keep AUX and HPD available until the display controller suspends. */
+ LATE_SYSTEM_SLEEP_PM_OPS(ps195_suspend, ps195_resume)
+};
+
+static int ps195_bridge_attach(struct drm_bridge *bridge,
+ struct drm_encoder *encoder,
+ enum drm_bridge_attach_flags flags)
+{
+ return drm_bridge_attach(encoder, bridge->next_bridge, bridge, flags);
+}
+
+static const struct drm_bridge_funcs ps195_bridge_funcs = {
+ .atomic_create_state = drm_atomic_helper_bridge_create_state,
+ .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
+ .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
+ .attach = ps195_bridge_attach,
+};
+
+static int ps195_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct ps195 *ps195;
+ unsigned int i;
+ int ret;
+
+ ps195 = devm_drm_bridge_alloc(dev, struct ps195, bridge,
+ &ps195_bridge_funcs);
+ if (IS_ERR(ps195))
+ return PTR_ERR(ps195);
+
+ ps195->dev = dev;
+ platform_set_drvdata(pdev, ps195);
+
+ ps195->bridge.next_bridge = of_drm_get_bridge_by_endpoint(dev->of_node, 1, -1);
+ if (IS_ERR(ps195->bridge.next_bridge))
+ return dev_err_probe(dev, PTR_ERR(ps195->bridge.next_bridge),
+ "Failed to get output bridge\n");
+
+ for (i = 0; i < ARRAY_SIZE(ps195->supplies); i++)
+ ps195->supplies[i].supply = ps195_supply_names[i];
+
+ ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ps195->supplies),
+ ps195->supplies);
+ if (ret)
+ return dev_err_probe(dev, ret, "Failed to get supplies\n");
+
+ ps195->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
+ if (IS_ERR(ps195->reset_gpio))
+ return dev_err_probe(dev, PTR_ERR(ps195->reset_gpio),
+ "Failed to get reset GPIO\n");
+
+ ret = devm_add_action_or_reset(dev, ps195_power_off_action, ps195);
+ if (ret)
+ return ret;
+
+ /*
+ * Firmware drives DP HPD and services AUX, including EDID reads,
+ * before a modeset. Keep the bridge powered while the system is
+ * awake, including when no monitor is connected.
+ */
+ ret = ps195_power_on(ps195);
+ if (ret)
+ return ret;
+
+ ps195->bridge.of_node = dev->of_node;
+ ps195->bridge.type = DRM_MODE_CONNECTOR_HDMIA;
+
+ return devm_drm_bridge_add(dev, &ps195->bridge);
+}
+
+static const struct of_device_id ps195_of_match[] = {
+ { .compatible = "parade,ps195" },
+ { }
+};
+MODULE_DEVICE_TABLE(of, ps195_of_match);
+
+static struct platform_driver ps195_driver = {
+ .probe = ps195_probe,
+ .driver = {
+ .name = "parade-ps195",
+ .of_match_table = ps195_of_match,
+ .pm = pm_sleep_ptr(&ps195_pm_ops),
+ },
+};
+module_platform_driver(ps195_driver);
+
+MODULE_AUTHOR("Mahadevan P <mahadevan.p@oss.qualcomm.com>");
+MODULE_DESCRIPTION("Parade PS195 DisplayPort to HDMI bridge driver");
+MODULE_LICENSE("GPL");
--
2.34.1
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH 2/4] drm/bridge: Add a driver for the Parade PS195
2026-11-12 10:15 ` [PATCH 2/4] drm/bridge: Add a driver for the " Nabige Aala
@ 2026-11-12 16:18 ` Krzysztof Kozlowski
0 siblings, 0 replies; 9+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-12 16:18 UTC (permalink / raw)
To: Nabige Aala, Mahadevan P, Andrzej Hajda, Neil Armstrong,
Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
Luca Ceresoli, David Airlie, Simona Vetter, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Konrad Dybcio, Abel Vesa
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm
On 12/11/2026 11:15, Nabige Aala wrote:
> + ret = devm_add_action_or_reset(dev, ps195_power_off_action, ps195);
> + if (ret)
> + return ret;
> +
> + /*
> + * Firmware drives DP HPD and services AUX, including EDID reads,
> + * before a modeset. Keep the bridge powered while the system is
> + * awake, including when no monitor is connected.
> + */
> + ret = ps195_power_on(ps195);
First you power on, then you add reset action.
> + if (ret)
> + return ret;
> +
> + ps195->bridge.of_node = dev->of_node;
> + ps195->bridge.type = DRM_MODE_CONNECTOR_HDMIA;
> +
> + return devm_drm_bridge_add(dev, &ps195->bridge);
> +}
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 3/4] arm64: defconfig: Enable the Parade PS195 bridge
2026-11-12 10:15 [PATCH 0/4] Add Parade PS195 bridge support to enable HDMI on Glymur/Mahua/Kalambo CRDs Nabige Aala
2026-11-12 10:15 ` [PATCH 1/4] dt-bindings: display: bridge: Add Parade PS195 Nabige Aala
2026-11-12 10:15 ` [PATCH 2/4] drm/bridge: Add a driver for the " Nabige Aala
@ 2026-11-12 10:15 ` Nabige Aala
2026-11-12 16:14 ` Krzysztof Kozlowski
2026-11-12 10:15 ` [PATCH 4/4] arm64: dts: qcom: glymur-crd: Enable HDMI output via PS195 Nabige Aala
3 siblings, 1 reply; 9+ messages in thread
From: Nabige Aala @ 2026-11-12 10:15 UTC (permalink / raw)
To: Mahadevan P, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Luca Ceresoli,
David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bjorn Andersson, Konrad Dybcio, Abel Vesa
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, Nabige Aala
From: Mahadevan P <mahadevan.p@oss.qualcomm.com>
Enable the PS195 bridge driver as a module for HDMI output on Glymur,
Mahua and Kalambo CRDs.
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
Signed-off-by: Nabige Aala <nabige.aala@oss.qualcomm.com>
---
arch/arm64/configs/defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 7b4985b29b21..69db247447c4 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -984,6 +984,7 @@ CONFIG_DRM_LONTIUM_LT9611UXC=m
CONFIG_DRM_LONTIUM_LT8713SX=m
CONFIG_DRM_ITE_IT66121=m
CONFIG_DRM_NWL_MIPI_DSI=m
+CONFIG_DRM_PARADE_PS195=m
CONFIG_DRM_PARADE_PS8640=m
CONFIG_DRM_SII902X=m
CONFIG_DRM_SIMPLE_BRIDGE=m
--
2.34.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/4] arm64: defconfig: Enable the Parade PS195 bridge
2026-11-12 10:15 ` [PATCH 3/4] arm64: defconfig: Enable the Parade PS195 bridge Nabige Aala
@ 2026-11-12 16:14 ` Krzysztof Kozlowski
2026-11-12 17:21 ` Krzysztof Kozlowski
0 siblings, 1 reply; 9+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-12 16:14 UTC (permalink / raw)
To: Nabige Aala, Mahadevan P, Andrzej Hajda, Neil Armstrong,
Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
Luca Ceresoli, David Airlie, Simona Vetter, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Konrad Dybcio, Abel Vesa
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm
On 12/11/2026 11:15, Nabige Aala wrote:
> From: Mahadevan P <mahadevan.p@oss.qualcomm.com>
>
> Enable the PS195 bridge driver as a module for HDMI output on Glymur,
> Mahua and Kalambo CRDs.
Same comments as previous patches from you. Don't send Qualcomm internal
stuff, that's defconfig for all SoC platforms so you need to properly
describe it. What is Glymur? Samsung Glymur? It's impossible to get what
you are referring here to.
By coincidence I know what is Glymur, but how Glymur could have Parade
chip? It's not possible.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/4] arm64: defconfig: Enable the Parade PS195 bridge
2026-11-12 16:14 ` Krzysztof Kozlowski
@ 2026-11-12 17:21 ` Krzysztof Kozlowski
0 siblings, 0 replies; 9+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-12 17:21 UTC (permalink / raw)
To: Nabige Aala, Mahadevan P, Andrzej Hajda, Neil Armstrong,
Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
Luca Ceresoli, David Airlie, Simona Vetter, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
Konrad Dybcio, Abel Vesa
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm
On 12/11/2026 17:14, Krzysztof Kozlowski wrote:
> On 12/11/2026 11:15, Nabige Aala wrote:
>> From: Mahadevan P <mahadevan.p@oss.qualcomm.com>
>>
>> Enable the PS195 bridge driver as a module for HDMI output on Glymur,
>> Mahua and Kalambo CRDs.
>
> Same comments as previous patches from you. Don't send Qualcomm internal
> stuff, that's defconfig for all SoC platforms so you need to properly
> describe it. What is Glymur? Samsung Glymur? It's impossible to get what
> you are referring here to.
>
> By coincidence I know what is Glymur, but how Glymur could have Parade
> chip? It's not possible.
And good examples:
8b8d8aa9d482b08d5315e4d26631b9891c90e02e
6f422914412bde4c431706079525c581bf439e03
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 4/4] arm64: dts: qcom: glymur-crd: Enable HDMI output via PS195
2026-11-12 10:15 [PATCH 0/4] Add Parade PS195 bridge support to enable HDMI on Glymur/Mahua/Kalambo CRDs Nabige Aala
` (2 preceding siblings ...)
2026-11-12 10:15 ` [PATCH 3/4] arm64: defconfig: Enable the Parade PS195 bridge Nabige Aala
@ 2026-11-12 10:15 ` Nabige Aala
3 siblings, 0 replies; 9+ messages in thread
From: Nabige Aala @ 2026-11-12 10:15 UTC (permalink / raw)
To: Mahadevan P, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Luca Ceresoli,
David Airlie, Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bjorn Andersson, Konrad Dybcio, Abel Vesa
Cc: dri-devel, devicetree, linux-kernel, linux-arm-msm, Nabige Aala
From: Mahadevan P <mahadevan.p@oss.qualcomm.com>
Enable the PS195 HDMI path on Glymur CoB/SiP, Mahua and Kalambo CRDs
through their shared glymur-crd.dtsi.
Describe the bridge, connector, supplies and four-lane DP2 connection
through the USB2 QMP combo PHY. Add the GPIO126 HPD state to glymur.dtsi.
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>
Signed-off-by: Nabige Aala <nabige.aala@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/glymur-crd.dtsi | 142 +++++++++++++++++++++++++++++++
arch/arm64/boot/dts/qcom/glymur.dtsi | 6 ++
2 files changed, 148 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/glymur-crd.dtsi b/arch/arm64/boot/dts/qcom/glymur-crd.dtsi
index 2ec62423ad79..87adeccaffc6 100644
--- a/arch/arm64/boot/dts/qcom/glymur-crd.dtsi
+++ b/arch/arm64/boot/dts/qcom/glymur-crd.dtsi
@@ -20,6 +20,35 @@ aliases {
spi0 = &spi18;
};
+ hdmi-bridge {
+ compatible = "parade,ps195";
+
+ vdd09-supply = <&vreg_hdmi_0p95>;
+ vdd12-supply = <&vreg_hdmi_1p2>;
+ vdd33-supply = <&vreg_hdmi_3p3>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ hdmi_bridge_in: endpoint {
+ remote-endpoint = <&usb_2_qmpphy_out_dp>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ hdmi_bridge_out: endpoint {
+ remote-endpoint = <&hdmi_con>;
+ };
+ };
+ };
+ };
+
chosen {
stdout-path = "serial0:115200n8";
};
@@ -63,6 +92,17 @@ switch-lid {
};
};
+ hdmi-connector {
+ compatible = "hdmi-connector";
+ type = "a";
+
+ port {
+ hdmi_con: endpoint {
+ remote-endpoint = <&hdmi_bridge_out>;
+ };
+ };
+ };
+
pmic-glink {
compatible = "qcom,glymur-pmic-glink",
"qcom,pmic-glink";
@@ -142,6 +182,53 @@ vreg_edp_3p3: regulator-edp-3p3 {
regulator-boot-on;
};
+ vreg_hdmi_0p95: regulator-hdmi-0p95 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_HDMI_0P95";
+ regulator-min-microvolt = <950000>;
+ regulator-max-microvolt = <950000>;
+
+ gpio = <&tlmm 55 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <1000>;
+
+ pinctrl-0 = <&hdmi_0p95_reg_en>;
+ pinctrl-names = "default";
+ };
+
+ vreg_hdmi_1p2: regulator-hdmi-1p2 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_HDMI_1P2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+
+ vin-supply = <&vreg_l18b0>;
+
+ gpio = <&tlmm 54 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <2000>;
+
+ pinctrl-0 = <&hdmi_1p2_reg_en>;
+ pinctrl-names = "default";
+ };
+
+ vreg_hdmi_3p3: regulator-hdmi-3p3 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_HDMI_3P3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&tlmm 170 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <2000>;
+
+ pinctrl-0 = <&hdmi_3p3_reg_en>;
+ pinctrl-names = "default";
+ };
+
vreg_misc_3p3: regulator-misc-3p3 {
compatible = "regulator-fixed";
@@ -545,6 +632,17 @@ &mdss_dp1_out {
link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
};
+&mdss_dp2 {
+ pinctrl-0 = <&usb2_dp_hot_plug_detect>;
+ pinctrl-names = "default";
+
+ status = "okay";
+};
+
+&mdss_dp2_out {
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
&mdss_dp3 {
/delete-property/ #sound-dai-cells;
@@ -826,6 +924,27 @@ ec_int_n_default: ec-int-n-state {
bias-disable;
};
+ hdmi_0p95_reg_en: hdmi-0p95-reg-en-state {
+ pins = "gpio55";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ hdmi_1p2_reg_en: hdmi-1p2-reg-en-state {
+ pins = "gpio54";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ hdmi_3p3_reg_en: hdmi-3p3-reg-en-state {
+ pins = "gpio170";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
kybd_default: kybd-default-state {
pins = "gpio67";
function = "gpio";
@@ -1035,6 +1154,29 @@ &usb_1_qmpphy_out {
remote-endpoint = <&pmic_glink_ss_in1>;
};
+&usb_2_qmpphy {
+ /delete-property/ mode-switch;
+ /delete-property/ orientation-switch;
+
+ status = "okay";
+
+ ports {
+ port@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ /delete-node/ endpoint;
+
+ usb_2_qmpphy_out_dp: endpoint@0 {
+ reg = <0>;
+
+ data-lanes = <3 2 1 0>;
+ remote-endpoint = <&hdmi_bridge_in>;
+ };
+ };
+ };
+};
+
&usb_hs {
dr_mode = "host";
diff --git a/arch/arm64/boot/dts/qcom/glymur.dtsi b/arch/arm64/boot/dts/qcom/glymur.dtsi
index 65a398c0a992..2d3f8fe2cf5d 100644
--- a/arch/arm64/boot/dts/qcom/glymur.dtsi
+++ b/arch/arm64/boot/dts/qcom/glymur.dtsi
@@ -6793,6 +6793,12 @@ data-pins {
bias-pull-up;
};
};
+
+ usb2_dp_hot_plug_detect: usb2-dp-hot-plug-detect-state {
+ pins = "gpio126";
+ function = "usb2_dp";
+ bias-disable;
+ };
};
ctcu@10001000 {
--
2.34.1
^ permalink raw reply [flat|nested] 9+ messages in thread