On 5/1/2022 7:17 PM, Krzysztof Kozlowski wrote: > 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? Thank you for you support! I updated the scpart-id description and hope this should be clear enough. If so, I'll prepare PATCH v3. 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. Mtd + parser uses this id to find a record in the partiton map + containing offset and size of the current partition. The + values from partition map overrides partition offset and + size defined in reg property of the dts. Frequently these + values are the same, but may differ if device has bad + eraseblocks on a flash. + $ref: /schemas/types.yaml#/definitions/uint32 > Best regards, > Krzysztof -- Best regards, Mikhail