Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6187c846 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge changes I0236f849,I87b2ac56,Ia7a344e6,I1cace039 into msm-4.4

* changes:
  ARM: dts: msm: Add tp rev property for PM660
  iio: rradc: Update RRADC USBIN scaling
  qpnp: revid: Add support to read TP Rev
  ARM: dts: msm: increase PCIe PHY wakeup delay from L1ss for msm8998
parents 4c73d9cc 71e8c341
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@ Required properties:
Optional property:
- qcom,fab-id-valid: Use this property when support to read Fab
	identification from REV ID peripheral is available.
- qcom,tp-rev-valid: Use this property when support to read TP
	revision identification from REV ID peripheral.

Example:
	qcom,revid@100 {
+1 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
			compatible = "qcom,qpnp-revid";
			reg = <0x100 0x100>;
			qcom,fab-id-valid;
			qcom,tp-rev-valid;
		};

		pm660_misc: qcom,misc@900 {
+1 −1
Original line number Diff line number Diff line
@@ -436,7 +436,7 @@
				0x9ac 0x00 0x00
				0x8a0 0x01 0x00
				0x9e0 0x00 0x00
				0x9dc 0x01 0x00
				0x9dc 0x20 0x00
				0x9a8 0x00 0x00
				0x8a4 0x01 0x00
				0x8a8 0x73 0x00
+1 −1
Original line number Diff line number Diff line
@@ -2675,7 +2675,7 @@
					0x9ac 0x00 0x00
					0x8a0 0x01 0x00
					0x9e0 0x00 0x00
					0x9dc 0x01 0x00
					0x9dc 0x20 0x00
					0x9a8 0x00 0x00
					0x8a4 0x01 0x00
					0x8a8 0x73 0x00
+70 −8
Original line number Diff line number Diff line
@@ -180,6 +180,9 @@
#define FG_ADC_RR_VOLT_INPUT_FACTOR		8
#define FG_ADC_RR_CURR_INPUT_FACTOR		2000
#define FG_ADC_RR_CURR_USBIN_INPUT_FACTOR_MIL	1886
#define FG_ADC_RR_CURR_USBIN_660_FACTOR_MIL	9
#define FG_ADC_RR_CURR_USBIN_660_UV_VAL	579500

#define FG_ADC_SCALE_MILLI_FACTOR		1000
#define FG_ADC_KELVINMIL_CELSIUSMIL		273150

@@ -192,6 +195,9 @@
#define FG_RR_CONV_CONTINUOUS_TIME_MIN_US	50000
#define FG_RR_CONV_CONTINUOUS_TIME_MAX_US	51000
#define FG_RR_CONV_MAX_RETRY_CNT		50
#define FG_RR_TP_REV_VERSION1		21
#define FG_RR_TP_REV_VERSION2		29
#define FG_RR_TP_REV_VERSION3		32

/*
 * The channel number is not a physical index in hardware,
@@ -228,6 +234,7 @@ struct rradc_chip {
	struct rradc_chan_prop		*chan_props;
	struct device_node		*revid_dev_node;
	struct pmic_revid_data		*pmic_fab_id;
	int volt;
};

struct rradc_channels {
@@ -353,7 +360,7 @@ static int rradc_post_process_volt(struct rradc_chip *chip,
	return 0;
}

static int rradc_post_process_curr(struct rradc_chip *chip,
static int rradc_post_process_usbin_curr(struct rradc_chip *chip,
			struct rradc_chan_prop *prop, u16 adc_code,
			int *result_ua)
{
@@ -361,11 +368,33 @@ static int rradc_post_process_curr(struct rradc_chip *chip,

	if (!prop)
		return -EINVAL;

	if (prop->channel == RR_ADC_USBIN_I)
	if (chip->revid_dev_node) {
		switch (chip->pmic_fab_id->pmic_subtype) {
		case PM660_SUBTYPE:
			if (((chip->pmic_fab_id->tp_rev
				>= FG_RR_TP_REV_VERSION1)
			&& (chip->pmic_fab_id->tp_rev
				<= FG_RR_TP_REV_VERSION2))
			|| (chip->pmic_fab_id->tp_rev
				>= FG_RR_TP_REV_VERSION3)) {
				chip->volt = div64_s64(chip->volt, 1000);
				chip->volt = chip->volt *
					FG_ADC_RR_CURR_USBIN_660_FACTOR_MIL;
				chip->volt = FG_ADC_RR_CURR_USBIN_660_UV_VAL -
					(chip->volt);
				chip->volt = div64_s64(1000000000, chip->volt);
				scale = chip->volt;
			} else
				scale = FG_ADC_RR_CURR_USBIN_INPUT_FACTOR_MIL;
	else
		scale = FG_ADC_RR_CURR_INPUT_FACTOR;
			break;
		case PMI8998_SUBTYPE:
			scale = FG_ADC_RR_CURR_USBIN_INPUT_FACTOR_MIL;
			break;
		default:
			pr_err("No PMIC subtype found\n");
			return -EINVAL;
		}
	}

	/* scale * V/A; 2.5V ADC full scale */
	ua = ((int64_t)adc_code * scale);
@@ -376,6 +405,24 @@ static int rradc_post_process_curr(struct rradc_chip *chip,
	return 0;
}

static int rradc_post_process_dcin_curr(struct rradc_chip *chip,
			struct rradc_chan_prop *prop, u16 adc_code,
			int *result_ua)
{
	int64_t ua = 0;

	if (!prop)
		return -EINVAL;

	/* 0.5 V/A; 2.5V ADC full scale */
	ua = ((int64_t)adc_code * FG_ADC_RR_CURR_INPUT_FACTOR);
	ua *= (FG_ADC_RR_FS_VOLTAGE_MV * FG_ADC_SCALE_MILLI_FACTOR);
	ua = div64_s64(ua, (FG_MAX_ADC_READINGS * 1000));
	*result_ua = ua;

	return 0;
}

static int rradc_post_process_die_temp(struct rradc_chip *chip,
			struct rradc_chan_prop *prop, u16 adc_code,
			int *result_millidegc)
@@ -591,13 +638,13 @@ static const struct rradc_channels rradc_chans[] = {
			BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_PROCESSED),
			FG_ADC_RR_SKIN_TEMP_LSB, FG_ADC_RR_SKIN_TEMP_MSB,
			FG_ADC_RR_AUX_THERM_STS)
	RR_ADC_CHAN_CURRENT("usbin_i", &rradc_post_process_curr,
	RR_ADC_CHAN_CURRENT("usbin_i", &rradc_post_process_usbin_curr,
			FG_ADC_RR_USB_IN_I_LSB, FG_ADC_RR_USB_IN_I_MSB,
			FG_ADC_RR_USB_IN_I_STS)
	RR_ADC_CHAN_VOLT("usbin_v", &rradc_post_process_volt,
			FG_ADC_RR_USB_IN_V_LSB, FG_ADC_RR_USB_IN_V_MSB,
			FG_ADC_RR_USB_IN_V_STS)
	RR_ADC_CHAN_CURRENT("dcin_i", &rradc_post_process_curr,
	RR_ADC_CHAN_CURRENT("dcin_i", &rradc_post_process_dcin_curr,
			FG_ADC_RR_DC_IN_I_LSB, FG_ADC_RR_DC_IN_I_MSB,
			FG_ADC_RR_DC_IN_I_STS)
	RR_ADC_CHAN_VOLT("dcin_v", &rradc_post_process_volt,
@@ -955,6 +1002,21 @@ static int rradc_read_raw(struct iio_dev *indio_dev,

	switch (mask) {
	case IIO_CHAN_INFO_PROCESSED:
		if (((chip->pmic_fab_id->tp_rev
				>= FG_RR_TP_REV_VERSION1)
		&& (chip->pmic_fab_id->tp_rev
				<= FG_RR_TP_REV_VERSION2))
		|| (chip->pmic_fab_id->tp_rev
				>= FG_RR_TP_REV_VERSION3)) {
			if (chan->address == RR_ADC_USBIN_I) {
				prop = &chip->chan_props[RR_ADC_USBIN_V];
				rc = rradc_do_conversion(chip, prop, &adc_code);
				if (rc)
					break;
				prop->scale(chip, prop, adc_code, &chip->volt);
			}
		}

		prop = &chip->chan_props[chan->address];
		rc = rradc_do_conversion(chip, prop, &adc_code);
		if (rc)
Loading