diff mbox series

[1/2] dt-bindings: mtd: document Broadcom's TRX firmware format binding

Message ID 20180612104434.15232-1-zajec5@gmail.com
State Changes Requested
Delegated to: Boris Brezillon
Headers show
Series [1/2] dt-bindings: mtd: document Broadcom's TRX firmware format binding | expand

Commit Message

Rafał Miłecki June 12, 2018, 10:44 a.m. UTC
From: Rafał Miłecki <rafal@milecki.pl>

Broadcom based home router devices use TRX firmware format. It's a
container that can hold few partitions. If operating system is expected
to access them it has to understand that format and parse flash data
accordingly.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 .../bindings/mtd/partitions/brcm,trx.txt           | 35 ++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt

Comments

Rob Herring (Arm) June 25, 2018, 9:21 p.m. UTC | #1
On Tue, Jun 12, 2018 at 12:44:33PM +0200, Rafał Miłecki wrote:
> From: Rafał Miłecki <rafal@milecki.pl>
> 
> Broadcom based home router devices use TRX firmware format. It's a
> container that can hold few partitions. If operating system is expected
> to access them it has to understand that format and parse flash data
> accordingly.
> 
> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
> ---
>  .../bindings/mtd/partitions/brcm,trx.txt           | 35 ++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
> 
> diff --git a/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt b/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
> new file mode 100644
> index 000000000000..e590b884e5ac
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
> @@ -0,0 +1,35 @@
> +Broadcom TRX Container Partition
> +================================
> +
> +TRX is Broadcom's official firmware format for the BCM947xx boards. It's used by
> +most of the vendors building devices based on Broadcom's BCM47xx SoCs and is
> +supported by the CFE bootloader.
> +
> +Design of the TRX format is very minimalistic. Its header contains
> +identification fields, CRC32 checksum and the locations of embedded partitions.
> +Its purpose is to store a few partitions in a format that can be distributed as
> +a standalone file and written in a flash memory.
> +
> +Container can hold up to 4 partitions. The first partition has to contain a
> +device executable binary (e.g. a kernel) as it's what the CFE bootloader starts
> +executing. Other partitions can be used for operating system purposes. This is
> +useful for systems that keep kernel and rootfs separated.
> +
> +TRX doesn't enforce any strict partition boundaries or size limits. All
> +partitions have to be less than the 4GiB max size limit.
> +
> +There are two existing/known TRX variants:
> +1) v1 which contains 3 partitions
> +2) v2 which contains 4 partitions
> +
> +Required properties:
> +- compatible : (required) must be either: "brcm,trx-v1" or "brcm,trx-v2"
> +	followed by "brcm,trx"

What is the purpose of brcm,trx? Either that alone is enough or you need 
v1/v2 to distinguish the difference. You shouldn't need both.

Rob
Rafał Miłecki June 25, 2018, 9:33 p.m. UTC | #2
On 2018-06-25 23:21, Rob Herring wrote:
> On Tue, Jun 12, 2018 at 12:44:33PM +0200, Rafał Miłecki wrote:
>> From: Rafał Miłecki <rafal@milecki.pl>
>> 
>> Broadcom based home router devices use TRX firmware format. It's a
>> container that can hold few partitions. If operating system is 
>> expected
>> to access them it has to understand that format and parse flash data
>> accordingly.
>> 
>> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
>> ---
>>  .../bindings/mtd/partitions/brcm,trx.txt           | 35 
>> ++++++++++++++++++++++
>>  1 file changed, 35 insertions(+)
>>  create mode 100644 
>> Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
>> 
>> diff --git 
>> a/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt 
>> b/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
>> new file mode 100644
>> index 000000000000..e590b884e5ac
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
>> @@ -0,0 +1,35 @@
>> +Broadcom TRX Container Partition
>> +================================
>> +
>> +TRX is Broadcom's official firmware format for the BCM947xx boards. 
>> It's used by
>> +most of the vendors building devices based on Broadcom's BCM47xx SoCs 
>> and is
>> +supported by the CFE bootloader.
>> +
>> +Design of the TRX format is very minimalistic. Its header contains
>> +identification fields, CRC32 checksum and the locations of embedded 
>> partitions.
>> +Its purpose is to store a few partitions in a format that can be 
>> distributed as
>> +a standalone file and written in a flash memory.
>> +
>> +Container can hold up to 4 partitions. The first partition has to 
>> contain a
>> +device executable binary (e.g. a kernel) as it's what the CFE 
>> bootloader starts
>> +executing. Other partitions can be used for operating system 
>> purposes. This is
>> +useful for systems that keep kernel and rootfs separated.
>> +
>> +TRX doesn't enforce any strict partition boundaries or size limits. 
>> All
>> +partitions have to be less than the 4GiB max size limit.
>> +
>> +There are two existing/known TRX variants:
>> +1) v1 which contains 3 partitions
>> +2) v2 which contains 4 partitions
>> +
>> +Required properties:
>> +- compatible : (required) must be either: "brcm,trx-v1" or 
>> "brcm,trx-v2"
>> +	followed by "brcm,trx"
> 
> What is the purpose of brcm,trx? Either that alone is enough or you 
> need
> v1/v2 to distinguish the difference. You shouldn't need both.

