BeagleBoard: Added userbutton command
authorJason Kridner <jkridner@beagleboard.org>
Wed, 21 Jul 2010 12:41:25 +0000 (07:41 -0500)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Sun, 4 Sep 2011 09:36:20 +0000 (11:36 +0200)
Based on commit f1099c7c43caf5bac3bf6a65aa266fade4747072
    Author: Greg Turner <gregturner@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.
* Added xM-C revision definition (optional, since it was default)
* updated default configuration with UserButton functionality
  * Added a separate bootenv variable to load a user defined .txt file
  * Added an example, showing how a different environment file can be loaded with
    the user button pressed

Signed-off-by: Jason Kridner <jkridner@beagleboard.org>
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
Signed-off-by: Joel A Fernandes <agnel.joel@gmail.com>
Cc: Greg Turner <gregturner@ti.com>
Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
board/ti/beagle/beagle.c
include/configs/omap3_beagle.h

index a9585457766b8b59b2e13e5e10ff457139f8e913..8dc8dfa0201c6b34a9c928af7b6ebf94327b64f2 100644 (file)
@@ -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)
 
@@ -446,3 +447,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",
+       ""
+);
index c67dae2308a0ec7d482d8bfb01b8c4f36f56b2e5..c87936498ed8e9c1e6c7a6182151a71a69b54706 100644 (file)
                "omapdss.def_disp=${defaultdisplay} " \
                "root=${nandroot} " \
                "rootfstype=${nandrootfstype}\0" \
-       "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} uEnv.txt\0" \
+       "bootenv=uEnv.txt\0" \
+       "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
        "importbootenv=echo Importing environment from mmc ...; " \
                "env import -t $loadaddr $filesize\0" \
        "loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \
 
 #define CONFIG_BOOTCOMMAND \
        "if mmc rescan ${mmcdev}; then " \
+               "if userbutton; then " \
+                       "setenv bootenv user.txt;" \
+               "fi;" \
                "echo SD/MMC found on device ${mmcdev};" \
                "if run loadbootenv; then " \
+                       "echo Loaded environment from ${bootenv};" \
                        "run importbootenv;" \
                "fi;" \
                "if test -n $uenvcmd; then " \