Re: [PATCH v8 01/10] dt-bindings: display: rockchip: analogix-dp: Fix hclk as third clock for RK3588
From: Damon Ding <hidden>
Date: 2026-05-26 11:28:05
Also in:
dri-devel, linux-devicetree, linux-rockchip, lkml
Hi Conor, On 5/26/2026 8:54 AM, Damon Ding wrote:
Hi Conor, On 5/26/2026 12:54 AM, Conor Dooley wrote:quoted
On Mon, May 25, 2026 at 08:53:22PM +0800, Damon Ding wrote:quoted
RK3588 eDP controller requires HCLK_VO1 to access the VO1 GRF registers and enable the video datapath. Previously, the clock was enabled implicitly via the 'rockchip,vo-grf' phandle reference, which allowed the eDP to work without explicitly managing the hclk_vo1 clock. However, this is not safe or explicit. To make the clock dependency explicit, enforce per-SoC clock-names requirements: - RK3288: 2 clocks (dp, pclk) - RK3399: 3 clocks (dp, pclk, grf) - RK3588: 3 clocks (dp, pclk, hclk) Do not reuse the 'grf' clock name for RK3588 because it represents a different clock with distinct control logic: - The 'grf' clock is only for GRF register access and is toggled dynamically during register access. - The 'hclk' clock controls both GRF access and video datapath gating, and must remain enabled during probe. Fixes: f855146263b1 ("dt-bindings: display: rockchip: analogix-dp: Add support for RK3588") Signed-off-by: Damon Ding <redacted> --- Changes in v4: - Modify the commit msg. Changes in v5: - Enforce the correct third clock name on a per-compatible basis. - Modify the commit msg simultaneously. Changes in v6: - Expand more detail commit msg about using hclk instead of grf clock. Changes in v7: - List all valid clock names at the top level, and constrain the clock count for each platform with minItems/maxItems in allOf. Changes in v8: - Fix indentation to 10 for enum in clock-names property. --- .../rockchip/rockchip,analogix-dp.yaml | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-)diff --git a/Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-dp.yaml b/Documentation/devicetree/bindings/ display/rockchip/rockchip,analogix-dp.yaml index d99b23b88cc5..a1ab7a77bdd3 100644--- a/Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-dp.yaml+++ b/Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-dp.yaml@@ -26,7 +26,9 @@ properties:items: - const: dp - const: pclk - - const: grf + - enum: + - grf + - hclk power-domains: maxItems: 1@@ -60,6 +62,32 @@ required:allOf: - $ref: /schemas/display/bridge/analogix,dp.yaml# + - if: + properties: + compatible: + contains: + enum: + - rockchip,rk3288-dp + then: + properties: + clocks: + maxItems: 2 + clock-names: + maxItems: 2 + + - if: + properties: + compatible: + contains: + enum: + - rockchip,rk3399-edp + then: + properties: + clocks: + minItems: 3 + clock-names: + minItems: 3If you go back to v6, you'll see that I never asked you to remove the explict clock-names from here or below. Only the one from the 3288 section. The minItems was an addition, not a replacement. pw-bot: changes-requestedSorry for the misunderstanding. I will restore the explicit clock-names definitions and fix this in next version.
Sorry to bother you. I attempted to place the explicit clock-names under minItems:
diff --git a/Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-dp.yaml b/Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-dp.yaml index a1ab7a77bdd3..ef03edf52de8 100644 --- a/Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-dp.yaml +++ b/Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-dp.yaml
@@ -87,6 +87,10 @@ allOf: minItems: 3 clock-names: minItems: 3 + items: + - const: dp + - const: pclk + - const: grf - if: properties:
@@ -100,6 +104,10 @@ allOf: minItems: 3 clock-names: minItems: 3 + items: + - const: dp + - const: pclk + - const: hclk resets: minItems: 2 reset-names:
make dt_binding_check
DT_SCHEMA_FILES=Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-dp.yaml
Then the following errors occurred:
SCHEMA Documentation/devicetree/bindings/processed-schema.json
CHKDT ./Documentation/devicetree/bindings
/home/ding/drm-misc/Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-dp.yaml:
allOf:2:then:properties:clock-names: 'oneOf' conditional failed, one
must be fixed:
False schema does not allow 3
[{'const': 'dp'}, {'const': 'pclk'}, {'const': 'grf'}] is too long
[{'const': 'dp'}, {'const': 'pclk'}, {'const': 'grf'}] is too short
1 was expected
3 is greater than the maximum of 2
hint: "minItems" is only needed if less than the "items" list
length
from schema $id: http://devicetree.org/meta-schemas/items.yaml
/home/ding/drm-misc/Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-dp.yaml:
allOf:3:then:properties:clock-names: 'oneOf' conditional failed, one
must be fixed:
False schema does not allow 3
[{'const': 'dp'}, {'const': 'pclk'}, {'const': 'hclk'}] is too long
[{'const': 'dp'}, {'const': 'pclk'}, {'const': 'hclk'}] is too
short
1 was expected
3 is greater than the maximum of 2
hint: "minItems" is only needed if less than the "items" list
length
from schema $id: http://devicetree.org/meta-schemas/items.yaml
LINT ./Documentation/devicetree/bindings
DTEX
Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-dp.example.dts
DTC [C]
Documentation/devicetree/bindings/display/rockchip/rockchip,analogix-dp.example.dtb
Neither keeping only minItems nor only the explicit clock-names causes
any errors. Would it be a better idea to keep just the explicit
clock-names here?
Best regards,
Damon
quoted
quoted
+ - if: properties: compatible:@@ -68,6 +96,10 @@ allOf:- rockchip,rk3588-edp then: properties: + clocks: + minItems: 3 + clock-names: + minItems: 3 resets: minItems: 2 reset-names: -- 2.34.1