On 01/05/2022 16:51, Mikhail Zhilkin wrote: > On 5/1/2022 11:17 AM, Krzysztof Kozlowski wrote: > >> On 30/04/2022 20:54, Mikhail Zhilkin wrote: >>> patternProperties: >>> "@[0-9a-f]+$": >>> - $ref: "partition.yaml#" >>> + allOf: >>> + - $ref: "partition.yaml#" >>> + - if: >>> + properties: >>> + compatible: >>> + contains: >>> + const: sercomm,sc-partitions >>> + then: >>> + properties: >>> + sercomm,scpart-id: >>> + description: Partition id in Sercomm partition map. Parser >>> + uses this id to get partition offset and size values from >>> + dynamic partition map. >> Partition offset and size values are not derived from scpart-id. I am >> sorry but after all these questions - it's the third time now - you >> never answer why do you need this property and what is it used for. From >> all the examples it could be simply removed and the partition map will >> be exactly the same. > scpart-id is necessary to get (using mtd parser) partition offset and > size from dynamic partition map (NOT from the reg property): > > ❯ xxd -e -c 12 -s $((0x800)) -l $((0x78)) mtd1 > 00000800: 00000000 00000000 00100000 ............ > 0000080c: 00000001 00100000 00100000 ............ > 00000818: 00000002 00200000 00100000 ...... ..... > 00000824: 00000003 00300000 00100000 ......0..... > 00000830: 00000004 00400000 00600000 ......@...`. > 0000083c: 00000005 00a00000 00600000 ..........`. > 00000848: 00000006 01000000 02000000 ............ > 00000854: 00000007 03000000 02000000 ............ > 00000860: 00000008 05000000 01400000 ..........@. > 0000086c: 00000009 06400000 01b80000 ......@..... > scpart-id offset size > > With sercomm,sc-partitions the reg property will be ignored (offset = > 0x200000, size = 0x100000) and the values will be taken from partition map. > > For example we have this is dts: > > partition@200000 { > label = "Factory"; > reg = <0x200000 0x100000>; > sercomm,scpart-id = <2>; > read-only; > }; > > Dynamic partition map: > > scpart-id = 2; offset = 0x00200000; size = 0x00100000 > > 00000002 00200000 00100000 ...... ..... > > In this example the offset and size are the same in reg and dynamic > partition map. If device have bad blocks on NAND the values will be a > little different. And we have to take partition offsets from partition > map to avoid boot loops, wrong eeprom location and other bad things. > > Is there anything that needs to be explained in more detail? Thanks a lot, this clarifies the topic. Looks good. Maybe you could put parts of this into the scpart-id field description? Best regards, Krzysztof