Message ID | 20220919-v4-1-687f09a06dd9@baylibre.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp1569436vqr; Mon, 29 May 2023 07:51:30 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5PqSWkUH32P7hI3NBgXczrMgEXzH8OSd+GE53Mml8Svb0e8hwwwWMPHtvsqgIfGb9lqO3l X-Received: by 2002:a05:6a00:1253:b0:644:8172:3ea9 with SMTP id u19-20020a056a00125300b0064481723ea9mr14029996pfi.15.1685371890266; Mon, 29 May 2023 07:51:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685371890; cv=none; d=google.com; s=arc-20160816; b=TrqB1NAdlTGp7O4+RhEqsTv0yJZkImSMgN7ZBfBYf/XJb/t+X+MWiilHVuUBdJjMHd oXUecyvWx8ww3RrcxXqZR/e4gzY8/UaWqAuvWum3y7Pr9BSQYmAiPBWIS7Z4EG/rYvLe IWMDv6dCNHmvqpsT0D7etirfABNXhIk2Qu82EmH+/4QeC5w8WmhJ8RuKXdh3OQsQkh0K OGJAGxlAUxvQlDBtyb1uxS32/Zo4VzQhcR03sDyq47gYSLNDFibVBxwocsWnKugjGYf2 LhTZAdwa1G5qnCE5YJy1KdB0j6osR2RBnbf6O83AvZBT+w/k1b6KgqxRkTvX5TRlII6s GLjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=Imn+CVwrZJtyv1pmcN9LMeOD3o4qWPh5+WMlc2rK8js=; b=ptJXuH8uxljR+uLWjcq1WU3xw/CFrIpB2+9Nu5v4v0HicjnhrrhIUqU1vjfYFqFWbs 0e+BrjhEgtzeOhBM0mC0NAshI1kYZhY4//zkidkPLmbG6R5PhruvX17hbyFOR7Djr+Fc d7o/hq+xIiGj6w7Ql9NAPfDOHNe8x4fOI+Z3UKNum2MKRcd2tNCAcQVDq9p0VE9XgKGp N0LNO57gj5cPoRWwatH1nfji9XK7qkAZg4UZyFBwxl0xcpLEdd7iso8AiQkrvlAVnE4M /q4lMZ/1HgTjVhN35cR331E6Ncso5Tm3lHqT0GUO2l1k90MMgOEMhspxOVF8HBcOYXOg 3/Vw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20221208.gappssmtp.com header.s=20221208 header.b=mfkgAqW6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z28-20020aa7991c000000b0063f1cb928bdsi32128pff.313.2023.05.29.07.51.18; Mon, 29 May 2023 07:51:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20221208.gappssmtp.com header.s=20221208 header.b=mfkgAqW6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229893AbjE2Ogr (ORCPT <rfc822;zhuangel570@gmail.com> + 99 others); Mon, 29 May 2023 10:36:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38362 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229845AbjE2Ogm (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 29 May 2023 10:36:42 -0400 Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 10896B5 for <linux-kernel@vger.kernel.org>; Mon, 29 May 2023 07:36:40 -0700 (PDT) Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-51458187be1so5892204a12.2 for <linux-kernel@vger.kernel.org>; Mon, 29 May 2023 07:36:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20221208.gappssmtp.com; s=20221208; t=1685370998; x=1687962998; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Imn+CVwrZJtyv1pmcN9LMeOD3o4qWPh5+WMlc2rK8js=; b=mfkgAqW6EihS8kP8YQKChzyGM1xJlZeIAmp6lE5FzcBG6BVtF4TNGRCr0oLmJPVQT4 e7eGblhBxM/QbJCa5pIIAdjeIgfoFzqAdlelFZRT8/IAKoxdhEGRJbag4oS1VZv4YFOJ axLQ/Fo1l2hj6PhA3FZgOcPvt8jO3sprWPDhjsWI+gddAy9QzGj8i3ycSskytWN5x90k VxuIPpf1kaYnDaNwqMQYg7PMp9dtVoqTOqRUoRd7YVH2OK+g9QuoT2u3QG7cV9w4Vb7J KihElyPFF6u0TVaH5mXpSJLVZ3cOc3xqJpY7K8W4mLt5dP3oNbB/hievVGGY1l2aDMVp OzXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685370998; x=1687962998; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Imn+CVwrZJtyv1pmcN9LMeOD3o4qWPh5+WMlc2rK8js=; b=R0rcXPS+5Kc9HWjPNpzOJZBPWXnKm+iE5ZwkOKkqazkiXD5KLpjwZd2gSXAfwYwrVM fe9upKD6XaGbUK548+nQoynRazaRAnJCgOMMI7iiVMXwrxnMw3ES7/XQmjTuqLMEEox8 +yRR85Mjzfrzhi+SxI3MTuO6OHTGcCjEdw6vMTfuY9R6IeiSlg4ZdtXB740N6UTe4GhL f+Boy4mjocRecDLHcvMbdMnloKTZh32JpGMnFY/vda/r0CI9r+eqh2hl/7p/YXQL3bFj euKNqZzo778/NWAMH5N/cAX83yhrYNaeMr7P3MD6/MJiM+T5KDFej70q39BPT9nGRby2 ahGQ== X-Gm-Message-State: AC+VfDwhBSXiItRUYxthmD/4nsVWXKQfC4p98dxylNv3xLkBVPQaOG2/ 8h3o+KNh4/AuIB3yVxU7F8mTlQ== X-Received: by 2002:a17:907:1c0d:b0:96b:4ed5:a1d8 with SMTP id nc13-20020a1709071c0d00b0096b4ed5a1d8mr12615395ejc.36.1685370998453; Mon, 29 May 2023 07:36:38 -0700 (PDT) Received: from [127.0.0.1] (abordeaux-655-1-129-86.w90-5.abo.wanadoo.fr. [90.5.10.86]) by smtp.gmail.com with ESMTPSA id le8-20020a170907170800b0096f803afbe3sm5993654ejc.66.2023.05.29.07.36.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 May 2023 07:36:37 -0700 (PDT) From: Guillaume Ranquet <granquet@baylibre.com> Date: Mon, 29 May 2023 16:30:58 +0200 Subject: [PATCH v4 1/8] dt-bindings: display: mediatek: add MT8195 hdmi bindings MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20220919-v4-1-687f09a06dd9@baylibre.com> References: <20220919-v4-0-687f09a06dd9@baylibre.com> In-Reply-To: <20220919-v4-0-687f09a06dd9@baylibre.com> To: Chunfeng Yun <chunfeng.yun@mediatek.com>, Kishon Vijay Abraham I <kishon@ti.com>, Vinod Koul <vkoul@kernel.org>, Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Matthias Brugger <matthias.bgg@gmail.com>, Chun-Kuang Hu <chunkuang.hu@kernel.org>, Philipp Zabel <p.zabel@pengutronix.de>, David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>, CK Hu <ck.hu@mediatek.com>, Jitao shi <jitao.shi@mediatek.com> Cc: linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>, AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>, mac.shen@mediatek.com, stuart.lee@mediatek.com, Guillaume Ranquet <granquet@baylibre.com> X-Mailer: b4 0.13-dev X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767240515329198200?= X-GMAIL-MSGID: =?utf-8?q?1767240515329198200?= |
Series |
Add MT8195 HDMI support
|
|
Commit Message
Guillaume Ranquet
May 29, 2023, 2:30 p.m. UTC
Add mt8195 SoC bindings for hdmi and hdmi-ddc
On mt8195 the ddc i2c controller is part of the hdmi IP block and thus has no
specific register range, power domain or interrupt, making it simpler
than the legacy "mediatek,hdmi-ddc" binding.
Signed-off-by: Guillaume Ranquet <granquet@baylibre.com>
---
.../bindings/display/mediatek/mediatek,hdmi.yaml | 59 ++++++++++++++++++----
.../display/mediatek/mediatek,mt8195-hdmi-ddc.yaml | 45 +++++++++++++++++
2 files changed, 93 insertions(+), 11 deletions(-)
Comments
On 29/05/2023 16:30, Guillaume Ranquet wrote: > Add mt8195 SoC bindings for hdmi and hdmi-ddc > > On mt8195 the ddc i2c controller is part of the hdmi IP block and thus has no > specific register range, power domain or interrupt, making it simpler > than the legacy "mediatek,hdmi-ddc" binding. > > Signed-off-by: Guillaume Ranquet <granquet@baylibre.com> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Best regards, Krzysztof
On Mon, May 29, 2023 at 04:30:58PM +0200, Guillaume Ranquet wrote: > Add mt8195 SoC bindings for hdmi and hdmi-ddc > > On mt8195 the ddc i2c controller is part of the hdmi IP block and thus has no > specific register range, power domain or interrupt, making it simpler > than the legacy "mediatek,hdmi-ddc" binding. > > Signed-off-by: Guillaume Ranquet <granquet@baylibre.com> > --- > .../bindings/display/mediatek/mediatek,hdmi.yaml | 59 ++++++++++++++++++---- > .../display/mediatek/mediatek,mt8195-hdmi-ddc.yaml | 45 +++++++++++++++++ > 2 files changed, 93 insertions(+), 11 deletions(-) > > diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml b/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml > index b90b6d18a828..4f62e6b94048 100644 > --- a/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml > +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml > @@ -21,6 +21,7 @@ properties: > - mediatek,mt7623-hdmi > - mediatek,mt8167-hdmi > - mediatek,mt8173-hdmi > + - mediatek,mt8195-hdmi > > reg: > maxItems: 1 > @@ -29,18 +30,10 @@ properties: > maxItems: 1 > > clocks: > - items: > - - description: Pixel Clock > - - description: HDMI PLL > - - description: Bit Clock > - - description: S/PDIF Clock > + maxItems: 4 > > clock-names: > - items: > - - const: pixel > - - const: pll > - - const: bclk > - - const: spdif > + maxItems: 4 > > phys: > maxItems: 1 > @@ -58,6 +51,9 @@ properties: > description: | > phandle link and register offset to the system configuration registers. > > + power-domains: > + maxItems: 1 > + > ports: > $ref: /schemas/graph.yaml#/properties/ports > > @@ -86,9 +82,50 @@ required: > - clock-names > - phys > - phy-names > - - mediatek,syscon-hdmi > - ports > > +allOf: > + - if: > + properties: > + compatible: > + contains: > + const: mediatek,mt8195-hdmi > + then: > + properties: > + clocks: > + items: > + - description: APB > + - description: HDCP > + - description: HDCP 24M > + - description: Split HDMI > + clock-names: > + items: > + - const: hdmi_apb_sel > + - const: hdcp_sel > + - const: hdcp24_sel > + - const: split_hdmi > + > + required: > + - power-domains > + else: > + properties: > + clocks: > + items: > + - description: Pixel Clock > + - description: HDMI PLL > + - description: Bit Clock > + - description: S/PDIF Clock > + > + clock-names: > + items: > + - const: pixel > + - const: pll > + - const: bclk > + - const: spdif I don't understand how the same h/w block can have completely different clocks. If not the same h/w or evolution of the same h/w, then do a separate schema. > + > + required: > + - mediatek,syscon-hdmi > + > additionalProperties: false > > examples: > diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml b/Documentation/devicetree/bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml > new file mode 100644 > index 000000000000..84c096835b47 > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml > @@ -0,0 +1,45 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Mediatek HDMI DDC for mt8195 > + > +maintainers: > + - CK Hu <ck.hu@mediatek.com> > + - Jitao shi <jitao.shi@mediatek.com> > + > +description: | > + The HDMI DDC i2c controller is used to interface with the HDMI DDC pins. > + > +properties: > + compatible: > + enum: > + - mediatek,mt8195-hdmi-ddc > + > + clocks: > + maxItems: 1 > + > + mediatek,hdmi: > + $ref: /schemas/types.yaml#/definitions/phandle > + description: > + A phandle to the mt8195 hdmi controller > + > +required: > + - compatible > + - clocks > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/interrupt-controller/irq.h> > + hdmiddc0: i2c { > + compatible = "mediatek,mt8195-hdmi-ddc"; > + mediatek,hdmi = <&hdmi0>; > + clocks = <&clk26m>; How does one access this h/w device? There is nothing described to access it. Rob
On Thu, 08 Jun 2023 23:05, Rob Herring <robh@kernel.org> wrote: >On Mon, May 29, 2023 at 04:30:58PM +0200, Guillaume Ranquet wrote: >> Add mt8195 SoC bindings for hdmi and hdmi-ddc >> >> On mt8195 the ddc i2c controller is part of the hdmi IP block and thus has no >> specific register range, power domain or interrupt, making it simpler >> than the legacy "mediatek,hdmi-ddc" binding. >> >> Signed-off-by: Guillaume Ranquet <granquet@baylibre.com> >> --- >> .../bindings/display/mediatek/mediatek,hdmi.yaml | 59 ++++++++++++++++++---- >> .../display/mediatek/mediatek,mt8195-hdmi-ddc.yaml | 45 +++++++++++++++++ >> 2 files changed, 93 insertions(+), 11 deletions(-) >> >> diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml b/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml >> index b90b6d18a828..4f62e6b94048 100644 >> --- a/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml >> +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml >> @@ -21,6 +21,7 @@ properties: >> - mediatek,mt7623-hdmi >> - mediatek,mt8167-hdmi >> - mediatek,mt8173-hdmi >> + - mediatek,mt8195-hdmi >> >> reg: >> maxItems: 1 >> @@ -29,18 +30,10 @@ properties: >> maxItems: 1 >> >> clocks: >> - items: >> - - description: Pixel Clock >> - - description: HDMI PLL >> - - description: Bit Clock >> - - description: S/PDIF Clock >> + maxItems: 4 >> >> clock-names: >> - items: >> - - const: pixel >> - - const: pll >> - - const: bclk >> - - const: spdif >> + maxItems: 4 >> >> phys: >> maxItems: 1 >> @@ -58,6 +51,9 @@ properties: >> description: | >> phandle link and register offset to the system configuration registers. >> >> + power-domains: >> + maxItems: 1 >> + >> ports: >> $ref: /schemas/graph.yaml#/properties/ports >> >> @@ -86,9 +82,50 @@ required: >> - clock-names >> - phys >> - phy-names >> - - mediatek,syscon-hdmi >> - ports >> >> +allOf: >> + - if: >> + properties: >> + compatible: >> + contains: >> + const: mediatek,mt8195-hdmi >> + then: >> + properties: >> + clocks: >> + items: >> + - description: APB >> + - description: HDCP >> + - description: HDCP 24M >> + - description: Split HDMI >> + clock-names: >> + items: >> + - const: hdmi_apb_sel >> + - const: hdcp_sel >> + - const: hdcp24_sel >> + - const: split_hdmi >> + >> + required: >> + - power-domains >> + else: >> + properties: >> + clocks: >> + items: >> + - description: Pixel Clock >> + - description: HDMI PLL >> + - description: Bit Clock >> + - description: S/PDIF Clock >> + >> + clock-names: >> + items: >> + - const: pixel >> + - const: pll >> + - const: bclk >> + - const: spdif > >I don't understand how the same h/w block can have completely different >clocks. If not the same h/w or evolution of the same h/w, then do a >separate schema. > Hi Rob, I'm not entirely sure what's the best approach here. The IPs are different enough to warrant a separate schema IMHO. Though CK asked me to merge both IPs together (for both schema and code). CK might want to chime in and advocate his point of view? >> + >> + required: >> + - mediatek,syscon-hdmi >> + >> additionalProperties: false >> >> examples: >> diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml b/Documentation/devicetree/bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml >> new file mode 100644 >> index 000000000000..84c096835b47 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml >> @@ -0,0 +1,45 @@ >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: Mediatek HDMI DDC for mt8195 >> + >> +maintainers: >> + - CK Hu <ck.hu@mediatek.com> >> + - Jitao shi <jitao.shi@mediatek.com> >> + >> +description: | >> + The HDMI DDC i2c controller is used to interface with the HDMI DDC pins. >> + >> +properties: >> + compatible: >> + enum: >> + - mediatek,mt8195-hdmi-ddc >> + >> + clocks: >> + maxItems: 1 >> + >> + mediatek,hdmi: >> + $ref: /schemas/types.yaml#/definitions/phandle >> + description: >> + A phandle to the mt8195 hdmi controller >> + >> +required: >> + - compatible >> + - clocks >> + >> +additionalProperties: false >> + >> +examples: >> + - | >> + #include <dt-bindings/interrupt-controller/arm-gic.h> >> + #include <dt-bindings/interrupt-controller/irq.h> >> + hdmiddc0: i2c { >> + compatible = "mediatek,mt8195-hdmi-ddc"; >> + mediatek,hdmi = <&hdmi0>; >> + clocks = <&clk26m>; > >How does one access this h/w device? There is nothing described to >access it. > The device is embedded into the HDMI block and thus uses the mediatek,hdmi phandle to access its sets of registers in the middle of the mediatek,hdmi register range. Hope this clarifies things, Guillaume. >Rob
Hi, Guillaume: Guillaume Ranquet <granquet@baylibre.com> 於 2023年6月9日 週五 下午11:50寫道: > > On Thu, 08 Jun 2023 23:05, Rob Herring <robh@kernel.org> wrote: > >On Mon, May 29, 2023 at 04:30:58PM +0200, Guillaume Ranquet wrote: > >> Add mt8195 SoC bindings for hdmi and hdmi-ddc > >> > >> On mt8195 the ddc i2c controller is part of the hdmi IP block and thus has no > >> specific register range, power domain or interrupt, making it simpler > >> than the legacy "mediatek,hdmi-ddc" binding. > >> > >> Signed-off-by: Guillaume Ranquet <granquet@baylibre.com> > >> --- > >> .../bindings/display/mediatek/mediatek,hdmi.yaml | 59 ++++++++++++++++++---- > >> .../display/mediatek/mediatek,mt8195-hdmi-ddc.yaml | 45 +++++++++++++++++ > >> 2 files changed, 93 insertions(+), 11 deletions(-) > >> > >> diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml b/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml > >> index b90b6d18a828..4f62e6b94048 100644 > >> --- a/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml > >> +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml > >> @@ -21,6 +21,7 @@ properties: > >> - mediatek,mt7623-hdmi > >> - mediatek,mt8167-hdmi > >> - mediatek,mt8173-hdmi > >> + - mediatek,mt8195-hdmi > >> > >> reg: > >> maxItems: 1 > >> @@ -29,18 +30,10 @@ properties: > >> maxItems: 1 > >> > >> clocks: > >> - items: > >> - - description: Pixel Clock > >> - - description: HDMI PLL > >> - - description: Bit Clock > >> - - description: S/PDIF Clock > >> + maxItems: 4 > >> > >> clock-names: > >> - items: > >> - - const: pixel > >> - - const: pll > >> - - const: bclk > >> - - const: spdif > >> + maxItems: 4 > >> > >> phys: > >> maxItems: 1 > >> @@ -58,6 +51,9 @@ properties: > >> description: | > >> phandle link and register offset to the system configuration registers. > >> > >> + power-domains: > >> + maxItems: 1 > >> + > >> ports: > >> $ref: /schemas/graph.yaml#/properties/ports > >> > >> @@ -86,9 +82,50 @@ required: > >> - clock-names > >> - phys > >> - phy-names > >> - - mediatek,syscon-hdmi > >> - ports > >> > >> +allOf: > >> + - if: > >> + properties: > >> + compatible: > >> + contains: > >> + const: mediatek,mt8195-hdmi > >> + then: > >> + properties: > >> + clocks: > >> + items: > >> + - description: APB > >> + - description: HDCP > >> + - description: HDCP 24M > >> + - description: Split HDMI > >> + clock-names: > >> + items: > >> + - const: hdmi_apb_sel > >> + - const: hdcp_sel > >> + - const: hdcp24_sel > >> + - const: split_hdmi > >> + > >> + required: > >> + - power-domains > >> + else: > >> + properties: > >> + clocks: > >> + items: > >> + - description: Pixel Clock > >> + - description: HDMI PLL > >> + - description: Bit Clock > >> + - description: S/PDIF Clock > >> + > >> + clock-names: > >> + items: > >> + - const: pixel > >> + - const: pll > >> + - const: bclk > >> + - const: spdif > > > >I don't understand how the same h/w block can have completely different > >clocks. If not the same h/w or evolution of the same h/w, then do a > >separate schema. > > > > Hi Rob, > > I'm not entirely sure what's the best approach here. > The IPs are different enough to warrant a separate schema IMHO. > Though CK asked me to merge both IPs together (for both schema and code). > > CK might want to chime in and advocate his point of view? For all the mediatek hdmi device, input mediatek internal video signal, and output hdmi signal, so I'm curious about how mt8195-hdmi device is different with other mediatek hdmi device. I think pixel clock is an important clock which is related to resolution and fps. So I think every hdmi device should have a clock which related to pixel clock. I does not find it in mt8195 device. Is one of the clock the parent clock of pixel clock or one of the clock is pixel clock but you give it another naming? Please conduct with mediatek stuff and give us these information, so we have information to judge mt8195-hdmi is different with other mediatek hdmi device or similar to. For other three clocks, I still need these information. Regards, Chun-Kuang. > > >> + > >> + required: > >> + - mediatek,syscon-hdmi > >> + > >> additionalProperties: false > >> > >> examples: > >> diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml b/Documentation/devicetree/bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml > >> new file mode 100644 > >> index 000000000000..84c096835b47 > >> --- /dev/null > >> +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml > >> @@ -0,0 +1,45 @@ > >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > >> +%YAML 1.2 > >> +--- > >> +$id: http://devicetree.org/schemas/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml# > >> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >> + > >> +title: Mediatek HDMI DDC for mt8195 > >> + > >> +maintainers: > >> + - CK Hu <ck.hu@mediatek.com> > >> + - Jitao shi <jitao.shi@mediatek.com> > >> + > >> +description: | > >> + The HDMI DDC i2c controller is used to interface with the HDMI DDC pins. > >> + > >> +properties: > >> + compatible: > >> + enum: > >> + - mediatek,mt8195-hdmi-ddc > >> + > >> + clocks: > >> + maxItems: 1 > >> + > >> + mediatek,hdmi: > >> + $ref: /schemas/types.yaml#/definitions/phandle > >> + description: > >> + A phandle to the mt8195 hdmi controller > >> + > >> +required: > >> + - compatible > >> + - clocks > >> + > >> +additionalProperties: false > >> + > >> +examples: > >> + - | > >> + #include <dt-bindings/interrupt-controller/arm-gic.h> > >> + #include <dt-bindings/interrupt-controller/irq.h> > >> + hdmiddc0: i2c { > >> + compatible = "mediatek,mt8195-hdmi-ddc"; > >> + mediatek,hdmi = <&hdmi0>; > >> + clocks = <&clk26m>; > > > >How does one access this h/w device? There is nothing described to > >access it. > > > > The device is embedded into the HDMI block and thus uses the > mediatek,hdmi phandle to access its sets of registers in the middle of > the mediatek,hdmi register range. > > Hope this clarifies things, > Guillaume. > > >Rob
diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml b/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml index b90b6d18a828..4f62e6b94048 100644 --- a/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.yaml @@ -21,6 +21,7 @@ properties: - mediatek,mt7623-hdmi - mediatek,mt8167-hdmi - mediatek,mt8173-hdmi + - mediatek,mt8195-hdmi reg: maxItems: 1 @@ -29,18 +30,10 @@ properties: maxItems: 1 clocks: - items: - - description: Pixel Clock - - description: HDMI PLL - - description: Bit Clock - - description: S/PDIF Clock + maxItems: 4 clock-names: - items: - - const: pixel - - const: pll - - const: bclk - - const: spdif + maxItems: 4 phys: maxItems: 1 @@ -58,6 +51,9 @@ properties: description: | phandle link and register offset to the system configuration registers. + power-domains: + maxItems: 1 + ports: $ref: /schemas/graph.yaml#/properties/ports @@ -86,9 +82,50 @@ required: - clock-names - phys - phy-names - - mediatek,syscon-hdmi - ports +allOf: + - if: + properties: + compatible: + contains: + const: mediatek,mt8195-hdmi + then: + properties: + clocks: + items: + - description: APB + - description: HDCP + - description: HDCP 24M + - description: Split HDMI + clock-names: + items: + - const: hdmi_apb_sel + - const: hdcp_sel + - const: hdcp24_sel + - const: split_hdmi + + required: + - power-domains + else: + properties: + clocks: + items: + - description: Pixel Clock + - description: HDMI PLL + - description: Bit Clock + - description: S/PDIF Clock + + clock-names: + items: + - const: pixel + - const: pll + - const: bclk + - const: spdif + + required: + - mediatek,syscon-hdmi + additionalProperties: false examples: diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml b/Documentation/devicetree/bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml new file mode 100644 index 000000000000..84c096835b47 --- /dev/null +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml @@ -0,0 +1,45 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Mediatek HDMI DDC for mt8195 + +maintainers: + - CK Hu <ck.hu@mediatek.com> + - Jitao shi <jitao.shi@mediatek.com> + +description: | + The HDMI DDC i2c controller is used to interface with the HDMI DDC pins. + +properties: + compatible: + enum: + - mediatek,mt8195-hdmi-ddc + + clocks: + maxItems: 1 + + mediatek,hdmi: + $ref: /schemas/types.yaml#/definitions/phandle + description: + A phandle to the mt8195 hdmi controller + +required: + - compatible + - clocks + +additionalProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/interrupt-controller/irq.h> + hdmiddc0: i2c { + compatible = "mediatek,mt8195-hdmi-ddc"; + mediatek,hdmi = <&hdmi0>; + clocks = <&clk26m>; + }; + +...