DART-6UL WakeableGPIO

From Variscite Wiki
Revision as of 10:06, 25 April 2016 by Leonid (talk | contribs) (Created page with "{{PageHeader|DART-6UL - Wakeable GPIO}} {{DocImage|category1=DART-6UL|category2=Yocto}} __toc__ DART-6UL has very low power consumption in memory retention mode.<br> Such low ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
DART-6UL - Wakeable GPIO

DART-6UL has very low power consumption in memory retention mode.
Such low current consumption can be reached only by disabling all internal and external peripheral devices on the SOM.
The power domains of all pins of the SOM are switched off in memory retention mode. It means that all GPIO loose their state.
The only domain that stays active is RTC domain (SNVS) and the only pins that still accessible are bank 5 of the GPIO.
The DART-6UL provides 4 external GPIO pins that can be used for waking the system up and for controlling external peripherals in sleep mode.

In this example we will use GPIO5_1 to wake up the system. This pin is exposed on J2.64 of the SOM and on pin J6.6 of the EVK.

Define GPIO as a key pad

Add the following section to the imx6ul-var-dart.dtsi file, right after leds section:

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;
		autorepeat;
		button@21 {
				label = "GPIO Key UP";
				linux,code = <103>;
				gpios = <&gpio5 1 1>;
				gpio-key,wakeup;
		};
	};

Add GPIO pad configuration

Add the following section to the imx6ul-var-dart.dtsi file, into pinctrl_hog_1 group:

MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01	0x1b0b0 /* WAKE gpio */

Compile and update the system

Follow this section to compile the updated files.
If you are using NAND version SOM than follow this section to update the system.
If you are using eMMC version SOM than use:

Copy files to Yocto BOOT partition:
$ mount /dev/mmcblk1p2  /tmp/media/mmcblk1p2
$ cp zImage-imx6ul-var-dart-emmc_wifi.dtb /tmp/media/mmcblk1p1/imx6ul-var-dart-emmc_wifi.dtb
$ cp zImage-imx6ul-var-dart-nand_wifi.dtb /tmp/media/mmcblk1p1/imx6ul-var-dart-nand_wifi.dtb
$ cp zImage-imx6ul-var-dart-sd_emmc.dtb /tmp/media/mmcblk1p1/imx6ul-var-dart-sd_emmc.dtb
$ cp zImage-imx6ul-var-dart-sd_nand.dtb /tmp/media/mmcblk1p1/imx6ul-var-dart-sd_nand.dtb
$ cp zImage /tmp/media/mmcblk1p1/zImage
$ sync
$ umount /tmp/media/mmcblk1p2

Reboot the system

Reboot the system and wait for a login prompt

$ reboot 

Enter memory retension

After this command the system will enter memory retension mode.
The serial console will stop responding, all not needed power supplies will be shut down. You can see that LEDs D30, D27 will turn off on the EVK.

$ echo mem > /sys/power/state

Wake up the system

Connect pins J6.6 and J6,8 with a jumper. It will wake the system up.
You can also press PWR button to wake up the system.