db820c: stop autoboot when vol- pressed
Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
This commit is contained in:
parent
e0cc0b6c6d
commit
100fb0bd99
3 changed files with 58 additions and 1 deletions
19
arch/arm/dts/dragonboard820c-uboot.dtsi
Normal file
19
arch/arm/dts/dragonboard820c-uboot.dtsi
Normal file
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* U-Boot addition to handle Dragonboard 820c pins
|
||||
*
|
||||
* (C) Copyright 2017 Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
&pm8994_pon {
|
||||
key_vol_down {
|
||||
gpios = <&pm8994_pon 1 0>;
|
||||
label = "key_vol_down";
|
||||
};
|
||||
|
||||
key_power {
|
||||
gpios = <&pm8994_pon 0 0>;
|
||||
label = "key_power";
|
||||
};
|
||||
};
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Board init file for Dragonboard 820C
|
||||
*
|
||||
* (C) Copyright 2017 Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@gmail.com>
|
||||
* (C) Copyright 2017 Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
@ -14,6 +14,7 @@
|
|||
#include <asm/io.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <asm/psci.h>
|
||||
#include <asm/gpio.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
|
@ -125,3 +126,38 @@ int board_init(void)
|
|||
void reset_cpu(ulong addr)
|
||||
{
|
||||
psci_system_reset();
|
||||
}
|
||||
|
||||
/* Check for vol- button - if pressed - stop autoboot */
|
||||
int misc_init_r(void)
|
||||
{
|
||||
struct udevice *pon;
|
||||
struct gpio_desc resin;
|
||||
int node, ret;
|
||||
|
||||
ret = uclass_get_device_by_name(UCLASS_GPIO, "pm8994_pon@800", &pon);
|
||||
if (ret < 0) {
|
||||
printf("Failed to find PMIC pon node. Check device tree\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
node = fdt_subnode_offset(gd->fdt_blob, dev_of_offset(pon),
|
||||
"key_vol_down");
|
||||
if (node < 0) {
|
||||
printf("Failed to find key_vol_down node. Check device tree\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (gpio_request_by_name_nodev(offset_to_ofnode(node), "gpios", 0,
|
||||
&resin, 0)) {
|
||||
printf("Failed to request key_vol_down button.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (dm_gpio_get_value(&resin)) {
|
||||
env_set("bootdelay", "-1");
|
||||
printf("Power button pressed - dropping to console.\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
#include <linux/sizes.h>
|
||||
#include <asm/arch/sysmap-apq8096.h>
|
||||
|
||||
#define CONFIG_MISC_INIT_R /* To stop autoboot */
|
||||
|
||||
/* Physical Memory Map */
|
||||
#define CONFIG_NR_DRAM_BANKS 2
|
||||
|
||||
|
|
Loading…
Reference in a new issue