<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic i.MX51EVK - wall comments in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222277#M14884</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;No group description.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 27 May 2010 16:05:00 GMT</pubDate>
    <dc:creator>ManishShakya</dc:creator>
    <dc:date>2010-05-27T16:05:00Z</dc:date>
    <item>
      <title>i.MX51EVK - wall comments</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222277#M14884</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;No group description.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 May 2010 16:05:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222277#M14884</guid>
      <dc:creator>ManishShakya</dc:creator>
      <dc:date>2010-05-27T16:05:00Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX51EVK - wall comments</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222278#M14885</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Has anyone built the Android 8.1 source package for the iMX51EVK? Towards the end, when you build the last part (the Android source), I got an error message saying I don't have the Java 1.5 installed on my system. Yet the link provided in the instructions doesn't exist anymore (&lt;/SPAN&gt;&lt;A href="http://source.android.com/download"&gt;http://source.android.com/download&lt;/A&gt;&lt;SPAN&gt;) Any suggestions? Which version of Java should I install to be able to build the Android source? Where in my Linux system should I install it? Thank you.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Aug 2010 22:30:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222278#M14885</guid>
      <dc:creator>RafaelG_Lopez</dc:creator>
      <dc:date>2010-08-18T22:30:41Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX51EVK - wall comments</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222279#M14886</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;@Rafael G. Lopez  The following info is somewhere on the Android developers page too, but here goes....   Setting up Java 1.5 on Ubuntu 9.10 (Karmic) Android requires Java 1.5 in order to build, however Ubuntu 9.10 (Karmic) only installs Java 1.6 and has even gone so far as to remove all ability to access Java 1.5.  In order to have access to Java 1.5 packages we must first tell Ubuntu to look into the older 9.04 (Juanty) builds. Edit the file /etc/apt/sources.list with:  deb &lt;/SPAN&gt;&lt;A href="http://us.archive.ubuntu.com/ubuntu/"&gt;http://us.archive.ubuntu.com/ubuntu/&lt;/A&gt;&lt;SPAN&gt; jaunty main restricted universe multiverse deb-src &lt;/SPAN&gt;&lt;A href="http://us.archive.ubuntu.com/ubuntu/"&gt;http://us.archive.ubuntu.com/ubuntu/&lt;/A&gt;&lt;SPAN&gt; jaunty main restricted universe multiverse  Then execute the following apt command to download the Java 1.5 bin/jdk/jre all at once:  sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install sun-java5-jdk  Execute the following command to force the system to use Java 1.5 instead of Java 1.6:  sudo update-alternatives --config java This will display a numerical list of Java versions that may be used. Choose the version with 1.5 in the name.  You will also need to do the exact same thing for the javac version:  sudo update-alternatives --config javac This should now utilize Java 1.5 instead of Java 1.6. You will still have access to Java 1.6 if required just reverse the two previous commands and choose the one with 1.6 in the list. You can verify the operational status by calling:  java -version &amp;amp;&amp;amp; javac -version  --------------------------------------------------------------------------------&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Aug 2010 03:12:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222279#M14886</guid>
      <dc:creator>ErnieAguilar</dc:creator>
      <dc:date>2010-08-19T03:12:13Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX51EVK - wall comments</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222280#M14887</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Has anyone in this group followed the instructions from Freescale for building Linux and also building Android on the EVK? Any comments? Any special steps needed when receiving error messages during the build process? Once we are running Ubuntu 0912 on the EVK, what if we do a System Update directly from the EVK, connected to the web. Will it load the newest version of Ubuntu? Or will it crash?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Aug 2010 21:06:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222280#M14887</guid>
      <dc:creator>RafaelG_Lopez</dc:creator>
      <dc:date>2010-08-19T21:06:21Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX51EVK - wall comments</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222281#M14888</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Addendum:  Regarding previous comment, the following is what I get using Ernie's notes:  rlopez@rlopez-laptop:~$ java -version &amp;amp;&amp;amp; javac -version java version "1.5.0_19" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02) Java HotSpot(TM) Server VM (build 1.5.0_19-b02, mixed mode) The program 'javac' can be found in the following packages: * openjdk-6-jdk * ecj * gcj-4.4-jdk * gcj-4.3 Try: sudo apt-get install  I conclude that my system does not have javac, and it does have java 1.5.0_19  I will try install javac, but wouldn't java 1.5.0-19 suffice for java 1.5?  Thanks,&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Aug 2010 21:28:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222281#M14888</guid>
      <dc:creator>RafaelG_Lopez</dc:creator>
      <dc:date>2010-08-19T21:28:20Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX51EVK - wall comments</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222282#M14889</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I followed Ernie Aguilar notes, and it worked! Thank you Ernie! I got some errors during the LONG build process, but I think I can find the solution for that (apparently I don't have gperf) But the main issue about not having the proper version of Java was solved! I will see what I need to do about "gperf", and comment later on if I get stuck again. Thanks again to Ernie and also to Eric Gregory. Their comments were accurate and very helpful. I hope the Freescale team is paying attention to this, for whomever is trying to build Android for the iMX EVK. They need to update their build instructions. So far so good. One last question: what do we do about the hundreds of warning messages that came up during the build? In my days, a warning message had to be resolved, or else it would quickly turn into an error message......  Rafael Lopez&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 Aug 2010 00:02:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222282#M14889</guid>
      <dc:creator>RafaelG_Lopez</dc:creator>
      <dc:date>2010-08-20T00:02:58Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX51EVK - wall comments</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222283#M14890</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;One last question: what do we do about the hundreds &amp;gt;&amp;gt; of warning messages that came up during the build?  Well, I suppose since you are now an active member of the Freescale open source community, we welcome you to fix them and send us the .patch file!!! :-) Just joking.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 Aug 2010 01:30:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222283#M14890</guid>
      <dc:creator>ErnieAguilar</dc:creator>
      <dc:date>2010-08-20T01:30:55Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX51EVK - wall comments</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222284#M14891</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi everybody,&lt;/P&gt;&lt;P&gt;i need small help regarding speech recognition in LINUX On i.MX51 or i.MX25&amp;nbsp; &lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp; i'm using Ubuntu 9.04&amp;nbsp; and i'm trying to implement Speech recognition on the Target i.MX51..&lt;/P&gt;&lt;P&gt;can you please help me in&amp;nbsp; selecting a speech recognition software (If its a open source it will be fine) for my board and if you have already implemented this on any one fo the i.mX processors with LINUX&amp;nbsp; ,then help me in doing this.......&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 04 Jan 2011 15:22:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222284#M14891</guid>
      <dc:creator>SanjayG</dc:creator>
      <dc:date>2011-01-04T15:22:31Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX51EVK - wall comments</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222285#M14892</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Does anyone know if their is any work done on adding USBOH3 support to uboot?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 04 Jan 2011 20:33:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222285#M14892</guid>
      <dc:creator>EREng</dc:creator>
      <dc:date>2011-01-04T20:33:35Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX51EVK - wall comments</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222286#M14893</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, can anybody can help on how to add GPIO as keypad for WinCE6 based on MX51EVK?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Following we have added two GPIO (GPIO_PORT3_2 and GPIO_PORT4_9), into power button program, but system can not run it normally, following is our program:&lt;/P&gt;&lt;P&gt;//------------------------------------------------------------------------------&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Copyright (C) 2008-2009, Freescale Semiconductor, Inc. All Rights Reserved.&lt;BR /&gt;//&amp;nbsp; THIS SOURCE CODE, AND ITS USE AND DISTRIBUTION, IS SUBJECT TO THE TERMS&lt;BR /&gt;//&amp;nbsp; AND CONDITIONS OF THE APPLICABLE LICENSE AGREEMENT&lt;BR /&gt;//&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; File:&amp;nbsp; pwrbutton.c&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; This file contains driver support for the power button.&lt;BR /&gt;//&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;#pragma warning(push)&lt;BR /&gt;#pragma warning(disable: 4115 4201 4204 4214)&lt;BR /&gt;#include &amp;lt;windows.h&amp;gt;&lt;BR /&gt;#include &amp;lt;ceddk.h&amp;gt;&lt;BR /&gt;#pragma warning(pop)&lt;/P&gt;&lt;P&gt;#include "bsp.h"&lt;BR /&gt;#include "pmic.h"&lt;/P&gt;&lt;P&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;// External Functions&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;// External Variables&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;// Defines&lt;/P&gt;&lt;P&gt;// EVK power button is SW1.&amp;nbsp; SW1 drives SYS_ON_OFF_REQ signal tied to EIM_A27.&lt;BR /&gt;// EIM_A27 can be muxed as GPIO2_21.&amp;nbsp; Configure definitions to use GPIO2_21 for&lt;BR /&gt;// power button events.&lt;BR /&gt;#define BSP_PWRBTN_IOMUX_PIN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDK_IOMUX_PIN_EIM_A27&lt;BR /&gt;#define BSP_PWRBTN_IOMUX_PAD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDK_IOMUX_PAD_EIM_A27&lt;BR /&gt;#define BSP_PWRBTN_GPIO_PORT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDK_GPIO_PORT2&lt;BR /&gt;#define BSP_PWRBTN_GPIO_PIN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 21&lt;BR /&gt;#define BSP_PWRBTN_GPIO_IRQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRQ_GPIO2_PIN21&lt;/P&gt;&lt;P&gt;//GPIO3_2&lt;BR /&gt;#define BSP_BTN1_IOMUX_PIN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDK_IOMUX_PIN_DI1_PIN13&lt;BR /&gt;#define BSP_BTN1_IOMUX_PAD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDK_IOMUX_PAD_DI1_PIN13&lt;BR /&gt;#define BSP_BTN1_GPIO_PORT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDK_GPIO_PORT3&lt;BR /&gt;#define BSP_BTN1_GPIO_PIN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;BR /&gt;#define BSP_BTN1_GPIO_IRQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRQ_GPIO3_PIN2&lt;/P&gt;&lt;P&gt;//GPIO4_9&lt;BR /&gt;#define BSP_BTN2_IOMUX_PIN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDK_IOMUX_PIN_CSI2_D12&lt;BR /&gt;#define BSP_BTN2_IOMUX_PAD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDK_IOMUX_PAD_CSI2_D12&lt;BR /&gt;#define BSP_BTN2_GPIO_PORT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDK_GPIO_PORT4&lt;BR /&gt;#define BSP_BTN2_GPIO_PIN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;BR /&gt;#define BSP_BTN2_GPIO_IRQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRQ_GPIO4_PIN9&lt;/P&gt;&lt;P&gt;// BSP_PWRBTN_DEBOUNCE_SAMPLE_MSEC specifies the time between&lt;BR /&gt;// sampling of power button value.&amp;nbsp; &lt;BR /&gt;#define BSP_PWRBTN_DEBOUNCE_SAMPLE_MSEC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 10 msec&lt;BR /&gt;//&amp;nbsp; BSP_PWRBTN_DEBOUNCE_SUSPEND_MSEC specifies the minimum&lt;BR /&gt;// assertion time for detecting that the user wants to suspend the system.&lt;BR /&gt;#define BSP_PWRBTN_DEBOUNCE_SUSPEND_MSEC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 100 msec &lt;BR /&gt;// BSP_PWRBTN_DEBOUNCE_OFF_MSEC specifies the minimum&lt;BR /&gt;// assertion time for detecting that the user wants to power off the system.&lt;BR /&gt;#define BSP_PWRBTN_DEBOUNCE_OFF_MSEC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2000&amp;nbsp;&amp;nbsp;&amp;nbsp; // 2 sec&lt;BR /&gt;// BSP_PWRBTN_DEBOUNCE_IGNORE_MSEC specifies the minimum&lt;BR /&gt;// time for ignoring the power button after processing the previous&lt;BR /&gt;// button press.&lt;BR /&gt;#define BSP_PWRBTN_DEBOUNCE_IGNORE_MSEC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 500&amp;nbsp;&amp;nbsp;&amp;nbsp; // 500 msec&lt;/P&gt;&lt;P&gt;#define BSP_PWRBTN_THREAD_PRIORITY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 152&lt;/P&gt;&lt;P&gt;#define BSP_Btn1BTN_THREAD_PRIORITY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 152&lt;BR /&gt;#define BSP_Btn2BTN_THREAD_PRIORITY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 152&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;// Types&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;// Global Variables&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;// Local Variables&lt;BR /&gt;static HANDLE g_hPwrBtnThread;&lt;BR /&gt;static HANDLE g_hPwrBtnEvent;&lt;BR /&gt;static DWORD g_dwPwrBtnSysIntr = (DWORD)SYSINTR_UNDEFINED;&lt;/P&gt;&lt;P&gt;static HANDLE g_hBtn1Thread;&lt;BR /&gt;static HANDLE g_hBtn1Event;&lt;BR /&gt;static DWORD g_dwBtn1SysIntr = (DWORD)SYSINTR_UNDEFINED;&lt;/P&gt;&lt;P&gt;static HANDLE g_hBtn2Thread;&lt;BR /&gt;static HANDLE g_hBtn2Event;&lt;BR /&gt;static DWORD g_dwBtn2SysIntr = (DWORD)SYSINTR_UNDEFINED;&lt;/P&gt;&lt;P&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;// Local Functions&lt;BR /&gt;static DWORD WINAPI PwrBtnThread (LPVOID lpParam);&lt;BR /&gt;static DWORD WINAPI Btn1Thread (LPVOID lpParam);&lt;BR /&gt;static DWORD WINAPI Btn2Thread (LPVOID lpParam);&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Function:&amp;nbsp; DllEntry&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; This function is an optional method of entry into a DLL. If the function&lt;BR /&gt;//&amp;nbsp; is used, it is called by the system when processes and threads are&lt;BR /&gt;//&amp;nbsp; initialized and terminated, or on calls to the LoadLibrary and&lt;BR /&gt;//&amp;nbsp; FreeLibrary functions.&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Parameters:&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hinstDLL&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [in] Handle to the DLL. The value is the base address of the DLL.&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dwReason&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [in] Specifies a flag indicating why the DLL entry-point function&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is being called.&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lpvReserved&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [in] Specifies further aspects of DLL initialization and cleanup.&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If dwReason is DLL_PROCESS_ATTACH, lpvReserved is NULL for&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dynamic loads and nonnull for static loads. If dwReason is&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DLL_PROCESS_DETACH, lpvReserved is NULL if DllMain is called&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by using FreeLibrary and nonnull if DllMain is called during&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; process termination.&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Returns:&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; When the system calls the DllMain function with the&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DLL_PROCESS_ATTACH value, the function returns TRUE if it&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; succeeds or FALSE if initialization fails.&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If the return value is FALSE when DllMain is called because the&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; process uses the LoadLibrary function, LoadLibrary returns NULL.&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If the return value is FALSE when DllMain is called during&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; process initialization, the process terminates with an error.&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; When the system calls the DllMain function with a value other&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; than DLL_PROCESS_ATTACH, the return value is ignored.&lt;BR /&gt;//&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;BOOL WINAPI DllEntry(HINSTANCE hDllHandle, DWORD&amp;nbsp; dwReason,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPVOID lpreserved)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Remove-W4: Warning C4100 workaround&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UNREFERENCED_PARAMETER(lpreserved);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (dwReason)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DLL_PROCESS_ATTACH:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DisableThreadLibraryCalls((HMODULE) hDllHandle);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case DLL_PROCESS_DETACH:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return TRUE;&lt;BR /&gt;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Function:&amp;nbsp; Init&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; This function initializes the power button driver.&amp;nbsp; Called by the Device Manager to&lt;BR /&gt;//&amp;nbsp; initialize a device.&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Parameters:&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None.&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Returns:&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Returns TRUE if successful, otherwise returns FALSE.&lt;BR /&gt;//&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;BOOL Init(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BOOL rc = FALSE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD dwIrq;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Configure GPIO signal for power button events&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKIomuxSetPinMux(BSP_PWRBTN_IOMUX_PIN, DDK_IOMUX_PIN_MUXMODE_ALT1, DDK_IOMUX_PIN_SION_REGULAR);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKIomuxSetPadConfig(BSP_PWRBTN_IOMUX_PAD, DDK_IOMUX_PAD_SLEW_NULL, DDK_IOMUX_PAD_DRIVE_NULL, DDK_IOMUX_PAD_OPENDRAIN_NULL, DDK_IOMUX_PAD_PULL_NONE, DDK_IOMUX_PAD_HYSTERESIS_ENABLE, DDK_IOMUX_PAD_INMODE_NULL, DDK_IOMUX_PAD_OUTVOLT_NULL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKGpioSetConfig(BSP_PWRBTN_GPIO_PORT, BSP_PWRBTN_GPIO_PIN, DDK_GPIO_DIR_IN, DDK_GPIO_INTR_HIGH_LEV);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKGpioClearIntrPin(BSP_PWRBTN_GPIO_PORT, BSP_PWRBTN_GPIO_PIN);&lt;/P&gt;&lt;P&gt;&amp;nbsp;///gpio3_2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKIomuxSetPinMux(BSP_BTN1_IOMUX_PIN, DDK_IOMUX_PIN_MUXMODE_ALT1, DDK_IOMUX_PIN_SION_REGULAR);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKIomuxSetPadConfig(BSP_BTN1_IOMUX_PAD, DDK_IOMUX_PAD_SLEW_NULL, DDK_IOMUX_PAD_DRIVE_NULL, DDK_IOMUX_PAD_OPENDRAIN_NULL, DDK_IOMUX_PAD_PULL_NONE, DDK_IOMUX_PAD_HYSTERESIS_ENABLE, DDK_IOMUX_PAD_INMODE_NULL, DDK_IOMUX_PAD_OUTVOLT_NULL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKGpioSetConfig(BSP_BTN1_GPIO_PORT, BSP_BTN1_GPIO_PIN, DDK_GPIO_DIR_IN, DDK_GPIO_INTR_FALL_EDGE);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKGpioClearIntrPin(BSP_BTN1_GPIO_PORT, BSP_BTN1_GPIO_PIN);&lt;/P&gt;&lt;P&gt;&amp;nbsp;//gpio4_9&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKIomuxSetPinMux(BSP_BTN2_IOMUX_PIN, DDK_IOMUX_PIN_MUXMODE_ALT1, DDK_IOMUX_PIN_SION_REGULAR);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKIomuxSetPadConfig(BSP_BTN2_IOMUX_PAD, DDK_IOMUX_PAD_SLEW_NULL, DDK_IOMUX_PAD_DRIVE_NULL, DDK_IOMUX_PAD_OPENDRAIN_NULL, DDK_IOMUX_PAD_PULL_NONE, DDK_IOMUX_PAD_HYSTERESIS_ENABLE, DDK_IOMUX_PAD_INMODE_NULL, DDK_IOMUX_PAD_OUTVOLT_NULL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKGpioSetConfig(BSP_BTN2_GPIO_PORT, BSP_BTN2_GPIO_PIN, DDK_GPIO_DIR_IN, DDK_GPIO_INTR_FALL_EDGE);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKGpioClearIntrPin(BSP_BTN2_GPIO_PORT, BSP_BTN2_GPIO_PIN);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create event for IST signaling&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_hPwrBtnEvent = CreateEvent(NULL, FALSE, FALSE, NULL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(g_hPwrBtnEvent == NULL)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (TEXT("%s(): failed to create IST event\r\n"),&amp;nbsp; __WFUNCTION__));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_hBtn1Event = CreateEvent(NULL, FALSE, FALSE, NULL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(g_hBtn1Event == NULL)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (TEXT("%s(): failed to create IST event\r\n"),&amp;nbsp; __WFUNCTION__));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_hBtn2Event = CreateEvent(NULL, FALSE, FALSE, NULL);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(g_hBtn2Event == NULL)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (TEXT("%s(): failed to create IST event\r\n"),&amp;nbsp; __WFUNCTION__));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Register the GPIO IRQ&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dwIrq = BSP_PWRBTN_GPIO_IRQ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &amp;amp;dwIrq, sizeof(dwIrq), &amp;amp;g_dwPwrBtnSysIntr, sizeof(g_dwPwrBtnSysIntr), NULL))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (TEXT("%s(): failed to map irq into sys intr\r\n"),&amp;nbsp; __WFUNCTION__));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!InterruptInitialize(g_dwPwrBtnSysIntr, g_hPwrBtnEvent, NULL, 0)) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (TEXT("%s(): failed to register sys intr\r\n"),&amp;nbsp; __WFUNCTION__));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Configure power button as wake source&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!KernelIoControl(IOCTL_HAL_ENABLE_WAKE, &amp;amp;g_dwPwrBtnSysIntr, sizeof(g_dwPwrBtnSysIntr), NULL, 0, NULL))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (TEXT("%s(): failed to register as wake source\r\n"),&amp;nbsp; __WFUNCTION__));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //gpio3_2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dwIrq = BSP_BTN1_GPIO_IRQ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &amp;amp;dwIrq, sizeof(dwIrq), &amp;amp;g_dwBtn1SysIntr, sizeof(g_dwBtn1SysIntr), NULL))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (TEXT("%s(): failed to map irq into sys intr\r\n"),&amp;nbsp; __WFUNCTION__));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!InterruptInitialize(g_dwBtn1SysIntr, g_hBtn1Event, NULL, 0)) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (TEXT("%s(): failed to register sys intr\r\n"),&amp;nbsp; __WFUNCTION__));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;//gpio4_9&lt;BR /&gt;&amp;nbsp;dwIrq = BSP_BTN2_GPIO_IRQ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &amp;amp;dwIrq, sizeof(dwIrq), &amp;amp;g_dwBtn2SysIntr, sizeof(g_dwBtn2SysIntr), NULL))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (TEXT("%s(): failed to map irq into sys intr\r\n"),&amp;nbsp; __WFUNCTION__));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!InterruptInitialize(g_dwBtn2SysIntr, g_hBtn2Event, NULL, 0)) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (TEXT("%s(): failed to register sys intr\r\n"),&amp;nbsp; __WFUNCTION__));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create IST for power button interrupts&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_hPwrBtnThread = CreateThread(NULL, 0, PwrBtnThread, NULL, 0, NULL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!g_hPwrBtnThread) &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (_T("CreateThread failed for power button driver!\r\n")));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CeSetThreadPriority(g_hPwrBtnThread, BSP_PWRBTN_THREAD_PRIORITY);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_hBtn1Thread = CreateThread(NULL, 0, Btn1Thread, NULL, 0, NULL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!g_hPwrBtnThread) &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (_T("CreateThread F6 failed!\r\n")));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CeSetThreadPriority(g_hBtn1Thread, BSP_Btn1BTN_THREAD_PRIORITY);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;g_hBtn2Thread = CreateThread(NULL, 0, Btn2Thread, NULL, 0, NULL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!g_hPwrBtnThread) &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERRORMSG(TRUE, (_T("CreateThread F7 failed !\r\n")));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto cleanUp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CeSetThreadPriority(g_hBtn2Thread, BSP_Btn2BTN_THREAD_PRIORITY);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc = TRUE;&lt;/P&gt;&lt;P&gt;cleanUp:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return rc;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Function:&amp;nbsp; Deinit&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; This function deinitializes the power button driver.&amp;nbsp; Called by the Device Manager to&lt;BR /&gt;//&amp;nbsp; deinitialize a device.&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Parameters:&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None.&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Returns:&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Returns TRUE.&lt;BR /&gt;//&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;BOOL Deinit(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Power button driver is never unloaded.&amp;nbsp; This entry point is only defined&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // to meet minum requirements of the stream interface.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return TRUE;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Function:&amp;nbsp; PwrBtnThread&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; This is the interrupt service thread for the power button driver.&amp;nbsp; &lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Parameters:&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lpParam&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [in] Thread data passed to the function using the &lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lpParameter parameter of the CreateThread function. Not used.&lt;BR /&gt;//&lt;BR /&gt;//&amp;nbsp; Returns:&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Returns thread exit code.&lt;BR /&gt;//&lt;BR /&gt;//-----------------------------------------------------------------------------&lt;BR /&gt;static DWORD WINAPI PwrBtnThread (LPVOID lpParam)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UINT32 msec, start;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UINT32 pinVal;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WCHAR szState[MAX_PATH];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD dwStateFlags = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Remove-W4: Warning C4100 workaround&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UNREFERENCED_PARAMETER(lpParam);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IST loop for servicing power button interrupts&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (WaitForSingleObject(g_hPwrBtnEvent, INFINITE) != WAIT_FAILED)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Capture start time of button press&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start = GetTickCount();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Query current system power state to determine if we are resuming &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // from suspend&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetSystemPowerState(szState, MAX_PATH, &amp;amp;dwStateFlags);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Avoid requesting power state transition if the system is resuming from&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // suspend.&amp;nbsp; In such cases the POWER_STATE_SUSPEND flag will be set.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!(POWER_STATE(dwStateFlags) &amp;amp; POWER_STATE_SUSPEND))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Keep track of how long button is pressed&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msec = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Loop to sample power button pin&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Sleep between samples&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sleep(BSP_PWRBTN_DEBOUNCE_SAMPLE_MSEC);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read current power button pin&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKGpioReadDataPin(BSP_PWRBTN_GPIO_PORT, BSP_PWRBTN_GPIO_PIN, &amp;amp;pinVal);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Check if button is still pressed&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (pinVal) &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Update how long button is pressed&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msec = GetTickCount() - start;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Loop terminates if button is released or time to power off&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // system is reached&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } while (pinVal &amp;amp;&amp;amp; (msec &amp;lt; BSP_PWRBTN_DEBOUNCE_OFF_MSEC));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Check if button press indicates user wants to power off the &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // system&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (msec &amp;gt;= BSP_PWRBTN_DEBOUNCE_OFF_MSEC)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Powering off the system through hardware requires the &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // two EVK SYS_ON_OFF_CTL signals to be deasserted.&amp;nbsp; One of&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // these signals is driven by the PMIC, the other by CPU. &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Request for the PMIC SYS_ON_OFF_CTL signal to be&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // deasserted.&amp;nbsp; During OEMPowerOff, the OAL will take&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // care of the other SYS_ON_OFF_CTL to complete the&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // power off.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PmicRegisterWrite(MC13892_PWR_MISC_ADDR, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CSP_BITFVAL(MC13892_REG_MISC_PWGT2SPIEN, 1),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CSP_BITFMASK(MC13892_REG_MISC_PWGT2SPIEN));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Since we are powering off, disallow the power button from &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // generating wake events that may disrupt powering off the&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // system.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KernelIoControl(IOCTL_HAL_DISABLE_WAKE, &amp;amp;g_dwPwrBtnSysIntr, sizeof(g_dwPwrBtnSysIntr), NULL, 0, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Note that we could use SetSystemPowerState to request &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // POWER_STATE_OFF, but this state is not supported by&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the default Power Manager.&amp;nbsp; Instead, we just let&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the code fall through to generate a POWER_STATE_SUSPEND&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // request and allow the OAL power off the system&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // in OEMPowerOff.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Check if button press indicates user wants to suspend the &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // system&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (msec &amp;gt;= BSP_PWRBTN_DEBOUNCE_SUSPEND_MSEC)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetSystemPowerState(NULL, POWER_STATE_SUSPEND, POWER_FORCE);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // After handling the button press, delay before servicing new button&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // interrupts to prevent from bouncing into suspend again&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sleep(BSP_PWRBTN_DEBOUNCE_IGNORE_MSEC);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear and reenable button interrupts&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKGpioClearIntrPin(BSP_PWRBTN_GPIO_PORT, BSP_PWRBTN_GPIO_PIN);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InterruptDone(g_dwPwrBtnSysIntr);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;static DWORD WINAPI Btn1Thread (LPVOID lpParam)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UINT32 pinVal;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Remove-W4: Warning C4100 workaround&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UNREFERENCED_PARAMETER(lpParam);&lt;BR /&gt;&amp;nbsp;while (WaitForSingleObject(g_hPwrBtnEvent, INFINITE) != WAIT_FAILED)&lt;BR /&gt;&amp;nbsp;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sleep(20);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read current power button pin&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKGpioReadDataPin(BSP_BTN1_GPIO_PORT, BSP_BTN1_GPIO_PIN, &amp;amp;pinVal);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Check if button is still pressed&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!pinVal) &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //send key message&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; keybd_event(VK_F6, 0, 0, 0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;for(;;)&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;DDKGpioReadDataPin(BSP_BTN1_GPIO_PORT, BSP_BTN1_GPIO_PIN, &amp;amp;pinVal);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;if(pinVal)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;keybd_event(VK_F6,0,KEYEVENTF_KEYUP,0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear and reenable button interrupts&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKGpioClearIntrPin(BSP_BTN1_GPIO_PORT, BSP_BTN1_GPIO_PIN);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InterruptDone(g_dwBtn1SysIntr);&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;BR /&gt;} &lt;BR /&gt;static DWORD WINAPI Btn2Thread (LPVOID lpParam)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UINT32 pinVal;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Remove-W4: Warning C4100 workaround&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UNREFERENCED_PARAMETER(lpParam);&lt;BR /&gt;&amp;nbsp;while (WaitForSingleObject(g_hPwrBtnEvent, INFINITE) != WAIT_FAILED)&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sleep(20);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read current power button pin&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKGpioReadDataPin(BSP_BTN2_GPIO_PORT, BSP_BTN2_GPIO_PIN, &amp;amp;pinVal);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Check if button is still pressed&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!pinVal) &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //send key message&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; keybd_event(VK_F7, 0, 0, 0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;)&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;DDKGpioReadDataPin(BSP_BTN2_GPIO_PORT, BSP_BTN2_GPIO_PIN, &amp;amp;pinVal);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;if(pinVal)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;keybd_event(VK_F7,0,KEYEVENTF_KEYUP,0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear and reenable button interrupts&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DDKGpioClearIntrPin(BSP_PWRBTN_GPIO_PORT, BSP_PWRBTN_GPIO_PIN);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InterruptDone(g_dwBtn2SysIntr);&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jul 2011 00:56:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222286#M14893</guid>
      <dc:creator>Oceanblue</dc:creator>
      <dc:date>2011-07-15T00:56:09Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX51EVK - wall comments</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222287#M14894</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm trying to change my display resolution in Ubuntu. I'm using a AUO LVDS Display 800x600 and there is only the option 1024x768. Can anybody tell me what can I do to change it?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 06 Feb 2012 15:27:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX51EVK-wall-comments/m-p/222287#M14894</guid>
      <dc:creator>Mr_GustavoCosta</dc:creator>
      <dc:date>2012-02-06T15:27:09Z</dc:date>
    </item>
  </channel>
</rss>

