From aade4950e095acd8b2cdd42b922126b2bd100788 Mon Sep 17 00:00:00 2001 From: Sreekanth Boga Date: Wed, 31 May 2023 10:33:20 -0700 Subject: [PATCH] issue with capturing phandles in a parent's property --- boards/arm/96b_carbon/96b_carbon.dts | 1 + boards/arm/96b_carbon/test_device.dtsi | 59 +++++++++++++++++++ dts/bindings/test_device/test,device.yaml | 28 +++++++++ dts/bindings/test_device/test,edge.yaml | 15 +++++ dts/bindings/test_device/test,fsm.yaml | 11 ++++ dts/bindings/test_device/test,node.yaml | 14 +++++ .../zephyr/dt-bindings/test_dev/test_dev.h | 13 ++++ 7 files changed, 141 insertions(+) create mode 100644 boards/arm/96b_carbon/test_device.dtsi create mode 100644 dts/bindings/test_device/test,device.yaml create mode 100644 dts/bindings/test_device/test,edge.yaml create mode 100644 dts/bindings/test_device/test,fsm.yaml create mode 100644 dts/bindings/test_device/test,node.yaml create mode 100644 include/zephyr/dt-bindings/test_dev/test_dev.h diff --git a/boards/arm/96b_carbon/96b_carbon.dts b/boards/arm/96b_carbon/96b_carbon.dts index f5bf90cdd4..01ba24b4e0 100644 --- a/boards/arm/96b_carbon/96b_carbon.dts +++ b/boards/arm/96b_carbon/96b_carbon.dts @@ -8,6 +8,7 @@ #include #include #include "96b_lscon.dtsi" +#include "test_device.dtsi" / { model = "Seeed Studio Carbon 96boards"; diff --git a/boards/arm/96b_carbon/test_device.dtsi b/boards/arm/96b_carbon/test_device.dtsi new file mode 100644 index 0000000000..a9392f6570 --- /dev/null +++ b/boards/arm/96b_carbon/test_device.dtsi @@ -0,0 +1,59 @@ +#include + +/ { + soc { + test_dev: test_dev@deadbeef { + status = "okay"; + compatible = "test,device"; + reg = <0xdeadbeef 0x100>; + + fsms = <&a_fsm>, <&b_fsm>; + devs = <&d1>, <&d2>, <&d3>; + + #address-cells = <1>; + #size-cells = <0>; + + edge: arrow { + compatible = "test,edge"; + #edge-cells = <2>; + }; + + vertex: point { + compatible = "test,node"; + #edge-cells = <1>; + }; + + a_fsm: aa_fsm { + compatible = "test,fsm"; + edges = <&vertex ST_B &edge ST_A 2>, + <&vertex ST_B &edge ST_A 11>, + <&vertex ST_C &edge ST_A 14>, + <&vertex ST_A &edge ST_C 12 &edge ST_B 7 &edge ST_B 1>; + }; + + b_fsm: bb_fsm { + compatible = "test,fsm"; + edges = <&vertex ST_B &edge ST_A 3>, + <&vertex ST_C &edge ST_A 5>, + <&vertex ST_B &edge ST_A 1>, + <&vertex ST_A &edge ST_C 4 &edge ST_B 10 &edge ST_B 0>; + }; + + d1: dev@200 { + reg = <0x200>; + parent = <&d1>; + profile = <&a_fsm>; + }; + d2: dev@400 { + reg = <0x400>; + parent = <&d1>; + profile = <&b_fsm>; + }; + d3: dev@600 { + reg = <0x600>; + parent = <&d1>; + profile = <&b_fsm>; + }; + }; + }; +}; diff --git a/dts/bindings/test_device/test,device.yaml b/dts/bindings/test_device/test,device.yaml new file mode 100644 index 0000000000..0132e8f423 --- /dev/null +++ b/dts/bindings/test_device/test,device.yaml @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: Apache-2.0 + +compatible: "test,device" + +description: FSM device +include: [base.yaml] +properties: + fsms: + type: phandles + required: true + devs: + type: phandles + required: true + +child-binding: + description: root device node that hosts fsm + properties: + reg: + type: array + required: true + + parent: + type: phandle + required: true + + profile: + type: phandle + required: true diff --git a/dts/bindings/test_device/test,edge.yaml b/dts/bindings/test_device/test,edge.yaml new file mode 100644 index 0000000000..38d8468431 --- /dev/null +++ b/dts/bindings/test_device/test,edge.yaml @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: Apache-2.0 + +description: FSM transitions +include: [base.yaml] + + +compatible: "test,edge" +properties: + "#edge-cells": + type: int + const: 2 + +edge-cells: + - state + - input_value diff --git a/dts/bindings/test_device/test,fsm.yaml b/dts/bindings/test_device/test,fsm.yaml new file mode 100644 index 0000000000..da4ba18801 --- /dev/null +++ b/dts/bindings/test_device/test,fsm.yaml @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: Apache-2.0 + +description: FSM generator schema +include: [base.yaml] + + +compatible: "test,fsm" +properties: + edges: + type: phandle-array + required: true diff --git a/dts/bindings/test_device/test,node.yaml b/dts/bindings/test_device/test,node.yaml new file mode 100644 index 0000000000..16746319ec --- /dev/null +++ b/dts/bindings/test_device/test,node.yaml @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: Apache-2.0 + +description: FSM transitions +include: [base.yaml] + + +compatible: "test,node" +properties: + "#edge-cells": + type: int + const: 1 + +edge-cells: + - src_state diff --git a/include/zephyr/dt-bindings/test_dev/test_dev.h b/include/zephyr/dt-bindings/test_dev/test_dev.h new file mode 100644 index 0000000000..b7f4818c31 --- /dev/null +++ b/include/zephyr/dt-bindings/test_dev/test_dev.h @@ -0,0 +1,13 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_TEST_DEV_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_TEST_DEV_H_ + +#define ST_A (0x0) +#define ST_B (0x1) +#define ST_C (0x2) +#define ST_D (0x3) + +#endif // ZEPHYR_INCLUDE_DT_BINDINGS_TEST_DEV_H_ -- 2.31.1