Auch wenn ein Allwinner A20 keinen W1 (single wire) Controller besitzt, kann man die W1-sensoren trotzdem auslesen. Dazu nutzt mal das Modul w1-gpio. Damit es jedoch funktioniert, sind noch kleine Änderungen am DeviceTree notwendig.

Erstmal muss man einen Pin auswählen und ihn als Eingang definieren. Dies geschieht im Block &pio, der nach der Änderung so aussieht (ich habe hier PH7 verwendet, es kann natürlich jeder andere Pin verwendet werden, der noch frei ist):

 &pio {
	gmac_power_pin_bananapro: gmac_power_pin@0 {
		pins = "PH23";
		function = "gpio_out";
	};

	led_pins_bananapro: led_pins@0 {
		pins = "PH24", "PG2";
		function = "gpio_out";
	};

	mmc0_cd_pin_bananapro: mmc0_cd_pin@0 {
		pins = "PH10";
		function = "gpio_in";
		bias-pull-up;
	};

	usb1_vbus_pin_bananapro: usb1_vbus_pin@0 {
		pins = "PH0";
		function = "gpio_out";
	};

	usb2_vbus_pin_bananapro: usb2_vbus_pin@0 {
		pins = "PH1";
		function = "gpio_out";
	};

	vmmc3_pin_bananapro: vmmc3_pin@0 {
		pins = "PH22";
		function = "gpio_out";
	};
	
	w1_pin: w1_pin@0 {
		allwinner,pins = "PH7";
		allwinner,function = "gpio_in";
		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
   };
};

Nun ist der W1-Pin im DeviceTree bekannt. Jetzt kommt das Device dazu (das kann man einfach am Ende der Datei anhängen):

w1_slave {
   compatible = "w1-gpio";
   gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
   pinctrl-names = "default";
   pinctrl-0 = <&w1_pin>;
};

Die Zeilen 2 und 5 sind die Wichtigsten. In der Zeile 1 wird gesagt, dass dieses Device mit dem w1-gpio Modul angesprochen werden soll und Zeile 5 ist die Referenz zum w1-Pin, der im &pio-Block definiert ist.