1*4882a593SmuzhiyunBroadcom BCM47xx Partitions 2*4882a593Smuzhiyun=========================== 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunBroadcom is one of hardware manufacturers providing SoCs (BCM47xx) used in 5*4882a593Smuzhiyunhome routers. Their BCM947xx boards using CFE bootloader have several partitions 6*4882a593Smuzhiyunwithout any on-flash partition table. On some devices their sizes and/or 7*4882a593Smuzhiyunmeanings can also vary so fixed partitioning can't be used. 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunDiscovering partitions on these devices is possible thanks to having a special 10*4882a593Smuzhiyunheader and/or magic signature at the beginning of each of them. They are also 11*4882a593Smuzhiyunblock aligned which is important for determinig a size. 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunMost of partitions use ASCII text based magic for determining a type. More 14*4882a593Smuzhiyuncomplex partitions (like TRX with its HDR0 magic) may include extra header 15*4882a593Smuzhiyuncontaining some details, including a length. 16*4882a593Smuzhiyun 17*4882a593SmuzhiyunA list of supported partitions includes: 18*4882a593Smuzhiyun1) Bootloader with Broadcom's CFE (Common Firmware Environment) 19*4882a593Smuzhiyun2) NVRAM with configuration/calibration data 20*4882a593Smuzhiyun3) Device manufacturer's data with some default values (e.g. SSIDs) 21*4882a593Smuzhiyun4) TRX firmware container which can hold up to 4 subpartitions 22*4882a593Smuzhiyun5) Backup TRX firmware used after failed upgrade 23*4882a593Smuzhiyun 24*4882a593SmuzhiyunAs mentioned earlier, role of some partitions may depend on extra configuration. 25*4882a593SmuzhiyunFor example both: main firmware and backup firmware use the same TRX format with 26*4882a593Smuzhiyunthe same header. To distinguish currently used firmware a CFE's environment 27*4882a593Smuzhiyunvariable "bootpartition" is used. 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun 30*4882a593SmuzhiyunDevices using Broadcom partitions described above should should have flash node 31*4882a593Smuzhiyunwith a subnode named "partitions" using following properties: 32*4882a593Smuzhiyun 33*4882a593SmuzhiyunRequired properties: 34*4882a593Smuzhiyun- compatible : (required) must be "brcm,bcm947xx-cfe-partitions" 35*4882a593Smuzhiyun 36*4882a593SmuzhiyunExample: 37*4882a593Smuzhiyun 38*4882a593Smuzhiyunflash@0 { 39*4882a593Smuzhiyun partitions { 40*4882a593Smuzhiyun compatible = "brcm,bcm947xx-cfe-partitions"; 41*4882a593Smuzhiyun }; 42*4882a593Smuzhiyun}; 43