xref: /linux/Documentation/devicetree/bindings/mtd/partitions/brcm,trx.yaml (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1*a1fa0f8cSRob Herring (Arm)# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*a1fa0f8cSRob Herring (Arm)%YAML 1.2
3*a1fa0f8cSRob Herring (Arm)---
4*a1fa0f8cSRob Herring (Arm)$id: http://devicetree.org/schemas/mtd/partitions/brcm,trx.yaml#
5*a1fa0f8cSRob Herring (Arm)$schema: http://devicetree.org/meta-schemas/core.yaml#
6*a1fa0f8cSRob Herring (Arm)
7*a1fa0f8cSRob Herring (Arm)title: Broadcom TRX Container Partition
8*a1fa0f8cSRob Herring (Arm)
9*a1fa0f8cSRob Herring (Arm)maintainers:
10*a1fa0f8cSRob Herring (Arm)  - Hauke Mehrtens <hauke@hauke-m.de>
11*a1fa0f8cSRob Herring (Arm)  - Rafał Miłecki <rafal@milecki.pl>
12*a1fa0f8cSRob Herring (Arm)
13*a1fa0f8cSRob Herring (Arm)description: >
14*a1fa0f8cSRob Herring (Arm)  TRX is Broadcom's official firmware format for the BCM947xx boards. It's used by
15*a1fa0f8cSRob Herring (Arm)  most of the vendors building devices based on Broadcom's BCM47xx SoCs and is
16*a1fa0f8cSRob Herring (Arm)  supported by the CFE bootloader.
17*a1fa0f8cSRob Herring (Arm)
18*a1fa0f8cSRob Herring (Arm)  Design of the TRX format is very minimalistic. Its header contains
19*a1fa0f8cSRob Herring (Arm)  identification fields, CRC32 checksum and the locations of embedded partitions.
20*a1fa0f8cSRob Herring (Arm)  Its purpose is to store a few partitions in a format that can be distributed as
21*a1fa0f8cSRob Herring (Arm)  a standalone file and written in a flash memory.
22*a1fa0f8cSRob Herring (Arm)
23*a1fa0f8cSRob Herring (Arm)  Container can hold up to 4 partitions. The first partition has to contain a
24*a1fa0f8cSRob Herring (Arm)  device executable binary (e.g. a kernel) as it's what the CFE bootloader starts
25*a1fa0f8cSRob Herring (Arm)  executing. Other partitions can be used for operating system purposes. This is
26*a1fa0f8cSRob Herring (Arm)  useful for systems that keep kernel and rootfs separated.
27*a1fa0f8cSRob Herring (Arm)
28*a1fa0f8cSRob Herring (Arm)  TRX doesn't enforce any strict partition boundaries or size limits. All
29*a1fa0f8cSRob Herring (Arm)  partitions have to be less than the 4GiB max size limit.
30*a1fa0f8cSRob Herring (Arm)
31*a1fa0f8cSRob Herring (Arm)  There are two existing/known TRX variants:
32*a1fa0f8cSRob Herring (Arm)    1) v1 which contains 3 partitions
33*a1fa0f8cSRob Herring (Arm)    2) v2 which contains 4 partitions
34*a1fa0f8cSRob Herring (Arm)
35*a1fa0f8cSRob Herring (Arm)  There aren't separated compatible bindings for them as version can be trivially
36*a1fa0f8cSRob Herring (Arm)  detected by a software parsing TRX header.
37*a1fa0f8cSRob Herring (Arm)
38*a1fa0f8cSRob Herring (Arm)properties:
39*a1fa0f8cSRob Herring (Arm)  compatible:
40*a1fa0f8cSRob Herring (Arm)    oneOf:
41*a1fa0f8cSRob Herring (Arm)      - items:
42*a1fa0f8cSRob Herring (Arm)          - const: linksys,ns-firmware
43*a1fa0f8cSRob Herring (Arm)          - const: brcm,trx
44*a1fa0f8cSRob Herring (Arm)      - const: brcm,trx
45*a1fa0f8cSRob Herring (Arm)
46*a1fa0f8cSRob Herring (Arm)  brcm,trx-magic:
47*a1fa0f8cSRob Herring (Arm)    description: TRX magic, if it is different from the default magic.
48*a1fa0f8cSRob Herring (Arm)    $ref: /schemas/types.yaml#/definitions/uint32
49*a1fa0f8cSRob Herring (Arm)    default: 0x30524448
50*a1fa0f8cSRob Herring (Arm)
51*a1fa0f8cSRob Herring (Arm)required:
52*a1fa0f8cSRob Herring (Arm)  - compatible
53*a1fa0f8cSRob Herring (Arm)
54*a1fa0f8cSRob Herring (Arm)allOf:
55*a1fa0f8cSRob Herring (Arm)  - $ref: partition.yaml#
56*a1fa0f8cSRob Herring (Arm)
57*a1fa0f8cSRob Herring (Arm)unevaluatedProperties: false
58*a1fa0f8cSRob Herring (Arm)
59*a1fa0f8cSRob Herring (Arm)examples:
60*a1fa0f8cSRob Herring (Arm)  - |
61*a1fa0f8cSRob Herring (Arm)    flash {
62*a1fa0f8cSRob Herring (Arm)        partitions {
63*a1fa0f8cSRob Herring (Arm)            compatible = "brcm,trx";
64*a1fa0f8cSRob Herring (Arm)        };
65*a1fa0f8cSRob Herring (Arm)    };
66