On Fri 01 Oct 10:11 CDT 2021, Sean Paul wrote: > From: Sean Paul <seanpaul@xxxxxxxxxxxx> > > This patch adds the bindings for the MSM DisplayPort HDCP registers > which are required to write the HDCP key into the display controller as > well as the registers to enable HDCP authentication/key > exchange/encryption. > > We'll use a new compatible string for this since the fields are optional. > I don't think you need a new compatible, in particular since I presume we should use the hdcp compatible in all platforms? Or is there a reason for not picking that one? Instead I suggest that you simply do minItems: 1, maxItems: 3 and detect which of the two cases you have in the driver. PS. I hope to get https://lore.kernel.org/linux-arm-msm/20211001174400.981707-1-bjorn.andersson@xxxxxxxxxx/ landed before we add these new optional regions... Regards, Bjorn > Cc: Rob Herring <robh@xxxxxxxxxx> > Cc: Stephen Boyd <swboyd@xxxxxxxxxxxx> > Signed-off-by: Sean Paul <seanpaul@xxxxxxxxxxxx> > Link: https://patchwork.freedesktop.org/patch/msgid/20210913175747.47456-13-sean@xxxxxxxxxx #v1 > Link: https://patchwork.freedesktop.org/patch/msgid/20210915203834.1439-13-sean@xxxxxxxxxx #v2 > > Changes in v2: > -Drop register range names (Stephen) > -Fix yaml errors (Rob) > Changes in v3: > -Add new compatible string for dp-hdcp > -Add descriptions to reg > -Add minItems/maxItems to reg > -Make reg depend on the new hdcp compatible string > --- > > Disclaimer: I really don't know if this is the right way to approach > this. I tried using examples from other bindings, but feedback would be > very much welcome on how I could add the optional register ranges. > > > .../bindings/display/msm/dp-controller.yaml | 34 ++++++++++++++++--- > 1 file changed, 30 insertions(+), 4 deletions(-) > > diff --git a/Documentation/devicetree/bindings/display/msm/dp-controller.yaml b/Documentation/devicetree/bindings/display/msm/dp-controller.yaml > index 64d8d9e5e47a..a176f97b2f4c 100644 > --- a/Documentation/devicetree/bindings/display/msm/dp-controller.yaml > +++ b/Documentation/devicetree/bindings/display/msm/dp-controller.yaml > @@ -17,9 +17,10 @@ properties: > compatible: > enum: > - qcom,sc7180-dp > + - qcom,sc7180-dp-hdcp > > - reg: > - maxItems: 1 > + # See compatible-specific constraints below. > + reg: true > > interrupts: > maxItems: 1 > @@ -89,6 +90,29 @@ required: > - power-domains > - ports > > +allOf: > + - if: > + properties: > + compatible: > + contains: > + const: qcom,sc7180-dp-hdcp > + then: > + properties: > + reg: > + minItems: 3 > + maxItems: 3 > + items: > + - description: Registers for base DP functionality > + - description: (Optional) Registers for HDCP device key injection > + - description: (Optional) Registers for HDCP TrustZone interaction > + else: > + properties: > + reg: > + minItems: 1 > + maxItems: 1 > + items: > + - description: Registers for base DP functionality > + > additionalProperties: false > > examples: > @@ -99,8 +123,10 @@ examples: > #include <dt-bindings/power/qcom-rpmpd.h> > > displayport-controller@ae90000 { > - compatible = "qcom,sc7180-dp"; > - reg = <0xae90000 0x1400>; > + compatible = "qcom,sc7180-dp-hdcp"; > + reg = <0 0x0ae90000 0 0x1400>, > + <0 0x0aed1000 0 0x174>, > + <0 0x0aee1000 0 0x2c>; > interrupt-parent = <&mdss>; > interrupts = <12>; > clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, > -- > Sean Paul, Software Engineer, Google / Chromium OS >