Based on commit f1099c7c43caf5bac3bf6a65aa266fade4747072
    Author: Greg Turner <gregtur...@ti.com>
    Date:   Tue May 25 09:19:06 2010 -0500

    New u-boot command for status of USER button on BeagleBoard-xM

         Modified bootcmd to check the staus at boot time and set
         filename of the boot script.

* Moved to a BeagleBoard specific file.
* Removed changes to default boot command from adding userbutton
  command.
* Made to handle pre-xM boards.
* Flipped polarity of the return value to avoid confusion.  Success (0)
  is when the button is pressed.  Failure (1) is when the button is NOT
  pressed.
* Used latest revision getting function.
* Used latest macros for board revision.
--
v2 update:
* Added xM-C revision definition (optional, since it was default)

Signed-off-by: Jason Kridner <jkrid...@beagleboard.org>
---
 board/ti/beagle/beagle.c |   56 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 56 insertions(+), 0 deletions(-)

diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index 7768901..2e27aef 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -50,6 +50,7 @@ extern struct ehci_hccr *hccr;
 extern volatile struct ehci_hcor *hcor;
 #endif
 #include "beagle.h"
+#include <command.h>
 
 #define pr_debug(fmt, args...) debug(fmt, ##args)
 
@@ -440,3 +441,58 @@ int ehci_hcd_init(void)
 }
 
 #endif /* CONFIG_USB_EHCI */
+
+/*
+ * This command returns the status of the user button on beagle xM
+ * Input - none
+ * Returns -   1 if button is held down
+ *             0 if button is not held down
+ */
+int do_userbutton (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       int     button = 0;
+       int     gpio;
+
+       /*
+        * pass address parameter as argv[0] (aka command name),
+        * and all remaining args
+        */
+       switch (get_board_revision()) {
+       case REVISION_AXBX:
+       case REVISION_CX:
+       case REVISION_C4:
+               gpio = 7;
+               break;
+       case REVISION_XM_A:
+       case REVISION_XM_B:
+       case REVISION_XM_C:
+       default:
+               gpio = 4;
+               break;
+       }
+       omap_request_gpio(gpio);
+       omap_set_gpio_direction(gpio, 1);
+       printf("The user button is currently ");
+       if(omap_get_gpio_datain(gpio))
+       {
+               button = 1;
+               printf("PRESSED.\n");
+       }
+       else
+       {
+               button = 0;
+               printf("NOT pressed.\n");
+       }
+
+       omap_free_gpio(gpio);
+
+       return !button;
+}
+
+/* -------------------------------------------------------------------- */
+
+U_BOOT_CMD(
+       userbutton, CONFIG_SYS_MAXARGS, 1,      do_userbutton,
+       "Return the status of the BeagleBoard USER button",
+       ""
+);
-- 
1.5.6.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to