Merge "pm8921: Adds support to read power key status"
diff --git a/dev/pmic/pm8921/include/dev/pm8921.h b/dev/pmic/pm8921/include/dev/pm8921.h
index bff76e9..2a41690 100644
--- a/dev/pmic/pm8921/include/dev/pm8921.h
+++ b/dev/pmic/pm8921/include/dev/pm8921.h
@@ -77,7 +77,8 @@
#define PM_GPIO_BLOCK_ID(gpio) (PM_IRQ_BLOCK_GPIO_START + (gpio)/8)
#define PM_GPIO_ID_TO_BIT_MASK(gpio) (1 << ((gpio)%8))
-
+#define PM_PWRKEY_BLOCK_ID 6
+#define PM_PWRKEY_PRESS_BIT (1 << 3)
typedef int (*pm8921_read_func)(uint8_t *data, uint32_t length, uint32_t addr);
typedef int (*pm8921_write_func)(uint8_t *data, uint32_t length, uint32_t addr);
@@ -110,6 +111,7 @@
int pm8921_ldo_set_voltage(uint32_t ldo_id, uint32_t voltage);
int pm8921_config_reset_pwr_off(unsigned reset);
int pm8921_gpio_get(uint8_t gpio, uint8_t *status);
+int pm8921_pwrkey_status(uint8_t *status);
int pm8921_config_led_current(enum pm8921_leds led_num,
uint8_t current,
enum led_mode sink,
@@ -118,4 +120,5 @@
unsigned int flash_logic,
unsigned int flash_ensel);
+
#endif
diff --git a/dev/pmic/pm8921/pm8921.c b/dev/pmic/pm8921/pm8921.c
index c6ee438..3200c47 100644
--- a/dev/pmic/pm8921/pm8921.c
+++ b/dev/pmic/pm8921/pm8921.c
@@ -203,6 +203,23 @@
return ret;
}
+int pm8921_pwrkey_status(uint8_t *is_pwrkey_pressed)
+{
+ int ret = 0;
+ uint8_t block_status;
+
+ ret = pm8921_irq_get_block_status(PM_PWRKEY_BLOCK_ID, &block_status);
+
+ if (!ret)
+ {
+ if(block_status & PM_PWRKEY_PRESS_BIT)
+ *is_pwrkey_pressed = 1;
+ else
+ *is_pwrkey_pressed = 0;
+ }
+ return ret;
+}
+
int pm8921_ldo_set_voltage(uint32_t ldo_id, uint32_t voltage)
{
uint8_t mult;