diff mbox series

[v4,01/10] dt-bindings: memory: tegra: add bpmp ref in tegra234-mc node

Message ID 20230327161426.32639-2-sumitg@nvidia.com
State Changes Requested, archived
Headers show
Series Tegra234 Memory interconnect support | expand

Checks

Context Check Description
robh/checkpatch success
robh/patch-applied success
robh/dtbs-check warning build log
robh/dt-meta-schema success

Commit Message

Sumit Gupta March 27, 2023, 4:14 p.m. UTC
For Tegra234, add the "nvidia,bpmp" property within the Memory
Controller (MC) node to reference BPMP node. This is needed in
the MC driver to pass the client info to the BPMP-FW when memory
interconnect support is available.

Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
---
 .../bindings/memory-controllers/nvidia,tegra186-mc.yaml    | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Krzysztof Kozlowski March 28, 2023, 7:23 a.m. UTC | #1
On 27/03/2023 18:14, Sumit Gupta wrote:
> For Tegra234, add the "nvidia,bpmp" property within the Memory
> Controller (MC) node to reference BPMP node. This is needed in
> the MC driver to pass the client info to the BPMP-FW when memory
> interconnect support is available.
> 
> Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
> ---
>  .../bindings/memory-controllers/nvidia,tegra186-mc.yaml    | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> index 935d63d181d9..398d27bb2373 100644
> --- a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> @@ -58,6 +58,10 @@ properties:
>    "#interconnect-cells":
>      const: 1
>  
> +  nvidia,bpmp:
> +    $ref: /schemas/types.yaml#/definitions/phandle
> +    description: phandle of the node representing the BPMP

Why do you need this multiple times? Both in parent and all external-mc
children?

> +
>  patternProperties:
>    "^external-memory-controller@[0-9a-f]+$":
>      description:
> @@ -220,6 +224,9 @@ allOf:
>              - const: ch14
>              - const: ch15
>  
> +        nvidia,bpmp:
> +          description: phandle of the node representing the BPMP

I don't understand for what this hunk is. It does not look like in
correct place at all.

Best regards,
Krzysztof
Thierry Reding March 28, 2023, 10:42 a.m. UTC | #2
On Mon, Mar 27, 2023 at 09:44:17PM +0530, Sumit Gupta wrote:
> For Tegra234, add the "nvidia,bpmp" property within the Memory
> Controller (MC) node to reference BPMP node. This is needed in
> the MC driver to pass the client info to the BPMP-FW when memory
> interconnect support is available.
> 
> Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
> ---
>  .../bindings/memory-controllers/nvidia,tegra186-mc.yaml    | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> index 935d63d181d9..398d27bb2373 100644
> --- a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> @@ -58,6 +58,10 @@ properties:
>    "#interconnect-cells":
>      const: 1
>  
> +  nvidia,bpmp:
> +    $ref: /schemas/types.yaml#/definitions/phandle
> +    description: phandle of the node representing the BPMP
> +
>  patternProperties:
>    "^external-memory-controller@[0-9a-f]+$":
>      description:
> @@ -220,6 +224,9 @@ allOf:
>              - const: ch14
>              - const: ch15
>  
> +        nvidia,bpmp:
> +          description: phandle of the node representing the BPMP
> +

Why do we need this one? There's already an nvidia,bpmp phandle defined
in the patternProperties section for external memory controllers.

Thierry
Thierry Reding March 28, 2023, 10:48 a.m. UTC | #3
On Tue, Mar 28, 2023 at 09:23:04AM +0200, Krzysztof Kozlowski wrote:
> On 27/03/2023 18:14, Sumit Gupta wrote:
> > For Tegra234, add the "nvidia,bpmp" property within the Memory
> > Controller (MC) node to reference BPMP node. This is needed in
> > the MC driver to pass the client info to the BPMP-FW when memory
> > interconnect support is available.
> > 
> > Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
> > ---
> >  .../bindings/memory-controllers/nvidia,tegra186-mc.yaml    | 7 +++++++
> >  1 file changed, 7 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> > index 935d63d181d9..398d27bb2373 100644
> > --- a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> > +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> > @@ -58,6 +58,10 @@ properties:
> >    "#interconnect-cells":
> >      const: 1
> >  
> > +  nvidia,bpmp:
> > +    $ref: /schemas/types.yaml#/definitions/phandle
> > +    description: phandle of the node representing the BPMP
> 
> Why do you need this multiple times? Both in parent and all external-mc
> children?

