On 11/11/24 15:24, Ayush Singh wrote:
Allow appending values to a property instead of overriding the previous values of property. Currently, we have /delete-node/ and /delete-property/, but lack /append-property/. Hence we end up having to repeat all existing values when appending to a property (e.g. see [1] appending to clocks from [2]). This functionality is also important for creating a device tree based implementation to support different types of addon-boards such as mikroBUS, Grove [3], etc. In practice, it looks as follows: ``` dts-v1/; / { str-prop = "0"; }; / { /append-property/ str-prop = "1"; }; ``` Open items - Appending to non-existent property: I think it is better to create a new property if the property does not exist instead of giving an error. If the default is an error, then the condition, "create a property if it does not exist, else append" cannot be expressed. I think this behaviour is desirable with more complex overlays required for supporting addon boards using devicetree. [3] https://lore.kernel.org/linux-arm-kernel/20240702164403.29067-1-afd@xxxxxx/ [2] https://elixir.bootlin.com/linux/latest/source/arch/arm64/boot/dts/renesas/r8a77951-salvator-xs.dts#L39 [1] https://elixir.bootlin.com/linux/latest/source/arch/arm64/boot/dts/renesas/r8a77951.dtsi#L3334 Signed-off-by: Ayush Singh <ayush@xxxxxxxxxxxxxxx> --- Changes in v3: - Add support for annotations. Works similar to nodes (since they already append by default). - Link to v2: https://lore.kernel.org/r/20240830-append-v2-0-ec1e03f110ad@xxxxxxxxxxxxxxx Changes in v2: - Add comment for append struct member. - Small code improvements - Improve test - Link to v1: https://lore.kernel.org/r/20240827-append-v1-0-d7a126ef1be3@xxxxxxxxxxxxxxx --- Ayush Singh (2): dtc: Add /append-property/ tests: Add test for append-property dtc-lexer.l | 7 +++++++ dtc-parser.y | 6 ++++++ dtc.h | 5 +++++ livetree.c | 36 +++++++++++++++++++++++++++++------- tests/append_prop.dts | 21 +++++++++++++++++++++ tests/run_tests.sh | 7 +++++++ 6 files changed, 75 insertions(+), 7 deletions(-) --- base-commit: 99031e3a4a6e479466ae795790b44727434ca27d change-id: 20240827-append-f614fe3261f9 Best regards,
cc David Gibson <david@xxxxxxxxxxxxxxxxxxxxx> Sorry, forgot to tag you in this patch as well. Ayush Singh