Merge "aboot: mdtp: Add missing display config support"
diff --git a/dev/pmic/pm8x41/include/pm_vadc_hc.h b/dev/pmic/pm8x41/include/pm_vadc_hc.h
index 53312cb..8e0dba4 100644
--- a/dev/pmic/pm8x41/include/pm_vadc_hc.h
+++ b/dev/pmic/pm8x41/include/pm_vadc_hc.h
@@ -48,12 +48,12 @@
#define HC_DEC_RATIO_SHIFT 2
#define HC_FAST_AVG_CTL 0x43
-#define HC_FAST_AVG_SAMPLES_MASK 0xfff
+#define HC_FAST_AVG_SAMPLES_MASK 0x7
#define HC_ADC_CH_SEL_CTL 0x44
#define HC_DELAY_CTL 0x45
-#define HC_DELAY_CTL_MASK 0xfff
+#define HC_DELAY_CTL_MASK 0xf
#define HC_EN_CTL1 0x46
#define HC_ADC_EN BIT(7)
@@ -79,6 +79,15 @@
enum adc_type adc_type;
};
+enum adc_fast_avg_sample {
+ AVG_1_SAMPLE = 0,
+ AVG_2_SAMPLES,
+ AVG_4_SAMPLES,
+ AVG_8_SAMPLES,
+ AVG_16_SAMPLES,
+ AVG_SAMPLES_INVALID
+};
+
enum adc_channel_prediv_type {
SCALE_DIV1 = 0,
SCALE_DIV3,
diff --git a/dev/pmic/pm8x41/pm_vadc_hc.c b/dev/pmic/pm8x41/pm_vadc_hc.c
index fdf26ab..7517a31 100644
--- a/dev/pmic/pm8x41/pm_vadc_hc.c
+++ b/dev/pmic/pm8x41/pm_vadc_hc.c
@@ -61,9 +61,11 @@
enum adc_hc_channel channel;
/* Hardware settling delay for the channel */
enum adc_usr_delay_ctl hw_settle;
+ /* Fast average sample value for the channel */
+ enum adc_fast_avg_sample avg_sample;
/*
* Pre scale ratio for the channel before ADC is measured.
- * This is used during scaling the code to physical units by
+ * This is used while scaling the code to physical units by
* applying the respective pre-scale value.
*/
struct adc_pre_scale_ratio pre_scale;
@@ -107,6 +109,7 @@
HC_ABS_CAL,
HC_CALIB_VREF_1P25,
HC_HW_SETTLE_DELAY_0US,
+ AVG_1_SAMPLE,
{1, 1},
scale_default_voltage
},
@@ -115,6 +118,7 @@
HC_ABS_CAL,
HC_VPH_PWR,
HC_HW_SETTLE_DELAY_0US,
+ AVG_1_SAMPLE,
{1, 3},
scale_default_voltage
},
@@ -201,7 +205,7 @@
static void vadc_hc_configure(struct vadc_hc_periph_cfg *adc_cfg,
struct vadc_hc_channel_cfg *ch_cfg)
{
- uint8_t cal = 0;
+ uint8_t cal = 0, avg_samples = 0;
/* Configure calibration select */
vadc_hc_reg_read(adc_cfg, HC_ADC_DIG_PARAM, &cal);
@@ -215,6 +219,12 @@
/* HW settle delay */
vadc_hc_reg_write(adc_cfg, HC_DELAY_CTL, ch_cfg->hw_settle);
+ /* Fast avg sample value */
+ vadc_hc_reg_read(adc_cfg, HC_FAST_AVG_CTL, &avg_samples);
+ avg_samples &= ~HC_FAST_AVG_SAMPLES_MASK;
+ avg_samples |= ch_cfg->avg_sample;
+ vadc_hc_reg_write(adc_cfg, HC_FAST_AVG_CTL, avg_samples);
+
/* Enable ADC */
vadc_hc_reg_write(adc_cfg, HC_EN_CTL1, HC_ADC_EN);
diff --git a/dev/qpnp_wled/include/qpnp_wled.h b/dev/qpnp_wled/include/qpnp_wled.h
index d90ca0b..4ca2379 100644
--- a/dev/qpnp_wled/include/qpnp_wled.h
+++ b/dev/qpnp_wled/include/qpnp_wled.h
@@ -167,6 +167,11 @@
#define QPNP_WLED_LAB_FAST_PC_MASK 0xFB
#define QPNP_WLED_LAB_START_DLY_US 8
#define QPNP_WLED_LAB_FAST_PC_SHIFT 2
+#define QPNP_WLED_PRECHARGE_MASK 0xFC
+#define QPNP_WLED_PRECHARGE_US200 0x00
+#define QPNP_WLED_PRECHARGE_US300 0x01
+#define QPNP_WLED_PRECHARGE_US400 0x02
+#define QPNP_WLED_PRECHARGE_US500 0x03
#define QPNP_WLED_SEC_ACCESS_REG(b) (b + 0xD0)
#define QPNP_WLED_SEC_UNLOCK 0xA5
@@ -282,6 +287,7 @@
bool disp_type_amoled;
bool ibb_bias_active;
bool lab_fast_precharge;
+ uint8_t lab_max_precharge_time;
uint32_t lab_min_volt;
uint32_t lab_max_volt;
uint32_t ibb_min_volt;
diff --git a/dev/qpnp_wled/qpnp_wled.c b/dev/qpnp_wled/qpnp_wled.c
index ad2f5d5..9282a7b 100644
--- a/dev/qpnp_wled/qpnp_wled.c
+++ b/dev/qpnp_wled/qpnp_wled.c
@@ -475,6 +475,9 @@
QPNP_WLED_LAB_FAST_PC_REG(wled->lab_base));
reg &= QPNP_WLED_LAB_FAST_PC_MASK;
reg |= (wled->lab_fast_precharge << QPNP_WLED_LAB_FAST_PC_SHIFT);
+ /* LAB max precharge time */
+ reg &= QPNP_WLED_PRECHARGE_MASK;
+ reg |= (wled->lab_max_precharge_time);
pm8x41_wled_reg_write(QPNP_WLED_LAB_FAST_PC_REG(wled->lab_base), reg);
/* Configure lab display type */
@@ -573,6 +576,7 @@
wled->ibb_bias_active = false;
wled->lab_fast_precharge = false;
+ wled->lab_max_precharge_time = QPNP_WLED_PRECHARGE_US500;
wled->ibb_pwrup_dly_ms = config->pwr_up_delay;
wled->ibb_pwrdn_dly_ms = config->pwr_down_delay;
wled->ibb_discharge_en = config->ibb_discharge_en;
diff --git a/platform/msm_shared/rpmb/rpmb_emmc.c b/platform/msm_shared/rpmb/rpmb_emmc.c
index dbf7664..c9c7bba 100644
--- a/platform/msm_shared/rpmb/rpmb_emmc.c
+++ b/platform/msm_shared/rpmb/rpmb_emmc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015,2016 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -29,6 +29,7 @@
#include <rpmb.h>
#include <mmc_sdhci.h>
#include <debug.h>
+#include <string.h>
static const char *str_err[] =
{
@@ -51,9 +52,11 @@
{
uint32_t i, num_trans = 0;
int ret = 0;
- struct mmc_command cmd[3] = {{0},{0},{0}};
+ struct mmc_command cmd[3];
struct rpmb_frame *result = (struct rpmb_frame *)resp_buf;
+ memset(cmd, 0, (size_t) sizeof(cmd));
+
dprintf(INFO, "rpmb write command called with blk_cnt and rel_wr_count: 0x%x 0x%x\n", blk_cnt, rel_wr_count);
if (rel_wr_count == 0x2)
{
@@ -150,9 +153,10 @@
int rpmb_read_emmc(struct mmc_device *dev, uint32_t *req_buf, uint32_t blk_cnt, uint32_t *resp_buf, uint32_t *resp_len)
{
- struct mmc_command cmd[3] = {{0},{0},{0}};
+ struct mmc_command cmd[3] ;
int ret = 0;
struct rpmb_frame *result = (struct rpmb_frame *)resp_buf;
+ memset(cmd, 0, (size_t) sizeof(cmd));
#if DEBUG_RPMB
dump_rpmb_frame((uint8_t *)req_buf, "request");