We've had nvidia,bpmp in the external memory controller node since
basically the beginning because we've always needed it there. For newer
chips we now also need it for the memory controller.

Ideally I think we would only have this in the MC and have the EMC
driver reference it via the EMC's parent (i.e. MC), but that would break
backwards-compatibility. Reaching into the EMC's DT node from the MC was
another option that we discussed internally, but it didn't look right
given how this is also needed by the MC.

One thing we could potentially do is deprecate the nvidia,bpmp phandle
in the EMC and only keep it as a fallback in the drivers in case the
parent MC doesn't find it's own in the DT.

Thierry
Krzysztof Kozlowski March 28, 2023, 11:22 a.m. UTC | #4
On 28/03/2023 12:48, Thierry Reding wrote:
> On Tue, Mar 28, 2023 at 09:23:04AM +0200, Krzysztof Kozlowski wrote:
>> On 27/03/2023 18:14, Sumit Gupta wrote:
>>> For Tegra234, add the "nvidia,bpmp" property within the Memory
>>> Controller (MC) node to reference BPMP node. This is needed in
>>> the MC driver to pass the client info to the BPMP-FW when memory
>>> interconnect support is available.
>>>
>>> Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
>>> ---
>>>  .../bindings/memory-controllers/nvidia,tegra186-mc.yaml    | 7 +++++++
>>>  1 file changed, 7 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
>>> index 935d63d181d9..398d27bb2373 100644
>>> --- a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
>>> +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
>>> @@ -58,6 +58,10 @@ properties:
>>>    "#interconnect-cells":
>>>      const: 1
>>>  
>>> +  nvidia,bpmp:
>>> +    $ref: /schemas/types.yaml#/definitions/phandle
>>> +    description: phandle of the node representing the BPMP
>>
>> Why do you need this multiple times? Both in parent and all external-mc
>> children?
> 
> We've had nvidia,bpmp in the external memory controller node since
> basically the beginning because we've always needed it there. For newer
> chips we now also need it for the memory controller.
> 
> Ideally I think we would only have this in the MC and have the EMC
> driver reference it via the EMC's parent (i.e. MC), but that would break
> backwards-compatibility. Reaching into the EMC's DT node from the MC was
> another option that we discussed internally, but it didn't look right
> given how this is also needed by the MC.
> 
> One thing we could potentially do is deprecate the nvidia,bpmp phandle
> in the EMC and only keep it as a fallback in the drivers in case the
> parent MC doesn't find it's own in the DT.

Yes, deprecation would answer to my question.

Best regards,
Krzysztof
Thierry Reding March 28, 2023, 12:48 p.m. UTC | #5
On Tue, Mar 28, 2023 at 01:22:26PM +0200, Krzysztof Kozlowski wrote:
> On 28/03/2023 12:48, Thierry Reding wrote:
> > On Tue, Mar 28, 2023 at 09:23:04AM +0200, Krzysztof Kozlowski wrote:
> >> On 27/03/2023 18:14, Sumit Gupta wrote:
> >>> For Tegra234, add the "nvidia,bpmp" property within the Memory
> >>> Controller (MC) node to reference BPMP node. This is needed in
> >>> the MC driver to pass the client info to the BPMP-FW when memory
> >>> interconnect support is available.
> >>>
> >>> Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
> >>> ---
> >>>  .../bindings/memory-controllers/nvidia,tegra186-mc.yaml    | 7 +++++++
> >>>  1 file changed, 7 insertions(+)
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> >>> index 935d63d181d9..398d27bb2373 100644
> >>> --- a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> >>> +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> >>> @@ -58,6 +58,10 @@ properties:
> >>>    "#interconnect-cells":
> >>>      const: 1
> >>>  
> >>> +  nvidia,bpmp:
> >>> +    $ref: /schemas/types.yaml#/definitions/phandle
> >>> +    description: phandle of the node representing the BPMP
> >>
> >> Why do you need this multiple times? Both in parent and all external-mc
> >> children?
> > 
> > We've had nvidia,bpmp in the external memory controller node since
> > basically the beginning because we've always needed it there. For newer
> > chips we now also need it for the memory controller.
> > 
> > Ideally I think we would only have this in the MC and have the EMC
> > driver reference it via the EMC's parent (i.e. MC), but that would break
> > backwards-compatibility. Reaching into the EMC's DT node from the MC was
> > another option that we discussed internally, but it didn't look right
> > given how this is also needed by the MC.
> > 
> > One thing we could potentially do is deprecate the nvidia,bpmp phandle
> > in the EMC and only keep it as a fallback in the drivers in case the
> > parent MC doesn't find it's own in the DT.
> 
> Yes, deprecation would answer to my question.

