From 28ce80f53ccdae02d3b64dc6270b92f760ca4b9d Mon Sep 17 00:00:00 2001 From: Vicente Bergas Date: Sat, 16 Mar 2013 23:59:41 +0100 Subject: [PATCH] ArchosG9: add keyboard input and new reset menu entries The number of "#if" has been reduced to have less obfuscation, now have the three keys or have none of them Signed-off-by: Vicente Bergas Signed-off-by: Sascha Hauer --- arch/arm/boards/archosg9/board.c | 22 +++++++++++++++ arch/arm/boards/archosg9/env/bin/init | 28 +++++++++++++++++++ .../boards/archosg9/env/boot/sd-card-android | 2 +- .../boards/archosg9/env/boot/sd-card-linux | 2 +- arch/arm/boards/archosg9/env/boot/usb-android | 2 +- arch/arm/boards/archosg9/env/boot/usb-linux | 2 +- arch/arm/boards/archosg9/env/menu/mainmenu | 25 +++++++++++++++++ arch/arm/configs/archosg9_defconfig | 11 +++++--- 8 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 arch/arm/boards/archosg9/env/bin/init create mode 100644 arch/arm/boards/archosg9/env/menu/mainmenu diff --git a/arch/arm/boards/archosg9/board.c b/arch/arm/boards/archosg9/board.c index 4c4f34951..0149ef271 100644 --- a/arch/arm/boards/archosg9/board.c +++ b/arch/arm/boards/archosg9/board.c @@ -21,6 +21,9 @@ #include #include #include +#include +#include +#include #include "archos_features.h" static int archosg9_console_init(void){ @@ -47,11 +50,30 @@ mem_initcall(archosg9_mem_init); static struct i2c_board_info i2c_devices[] = { { I2C_BOARD_INFO("twl6030", 0x48), }, }; +#if defined(CONFIG_KEYBOARD_TWL6030) && defined(CONFIG_KEYBOARD_GPIO) +static struct twl6030_pwrbtn_platform_data pwrbtn_data = { + .code = KEY_ENTER +}; +static struct gpio_keys_button keys[] = { + { .code = KEY_UP , .gpio = 43, .active_low = 1 }, + { .code = KEY_DOWN, .gpio = 44, .active_low = 1 }, +}; +static struct gpio_keys_platform_data gk_data = { + .buttons = keys, + .nbuttons = ARRAY_SIZE(keys), + .fifo_size = ARRAY_SIZE(keys)*sizeof(int) +}; +#endif static int archosg9_devices_init(void){ i2c_register_board_info(0, i2c_devices, ARRAY_SIZE(i2c_devices)); omap44xx_add_i2c1(NULL); omap44xx_add_mmc1(NULL); +#if defined(CONFIG_KEYBOARD_TWL6030) && defined(CONFIG_KEYBOARD_GPIO) + add_generic_device_res("twl6030_pwrbtn", DEVICE_ID_DYNAMIC, 0, 0, + &pwrbtn_data); + add_gpio_keys_device(DEVICE_ID_DYNAMIC, &gk_data); +#endif armlinux_set_bootparams((void *)0x80000100); /* diff --git a/arch/arm/boards/archosg9/env/bin/init b/arch/arm/boards/archosg9/env/bin/init new file mode 100644 index 000000000..0b362995c --- /dev/null +++ b/arch/arm/boards/archosg9/env/bin/init @@ -0,0 +1,28 @@ +#!/bin/sh + +export PATH=/env/bin + +global hostname=generic +global user=none +global boot.default=net +global allow_color=true +global linux.bootargs.base +#linux.bootargs.dyn.* will be cleared at the beginning of boot +global linux.bootargs.dyn.ip +global linux.bootargs.dyn.root +global editcmd=sedit + +/env/config + +timeout -s -a 0 +autoboot="$?" + +for i in /env/init/*; do + . $i +done + +if [ "$autoboot" = 0 ]; then + boot +fi + +/env/menu/mainmenu diff --git a/arch/arm/boards/archosg9/env/boot/sd-card-android b/arch/arm/boards/archosg9/env/boot/sd-card-android index dc6f15e97..a10a763af 100644 --- a/arch/arm/boards/archosg9/env/boot/sd-card-android +++ b/arch/arm/boards/archosg9/env/boot/sd-card-android @@ -1,7 +1,7 @@ #!/bin/sh if [ "$1" = menu ]; then - boot-menu-add-entry "$0" "Android from SD card" "$2" + boot-menu-add-entry "$0" "Android from SD card" exit fi diff --git a/arch/arm/boards/archosg9/env/boot/sd-card-linux b/arch/arm/boards/archosg9/env/boot/sd-card-linux index 1ae7340cd..2ba9b9e1c 100644 --- a/arch/arm/boards/archosg9/env/boot/sd-card-linux +++ b/arch/arm/boards/archosg9/env/boot/sd-card-linux @@ -1,7 +1,7 @@ #!/bin/sh if [ "$1" = menu ]; then - boot-menu-add-entry "$0" "Linux from SD card" "$2" + boot-menu-add-entry "$0" "Linux from SD card" exit fi diff --git a/arch/arm/boards/archosg9/env/boot/usb-android b/arch/arm/boards/archosg9/env/boot/usb-android index f7646812a..a7ddabe49 100644 --- a/arch/arm/boards/archosg9/env/boot/usb-android +++ b/arch/arm/boards/archosg9/env/boot/usb-android @@ -1,7 +1,7 @@ #!/bin/sh if [ "$1" = menu ]; then - boot-menu-add-entry "$0" "Android from usb" "$2" + boot-menu-add-entry "$0" "Android over usb" exit fi diff --git a/arch/arm/boards/archosg9/env/boot/usb-linux b/arch/arm/boards/archosg9/env/boot/usb-linux index 1d8e91979..12ae6381b 100644 --- a/arch/arm/boards/archosg9/env/boot/usb-linux +++ b/arch/arm/boards/archosg9/env/boot/usb-linux @@ -1,7 +1,7 @@ #!/bin/sh if [ "$1" = menu ]; then - boot-menu-add-entry "$0" "Linux from usb" "$2" + boot-menu-add-entry "$0" "Linux over usb" exit fi diff --git a/arch/arm/boards/archosg9/env/menu/mainmenu b/arch/arm/boards/archosg9/env/menu/mainmenu new file mode 100644 index 000000000..685626143 --- /dev/null +++ b/arch/arm/boards/archosg9/env/menu/mainmenu @@ -0,0 +1,25 @@ +#!/bin/sh + +savepath=$PATH +export menupath=$PATH:/env/menu + +. /env/data/ansi-colors + +while true; do + export PATH=${menupath} + + echo $PATH + + menu -a -m boot -d "${CYAN}Welcome to Barebox${NC}" + + boot-entries-collect + + menu -e -a -m boot -c "settings" -d "Settings" + menu -e -a -m boot -c 'PATH=$savepath; echo "enter exit to return to menu"; sh' -d "${DARK_YELLOW}Shell${NC}" + menu -e -a -m boot -c 'boot_order mmc2_1 && reset' -d "${RED}Reboot into internal flash${NC}" + menu -e -a -m boot -c 'boot_order mmc1 && reset' -d "${RED}Reboot into SD card${NC}" + menu -e -a -m boot -c 'boot_order usb_1 && reset' -d "${RED}Reboot over usb${NC}" + + menu -s -m boot + menu -r -m boot +done diff --git a/arch/arm/configs/archosg9_defconfig b/arch/arm/configs/archosg9_defconfig index cb0f6b24d..40e443357 100644 --- a/arch/arm/configs/archosg9_defconfig +++ b/arch/arm/configs/archosg9_defconfig @@ -3,8 +3,8 @@ CONFIG_ARCH_OMAP4=y CONFIG_OMAP4_USBBOOT=y CONFIG_MACH_ARCHOSG9=y CONFIG_THUMB2_BAREBOX=y -CONFIG_CMD_ARM_MMUINFO=y CONFIG_ARM_BOARD_APPEND_ATAG=y +CONFIG_CMD_ARM_MMUINFO=y CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y CONFIG_ARM_UNWIND=y # CONFIG_MMU is not set @@ -52,6 +52,7 @@ CONFIG_CMD_BOOTM_AIMAGE=y CONFIG_CMD_UIMAGE=y # CONFIG_CMD_BOOTU is not set CONFIG_CMD_RESET=y +CONFIG_CMD_BOOT_ORDER=y CONFIG_CMD_GO=y CONFIG_CMD_TIMEOUT=y CONFIG_CMD_PARTITION=y @@ -70,9 +71,9 @@ CONFIG_NET_NETCONSOLE=y CONFIG_NET_RESOLV=y CONFIG_DRIVER_SERIAL_NS16550=y CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS=y +CONFIG_DRIVER_SERIAL_OMAP4_USBBOOT=y CONFIG_NET_USB=y CONFIG_NET_USB_SMSC95XX=y -CONFIG_DRIVER_SERIAL_OMAP4_USBBOOT=y # CONFIG_SPI is not set CONFIG_I2C=y CONFIG_I2C_OMAP=y @@ -81,13 +82,15 @@ CONFIG_USB_EHCI=y CONFIG_MCI=y CONFIG_MCI_STARTUP=y CONFIG_MCI_OMAP_HSMMC=y +CONFIG_MFD_TWL6030=y CONFIG_LED=y CONFIG_LED_GPIO=y CONFIG_LED_TRIGGERS=y +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_TWL6030=y CONFIG_FS_TFTP=y -CONFIG_FS_NFS=y -CONFIG_MFD_TWL6030=y CONFIG_FS_OMAP4_USBBOOT=y +CONFIG_FS_NFS=y CONFIG_FS_FAT=y CONFIG_FS_FAT_WRITE=y CONFIG_FS_FAT_LFN=y