I guess I incorrectly tried some pattern I saw when specifying SoC
compatibility.

Can I have you advise here, please?

No TRX supporting code really needs a hint about used TRX version. TRX
format (header) contains "version" field so any code dealing with TRX
format can check that field. Then it knows what version it's dealing
with.

Which binding(s) should I use in that case?
Rob Herring (Arm) June 25, 2018, 9:51 p.m. UTC | #3
On Mon, Jun 25, 2018 at 3:41 PM Rafał Miłecki <rafal@milecki.pl> wrote:
>
> On 2018-06-25 23:21, Rob Herring wrote:
> > On Tue, Jun 12, 2018 at 12:44:33PM +0200, Rafał Miłecki wrote:
> >> From: Rafał Miłecki <rafal@milecki.pl>
> >>
> >> Broadcom based home router devices use TRX firmware format. It's a
> >> container that can hold few partitions. If operating system is
> >> expected
> >> to access them it has to understand that format and parse flash data
> >> accordingly.
> >>
> >> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
> >> ---
> >>  .../bindings/mtd/partitions/brcm,trx.txt           | 35
> >> ++++++++++++++++++++++
> >>  1 file changed, 35 insertions(+)
> >>  create mode 100644
> >> Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
> >>
> >> diff --git
> >> a/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
> >> b/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
> >> new file mode 100644
> >> index 000000000000..e590b884e5ac
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
> >> @@ -0,0 +1,35 @@
> >> +Broadcom TRX Container Partition
> >> +================================
> >> +
> >> +TRX is Broadcom's official firmware format for the BCM947xx boards.
> >> It's used by
> >> +most of the vendors building devices based on Broadcom's BCM47xx SoCs
> >> and is
> >> +supported by the CFE bootloader.
> >> +
> >> +Design of the TRX format is very minimalistic. Its header contains
> >> +identification fields, CRC32 checksum and the locations of embedded
> >> partitions.
> >> +Its purpose is to store a few partitions in a format that can be
> >> distributed as
> >> +a standalone file and written in a flash memory.
> >> +
> >> +Container can hold up to 4 partitions. The first partition has to
> >> contain a
> >> +device executable binary (e.g. a kernel) as it's what the CFE
> >> bootloader starts
> >> +executing. Other partitions can be used for operating system
> >> purposes. This is
> >> +useful for systems that keep kernel and rootfs separated.
> >> +
> >> +TRX doesn't enforce any strict partition boundaries or size limits.
> >> All
> >> +partitions have to be less than the 4GiB max size limit.
> >> +
> >> +There are two existing/known TRX variants:
> >> +1) v1 which contains 3 partitions
> >> +2) v2 which contains 4 partitions
> >> +
> >> +Required properties:
> >> +- compatible : (required) must be either: "brcm,trx-v1" or
> >> "brcm,trx-v2"
> >> +    followed by "brcm,trx"
> >
> > What is the purpose of brcm,trx? Either that alone is enough or you
> > need
> > v1/v2 to distinguish the difference. You shouldn't need both.
>
> I guess I incorrectly tried some pattern I saw when specifying SoC
> compatibility.
>
> Can I have you advise here, please?
>
> No TRX supporting code really needs a hint about used TRX version. TRX
> format (header) contains "version" field so any code dealing with TRX
> format can check that field. Then it knows what version it's dealing
> with.
>
> Which binding(s) should I use in that case?

I'd just use "brcm,trx" then.

Rob
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt b/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
new file mode 100644
index 000000000000..e590b884e5ac
--- /dev/null
+++ b/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.txt
@@ -0,0 +1,35 @@ 
+Broadcom TRX Container Partition
+================================
+
+TRX is Broadcom's official firmware format for the BCM947xx boards. It's used by
+most of the vendors building devices based on Broadcom's BCM47xx SoCs and is
+supported by the CFE bootloader.
+
+Design of the TRX format is very minimalistic. Its header contains
+identification fields, CRC32 checksum and the locations of embedded partitions.
+Its purpose is to store a few partitions in a format that can be distributed as
+a standalone file and written in a flash memory.
+
+Container can hold up to 4 partitions. The first partition has to contain a
+device executable binary (e.g. a kernel) as it's what the CFE bootloader starts
+executing. Other partitions can be used for operating system purposes. This is
+useful for systems that keep kernel and rootfs separated.
+
+TRX doesn't enforce any strict partition boundaries or size limits. All
+partitions have to be less than the 4GiB max size limit.
+
+There are two existing/known TRX variants:
+1) v1 which contains 3 partitions
+2) v2 which contains 4 partitions
+
+Required properties:
+- compatible : (required) must be either: "brcm,trx-v1" or "brcm,trx-v2"
+	followed by "brcm,trx"
+
+Example:
+
+flash@0 {
+	partitions {
+		compatible = "brcm,trx-v1", "brcm,trx";
+	};
+};