Okay, great. Sumit, you can resolve this by adding a "deprecated: true"
to the EMC's nvidia,bpmp property schema. In the driver we can then try
to look at the MC's ->bpmp and if it exists reuse that. If it doesn't
exist, we can keep the existing lookup as a fallback for device trees
that haven't been updated yet.
Sumit Gupta March 29, 2023, 5:12 p.m. UTC | #6
On 28/03/23 18:18, Thierry Reding wrote:
> On Tue, Mar 28, 2023 at 01:22:26PM +0200, Krzysztof Kozlowski wrote:
>> On 28/03/2023 12:48, Thierry Reding wrote:
>>> On Tue, Mar 28, 2023 at 09:23:04AM +0200, Krzysztof Kozlowski wrote:
>>>> On 27/03/2023 18:14, Sumit Gupta wrote:
>>>>> For Tegra234, add the "nvidia,bpmp" property within the Memory
>>>>> Controller (MC) node to reference BPMP node. This is needed in
>>>>> the MC driver to pass the client info to the BPMP-FW when memory
>>>>> interconnect support is available.
>>>>>
>>>>> Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
>>>>> ---
>>>>>   .../bindings/memory-controllers/nvidia,tegra186-mc.yaml    | 7 +++++++
>>>>>   1 file changed, 7 insertions(+)
>>>>>
>>>>> diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
>>>>> index 935d63d181d9..398d27bb2373 100644
>>>>> --- a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
>>>>> +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
>>>>> @@ -58,6 +58,10 @@ properties:
>>>>>     "#interconnect-cells":
>>>>>       const: 1
>>>>>   
>>>>> +  nvidia,bpmp:
>>>>> +    $ref: /schemas/types.yaml#/definitions/phandle
>>>>> +    description: phandle of the node representing the BPMP
>>>>
>>>> Why do you need this multiple times? Both in parent and all external-mc
>>>> children?
>>>
>>> We've had nvidia,bpmp in the external memory controller node since
>>> basically the beginning because we've always needed it there. For newer
>>> chips we now also need it for the memory controller.
>>>
>>> Ideally I think we would only have this in the MC and have the EMC
>>> driver reference it via the EMC's parent (i.e. MC), but that would break
>>> backwards-compatibility. Reaching into the EMC's DT node from the MC was
>>> another option that we discussed internally, but it didn't look right
>>> given how this is also needed by the MC.
>>>
>>> One thing we could potentially do is deprecate the nvidia,bpmp phandle
>>> in the EMC and only keep it as a fallback in the drivers in case the
>>> parent MC doesn't find it's own in the DT.
>>
>> Yes, deprecation would answer to my question.
> 
> Okay, great. Sumit, you can resolve this by adding a "deprecated: true"
> to the EMC's nvidia,bpmp property schema. In the driver we can then try
> to look at the MC's ->bpmp and if it exists reuse that. If it doesn't
> exist, we can keep the existing lookup as a fallback for device trees
> that haven't been updated yet.

We can't use MC's->bpmp in the EMC driver's probe as it will be NULL. 
This is because MC driver uses "arch_initcall" and gets probed earlier 
than BPMP. We can do this in another way as below change. This way we 
can use the existing "nvidia,bpmp" property from EMC node and don't need 
to move it to the MC node. Please share if this change sounds OK.

  +++ b/drivers/memory/tegra/tegra186-emc.c
  @@ static int tegra186_emc_probe(struct platform_device *pdev)
	
  -          if (tegra_bpmp_mrq_is_supported(emc->bpmp, MRQ_BWMGR_INT))
  +          if (tegra_bpmp_mrq_is_supported(emc->bpmp, MRQ_BWMGR_INT)) {
                     mc->bwmgr_mrq_supported = true;
  +                  mc->bpmp = emc->bpmp;
  +          }
     }

     return 0;

   put_bpmp:
  -  tegra_bpmp_put(emc->bpmp);
  +  if (IS_ERR_OR_NULL(mc->bpmp))
  +          tegra_bpmp_put(emc->bpmp);
     return err;
   }

   static int tegra186_emc_remove(struct platform_device *pdev)
   {
     struct tegra186_emc *emc = platform_get_drvdata(pdev);
  +  struct tegra_mc *mc = dev_get_drvdata(emc->dev->parent);

     debugfs_remove_recursive(emc->debugfs.root);
  -  tegra_bpmp_put(emc->bpmp);
  +  if (IS_ERR_OR_NULL(mc->bpmp))
  +          tegra_bpmp_put(emc->bpmp);

     return 0;
   }
