BCM2708: Add core Device Tree support
[platform/kernel/linux-rpi.git] / arch / arm / boot / dts / overlays / fsm-demo-overlay.dts
1 // Demo overlay for the gpio-fsm driver
2 /dts-v1/;
3 /plugin/;
4
5 #include <dt-bindings/gpio/gpio-fsm.h>
6
7 #define BUTTON1 GF_IP(0)
8 #define BUTTON2 GF_SW(0)
9 #define RED   GF_OP(0) // GPIO7
10 #define AMBER GF_OP(1) // GPIO8
11 #define GREEN GF_OP(2) // GPIO25
12
13 /{
14         compatible = "brcm,bcm2835";
15
16         fragment@0 {
17                 target-path = "/";
18                 __overlay__ {
19                         fsm_demo: fsm-demo {
20                                 compatible = "rpi,gpio-fsm";
21
22                                 debug = <0>;
23                                 gpio-controller;
24                                 #gpio-cells = <2>;
25                                 num-swgpios = <1>;
26                                 gpio-line-names = "button2";
27                                 input-gpios  = <&gpio 6 1>;  // BUTTON1 (active-low)
28                                 output-gpios = <&gpio 7 0>,  // RED
29                                                <&gpio 8 0>,  // AMBER
30                                                <&gpio 25 0>; // GREEN
31                                 shutdown-timeout-ms = <2000>;
32
33                                 start {
34                                         start_state;
35                                         set = <RED 1>, <AMBER 0>, <GREEN 0>;
36                                         start2 = <GF_DELAY 250>;
37                                 };
38
39                                 start2 {
40                                         set = <RED 0>, <AMBER 1>;
41                                         go = <GF_DELAY 250>;
42                                 };
43
44                                 go {
45                                         set = <RED 0>, <AMBER 0>, <GREEN 1>;
46                                         ready_wait = <BUTTON1 0>;
47                                         shutdown1 = <GF_SHUTDOWN 0>;
48                                 };
49
50                                 ready_wait {
51                                         // Clear the soft GPIO
52                                         set = <BUTTON2 0>;
53                                         ready = <GF_DELAY 1000>;
54                                         shutdown1 = <GF_SHUTDOWN 0>;
55                                 };
56
57                                 ready {
58                                         stopping = <BUTTON1 1>, <BUTTON2 1>;
59                                         shutdown1 = <GF_SHUTDOWN 0>;
60                                 };
61
62                                 stopping {
63                                         set = <GREEN 0>, <AMBER 1>;
64                                         stopped = <GF_DELAY 1000>;
65                                 };
66
67                                 stopped {
68                                         set = <AMBER 0>, <RED 1>;
69                                         get_set = <GF_DELAY 3000>;
70                                         shutdown1 = <GF_SHUTDOWN 0>;
71                                 };
72
73                                 get_set {
74                                         set = <AMBER 1>;
75                                         go = <GF_DELAY 1000>;
76                                 };
77
78                                 shutdown1 {
79                                         set = <RED 0>, <AMBER 0>, <GREEN 1>;
80                                         shutdown2 = <GF_SHUTDOWN 250>;
81                                 };
82
83                                 shutdown2 {
84                                         set = <AMBER 1>, <GREEN 0>;
85                                         shutdown3 = <GF_SHUTDOWN 250>;
86                                 };
87
88                                 shutdown3 {
89                                         set = <RED 1>, <AMBER 0>;
90                                         shutdown4 = <GF_SHUTDOWN 250>;
91                                 };
92
93                                 shutdown4 {
94                                         shutdown_state;
95                                         set = <RED 0>, <AMBER 0>, <GREEN 0>;
96                                 };
97                         };
98                };
99         };
100
101         __overrides__ {
102                 fsm_debug = <&fsm_demo>,"debug:0";
103         };
104 };