View difference between Paste ID: F4SV57NS and 7fdKLCZK
SHOW: | | - or go back to the newest paste.
1
/dts-v1/;
2
/plugin/;
3
4
#include <dt-bindings/board/am335x-bbw-bbb-base.h>
5
#include <dt-bindings/pinctrl/am33xx.h>
6
#include <dt-bindings/gpio/gpio.h>
7
8-
// file identification
8+
/ {
9-
&{/chosen} {
9+
	// file identification
10-
	overlays {
10+
	fragment@0 {
11-
		// XXX change property name to the name of this overlay (excluding .dts file suffix)
11+
		target-path = "/chosen";
12-
		gpio-demo = __TIMESTAMP__;
12+
		__overlay__ {
13
			overlays {
14-
};
14+
				// XXX change property name to the name of this overlay (excluding .dts file suffix)
15
				gpio-demo = __TIMESTAMP__;
16-
// XXX caution: not compatible with cape-universal!
16+
			};
17
		};
18-
// A udev rule along these lines is recommended to create symlinks in /dev/gpio/
18+
19-
//
19+
20-
//	SUBSYSTEM=="subsystem", KERNEL=="gpio", ACTION=="add", \
20+
	// XXX caution: not compatible with cape-universal!
21-
//		RUN+="/bin/mkdir -p /dev/gpio"
21+
22-
//
22+
	// A udev rule along these lines is recommended to create symlinks in /dev/gpio/
23-
//	SUBSYSTEM=="gpio", ACTION=="add", TEST=="value", ATTR{label}!="sysfs", \
23+
	//
24-
//		RUN+="/bin/ln -sT '/sys/class/gpio/%k' /dev/gpio/%s{label}"
24+
	//	SUBSYSTEM=="subsystem", KERNEL=="gpio", ACTION=="add", \
25
	//		RUN+="/bin/mkdir -p /dev/gpio"
26-
&{/} {
26+
	//
27-
	// If you want to use multiple overlays that do gpio configuration, be
27+
	//	SUBSYSTEM=="gpio", ACTION=="add", TEST=="value", ATTR{label}!="sysfs", \
28-
	// sure that each uses a different device tree node!
28+
	//		RUN+="/bin/ln -sT '/sys/class/gpio/%k' /dev/gpio/%s{label}"
29-
	gpio-demo {
29+
30-
		compatible = "gpio-of-helper";
30+
	fragment@1 {
31
		target-path = "/";
32-
		// It is usually not *strictly* required to perform pinmux for
32+
		__overlay__ {
33-
		// GPIOs since this is typically their default, but it's good
33+
			// If you want to use multiple overlays that do gpio configuration, be
34-
		// practice to do it anyway since:
34+
			// sure that each uses a different device tree node!
35-
		// 1. it makes *sure* the pinmux is right
35+
			gpio-demo {
36-
		// 2. you can configure internal pull-up/down
36+
				compatible = "gpio-of-helper";
37-
		// 3. it lets the kernel know the pins are in use
37+
38-
		pinctrl-names = "default";
38+
				// It is usually not *strictly* required to perform pinmux for
39-
		pinctrl-0 = <&gpio_demo_pins>;
39+
				// GPIOs since this is typically their default, but it's good
40
				// practice to do it anyway since:
41-
		// Note that gpio numbers for each pin can be found in the
41+
				// 1. it makes *sure* the pinmux is right
42-
		// comments in include/bone/black.h
42+
				// 2. you can configure internal pull-up/down
43
				// 3. it lets the kernel know the pins are in use
44-
		// input only, active-low; connect button between pin and gnd.
44+
				pinctrl-names = "default";
45-
		// declaring the gpio as ACTIVE_LOW means the value reads as 1
45+
				pinctrl-0 = <&gpio_demo_pins>;
46-
		// when the button is pressed.
46+
47-
		button {
47+
				// Note that gpio numbers for each pin can be found in the
48-
			gpio = <&gpio2 2 GPIO_ACTIVE_LOW>;  // P8.07
48+
				// comments in include/bone/black.h
49-
			input;
49+
50
				// input only, active-low; connect button between pin and gnd.
51
				// declaring the gpio as ACTIVE_LOW means the value reads as 1
52-
		// output only, active-low, initially high (inactive)
52+
				// when the button is pressed.
53-
		reset-thing {
53+
				button {
54-
			gpio = <&gpio2 3 GPIO_ACTIVE_LOW>;  // P8.08
54+
					gpio = <&gpio2 2 GPIO_ACTIVE_LOW>;  // P8.07
55-
			init-high;
55+
					input;
56
				};
57
58-
		// note: GPIO_ACTIVE_LOW inverts the meaning of the value, but it
58+
				// output only, active-low, initially high (inactive)
59-
		// does not invert the meaning of "init-low" / "init-high" !
59+
				reset-thing {
60
					gpio = <&gpio2 3 GPIO_ACTIVE_LOW>;  // P8.08
61
					init-high;
62-
		// bidirectional, initially input
62+
				};
63-
		input-bidi {
63+
64-
			gpio = <&gpio2 5 GPIO_ACTIVE_HIGH>;  // P8.09
64+
				// note: GPIO_ACTIVE_LOW inverts the meaning of the value, but it
65-
			input;
65+
				// does not invert the meaning of "init-low" / "init-high" !
66-
			dir-changeable;
66+
67
68
				// bidirectional, initially input
69-
		// bidirectional, initially output, initially low (inactive)
69+
				input-bidi {
70-
		output-bidi {
70+
					gpio = <&gpio2 5 GPIO_ACTIVE_HIGH>;  // P8.09
71-
			gpio = <&gpio2 4 GPIO_ACTIVE_HIGH>;  // P8.10
71+
					input;
72-
			init-low;
72+
					dir-changeable;
73-
			dir-changeable;
73+
				};
74
75
				// bidirectional, initially output, initially low (inactive)
76-
};
76+
				output-bidi {
77
					gpio = <&gpio2 4 GPIO_ACTIVE_HIGH>;  // P8.10
78-
&am33xx_pinmux {
78+
					init-low;
79-
	gpio_demo_pins: gpio-demo {
79+
					dir-changeable;
80-
		pinctrl-single,pins = <
80+
				};
81-
			BONE_P8_07 (PIN_INPUT_PULLUP | MUX_MODE7 )  // gpio 2.02 / button
81+
			};
82-
			BONE_P8_08 (PIN_INPUT_PULLUP | MUX_MODE7 )  // gpio 2.03 / reset-thing
82+
83-
			BONE_P8_09 (PIN_INPUT_PULLUP | MUX_MODE7 )  // gpio 2.05 / input-bidi
83+
84-
			BONE_P8_10 (PIN_INPUT_PULLUP | MUX_MODE7 )  // gpio 2.04 / output-bidi
84+
85-
		>;
85+
	fragment@2 {
86
		target = <&am33xx_pinmux>;
87
		__overlay__ {
88
			gpio_demo_pins: gpio-demo {
89
				pinctrl-single,pins = <
90
					BONE_P8_07 (PIN_INPUT_PULLUP | MUX_MODE7 )  // gpio 2.02 / button
91
					BONE_P8_08 (PIN_INPUT_PULLUP | MUX_MODE7 )  // gpio 2.03 / reset-thing
92
					BONE_P8_09 (PIN_INPUT_PULLUP | MUX_MODE7 )  // gpio 2.05 / input-bidi
93
					BONE_P8_10 (PIN_INPUT_PULLUP | MUX_MODE7 )  // gpio 2.04 / output-bidi
94
				>;
95
			};
96
		};
97
	};
98
};