diff mbox series

[stblinux.git,1/2] dt-bindings: firmware: add Broadcom's NVRAM memory mapping

Message ID 20210302074405.18998-1-zajec5@gmail.com
State New
Headers show
Series [stblinux.git,1/2] dt-bindings: firmware: add Broadcom's NVRAM memory mapping | expand

Commit Message

Rafał Miłecki March 2, 2021, 7:44 a.m. UTC
From: Rafał Miłecki <rafal@milecki.pl>

NVRAM structure contains device data and can be accessed using MMIO.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 .../bindings/firmware/brcm,nvram.yaml         | 41 +++++++++++++++++++
 1 file changed, 41 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/firmware/brcm,nvram.yaml

Comments

Rob Herring (Arm) March 8, 2021, 6:43 p.m. UTC | #1
On Tue, Mar 02, 2021 at 08:44:04AM +0100, Rafał Miłecki wrote:
> From: Rafał Miłecki <rafal@milecki.pl>

> 

> NVRAM structure contains device data and can be accessed using MMIO.

> 

> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>

> ---

>  .../bindings/firmware/brcm,nvram.yaml         | 41 +++++++++++++++++++

>  1 file changed, 41 insertions(+)

>  create mode 100644 Documentation/devicetree/bindings/firmware/brcm,nvram.yaml

> 

> diff --git a/Documentation/devicetree/bindings/firmware/brcm,nvram.yaml b/Documentation/devicetree/bindings/firmware/brcm,nvram.yaml

> new file mode 100644

> index 000000000000..12af8e2e7c9c

> --- /dev/null

> +++ b/Documentation/devicetree/bindings/firmware/brcm,nvram.yaml

> @@ -0,0 +1,41 @@

> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)

> +%YAML 1.2

> +---

> +$id: "http://devicetree.org/schemas/firmware/brcm,nvram.yaml#"

> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"

> +

> +title: Broadcom's NVRAM

> +

> +maintainers:

> +  - Rafał Miłecki <rafal@milecki.pl>

> +

> +description: |

> +  NVRAM is a structure containing device specific environment variables.

> +  It is used for storing device configuration, booting parameters and

> +  calibration data.


The structure of the data is fully discoverable just from a genericish 
'brcm,nvram'?

And it's a dedicated memory outside of regular RAM?

> +

> +  It's required very early in booting process and so is made available

> +  using memory mapping.

> +

> +  NVRAM can be found on Broadcom BCM47xx MIPS, Northstar ARM Cortex-A9

> +  and some more devices.

> +

> +properties:

> +  compatible:

> +    const: brcm,nvram

> +

> +  reg:

> +    description: memory region with NVRAM data

> +    maxItems: 1

> +

> +required:

> +  - reg

> +

> +additionalProperties: false

> +

> +examples:

> +  - |

> +    nvram@1e000000 {

> +         compatible = "brcm,nvram";

> +         reg = <0x1e000000 0x10000>;

> +    };

> -- 

> 2.26.2

>
Rafał Miłecki March 8, 2021, 9:37 p.m. UTC | #2
On 08.03.2021 19:43, Rob Herring wrote:
> On Tue, Mar 02, 2021 at 08:44:04AM +0100, Rafał Miłecki wrote:

>> From: Rafał Miłecki <rafal@milecki.pl>

>>

>> NVRAM structure contains device data and can be accessed using MMIO.

>>

>> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>

>> ---

>>   .../bindings/firmware/brcm,nvram.yaml         | 41 +++++++++++++++++++

>>   1 file changed, 41 insertions(+)

>>   create mode 100644 Documentation/devicetree/bindings/firmware/brcm,nvram.yaml

>>

>> diff --git a/Documentation/devicetree/bindings/firmware/brcm,nvram.yaml b/Documentation/devicetree/bindings/firmware/brcm,nvram.yaml

>> new file mode 100644

>> index 000000000000..12af8e2e7c9c

>> --- /dev/null

>> +++ b/Documentation/devicetree/bindings/firmware/brcm,nvram.yaml

>> @@ -0,0 +1,41 @@

>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)

>> +%YAML 1.2

>> +---

>> +$id: "http://devicetree.org/schemas/firmware/brcm,nvram.yaml#"

>> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"

>> +

>> +title: Broadcom's NVRAM

>> +

>> +maintainers:

