* [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller
@ 2024-08-01 2:25 Cristian Ciocaltea
2024-08-01 2:25 ` [PATCH v2 1/3] dt-bindings: display: rockchip: Add schema for " Cristian Ciocaltea
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Cristian Ciocaltea @ 2024-08-01 2:25 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Daniel Vetter, Sandy Huang,
Heiko Stübner, Andy Yan, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Mark Yao, Sascha Hauer
Cc: dri-devel, linux-kernel, linux-arm-kernel, linux-rockchip,
devicetree, kernel, Alexandre ARNOUD, Luis de Arquer, Algea Cao
The Rockchip RK3588 SoC family integrates the Synopsys DesignWare HDMI
2.1 Quad-Pixel (QP) TX controller [4], which is a new IP block, quite
different from those used in the previous generations of Rockchip SoCs.
This is the last component that needs to be supported in order to enable
the HDMI output functionality on the RK3588 based SBCs, such as the
RADXA Rock 5B. The other components are the Video Output Processor
(VOP2) and the Samsung IP based HDMI/eDP TX Combo PHY, for which basic
support has been already made available via [1] and [2], respectively.
Please note this is a reworked version of the original series, which
relied on a commonized dw-hdmi approach. Since the general consensus
was to handle it as an entirely new IP, I dropped all patches related to
the old dw-hdmi and Rockchip glue code - a few of them might still make
sense as general improvements and will be submitted separately.
Additionally, as suggested by Neil, I've sent the reworked bridge driver
as a separate patchset [4], hence this series handles now just the new
Rockchip QP platform driver.
It's worth mentioning the HDMI output support is currently limited to
RGB output up to 4K@60Hz, without audio, CEC or any of the HDMI 2.1
specific features. Moreover, the VOP2 driver is not able to properly
handle all display modes supported by the connected screens, e.g. it
doesn't cope with non-integer refresh rates.
A possible workaround consists of enabling the display controller to
make use of the clock provided by the HDMI PHY PLL. This is still work
in progress and will be submitted later, as well as the required DTS
updates.
To facilitate testing and experimentation, all HDMI output related
patches, including those part of this series, as well as the bridge
driver, are available at [3].
So far I could only verify this on the RADXA Rock 5B board.
Thanks,
Cristian
[1]: 5a028e8f062f ("drm/rockchip: vop2: Add support for rk3588")
[2]: 553be2830c5f ("phy: rockchip: Add Samsung HDMI/eDP Combo PHY driver")
[3]: https://gitlab.collabora.com/hardware-enablement/rockchip-3588/linux/-/commits/rk3588-hdmi-bridge-v6.11-rc1
[4]: https://lore.kernel.org/lkml/20240801-dw-hdmi-qp-tx-v1-0-148f542de5fd@collabora.com/
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
---
Changes in v2:
- Reworked the glue code for RK3588 into a new Rockchip platform driver
- Moved bridge driver patches to a separate series [4]
- Dropped all the patches touching to the old dw-hdmi and RK platform
drivers
- Added connector creation to ensure the HDMI QP bridge driver does only
support DRM_BRIDGE_ATTACH_NO_CONNECTOR
- Link to v1: https://lore.kernel.org/r/20240601-b4-rk3588-bridge-upstream-v1-0-f6203753232b@collabora.com
---
Cristian Ciocaltea (3):
dt-bindings: display: rockchip: Add schema for RK3588 HDMI TX Controller
drm/rockchip: Explicitly include bits header
drm/rockchip: Add basic RK3588 HDMI output support
.../display/rockchip/rockchip,dw-hdmi-qp.yaml | 188 +++++++++
drivers/gpu/drm/rockchip/Kconfig | 8 +
drivers/gpu/drm/rockchip/Makefile | 1 +
drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 430 +++++++++++++++++++++
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 +
drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 4 +-
6 files changed, 632 insertions(+), 1 deletion(-)
---
base-commit: 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
change-id: 20240601-b4-rk3588-bridge-upstream-a27baff1b8fc
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 1/3] dt-bindings: display: rockchip: Add schema for RK3588 HDMI TX Controller
2024-08-01 2:25 [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller Cristian Ciocaltea
@ 2024-08-01 2:25 ` Cristian Ciocaltea
2024-08-01 3:37 ` Rob Herring (Arm)
2024-08-01 2:25 ` [PATCH v2 2/3] drm/rockchip: Explicitly include bits header Cristian Ciocaltea
` (2 subsequent siblings)
3 siblings, 1 reply; 13+ messages in thread
From: Cristian Ciocaltea @ 2024-08-01 2:25 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Daniel Vetter, Sandy Huang,
Heiko Stübner, Andy Yan, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Mark Yao, Sascha Hauer
Cc: dri-devel, linux-kernel, linux-arm-kernel, linux-rockchip,
devicetree, kernel, Alexandre ARNOUD, Luis de Arquer
Rockchip RK3588 SoC integrates the Synopsys DesignWare HDMI 2.1
Quad-Pixel (QP) TX controller IP.
Since this is a new IP block, quite different from those used in the
previous generations of Rockchip SoCs, add a dedicated binding file.
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
---
.../display/rockchip/rockchip,dw-hdmi-qp.yaml | 188 +++++++++++++++++++++
1 file changed, 188 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/rockchip/rockchip,dw-hdmi-qp.yaml b/Documentation/devicetree/bindings/display/rockchip/rockchip,dw-hdmi-qp.yaml
new file mode 100644
index 000000000000..33572c88a589
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/rockchip/rockchip,dw-hdmi-qp.yaml
@@ -0,0 +1,188 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/rockchip/rockchip,dw-hdmi-qp.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip DW HDMI QP TX Encoder
+
+maintainers:
+ - Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
+
+description:
+ Rockchip RK3588 SoC integrates the Synopsys DesignWare HDMI QP TX controller
+ IP and a HDMI/eDP TX Combo PHY based on a Samsung IP block.
+
+allOf:
+ - $ref: ../bridge/synopsys,dw-hdmi-qp.yaml#
+ - $ref: /schemas/sound/dai-common.yaml#
+
+properties:
+ compatible:
+ enum:
+ - rockchip,rk3588-dw-hdmi-qp
+
+ clocks:
+ minItems: 4
+ items:
+ - {}
+ - {}
+ - {}
+ - {}
+ # The next clocks are optional, but shall be specified in this
+ # order when present.
+ - description: TMDS/FRL link clock
+ - description: Video datapath clock
+
+ clock-names:
+ minItems: 4
+ items:
+ - {}
+ - {}
+ - {}
+ - {}
+ - enum: [hdp, hclk_vo1]
+ - const: hclk_vo1
+
+ interrupts:
+ items:
+ - {}
+ - {}
+ - {}
+ - {}
+ - description: HPD interrupt
+
+ interrupt-names:
+ items:
+ - {}
+ - {}
+ - {}
+ - {}
+ - const: hpd
+
+ phys:
+ maxItems: 1
+ description: The HDMI/eDP PHY.
+
+ phy-names:
+ const: hdmi
+
+ ports:
+ $ref: /schemas/graph.yaml#/properties/ports
+
+ properties:
+ port@0:
+ $ref: /schemas/graph.yaml#/properties/port
+ description:
+ Port node with one endpoint connected to a vop node.
+
+ port@1:
+ $ref: /schemas/graph.yaml#/properties/port
+ description:
+ Port node with one endpoint connected to a hdmi-connector node.
+
+ required:
+ - port@0
+ - port@1
+
+ power-domains:
+ maxItems: 1
+
+ resets:
+ minItems: 2
+ maxItems: 2
+
+ reset-names:
+ items:
+ - const: ref
+ - const: hdp
+
+ "#sound-dai-cells":
+ const: 0
+
+ rockchip,grf:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description:
+ Most HDMI QP related data is accessed through SYS GRF regs.
+
+ rockchip,vo1_grf:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description:
+ Additional HDMI QP related data is accessed through VO1 GRF regs.
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - clock-names
+ - interrupts
+ - interrupt-names
+ - phys
+ - phy-names
+ - ports
+ - resets
+ - reset-names
+ - rockchip,grf
+ - rockchip,vo1_grf
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/rockchip,rk3588-cru.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/power/rk3588-power.h>
+ #include <dt-bindings/reset/rockchip,rk3588-cru.h>
+
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ hdmi@fde80000 {
+ compatible = "rockchip,rk3588-dw-hdmi-qp";
+ reg = <0x0 0xfde80000 0x0 0x20000>;
+ clocks = <&cru PCLK_HDMITX0>,
+ <&cru CLK_HDMITX0_EARC>,
+ <&cru CLK_HDMITX0_REF>,
+ <&cru MCLK_I2S5_8CH_TX>,
+ <&cru CLK_HDMIHDP0>,
+ <&cru HCLK_VO1>;
+ clock-names = "pclk", "earc", "ref", "aud", "hdp", "hclk_vo1";
+ interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH 0>,
+ <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH 0>;
+ interrupt-names = "avp", "cec", "earc", "main", "hpd";
+ phys = <&hdptxphy_hdmi0>;
+ phy-names = "hdmi";
+ power-domains = <&power RK3588_PD_VO1>;
+ resets = <&cru SRST_HDMITX0_REF>, <&cru SRST_HDMIHDP0>;
+ reset-names = "ref", "hdp";
+ rockchip,grf = <&sys_grf>;
+ rockchip,vo1_grf = <&vo1_grf>;
+ #sound-dai-cells = <0>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ hdmi0_in_vp0: endpoint {
+ remote-endpoint = <&vp0_out_hdmi0>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ hdmi0_out_con0: endpoint {
+ remote-endpoint = <&hdmi_con0_in>;
+ };
+ };
+ };
+ };
+ };
--
2.45.2
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/3] drm/rockchip: Explicitly include bits header
2024-08-01 2:25 [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller Cristian Ciocaltea
2024-08-01 2:25 ` [PATCH v2 1/3] dt-bindings: display: rockchip: Add schema for " Cristian Ciocaltea
@ 2024-08-01 2:25 ` Cristian Ciocaltea
2024-08-01 14:45 ` Krzysztof Kozlowski
2024-08-01 2:25 ` [PATCH v2 3/3] drm/rockchip: Add basic RK3588 HDMI output support Cristian Ciocaltea
2024-08-03 13:24 ` [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller Piotr Oniszczuk
3 siblings, 1 reply; 13+ messages in thread
From: Cristian Ciocaltea @ 2024-08-01 2:25 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Daniel Vetter, Sandy Huang,
Heiko Stübner, Andy Yan, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Mark Yao, Sascha Hauer
Cc: dri-devel, linux-kernel, linux-arm-kernel, linux-rockchip,
devicetree, kernel, Alexandre ARNOUD, Luis de Arquer
Driver makes use of the BIT() macro, but relies on the bits header being
implicitly included.
Explicitly pull the header in to avoid potential build failures in some
configurations.
While at it, reorder include directives alphabetically.
Fixes: 8c8546546f25 ("drm/rockchip: move output interface related definition to rockchip_drm_drv.h")
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
---
drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
index bbb9e0bf6804..8d566fcd80a2 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
@@ -12,9 +12,10 @@
#include <drm/drm_atomic_helper.h>
#include <drm/drm_gem.h>
+#include <linux/bits.h>
+#include <linux/component.h>
#include <linux/i2c.h>
#include <linux/module.h>
-#include <linux/component.h>
#define ROCKCHIP_MAX_FB_BUFFER 3
#define ROCKCHIP_MAX_CONNECTOR 2
--
2.45.2
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 3/3] drm/rockchip: Add basic RK3588 HDMI output support
2024-08-01 2:25 [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller Cristian Ciocaltea
2024-08-01 2:25 ` [PATCH v2 1/3] dt-bindings: display: rockchip: Add schema for " Cristian Ciocaltea
2024-08-01 2:25 ` [PATCH v2 2/3] drm/rockchip: Explicitly include bits header Cristian Ciocaltea
@ 2024-08-01 2:25 ` Cristian Ciocaltea
2024-08-09 20:48 ` kernel test robot
2024-08-09 21:09 ` kernel test robot
2024-08-03 13:24 ` [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller Piotr Oniszczuk
3 siblings, 2 replies; 13+ messages in thread
From: Cristian Ciocaltea @ 2024-08-01 2:25 UTC (permalink / raw)
To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Daniel Vetter, Sandy Huang,
Heiko Stübner, Andy Yan, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Mark Yao, Sascha Hauer
Cc: dri-devel, linux-kernel, linux-arm-kernel, linux-rockchip,
devicetree, kernel, Alexandre ARNOUD, Luis de Arquer, Algea Cao
The RK3588 SoC family integrates the newer Synopsys DesignWare HDMI 2.1
Quad-Pixel (QP) TX controller IP and a HDMI/eDP TX Combo PHY based on a
Samsung IP block.
Add just the basic support for now, i.e. RGB output up to 4K@60Hz,
without audio, CEC or any of the HDMI 2.1 specific features.
Co-developed-by: Algea Cao <algea.cao@rock-chips.com>
Signed-off-by: Algea Cao <algea.cao@rock-chips.com>
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
---
drivers/gpu/drm/rockchip/Kconfig | 8 +
drivers/gpu/drm/rockchip/Makefile | 1 +
drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 430 +++++++++++++++++++++++++
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 +
drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 1 +
5 files changed, 442 insertions(+)
diff --git a/drivers/gpu/drm/rockchip/Kconfig b/drivers/gpu/drm/rockchip/Kconfig
index 1bf3e2829cd0..b60794aa0a9f 100644
--- a/drivers/gpu/drm/rockchip/Kconfig
+++ b/drivers/gpu/drm/rockchip/Kconfig
@@ -8,6 +8,7 @@ config DRM_ROCKCHIP
select VIDEOMODE_HELPERS
select DRM_ANALOGIX_DP if ROCKCHIP_ANALOGIX_DP
select DRM_DW_HDMI if ROCKCHIP_DW_HDMI
+ select DRM_DW_HDMI_QP if ROCKCHIP_DW_HDMI_QP
select DRM_DW_MIPI_DSI if ROCKCHIP_DW_MIPI_DSI
select GENERIC_PHY if ROCKCHIP_DW_MIPI_DSI
select GENERIC_PHY_MIPI_DPHY if ROCKCHIP_DW_MIPI_DSI
@@ -63,6 +64,13 @@ config ROCKCHIP_DW_HDMI
enable HDMI on RK3288 or RK3399 based SoC, you should select
this option.
+config ROCKCHIP_DW_HDMI_QP
+ bool "Rockchip specific extensions for Synopsys DW HDMI QP"
+ help
+ This selects support for Rockchip SoC specific extensions
+ for the Synopsys DesignWare HDMI QP driver. If you want to
+ enable HDMI on RK3588 based SoC, you should select this option.
+
config ROCKCHIP_DW_MIPI_DSI
bool "Rockchip specific extensions for Synopsys DW MIPI DSI"
select GENERIC_PHY_MIPI_DPHY
diff --git a/drivers/gpu/drm/rockchip/Makefile b/drivers/gpu/drm/rockchip/Makefile
index 3ff7b21c0414..3eab662a5a1d 100644
--- a/drivers/gpu/drm/rockchip/Makefile
+++ b/drivers/gpu/drm/rockchip/Makefile
@@ -11,6 +11,7 @@ rockchipdrm-$(CONFIG_ROCKCHIP_VOP) += rockchip_drm_vop.o rockchip_vop_reg.o
rockchipdrm-$(CONFIG_ROCKCHIP_ANALOGIX_DP) += analogix_dp-rockchip.o
rockchipdrm-$(CONFIG_ROCKCHIP_CDN_DP) += cdn-dp-core.o cdn-dp-reg.o
rockchipdrm-$(CONFIG_ROCKCHIP_DW_HDMI) += dw_hdmi-rockchip.o
+rockchipdrm-$(CONFIG_ROCKCHIP_DW_HDMI_QP) += dw_hdmi_qp-rockchip.o
rockchipdrm-$(CONFIG_ROCKCHIP_DW_MIPI_DSI) += dw-mipi-dsi-rockchip.o
rockchipdrm-$(CONFIG_ROCKCHIP_INNO_HDMI) += inno_hdmi.o
rockchipdrm-$(CONFIG_ROCKCHIP_LVDS) += rockchip_lvds.o
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c
new file mode 100644
index 000000000000..e04417940573
--- /dev/null
+++ b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c
@@ -0,0 +1,430 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2021-2022 Rockchip Electronics Co., Ltd.
+ * Copyright (c) 2024 Collabora Ltd.
+ *
+ * Author: Algea Cao <algea.cao@rock-chips.com>
+ * Author: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
+ */
+
+#include <linux/clk.h>
+#include <linux/gpio/consumer.h>
+#include <linux/mfd/syscon.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/phy/phy.h>
+#include <linux/regmap.h>
+
+#include <drm/bridge/dw_hdmi_qp.h>
+#include <drm/drm_bridge_connector.h>
+#include <drm/drm_of.h>
+#include <drm/drm_probe_helper.h>
+#include <drm/drm_simple_kms_helper.h>
+
+#include "rockchip_drm_drv.h"
+
+#define RK3588_GRF_SOC_CON2 0x0308
+#define RK3588_HDMI0_HPD_INT_MSK BIT(13)
+#define RK3588_HDMI0_HPD_INT_CLR BIT(12)
+#define RK3588_GRF_SOC_CON7 0x031c
+#define RK3588_SET_HPD_PATH_MASK GENMASK(13, 12)
+#define RK3588_GRF_SOC_STATUS1 0x0384
+#define RK3588_HDMI0_LEVEL_INT BIT(16)
+#define RK3588_GRF_VO1_CON3 0x000c
+#define RK3588_SCLIN_MASK BIT(9)
+#define RK3588_SDAIN_MASK BIT(10)
+#define RK3588_MODE_MASK BIT(11)
+#define RK3588_I2S_SEL_MASK BIT(13)
+#define RK3588_GRF_VO1_CON9 0x0024
+#define RK3588_HDMI0_GRANT_SEL BIT(10)
+
+#define HIWORD_UPDATE(val, mask) ((val) | (mask) << 16)
+
+struct rockchip_hdmi_qp {
+ struct device *dev;
+ struct regmap *regmap;
+ struct regmap *vo1_regmap;
+ struct rockchip_encoder encoder;
+ struct dw_hdmi_qp *hdmi;
+ struct phy *phy;
+ struct gpio_desc *enable_gpio;
+ struct delayed_work hpd_work;
+};
+
+static struct rockchip_hdmi_qp *to_rockchip_hdmi_qp(struct drm_encoder *encoder)
+{
+ struct rockchip_encoder *rkencoder = to_rockchip_encoder(encoder);
+
+ return container_of(rkencoder, struct rockchip_hdmi_qp, encoder);
+}
+
+static void
+dw_hdmi_qp_rockchip_encoder_mode_set(struct drm_encoder *encoder,
+ struct drm_display_mode *mode,
+ struct drm_display_mode *adj_mode)
+{
+ struct rockchip_hdmi_qp *hdmi = to_rockchip_hdmi_qp(encoder);
+
+ dw_hdmi_qp_set_refclk_rate(hdmi->hdmi, adj_mode->clock * 1000);
+}
+
+static void dw_hdmi_qp_rockchip_encoder_enable(struct drm_encoder *encoder)
+{
+ struct rockchip_hdmi_qp *hdmi = to_rockchip_hdmi_qp(encoder);
+ struct drm_crtc *crtc = encoder->crtc;
+ int rate;
+
+ /* Unconditionally switch to TMDS as FRL is not yet supported */
+ gpiod_set_value(hdmi->enable_gpio, 1);
+
+ if (crtc && crtc->state) {
+ dw_hdmi_qp_set_refclk_rate(hdmi->hdmi,
+ crtc->state->adjusted_mode.crtc_clock * 1000);
+ /*
+ * FIXME: Temporary workaround to pass pixel clock rate
+ * to the PHY driver until phy_configure_opts_hdmi
+ * becomes available in the PHY API. See also the related
+ * comment in rk_hdptx_phy_power_on() from
+ * drivers/phy/rockchip/phy-rockchip-samsung-hdptx.c
+ */
+ rate = crtc->state->mode.clock * 10;
+ phy_set_bus_width(hdmi->phy, rate);
+ drm_dbg(hdmi, "%s set bus_width=%u\n", __func__, rate);
+ }
+}
+
+static int
+dw_hdmi_qp_rockchip_encoder_atomic_check(struct drm_encoder *encoder,
+ struct drm_crtc_state *crtc_state,
+ struct drm_connector_state *conn_state)
+{
+ struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc_state);
+
+ s->output_mode = ROCKCHIP_OUT_MODE_AAAA;
+ s->output_type = DRM_MODE_CONNECTOR_HDMIA;
+
+ return 0;
+}
+
+static const struct
+drm_encoder_helper_funcs dw_hdmi_qp_rockchip_encoder_helper_funcs = {
+ .mode_set = dw_hdmi_qp_rockchip_encoder_mode_set,
+ .enable = dw_hdmi_qp_rockchip_encoder_enable,
+ .atomic_check = dw_hdmi_qp_rockchip_encoder_atomic_check,
+};
+
+static int dw_hdmi_qp_rk3588_phy_init(struct dw_hdmi_qp *dw_hdmi, void *data,
+ const struct drm_display_info *display)
+{
+ struct rockchip_hdmi_qp *hdmi = (struct rockchip_hdmi_qp *)data;
+
+ dw_hdmi_qp_set_high_tmds_clock_ratio(dw_hdmi, display);
+
+ return phy_power_on(hdmi->phy);
+}
+
+static void dw_hdmi_qp_rk3588_phy_disable(struct dw_hdmi_qp *dw_hdmi,
+ void *data)
+{
+ struct rockchip_hdmi_qp *hdmi = (struct rockchip_hdmi_qp *)data;
+
+ phy_power_off(hdmi->phy);
+}
+
+static enum drm_connector_status
+dw_hdmi_qp_rk3588_read_hpd(struct dw_hdmi_qp *dw_hdmi, void *data)
+{
+ struct rockchip_hdmi_qp *hdmi = (struct rockchip_hdmi_qp *)data;
+ u32 val;
+
+ regmap_read(hdmi->regmap, RK3588_GRF_SOC_STATUS1, &val);
+
+ return val & RK3588_HDMI0_LEVEL_INT ?
+ connector_status_connected : connector_status_disconnected;
+}
+
+static void dw_hdmi_qp_rk3588_setup_hpd(struct dw_hdmi_qp *dw_hdmi, void *data)
+{
+ struct rockchip_hdmi_qp *hdmi = (struct rockchip_hdmi_qp *)data;
+
+ regmap_write(hdmi->regmap,
+ RK3588_GRF_SOC_CON2,
+ HIWORD_UPDATE(RK3588_HDMI0_HPD_INT_CLR,
+ RK3588_HDMI0_HPD_INT_CLR |
+ RK3588_HDMI0_HPD_INT_MSK));
+}
+
+static const struct dw_hdmi_qp_phy_ops rk3588_hdmi_phy_ops = {
+ .init = dw_hdmi_qp_rk3588_phy_init,
+ .disable = dw_hdmi_qp_rk3588_phy_disable,
+ .read_hpd = dw_hdmi_qp_rk3588_read_hpd,
+ .setup_hpd = dw_hdmi_qp_rk3588_setup_hpd,
+};
+
+static void dw_hdmi_qp_rk3588_hpd_work(struct work_struct *work)
+{
+ struct rockchip_hdmi_qp *hdmi = container_of(work,
+ struct rockchip_hdmi_qp,
+ hpd_work.work);
+ struct drm_device *drm = hdmi->encoder.encoder.dev;
+ bool changed;
+
+ if (drm) {
+ changed = drm_helper_hpd_irq_event(drm);
+ if (changed)
+ drm_dbg(hdmi, "connector status changed\n");
+ }
+}
+
+static irqreturn_t dw_hdmi_qp_rk3588_hardirq(int irq, void *dev_id)
+{
+ struct rockchip_hdmi_qp *hdmi = dev_id;
+ u32 intr_stat, val;
+
+ regmap_read(hdmi->regmap, RK3588_GRF_SOC_STATUS1, &intr_stat);
+
+ if (intr_stat) {
+ val = HIWORD_UPDATE(RK3588_HDMI0_HPD_INT_MSK,
+ RK3588_HDMI0_HPD_INT_MSK);
+ regmap_write(hdmi->regmap, RK3588_GRF_SOC_CON2, val);
+ return IRQ_WAKE_THREAD;
+ }
+
+ return IRQ_NONE;
+}
+
+static irqreturn_t dw_hdmi_qp_rk3588_irq(int irq, void *dev_id)
+{
+ struct rockchip_hdmi_qp *hdmi = dev_id;
+ u32 intr_stat, val;
+ int debounce_ms;
+
+ regmap_read(hdmi->regmap, RK3588_GRF_SOC_STATUS1, &intr_stat);
+ if (!intr_stat)
+ return IRQ_NONE;
+
+ val = HIWORD_UPDATE(RK3588_HDMI0_HPD_INT_CLR,
+ RK3588_HDMI0_HPD_INT_CLR);
+ regmap_write(hdmi->regmap, RK3588_GRF_SOC_CON2, val);
+
+ debounce_ms = intr_stat & RK3588_HDMI0_LEVEL_INT ? 150 : 20;
+ mod_delayed_work(system_wq, &hdmi->hpd_work,
+ msecs_to_jiffies(debounce_ms));
+
+ val |= HIWORD_UPDATE(0, RK3588_HDMI0_HPD_INT_MSK);
+ regmap_write(hdmi->regmap, RK3588_GRF_SOC_CON2, val);
+
+ return IRQ_HANDLED;
+}
+
+static const struct of_device_id dw_hdmi_qp_rockchip_dt_ids[] = {
+ { .compatible = "rockchip,rk3588-dw-hdmi-qp",
+ .data = &rk3588_hdmi_phy_ops },
+ {},
+};
+MODULE_DEVICE_TABLE(of, dw_hdmi_qp_rockchip_dt_ids);
+
+static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,
+ void *data)
+{
+ static const char * const clk_names[] = { "hdp", "hclk_vo1" };
+ struct platform_device *pdev = to_platform_device(dev);
+ struct dw_hdmi_qp_plat_data plat_data;
+ struct drm_device *drm = data;
+ struct drm_connector *connector;
+ struct drm_encoder *encoder;
+ struct rockchip_hdmi_qp *hdmi;
+ struct clk *clk;
+ int ret, irq, i;
+ u32 val;
+
+ if (!pdev->dev.of_node)
+ return -ENODEV;
+
+ hdmi = devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL);
+ if (!hdmi)
+ return -ENOMEM;
+
+ plat_data.phy_ops = of_device_get_match_data(dev);
+ if (!plat_data.phy_ops)
+ return -ENODEV;
+
+ plat_data.phy_data = hdmi;
+ hdmi->dev = &pdev->dev;
+
+ encoder = &hdmi->encoder.encoder;
+ encoder->possible_crtcs = drm_of_find_possible_crtcs(drm, dev->of_node);
+
+ rockchip_drm_encoder_set_crtc_endpoint_id(&hdmi->encoder,
+ dev->of_node, 0, 0);
+ /*
+ * If we failed to find the CRTC(s) which this encoder is
+ * supposed to be connected to, it's because the CRTC has
+ * not been registered yet. Defer probing, and hope that
+ * the required CRTC is added later.
+ */
+ if (encoder->possible_crtcs == 0)
+ return -EPROBE_DEFER;
+
+ hdmi->regmap = syscon_regmap_lookup_by_phandle(dev->of_node,
+ "rockchip,grf");
+ if (IS_ERR(hdmi->regmap)) {
+ drm_err(hdmi, "Unable to get rockchip,grf\n");
+ return PTR_ERR(hdmi->regmap);
+ }
+
+ hdmi->vo1_regmap = syscon_regmap_lookup_by_phandle(dev->of_node,
+ "rockchip,vo1_grf");
+ if (IS_ERR(hdmi->vo1_regmap)) {
+ drm_err(hdmi, "Unable to get rockchip,vo1_grf\n");
+ return PTR_ERR(hdmi->vo1_regmap);
+ }
+
+ for (i = 0; i < ARRAY_SIZE(clk_names); i++) {
+ clk = devm_clk_get_optional_enabled(hdmi->dev, clk_names[i]);
+
+ if (IS_ERR(clk)) {
+ ret = PTR_ERR(clk);
+ if (ret != -EPROBE_DEFER)
+ drm_err(hdmi, "Failed to get %s clock: %d\n",
+ clk_names[i], ret);
+ return ret;
+ }
+ }
+
+ hdmi->enable_gpio = devm_gpiod_get_optional(hdmi->dev, "enable",
+ GPIOD_OUT_HIGH);
+ if (IS_ERR(hdmi->enable_gpio)) {
+ ret = PTR_ERR(hdmi->enable_gpio);
+ drm_err(hdmi, "Failed to request enable GPIO: %d\n", ret);
+ return ret;
+ }
+
+ hdmi->phy = devm_phy_get(dev, "hdmi");
+ if (IS_ERR(hdmi->phy)) {
+ ret = PTR_ERR(hdmi->phy);
+ if (ret != -EPROBE_DEFER)
+ drm_err(hdmi, "failed to get phy: %d\n", ret);
+ return ret;
+ }
+
+ val = HIWORD_UPDATE(RK3588_SCLIN_MASK, RK3588_SCLIN_MASK) |
+ HIWORD_UPDATE(RK3588_SDAIN_MASK, RK3588_SDAIN_MASK) |
+ HIWORD_UPDATE(RK3588_MODE_MASK, RK3588_MODE_MASK) |
+ HIWORD_UPDATE(RK3588_I2S_SEL_MASK, RK3588_I2S_SEL_MASK);
+ regmap_write(hdmi->vo1_regmap, RK3588_GRF_VO1_CON3, val);
+
+ val = HIWORD_UPDATE(RK3588_SET_HPD_PATH_MASK,
+ RK3588_SET_HPD_PATH_MASK);
+ regmap_write(hdmi->regmap, RK3588_GRF_SOC_CON7, val);
+
+ val = HIWORD_UPDATE(RK3588_HDMI0_GRANT_SEL,
+ RK3588_HDMI0_GRANT_SEL);
+ regmap_write(hdmi->vo1_regmap, RK3588_GRF_VO1_CON9, val);
+
+ val = HIWORD_UPDATE(RK3588_HDMI0_HPD_INT_MSK, RK3588_HDMI0_HPD_INT_MSK);
+ regmap_write(hdmi->regmap, RK3588_GRF_SOC_CON2, val);
+
+ INIT_DELAYED_WORK(&hdmi->hpd_work, dw_hdmi_qp_rk3588_hpd_work);
+
+ irq = platform_get_irq_byname(pdev, "hpd");
+ if (irq < 0)
+ return irq;
+
+ ret = devm_request_threaded_irq(hdmi->dev, irq,
+ dw_hdmi_qp_rk3588_hardirq,
+ dw_hdmi_qp_rk3588_irq,
+ IRQF_SHARED, "dw-hdmi-qp-hpd",
+ hdmi);
+ if (ret)
+ return ret;
+
+ drm_encoder_helper_add(encoder, &dw_hdmi_qp_rockchip_encoder_helper_funcs);
+ drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
+
+ platform_set_drvdata(pdev, hdmi);
+
+ hdmi->hdmi = dw_hdmi_qp_bind(pdev, encoder, &plat_data);
+ if (IS_ERR(hdmi->hdmi)) {
+ ret = PTR_ERR(hdmi->hdmi);
+ drm_encoder_cleanup(encoder);
+ return ret;
+ }
+
+ connector = drm_bridge_connector_init(drm, encoder);
+ if (IS_ERR(connector)) {
+ ret = PTR_ERR(connector);
+ drm_err(hdmi, "failed to init bridge connector: %d\n", ret);
+ return ret;
+ }
+
+ return drm_connector_attach_encoder(connector, encoder);
+}
+
+static void dw_hdmi_qp_rockchip_unbind(struct device *dev,
+ struct device *master,
+ void *data)
+{
+ struct rockchip_hdmi_qp *hdmi = dev_get_drvdata(dev);
+
+ cancel_delayed_work_sync(&hdmi->hpd_work);
+ dw_hdmi_qp_unbind(hdmi->hdmi);
+
+ drm_encoder_cleanup(&hdmi->encoder.encoder);
+}
+
+static const struct component_ops dw_hdmi_qp_rockchip_ops = {
+ .bind = dw_hdmi_qp_rockchip_bind,
+ .unbind = dw_hdmi_qp_rockchip_unbind,
+};
+
+static int dw_hdmi_qp_rockchip_probe(struct platform_device *pdev)
+{
+ return component_add(&pdev->dev, &dw_hdmi_qp_rockchip_ops);
+}
+
+static void dw_hdmi_qp_rockchip_remove(struct platform_device *pdev)
+{
+ component_del(&pdev->dev, &dw_hdmi_qp_rockchip_ops);
+}
+
+static int __maybe_unused dw_hdmi_qp_rockchip_resume(struct device *dev)
+{
+ struct rockchip_hdmi_qp *hdmi = dev_get_drvdata(dev);
+ u32 val;
+
+ val = HIWORD_UPDATE(RK3588_SCLIN_MASK, RK3588_SCLIN_MASK) |
+ HIWORD_UPDATE(RK3588_SDAIN_MASK, RK3588_SDAIN_MASK) |
+ HIWORD_UPDATE(RK3588_MODE_MASK, RK3588_MODE_MASK) |
+ HIWORD_UPDATE(RK3588_I2S_SEL_MASK, RK3588_I2S_SEL_MASK);
+ regmap_write(hdmi->vo1_regmap, RK3588_GRF_VO1_CON3, val);
+
+ val = HIWORD_UPDATE(RK3588_SET_HPD_PATH_MASK,
+ RK3588_SET_HPD_PATH_MASK);
+ regmap_write(hdmi->regmap, RK3588_GRF_SOC_CON7, val);
+
+ val = HIWORD_UPDATE(RK3588_HDMI0_GRANT_SEL,
+ RK3588_HDMI0_GRANT_SEL);
+ regmap_write(hdmi->vo1_regmap, RK3588_GRF_VO1_CON9, val);
+
+ dw_hdmi_qp_resume(dev, hdmi->hdmi);
+
+ if (hdmi->encoder.encoder.dev)
+ drm_helper_hpd_irq_event(hdmi->encoder.encoder.dev);
+
+ return 0;
+}
+
+static const struct dev_pm_ops dw_hdmi_qp_rockchip_pm = {
+ SET_SYSTEM_SLEEP_PM_OPS(NULL, dw_hdmi_qp_rockchip_resume)
+};
+
+struct platform_driver dw_hdmi_qp_rockchip_pltfm_driver = {
+ .probe = dw_hdmi_qp_rockchip_probe,
+ .remove_new = dw_hdmi_qp_rockchip_remove,
+ .driver = {
+ .name = "dwhdmiqp-rockchip",
+ .pm = &dw_hdmi_qp_rockchip_pm,
+ .of_match_table = dw_hdmi_qp_rockchip_dt_ids,
+ },
+};
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index ab55d7132550..3ec8ff5bf21f 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -503,6 +503,8 @@ static int __init rockchip_drm_init(void)
ADD_ROCKCHIP_SUB_DRIVER(cdn_dp_driver, CONFIG_ROCKCHIP_CDN_DP);
ADD_ROCKCHIP_SUB_DRIVER(dw_hdmi_rockchip_pltfm_driver,
CONFIG_ROCKCHIP_DW_HDMI);
+ ADD_ROCKCHIP_SUB_DRIVER(dw_hdmi_qp_rockchip_pltfm_driver,
+ CONFIG_ROCKCHIP_DW_HDMI_QP);
ADD_ROCKCHIP_SUB_DRIVER(dw_mipi_dsi_rockchip_driver,
CONFIG_ROCKCHIP_DW_MIPI_DSI);
ADD_ROCKCHIP_SUB_DRIVER(inno_hdmi_driver, CONFIG_ROCKCHIP_INNO_HDMI);
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
index 8d566fcd80a2..24b4ce5ceaf1 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h
@@ -88,6 +88,7 @@ int rockchip_drm_encoder_set_crtc_endpoint_id(struct rockchip_encoder *rencoder,
int rockchip_drm_endpoint_is_subdriver(struct device_node *ep);
extern struct platform_driver cdn_dp_driver;
extern struct platform_driver dw_hdmi_rockchip_pltfm_driver;
+extern struct platform_driver dw_hdmi_qp_rockchip_pltfm_driver;
extern struct platform_driver dw_mipi_dsi_rockchip_driver;
extern struct platform_driver inno_hdmi_driver;
extern struct platform_driver rockchip_dp_driver;
--
2.45.2
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/3] dt-bindings: display: rockchip: Add schema for RK3588 HDMI TX Controller
2024-08-01 2:25 ` [PATCH v2 1/3] dt-bindings: display: rockchip: Add schema for " Cristian Ciocaltea
@ 2024-08-01 3:37 ` Rob Herring (Arm)
2024-08-01 9:50 ` Cristian Ciocaltea
0 siblings, 1 reply; 13+ messages in thread
From: Rob Herring (Arm) @ 2024-08-01 3:37 UTC (permalink / raw)
To: Cristian Ciocaltea
Cc: Andy Yan, Heiko Stübner, Luis de Arquer, Maarten Lankhorst,
David Airlie, Alexandre ARNOUD, Robert Foss, devicetree,
Maxime Ripard, dri-devel, Neil Armstrong, linux-rockchip,
Thomas Zimmermann, Andrzej Hajda, Mark Yao, Sascha Hauer,
Jonas Karlman, Conor Dooley, Daniel Vetter, Sandy Huang,
linux-kernel, kernel, Laurent Pinchart, Krzysztof Kozlowski,
linux-arm-kernel, Jernej Skrabec
On Thu, 01 Aug 2024 05:25:52 +0300, Cristian Ciocaltea wrote:
> Rockchip RK3588 SoC integrates the Synopsys DesignWare HDMI 2.1
> Quad-Pixel (QP) TX controller IP.
>
> Since this is a new IP block, quite different from those used in the
> previous generations of Rockchip SoCs, add a dedicated binding file.
>
> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
> ---
> .../display/rockchip/rockchip,dw-hdmi-qp.yaml | 188 +++++++++++++++++++++
> 1 file changed, 188 insertions(+)
>
My bot found errors running 'make dt_binding_check' on your patch:
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/rockchip/rockchip,dw-hdmi-qp.example.dtb: hdmi@fde80000: False schema does not allow {'compatible': ['rockchip,rk3588-dw-hdmi-qp'], 'reg': [[0, 4259840000, 0, 131072]], 'clocks': [[4294967295, 528], [4294967295, 529], [4294967295, 530], [4294967295, 564], [4294967295, 594], [4294967295, 717]], 'clock-names': ['pclk', 'earc', 'ref', 'aud', 'hdp', 'hclk_vo1'], 'interrupts': [[0, 169, 4, 0], [0, 170, 4, 0], [0, 171, 4, 0], [0, 172, 4, 0], [0, 360, 4, 0]], 'interrupt-names': ['avp', 'cec', 'earc', 'main', 'hpd'], 'phys': [[4294967295]], 'phy-names': ['hdmi'], 'power-domains': [[4294967295, 26]], 'resets': [[4294967295, 462], [4294967295, 560]], 'reset-names': ['ref', 'hdp'], 'rockchip,grf': [[4294967295]], 'rockchip,vo1_grf': [[4294967295]], '#sound-dai-cells': 0, 'ports': {'#address-cells': 1, '#size-cells': 0, 'port@0': {'reg': [[0]], 'endpoint': {'remote-endpoint': [[4294967295]]}}, 'port@1': {'reg': [[1]]
, 'endpoint': {'remote-endpoint': [[4294967295]]}}}, '$nodename': ['hdmi@fde80000']}
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,dw-hdmi-qp.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/rockchip/rockchip,dw-hdmi-qp.example.dtb: hdmi@fde80000: Unevaluated properties are not allowed ('reg' was unexpected)
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,dw-hdmi-qp.yaml#
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20240801-b4-rk3588-bridge-upstream-v2-1-9fa657a4e15b@collabora.com
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/3] dt-bindings: display: rockchip: Add schema for RK3588 HDMI TX Controller
2024-08-01 3:37 ` Rob Herring (Arm)
@ 2024-08-01 9:50 ` Cristian Ciocaltea
2024-08-01 14:44 ` Krzysztof Kozlowski
0 siblings, 1 reply; 13+ messages in thread
From: Cristian Ciocaltea @ 2024-08-01 9:50 UTC (permalink / raw)
To: Rob Herring (Arm)
Cc: Andy Yan, Heiko Stübner, Luis de Arquer, Maarten Lankhorst,
David Airlie, Alexandre ARNOUD, Robert Foss, devicetree,
Maxime Ripard, dri-devel, Neil Armstrong, linux-rockchip,
Thomas Zimmermann, Andrzej Hajda, Mark Yao, Sascha Hauer,
Jonas Karlman, Conor Dooley, Daniel Vetter, Sandy Huang,
linux-kernel, kernel, Laurent Pinchart, Krzysztof Kozlowski,
linux-arm-kernel, Jernej Skrabec
On 8/1/24 6:37 AM, Rob Herring (Arm) wrote:
>
> On Thu, 01 Aug 2024 05:25:52 +0300, Cristian Ciocaltea wrote:
>> Rockchip RK3588 SoC integrates the Synopsys DesignWare HDMI 2.1
>> Quad-Pixel (QP) TX controller IP.
>>
>> Since this is a new IP block, quite different from those used in the
>> previous generations of Rockchip SoCs, add a dedicated binding file.
>>
>> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
>> ---
>> .../display/rockchip/rockchip,dw-hdmi-qp.yaml | 188 +++++++++++++++++++++
>> 1 file changed, 188 insertions(+)
>>
>
> My bot found errors running 'make dt_binding_check' on your patch:
This is because the referenced synopsys,dw-hdmi-qp.yaml is provided by a
separate patchset:
https://lore.kernel.org/lkml/20240801-dw-hdmi-qp-tx-v1-1-148f542de5fd@collabora.com/
> yamllint warnings/errors:
>
> dtschema/dtc warnings/errors:
> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/rockchip/rockchip,dw-hdmi-qp.example.dtb: hdmi@fde80000: False schema does not allow {'compatible': ['rockchip,rk3588-dw-hdmi-qp'], 'reg': [[0, 4259840000, 0, 131072]], 'clocks': [[4294967295, 528], [4294967295, 529], [4294967295, 530], [4294967295, 564], [4294967295, 594], [4294967295, 717]], 'clock-names': ['pclk', 'earc', 'ref', 'aud', 'hdp', 'hclk_vo1'], 'interrupts': [[0, 169, 4, 0], [0, 170, 4, 0], [0, 171, 4, 0], [0, 172, 4, 0], [0, 360, 4, 0]], 'interrupt-names': ['avp', 'cec', 'earc', 'main', 'hpd'], 'phys': [[4294967295]], 'phy-names': ['hdmi'], 'power-domains': [[4294967295, 26]], 'resets': [[4294967295, 462], [4294967295, 560]], 'reset-names': ['ref', 'hdp'], 'rockchip,grf': [[4294967295]], 'rockchip,vo1_grf': [[4294967295]], '#sound-dai-cells': 0, 'ports': {'#address-cells': 1, '#size-cells': 0, 'port@0': {'reg': [[0]], 'endpoint': {'remote-endpoint': [[4294967295]]}}, 'port@1': {'reg': [[1]]
> , 'endpoint': {'remote-endpoint': [[4294967295]]}}}, '$nodename': ['hdmi@fde80000']}
> from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,dw-hdmi-qp.yaml#
> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/rockchip/rockchip,dw-hdmi-qp.example.dtb: hdmi@fde80000: Unevaluated properties are not allowed ('reg' was unexpected)
> from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,dw-hdmi-qp.yaml#
>
> doc reference errors (make refcheckdocs):
>
> See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20240801-b4-rk3588-bridge-upstream-v2-1-9fa657a4e15b@collabora.com
>
> The base for the series is generally the latest rc1. A different dependency
> should be noted in *this* patch.
>
> If you already ran 'make dt_binding_check' and didn't see the above
> error(s), then make sure 'yamllint' is installed and dt-schema is up to
> date:
>
> pip3 install dtschema --upgrade
>
> Please check and re-submit after running the above command yourself. Note
> that DT_SCHEMA_FILES can be set to your schema file to speed up checking
> your schema. However, it must be unset to test all examples with your schema.
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/3] dt-bindings: display: rockchip: Add schema for RK3588 HDMI TX Controller
2024-08-01 9:50 ` Cristian Ciocaltea
@ 2024-08-01 14:44 ` Krzysztof Kozlowski
0 siblings, 0 replies; 13+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-01 14:44 UTC (permalink / raw)
To: Cristian Ciocaltea, Rob Herring (Arm)
Cc: Andy Yan, Heiko Stübner, Luis de Arquer, Maarten Lankhorst,
David Airlie, Alexandre ARNOUD, Robert Foss, devicetree,
Maxime Ripard, dri-devel, Neil Armstrong, linux-rockchip,
Thomas Zimmermann, Andrzej Hajda, Mark Yao, Sascha Hauer,
Jonas Karlman, Conor Dooley, Daniel Vetter, Sandy Huang,
linux-kernel, kernel, Laurent Pinchart, Krzysztof Kozlowski,
linux-arm-kernel, Jernej Skrabec
On 01/08/2024 11:50, Cristian Ciocaltea wrote:
> On 8/1/24 6:37 AM, Rob Herring (Arm) wrote:
>>
>> On Thu, 01 Aug 2024 05:25:52 +0300, Cristian Ciocaltea wrote:
>>> Rockchip RK3588 SoC integrates the Synopsys DesignWare HDMI 2.1
>>> Quad-Pixel (QP) TX controller IP.
>>>
>>> Since this is a new IP block, quite different from those used in the
>>> previous generations of Rockchip SoCs, add a dedicated binding file.
>>>
>>> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
>>> ---
>>> .../display/rockchip/rockchip,dw-hdmi-qp.yaml | 188 +++++++++++++++++++++
>>> 1 file changed, 188 insertions(+)
>>>
>>
>> My bot found errors running 'make dt_binding_check' on your patch:
>
> This is because the referenced synopsys,dw-hdmi-qp.yaml is provided by a
> separate patchset:
>
> https://lore.kernel.org/lkml/20240801-dw-hdmi-qp-tx-v1-1-148f542de5fd@collabora.com/
So you made things untestable. No, this must be one patchset. Do not
send some library/helper and users of it in separate patchsets.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/3] drm/rockchip: Explicitly include bits header
2024-08-01 2:25 ` [PATCH v2 2/3] drm/rockchip: Explicitly include bits header Cristian Ciocaltea
@ 2024-08-01 14:45 ` Krzysztof Kozlowski
0 siblings, 0 replies; 13+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-01 14:45 UTC (permalink / raw)
To: Cristian Ciocaltea, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Sandy Huang, Heiko Stübner, Andy Yan,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Mark Yao,
Sascha Hauer
Cc: dri-devel, linux-kernel, linux-arm-kernel, linux-rockchip,
devicetree, kernel, Alexandre ARNOUD, Luis de Arquer
On 01/08/2024 04:25, Cristian Ciocaltea wrote:
> Driver makes use of the BIT() macro, but relies on the bits header being
> implicitly included.
>
> Explicitly pull the header in to avoid potential build failures in some
> configurations.
>
> While at it, reorder include directives alphabetically.
>
> Fixes: 8c8546546f25 ("drm/rockchip: move output interface related definition to rockchip_drm_drv.h")
There is no bug here to be fixed. Drop. Especially bugfixes should not
be combined with cleanups.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller
2024-08-01 2:25 [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller Cristian Ciocaltea
` (2 preceding siblings ...)
2024-08-01 2:25 ` [PATCH v2 3/3] drm/rockchip: Add basic RK3588 HDMI output support Cristian Ciocaltea
@ 2024-08-03 13:24 ` Piotr Oniszczuk
2024-08-05 16:20 ` Chris Morgan
3 siblings, 1 reply; 13+ messages in thread
From: Piotr Oniszczuk @ 2024-08-03 13:24 UTC (permalink / raw)
To: Cristian Ciocaltea
Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Daniel Vetter, Sandy Huang,
Heiko Stübner, Andy Yan, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Mark Yao, Sascha Hauer, dri-devel, linux-kernel,
linux-arm-kernel, open list:ARM/Rockchip SoC..., devicetree,
kernel, Alexandre ARNOUD, Luis de Arquer, Algea Cao
Hi Cristian,
Will you find some time and motivation to add CEC support to Quad-Pixel (QP) TX controller ?
Probably you recall - I added initial CEC support to yours v1 series and i’m stuck with timing issue (cec pulses are 3x too long).
For me it looks like clock issue.
I’m out of ideas how to move forward with this timming issue….
> Wiadomość napisana przez Cristian Ciocaltea <cristian.ciocaltea@collabora.com> w dniu 01.08.2024, o godz. 04:25:
>
> The Rockchip RK3588 SoC family integrates the Synopsys DesignWare HDMI
> 2.1 Quad-Pixel (QP) TX controller [4], which is a new IP block, quite
> different from those used in the previous generations of Rockchip SoCs.
>
> This is the last component that needs to be supported in order to enable
> the HDMI output functionality on the RK3588 based SBCs, such as the
> RADXA Rock 5B. The other components are the Video Output Processor
> (VOP2) and the Samsung IP based HDMI/eDP TX Combo PHY, for which basic
> support has been already made available via [1] and [2], respectively.
>
> Please note this is a reworked version of the original series, which
> relied on a commonized dw-hdmi approach. Since the general consensus
> was to handle it as an entirely new IP, I dropped all patches related to
> the old dw-hdmi and Rockchip glue code - a few of them might still make
> sense as general improvements and will be submitted separately.
>
> Additionally, as suggested by Neil, I've sent the reworked bridge driver
> as a separate patchset [4], hence this series handles now just the new
> Rockchip QP platform driver.
>
> It's worth mentioning the HDMI output support is currently limited to
> RGB output up to 4K@60Hz, without audio, CEC or any of the HDMI 2.1
> specific features. Moreover, the VOP2 driver is not able to properly
> handle all display modes supported by the connected screens, e.g. it
> doesn't cope with non-integer refresh rates.
>
> A possible workaround consists of enabling the display controller to
> make use of the clock provided by the HDMI PHY PLL. This is still work
> in progress and will be submitted later, as well as the required DTS
> updates.
>
> To facilitate testing and experimentation, all HDMI output related
> patches, including those part of this series, as well as the bridge
> driver, are available at [3].
>
> So far I could only verify this on the RADXA Rock 5B board.
>
> Thanks,
> Cristian
>
> [1]: 5a028e8f062f ("drm/rockchip: vop2: Add support for rk3588")
> [2]: 553be2830c5f ("phy: rockchip: Add Samsung HDMI/eDP Combo PHY driver")
> [3]: https://gitlab.collabora.com/hardware-enablement/rockchip-3588/linux/-/commits/rk3588-hdmi-bridge-v6.11-rc1
> [4]: https://lore.kernel.org/lkml/20240801-dw-hdmi-qp-tx-v1-0-148f542de5fd@collabora.com/
>
> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
> ---
> Changes in v2:
> - Reworked the glue code for RK3588 into a new Rockchip platform driver
> - Moved bridge driver patches to a separate series [4]
> - Dropped all the patches touching to the old dw-hdmi and RK platform
> drivers
> - Added connector creation to ensure the HDMI QP bridge driver does only
> support DRM_BRIDGE_ATTACH_NO_CONNECTOR
> - Link to v1: https://lore.kernel.org/r/20240601-b4-rk3588-bridge-upstream-v1-0-f6203753232b@collabora.com
>
> ---
> Cristian Ciocaltea (3):
> dt-bindings: display: rockchip: Add schema for RK3588 HDMI TX Controller
> drm/rockchip: Explicitly include bits header
> drm/rockchip: Add basic RK3588 HDMI output support
>
> .../display/rockchip/rockchip,dw-hdmi-qp.yaml | 188 +++++++++
> drivers/gpu/drm/rockchip/Kconfig | 8 +
> drivers/gpu/drm/rockchip/Makefile | 1 +
> drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 430 +++++++++++++++++++++
> drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 +
> drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 4 +-
> 6 files changed, 632 insertions(+), 1 deletion(-)
> ---
> base-commit: 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
> change-id: 20240601-b4-rk3588-bridge-upstream-a27baff1b8fc
>
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller
2024-08-03 13:24 ` [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller Piotr Oniszczuk
@ 2024-08-05 16:20 ` Chris Morgan
2024-08-05 16:31 ` Piotr Oniszczuk
0 siblings, 1 reply; 13+ messages in thread
From: Chris Morgan @ 2024-08-05 16:20 UTC (permalink / raw)
To: Piotr Oniszczuk
Cc: Cristian Ciocaltea, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Sandy Huang, Heiko Stübner, Andy Yan,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Mark Yao,
Sascha Hauer, dri-devel, linux-kernel, linux-arm-kernel,
open list:ARM/Rockchip SoC..., devicetree, kernel,
Alexandre ARNOUD, Luis de Arquer, Algea Cao
On Sat, Aug 03, 2024 at 03:24:06PM +0200, Piotr Oniszczuk wrote:
> Hi Cristian,
>
> Will you find some time and motivation to add CEC support to Quad-Pixel (QP) TX controller ?
>
> Probably you recall - I added initial CEC support to yours v1 series and i’m stuck with timing issue (cec pulses are 3x too long).
> For me it looks like clock issue.
> I’m out of ideas how to move forward with this timming issue….
I wonder if using the cec-gpio on "GPIO4 RK_PC1" for the CEC gpio and
"GPIO1 RK_PA5" for the HPD gpio is a possibility? Just a thought.
Chris
>
>
>
> > Wiadomość napisana przez Cristian Ciocaltea <cristian.ciocaltea@collabora.com> w dniu 01.08.2024, o godz. 04:25:
> >
> > The Rockchip RK3588 SoC family integrates the Synopsys DesignWare HDMI
> > 2.1 Quad-Pixel (QP) TX controller [4], which is a new IP block, quite
> > different from those used in the previous generations of Rockchip SoCs.
> >
> > This is the last component that needs to be supported in order to enable
> > the HDMI output functionality on the RK3588 based SBCs, such as the
> > RADXA Rock 5B. The other components are the Video Output Processor
> > (VOP2) and the Samsung IP based HDMI/eDP TX Combo PHY, for which basic
> > support has been already made available via [1] and [2], respectively.
> >
> > Please note this is a reworked version of the original series, which
> > relied on a commonized dw-hdmi approach. Since the general consensus
> > was to handle it as an entirely new IP, I dropped all patches related to
> > the old dw-hdmi and Rockchip glue code - a few of them might still make
> > sense as general improvements and will be submitted separately.
> >
> > Additionally, as suggested by Neil, I've sent the reworked bridge driver
> > as a separate patchset [4], hence this series handles now just the new
> > Rockchip QP platform driver.
> >
> > It's worth mentioning the HDMI output support is currently limited to
> > RGB output up to 4K@60Hz, without audio, CEC or any of the HDMI 2.1
> > specific features. Moreover, the VOP2 driver is not able to properly
> > handle all display modes supported by the connected screens, e.g. it
> > doesn't cope with non-integer refresh rates.
> >
> > A possible workaround consists of enabling the display controller to
> > make use of the clock provided by the HDMI PHY PLL. This is still work
> > in progress and will be submitted later, as well as the required DTS
> > updates.
> >
> > To facilitate testing and experimentation, all HDMI output related
> > patches, including those part of this series, as well as the bridge
> > driver, are available at [3].
> >
> > So far I could only verify this on the RADXA Rock 5B board.
> >
> > Thanks,
> > Cristian
> >
> > [1]: 5a028e8f062f ("drm/rockchip: vop2: Add support for rk3588")
> > [2]: 553be2830c5f ("phy: rockchip: Add Samsung HDMI/eDP Combo PHY driver")
> > [3]: https://gitlab.collabora.com/hardware-enablement/rockchip-3588/linux/-/commits/rk3588-hdmi-bridge-v6.11-rc1
> > [4]: https://lore.kernel.org/lkml/20240801-dw-hdmi-qp-tx-v1-0-148f542de5fd@collabora.com/
> >
> > Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
> > ---
> > Changes in v2:
> > - Reworked the glue code for RK3588 into a new Rockchip platform driver
> > - Moved bridge driver patches to a separate series [4]
> > - Dropped all the patches touching to the old dw-hdmi and RK platform
> > drivers
> > - Added connector creation to ensure the HDMI QP bridge driver does only
> > support DRM_BRIDGE_ATTACH_NO_CONNECTOR
> > - Link to v1: https://lore.kernel.org/r/20240601-b4-rk3588-bridge-upstream-v1-0-f6203753232b@collabora.com
> >
> > ---
> > Cristian Ciocaltea (3):
> > dt-bindings: display: rockchip: Add schema for RK3588 HDMI TX Controller
> > drm/rockchip: Explicitly include bits header
> > drm/rockchip: Add basic RK3588 HDMI output support
> >
> > .../display/rockchip/rockchip,dw-hdmi-qp.yaml | 188 +++++++++
> > drivers/gpu/drm/rockchip/Kconfig | 8 +
> > drivers/gpu/drm/rockchip/Makefile | 1 +
> > drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 430 +++++++++++++++++++++
> > drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 +
> > drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 4 +-
> > 6 files changed, 632 insertions(+), 1 deletion(-)
> > ---
> > base-commit: 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
> > change-id: 20240601-b4-rk3588-bridge-upstream-a27baff1b8fc
> >
> >
> > _______________________________________________
> > Linux-rockchip mailing list
> > Linux-rockchip@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-rockchip
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller
2024-08-05 16:20 ` Chris Morgan
@ 2024-08-05 16:31 ` Piotr Oniszczuk
0 siblings, 0 replies; 13+ messages in thread
From: Piotr Oniszczuk @ 2024-08-05 16:31 UTC (permalink / raw)
To: Chris Morgan
Cc: Cristian Ciocaltea, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Sandy Huang, Heiko Stuebner, Andy Yan, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Mark Yao, Sascha Hauer,
dri-devel, linux-kernel, linux-arm-kernel,
open list:ARM/Rockchip SoC..., devicetree, kernel,
Alexandre ARNOUD, Luis de Arquer, Algea Cao
> Wiadomość napisana przez Chris Morgan <macroalpha82@gmail.com> w dniu 05.08.2024, o godz. 18:20:
>
> On Sat, Aug 03, 2024 at 03:24:06PM +0200, Piotr Oniszczuk wrote:
>> Hi Cristian,
>>
>> Will you find some time and motivation to add CEC support to Quad-Pixel (QP) TX controller ?
>>
>> Probably you recall - I added initial CEC support to yours v1 series and i’m stuck with timing issue (cec pulses are 3x too long).
>> For me it looks like clock issue.
>> I’m out of ideas how to move forward with this timming issue….
>
> I wonder if using the cec-gpio on "GPIO4 RK_PC1" for the CEC gpio and
> "GPIO1 RK_PA5" for the HPD gpio is a possibility? Just a thought.
>
> Chris
Chris,
Oscilloscope shows pulses on cec line - issue is that cec pulses observed on oscilloscope have timings 2,9 times longer that should be (start bit is 10,7mS instead of 3.6; zero is 4.4 instead 1.5 while one is 1,7 instead of 0.6).
Pulses durations seems to be „proportional" (start; zero; one) - all are almost exact 2.9x too long.
For me this sounds like wrong clock issue.
I can try switch to gpio outs - but I think better is to first make sure that cec clock is set ok.
Im not sure what is best way to do such cec clock check...
>
>>
>>
>>
>>> Wiadomość napisana przez Cristian Ciocaltea <cristian.ciocaltea@collabora.com> w dniu 01.08.2024, o godz. 04:25:
>>>
>>> The Rockchip RK3588 SoC family integrates the Synopsys DesignWare HDMI
>>> 2.1 Quad-Pixel (QP) TX controller [4], which is a new IP block, quite
>>> different from those used in the previous generations of Rockchip SoCs.
>>>
>>> This is the last component that needs to be supported in order to enable
>>> the HDMI output functionality on the RK3588 based SBCs, such as the
>>> RADXA Rock 5B. The other components are the Video Output Processor
>>> (VOP2) and the Samsung IP based HDMI/eDP TX Combo PHY, for which basic
>>> support has been already made available via [1] and [2], respectively.
>>>
>>> Please note this is a reworked version of the original series, which
>>> relied on a commonized dw-hdmi approach. Since the general consensus
>>> was to handle it as an entirely new IP, I dropped all patches related to
>>> the old dw-hdmi and Rockchip glue code - a few of them might still make
>>> sense as general improvements and will be submitted separately.
>>>
>>> Additionally, as suggested by Neil, I've sent the reworked bridge driver
>>> as a separate patchset [4], hence this series handles now just the new
>>> Rockchip QP platform driver.
>>>
>>> It's worth mentioning the HDMI output support is currently limited to
>>> RGB output up to 4K@60Hz, without audio, CEC or any of the HDMI 2.1
>>> specific features. Moreover, the VOP2 driver is not able to properly
>>> handle all display modes supported by the connected screens, e.g. it
>>> doesn't cope with non-integer refresh rates.
>>>
>>> A possible workaround consists of enabling the display controller to
>>> make use of the clock provided by the HDMI PHY PLL. This is still work
>>> in progress and will be submitted later, as well as the required DTS
>>> updates.
>>>
>>> To facilitate testing and experimentation, all HDMI output related
>>> patches, including those part of this series, as well as the bridge
>>> driver, are available at [3].
>>>
>>> So far I could only verify this on the RADXA Rock 5B board.
>>>
>>> Thanks,
>>> Cristian
>>>
>>> [1]: 5a028e8f062f ("drm/rockchip: vop2: Add support for rk3588")
>>> [2]: 553be2830c5f ("phy: rockchip: Add Samsung HDMI/eDP Combo PHY driver")
>>> [3]: https://gitlab.collabora.com/hardware-enablement/rockchip-3588/linux/-/commits/rk3588-hdmi-bridge-v6.11-rc1
>>> [4]: https://lore.kernel.org/lkml/20240801-dw-hdmi-qp-tx-v1-0-148f542de5fd@collabora.com/
>>>
>>> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
>>> ---
>>> Changes in v2:
>>> - Reworked the glue code for RK3588 into a new Rockchip platform driver
>>> - Moved bridge driver patches to a separate series [4]
>>> - Dropped all the patches touching to the old dw-hdmi and RK platform
>>> drivers
>>> - Added connector creation to ensure the HDMI QP bridge driver does only
>>> support DRM_BRIDGE_ATTACH_NO_CONNECTOR
>>> - Link to v1: https://lore.kernel.org/r/20240601-b4-rk3588-bridge-upstream-v1-0-f6203753232b@collabora.com
>>>
>>> ---
>>> Cristian Ciocaltea (3):
>>> dt-bindings: display: rockchip: Add schema for RK3588 HDMI TX Controller
>>> drm/rockchip: Explicitly include bits header
>>> drm/rockchip: Add basic RK3588 HDMI output support
>>>
>>> .../display/rockchip/rockchip,dw-hdmi-qp.yaml | 188 +++++++++
>>> drivers/gpu/drm/rockchip/Kconfig | 8 +
>>> drivers/gpu/drm/rockchip/Makefile | 1 +
>>> drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 430 +++++++++++++++++++++
>>> drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 +
>>> drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 4 +-
>>> 6 files changed, 632 insertions(+), 1 deletion(-)
>>> ---
>>> base-commit: 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
>>> change-id: 20240601-b4-rk3588-bridge-upstream-a27baff1b8fc
>>>
>>>
>>> _______________________________________________
>>> Linux-rockchip mailing list
>>> Linux-rockchip@lists.infradead.org
>>> http://lists.infradead.org/mailman/listinfo/linux-rockchip
>>
>>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/3] drm/rockchip: Add basic RK3588 HDMI output support
2024-08-01 2:25 ` [PATCH v2 3/3] drm/rockchip: Add basic RK3588 HDMI output support Cristian Ciocaltea
@ 2024-08-09 20:48 ` kernel test robot
2024-08-09 21:09 ` kernel test robot
1 sibling, 0 replies; 13+ messages in thread
From: kernel test robot @ 2024-08-09 20:48 UTC (permalink / raw)
To: Cristian Ciocaltea, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Sandy Huang, Heiko Stübner, Andy Yan,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Mark Yao,
Sascha Hauer
Cc: oe-kbuild-all, dri-devel, linux-kernel, linux-arm-kernel,
linux-rockchip, devicetree, kernel, Alexandre ARNOUD,
Luis de Arquer, Algea Cao
Hi Cristian,
kernel test robot noticed the following build errors:
[auto build test ERROR on 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0]
url: https://github.com/intel-lab-lkp/linux/commits/Cristian-Ciocaltea/dt-bindings-display-rockchip-Add-schema-for-RK3588-HDMI-TX-Controller/20240802-173018
base: 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
patch link: https://lore.kernel.org/r/20240801-b4-rk3588-bridge-upstream-v2-3-9fa657a4e15b%40collabora.com
patch subject: [PATCH v2 3/3] drm/rockchip: Add basic RK3588 HDMI output support
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20240810/202408100456.yY6K40pK-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 13.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240810/202408100456.yY6K40pK-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408100456.yY6K40pK-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c:18:10: fatal error: drm/bridge/dw_hdmi_qp.h: No such file or directory
18 | #include <drm/bridge/dw_hdmi_qp.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
vim +18 drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c
17
> 18 #include <drm/bridge/dw_hdmi_qp.h>
19 #include <drm/drm_bridge_connector.h>
20 #include <drm/drm_of.h>
21 #include <drm/drm_probe_helper.h>
22 #include <drm/drm_simple_kms_helper.h>
23
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/3] drm/rockchip: Add basic RK3588 HDMI output support
2024-08-01 2:25 ` [PATCH v2 3/3] drm/rockchip: Add basic RK3588 HDMI output support Cristian Ciocaltea
2024-08-09 20:48 ` kernel test robot
@ 2024-08-09 21:09 ` kernel test robot
1 sibling, 0 replies; 13+ messages in thread
From: kernel test robot @ 2024-08-09 21:09 UTC (permalink / raw)
To: Cristian Ciocaltea, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Sandy Huang, Heiko Stübner, Andy Yan,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Mark Yao,
Sascha Hauer
Cc: llvm, oe-kbuild-all, dri-devel, linux-kernel, linux-arm-kernel,
linux-rockchip, devicetree, kernel, Alexandre ARNOUD,
Luis de Arquer, Algea Cao
Hi Cristian,
kernel test robot noticed the following build errors:
[auto build test ERROR on 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0]
url: https://github.com/intel-lab-lkp/linux/commits/Cristian-Ciocaltea/dt-bindings-display-rockchip-Add-schema-for-RK3588-HDMI-TX-Controller/20240802-173018
base: 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
patch link: https://lore.kernel.org/r/20240801-b4-rk3588-bridge-upstream-v2-3-9fa657a4e15b%40collabora.com
patch subject: [PATCH v2 3/3] drm/rockchip: Add basic RK3588 HDMI output support
config: hexagon-allmodconfig (https://download.01.org/0day-ci/archive/20240810/202408100431.ujB0M1q7-lkp@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project f86594788ce93b696675c94f54016d27a6c21d18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240810/202408100431.ujB0M1q7-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202408100431.ujB0M1q7-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c:15:
In file included from include/linux/phy/phy.h:17:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:14:
In file included from arch/hexagon/include/asm/io.h:328:
include/asm-generic/io.h:548:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
548 | val = __raw_readb(PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:561:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
561 | val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
| ~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
37 | #define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
| ^
In file included from drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c:15:
In file included from include/linux/phy/phy.h:17:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:14:
In file included from arch/hexagon/include/asm/io.h:328:
include/asm-generic/io.h:574:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
574 | val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
| ~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
35 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
| ^
In file included from drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c:15:
In file included from include/linux/phy/phy.h:17:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:13:
In file included from include/linux/cgroup.h:26:
In file included from include/linux/kernel_stat.h:9:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:14:
In file included from arch/hexagon/include/asm/io.h:328:
include/asm-generic/io.h:585:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
585 | __raw_writeb(value, PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:595:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
595 | __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:605:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
605 | __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
In file included from drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c:15:
In file included from include/linux/phy/phy.h:17:
In file included from include/linux/regulator/consumer.h:35:
In file included from include/linux/suspend.h:5:
In file included from include/linux/swap.h:9:
In file included from include/linux/memcontrol.h:21:
In file included from include/linux/mm.h:2253:
include/linux/vmstat.h:514:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
514 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
>> drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c:18:10: fatal error: 'drm/bridge/dw_hdmi_qp.h' file not found
18 | #include <drm/bridge/dw_hdmi_qp.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~
7 warnings and 1 error generated.
vim +18 drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c
17
> 18 #include <drm/bridge/dw_hdmi_qp.h>
19 #include <drm/drm_bridge_connector.h>
20 #include <drm/drm_of.h>
21 #include <drm/drm_probe_helper.h>
22 #include <drm/drm_simple_kms_helper.h>
23
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2024-08-09 21:11 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-01 2:25 [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller Cristian Ciocaltea
2024-08-01 2:25 ` [PATCH v2 1/3] dt-bindings: display: rockchip: Add schema for " Cristian Ciocaltea
2024-08-01 3:37 ` Rob Herring (Arm)
2024-08-01 9:50 ` Cristian Ciocaltea
2024-08-01 14:44 ` Krzysztof Kozlowski
2024-08-01 2:25 ` [PATCH v2 2/3] drm/rockchip: Explicitly include bits header Cristian Ciocaltea
2024-08-01 14:45 ` Krzysztof Kozlowski
2024-08-01 2:25 ` [PATCH v2 3/3] drm/rockchip: Add basic RK3588 HDMI output support Cristian Ciocaltea
2024-08-09 20:48 ` kernel test robot
2024-08-09 21:09 ` kernel test robot
2024-08-03 13:24 ` [PATCH v2 0/3] Add initial support for the Rockchip RK3588 HDMI TX Controller Piotr Oniszczuk
2024-08-05 16:20 ` Chris Morgan
2024-08-05 16:31 ` Piotr Oniszczuk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).