// Demo overlay for the gpio-fsm driver /dts-v1/; /plugin/; #include #define BUTTON1 GF_IP(0) #define BUTTON2 GF_SW(0) #define RED GF_OP(0) // GPIO7 #define AMBER GF_OP(1) // GPIO8 #define GREEN GF_OP(2) // GPIO25 /{ compatible = "brcm,bcm2835"; fragment@0 { target-path = "/"; __overlay__ { fsm_demo: fsm-demo { compatible = "rpi,gpio-fsm"; debug = <0>; gpio-controller; #gpio-cells = <2>; num-swgpios = <1>; gpio-line-names = "button2"; input-gpios = <&gpio 6 1>; // BUTTON1 (active-low) output-gpios = <&gpio 7 0>, // RED <&gpio 8 0>, // AMBER <&gpio 25 0>; // GREEN shutdown-timeout-ms = <2000>; start { start_state; set = , , ; start2 = ; }; start2 { set = , ; go = ; }; go { set = , , ; ready_wait = ; shutdown1 = ; }; ready_wait { // Clear the soft GPIO set = ; ready = ; shutdown1 = ; }; ready { stopping = , ; shutdown1 = ; }; stopping { set = , ; stopped = ; }; stopped { set = , ; get_set = ; shutdown1 = ; }; get_set { set = ; go = ; }; shutdown1 { set = , , ; shutdown2 = ; }; shutdown2 { set = , ; shutdown3 = ; }; shutdown3 { set = , ; shutdown4 = ; }; shutdown4 { shutdown_state; set = , , ; }; }; }; }; __overrides__ { fsm_debug = <&fsm_demo>,"debug:0"; }; };