>> +  - Rafał Miłecki <rafal@milecki.pl>

>> +

>> +description: |

>> +  NVRAM is a structure containing device specific environment variables.

>> +  It is used for storing device configuration, booting parameters and

>> +  calibration data.

> 

> The structure of the data is fully discoverable just from a genericish

> 'brcm,nvram'?


Yes, NVRAM structure is a header (with magic and length) and a list of
key-value pairs separated by \0. If you map memory at given address you
should verify magic and start reading key-value pairs.

Content example: foo=bar\0baz=qux\0quux(...)

There is no predefined order of pairs, set of keys or anything similar I
could think of. I can't think of anything more worth describing in DT.


> And it's a dedicated memory outside of regular RAM?


Yes
Rafał Miłecki March 8, 2021, 9:41 p.m. UTC | #3
On 08.03.2021 22:37, Rafał Miłecki wrote:
> On 08.03.2021 19:43, Rob Herring wrote:

>> On Tue, Mar 02, 2021 at 08:44:04AM +0100, Rafał Miłecki wrote:

>>> From: Rafał Miłecki <rafal@milecki.pl>

>>>

>>> NVRAM structure contains device data and can be accessed using MMIO.

>>>

>>> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>

>>> ---

>>>   .../bindings/firmware/brcm,nvram.yaml         | 41 +++++++++++++++++++

>>>   1 file changed, 41 insertions(+)

>>>   create mode 100644 Documentation/devicetree/bindings/firmware/brcm,nvram.yaml

>>>

>>> diff --git a/Documentation/devicetree/bindings/firmware/brcm,nvram.yaml b/Documentation/devicetree/bindings/firmware/brcm,nvram.yaml

>>> new file mode 100644

>>> index 000000000000..12af8e2e7c9c

>>> --- /dev/null

>>> +++ b/Documentation/devicetree/bindings/firmware/brcm,nvram.yaml

>>> @@ -0,0 +1,41 @@

>>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)

>>> +%YAML 1.2

>>> +---

>>> +$id: "http://devicetree.org/schemas/firmware/brcm,nvram.yaml#"

>>> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"

>>> +

>>> +title: Broadcom's NVRAM

>>> +

>>> +maintainers:

>>> +  - Rafał Miłecki <rafal@milecki.pl>

>>> +

>>> +description: |

>>> +  NVRAM is a structure containing device specific environment variables.

>>> +  It is used for storing device configuration, booting parameters and

>>> +  calibration data.

>>

>> The structure of the data is fully discoverable just from a genericish

>> 'brcm,nvram'?

> 

> Yes, NVRAM structure is a header (with magic and length) and a list of

> key-value pairs separated by \0. If you map memory at given address you

> should verify magic and start reading key-value pairs.

> 

> Content example: foo=bar\0baz=qux\0quux(...)

> 

> There is no predefined order of pairs, set of keys or anything similar I

> could think of. I can't think of anything more worth describing in DT.


Ah, I've just realized, I'm replying to the "firmware" binding patch.

Florian suggested to look at NVMEM subsystem instead. Please kindly check
[PATCH V2 1/2] dt-bindings: nvmem: add Broadcom's NVRAM
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/firmware/brcm,nvram.yaml b/Documentation/devicetree/bindings/firmware/brcm,nvram.yaml
new file mode 100644
index 000000000000..12af8e2e7c9c
--- /dev/null
+++ b/Documentation/devicetree/bindings/firmware/brcm,nvram.yaml
@@ -0,0 +1,41 @@ 
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/firmware/brcm,nvram.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Broadcom's NVRAM
+
+maintainers:
+  - Rafał Miłecki <rafal@milecki.pl>
+
+description: |
+  NVRAM is a structure containing device specific environment variables.
+  It is used for storing device configuration, booting parameters and
+  calibration data.
+
+  It's required very early in booting process and so is made available
+  using memory mapping.
+
+  NVRAM can be found on Broadcom BCM47xx MIPS, Northstar ARM Cortex-A9
+  and some more devices.
+
+properties:
+  compatible:
+    const: brcm,nvram
+
+  reg:
+    description: memory region with NVRAM data
+    maxItems: 1
+
+required:
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    nvram@1e000000 {
+         compatible = "brcm,nvram";
+         reg = <0x1e000000 0x10000>;
+    };