Krzysztof Kozlowski April 2, 2023, 10:47 a.m. UTC | #7
On 29/03/2023 19:12, Sumit Gupta wrote:
> 
> 
> On 28/03/23 18:18, Thierry Reding wrote:
>> On Tue, Mar 28, 2023 at 01:22:26PM +0200, Krzysztof Kozlowski wrote:
>>> On 28/03/2023 12:48, Thierry Reding wrote:
>>>> On Tue, Mar 28, 2023 at 09:23:04AM +0200, Krzysztof Kozlowski wrote:
>>>>> On 27/03/2023 18:14, Sumit Gupta wrote:
>>>>>> For Tegra234, add the "nvidia,bpmp" property within the Memory
>>>>>> Controller (MC) node to reference BPMP node. This is needed in
>>>>>> the MC driver to pass the client info to the BPMP-FW when memory
>>>>>> interconnect support is available.
>>>>>>
>>>>>> Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
>>>>>> ---
>>>>>>   .../bindings/memory-controllers/nvidia,tegra186-mc.yaml    | 7 +++++++
>>>>>>   1 file changed, 7 insertions(+)
>>>>>>
>>>>>> diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
>>>>>> index 935d63d181d9..398d27bb2373 100644
>>>>>> --- a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
>>>>>> +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
>>>>>> @@ -58,6 +58,10 @@ properties:
>>>>>>     "#interconnect-cells":
>>>>>>       const: 1
>>>>>>   
>>>>>> +  nvidia,bpmp:
>>>>>> +    $ref: /schemas/types.yaml#/definitions/phandle
>>>>>> +    description: phandle of the node representing the BPMP
>>>>>
>>>>> Why do you need this multiple times? Both in parent and all external-mc
>>>>> children?
>>>>
>>>> We've had nvidia,bpmp in the external memory controller node since
>>>> basically the beginning because we've always needed it there. For newer
>>>> chips we now also need it for the memory controller.
>>>>
>>>> Ideally I think we would only have this in the MC and have the EMC
>>>> driver reference it via the EMC's parent (i.e. MC), but that would break
>>>> backwards-compatibility. Reaching into the EMC's DT node from the MC was
>>>> another option that we discussed internally, but it didn't look right
>>>> given how this is also needed by the MC.
>>>>
>>>> One thing we could potentially do is deprecate the nvidia,bpmp phandle
>>>> in the EMC and only keep it as a fallback in the drivers in case the
>>>> parent MC doesn't find it's own in the DT.
>>>
>>> Yes, deprecation would answer to my question.
>>
>> Okay, great. Sumit, you can resolve this by adding a "deprecated: true"
>> to the EMC's nvidia,bpmp property schema. In the driver we can then try
>> to look at the MC's ->bpmp and if it exists reuse that. If it doesn't
>> exist, we can keep the existing lookup as a fallback for device trees
>> that haven't been updated yet.
> 
> We can't use MC's->bpmp in the EMC driver's probe as it will be NULL. 
> This is because MC driver uses "arch_initcall" and gets probed earlier 
> than BPMP. We can do this in another way as below change. This way we 
> can use the existing "nvidia,bpmp" property from EMC node and don't need 
> to move it to the MC node. Please share if this change sounds OK.

Then rather it sounds like time to fix these
orderings/arch_initcall/missing defer.


