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