Best regards,
Krzysztof
Thierry Reding April 4, 2023, 11:44 a.m. UTC | #8
On Sun, Apr 02, 2023 at 12:47:01PM +0200, Krzysztof Kozlowski wrote:
> On 29/03/2023 19:12, Sumit Gupta wrote:
> > 
> > 
> > On 28/03/23 18:18, Thierry Reding wrote:
> >> On Tue, Mar 28, 2023 at 01:22:26PM +0200, Krzysztof Kozlowski wrote:
> >>> On 28/03/2023 12:48, Thierry Reding wrote:
> >>>> On Tue, Mar 28, 2023 at 09:23:04AM +0200, Krzysztof Kozlowski wrote:
> >>>>> On 27/03/2023 18:14, Sumit Gupta wrote:
> >>>>>> For Tegra234, add the "nvidia,bpmp" property within the Memory
> >>>>>> Controller (MC) node to reference BPMP node. This is needed in
> >>>>>> the MC driver to pass the client info to the BPMP-FW when memory
> >>>>>> interconnect support is available.
> >>>>>>
> >>>>>> Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
> >>>>>> ---
> >>>>>>   .../bindings/memory-controllers/nvidia,tegra186-mc.yaml    | 7 +++++++
> >>>>>>   1 file changed, 7 insertions(+)
> >>>>>>
> >>>>>> diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> >>>>>> index 935d63d181d9..398d27bb2373 100644
> >>>>>> --- a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> >>>>>> +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> >>>>>> @@ -58,6 +58,10 @@ properties:
> >>>>>>     "#interconnect-cells":
> >>>>>>       const: 1
> >>>>>>   
> >>>>>> +  nvidia,bpmp:
> >>>>>> +    $ref: /schemas/types.yaml#/definitions/phandle
> >>>>>> +    description: phandle of the node representing the BPMP
> >>>>>
> >>>>> Why do you need this multiple times? Both in parent and all external-mc
> >>>>> children?
> >>>>
> >>>> We've had nvidia,bpmp in the external memory controller node since
> >>>> basically the beginning because we've always needed it there. For newer
> >>>> chips we now also need it for the memory controller.
> >>>>
> >>>> Ideally I think we would only have this in the MC and have the EMC
> >>>> driver reference it via the EMC's parent (i.e. MC), but that would break
> >>>> backwards-compatibility. Reaching into the EMC's DT node from the MC was
> >>>> another option that we discussed internally, but it didn't look right
> >>>> given how this is also needed by the MC.
> >>>>
> >>>> One thing we could potentially do is deprecate the nvidia,bpmp phandle
> >>>> in the EMC and only keep it as a fallback in the drivers in case the
> >>>> parent MC doesn't find it's own in the DT.
> >>>
> >>> Yes, deprecation would answer to my question.
> >>
> >> Okay, great. Sumit, you can resolve this by adding a "deprecated: true"
> >> to the EMC's nvidia,bpmp property schema. In the driver we can then try
> >> to look at the MC's ->bpmp and if it exists reuse that. If it doesn't
> >> exist, we can keep the existing lookup as a fallback for device trees
> >> that haven't been updated yet.
> > 
> > We can't use MC's->bpmp in the EMC driver's probe as it will be NULL. 
> > This is because MC driver uses "arch_initcall" and gets probed earlier 
> > than BPMP. We can do this in another way as below change. This way we 
> > can use the existing "nvidia,bpmp" property from EMC node and don't need 
> > to move it to the MC node. Please share if this change sounds OK.
> 
> Then rather it sounds like time to fix these
> orderings/arch_initcall/missing defer.

We can't fix this because there's a circular dependency between MC and
BPMP. Essentially BPMP requires the IOMMU for mappings and the IOMMU
needs the MC to do some register programming in order for the mappings
to take effect.

The MC programming isn't required for BPMP, but it is required for other
devices that are hooked up to an IOMMU. The dependency from MC on BPMP
is also a different area of functionality, so we know that there's no
actual problem.

If there was something like a "transitive" dependency we might be able
to resolve this (i.e. if creating the IOMMU mapping itself would trigger
the probe deferral chain, rather than the driver binding). However, all
dependencies are modelled between devices, so not much we can do in this
case other than try to work around it.

Thierry
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
index 935d63d181d9..398d27bb2373 100644
--- a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
+++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
@@ -58,6 +58,10 @@  properties:
   "#interconnect-cells":
     const: 1
 
+  nvidia,bpmp:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: phandle of the node representing the BPMP
+
 patternProperties:
   "^external-memory-controller@[0-9a-f]+$":
     description:
@@ -220,6 +224,9 @@  allOf:
             - const: ch14
             - const: ch15
 
+        nvidia,bpmp:
+          description: phandle of the node representing the BPMP
+
 additionalProperties: false
 
 required: