Merge "ARM: dts: msm: Add Bluetooth node on SA415M CCARD board"
diff --git a/drivers/gpu/drm/bridge/lt9611.c b/drivers/gpu/drm/bridge/lt9611.c
index 8583b5b..9159574 100644
--- a/drivers/gpu/drm/bridge/lt9611.c
+++ b/drivers/gpu/drm/bridge/lt9611.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -480,7 +480,7 @@ static int lt9611_gpio_configure(struct lt9611 *pdata, bool on)
goto error;
}
- ret = gpio_direction_output(pdata->reset_gpio, 0);
+ ret = gpio_direction_output(pdata->reset_gpio, 1);
if (ret) {
pr_err("lt9611 reset gpio direction failed\n");
goto reset_error;
diff --git a/drivers/hwmon/qpnp-adc-common.c b/drivers/hwmon/qpnp-adc-common.c
index 24564b3..5a54b73 100644
--- a/drivers/hwmon/qpnp-adc-common.c
+++ b/drivers/hwmon/qpnp-adc-common.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -403,6 +403,60 @@ static const struct qpnp_vadc_map_pt adcmap_qrd_skut1_btm_threshold[] = {
{1000, 477},
};
+static const struct qpnp_vadc_map_pt adcmap_qrd_skue_btm_threshold[] = {
+ {-200, 1385},
+ {-180, 1353},
+ {-160, 1320},
+ {-140, 1287},
+ {-120, 1253},
+ {-100, 1218},
+ {-80, 1184},
+ {-60, 1149},
+ {-40, 1115},
+ {-20, 1080},
+ {0, 1046},
+ {20, 1013},
+ {40, 980},
+ {60, 948},
+ {80, 917},
+ {100, 887},
+ {120, 858},
+ {140, 830},
+ {160, 803},
+ {180, 777},
+ {200, 752},
+ {220, 729},
+ {240, 706},
+ {260, 685},
+ {280, 664},
+ {300, 645},
+ {320, 626},
+ {340, 609},
+ {360, 593},
+ {380, 577},
+ {400, 563},
+ {420, 549},
+ {440, 536},
+ {460, 524},
+ {480, 512},
+ {500, 501},
+ {520, 491},
+ {540, 481},
+ {560, 472},
+ {580, 464},
+ {600, 456},
+ {620, 448},
+ {640, 441},
+ {660, 435},
+ {680, 428},
+ {700, 423},
+ {720, 417},
+ {740, 412},
+ {760, 407},
+ {780, 402},
+ {800, 398},
+};
+
/* Voltage to temperature */
static const struct qpnp_vadc_map_pt adcmap_100k_104ef_104fb[] = {
{1758, -40000},
@@ -1592,6 +1646,25 @@ int32_t qpnp_adc_scale_qrd_skut1_batt_therm(struct qpnp_vadc_chip *chip,
}
EXPORT_SYMBOL(qpnp_adc_scale_qrd_skut1_batt_therm);
+int32_t qpnp_adc_scale_qrd_skue_batt_therm(struct qpnp_vadc_chip *chip,
+ int32_t adc_code,
+ const struct qpnp_adc_properties *adc_properties,
+ const struct qpnp_vadc_chan_properties *chan_properties,
+ struct qpnp_vadc_result *adc_chan_result)
+{
+ int64_t bat_voltage = 0;
+
+ qpnp_adc_scale_with_calib_param(adc_code,
+ adc_properties, chan_properties, &bat_voltage);
+
+ return qpnp_adc_map_temp_voltage(
+ adcmap_qrd_skue_btm_threshold,
+ ARRAY_SIZE(adcmap_qrd_skue_btm_threshold),
+ bat_voltage,
+ &adc_chan_result->physical);
+}
+EXPORT_SYMBOL(qpnp_adc_scale_qrd_skue_batt_therm);
+
int32_t qpnp_adc_scale_smb_batt_therm(struct qpnp_vadc_chip *chip,
int32_t adc_code,
const struct qpnp_adc_properties *adc_properties,
diff --git a/drivers/hwmon/qpnp-adc-voltage.c b/drivers/hwmon/qpnp-adc-voltage.c
index 772aac1..74d37aa 100644
--- a/drivers/hwmon/qpnp-adc-voltage.c
+++ b/drivers/hwmon/qpnp-adc-voltage.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -225,6 +225,7 @@ static struct qpnp_vadc_scale_fn vadc_scale_fn[] = {
[SCALE_QRD_SKUH_BATT_THERM] = {qpnp_adc_scale_qrd_skuh_batt_therm},
[SCALE_NCP_03WF683_THERM] = {qpnp_adc_scale_therm_ncp03},
[SCALE_QRD_SKUT1_BATT_THERM] = {qpnp_adc_scale_qrd_skut1_batt_therm},
+ [SCALE_QRD_SKUE_BATT_THERM] = {qpnp_adc_scale_qrd_skue_batt_therm},
[SCALE_PMI_CHG_TEMP] = {qpnp_adc_scale_pmi_chg_temp},
[SCALE_BATT_THERM_TEMP] = {qpnp_adc_batt_therm},
[SCALE_CHRG_TEMP] = {qpnp_adc_scale_chrg_temp},
diff --git a/drivers/hwtracing/coresight/coresight-tmc-etr.c b/drivers/hwtracing/coresight/coresight-tmc-etr.c
index e369ea1..6738637 100644
--- a/drivers/hwtracing/coresight/coresight-tmc-etr.c
+++ b/drivers/hwtracing/coresight/coresight-tmc-etr.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
* Copyright(C) 2016 Linaro Limited. All rights reserved.
* Author: Mathieu Poirier <mathieu.poirier@linaro.org>
*
@@ -728,6 +728,15 @@ void usb_notifier(void *priv, unsigned int event, struct qdss_request *d_req,
int ret = 0;
mutex_lock(&drvdata->mem_lock);
+
+ if (drvdata->out_mode != TMC_ETR_OUT_MODE_USB
+ || drvdata->mode == CS_MODE_DISABLED) {
+ dev_err(drvdata->dev,
+ "%s: ETR is not USB mode, or ETR is disabled.\n", __func__);
+ mutex_unlock(&drvdata->mem_lock);
+ return;
+ }
+
if (event == USB_QDSS_CONNECT) {
tmc_etr_fill_usb_bam_data(drvdata);
ret = tmc_etr_bam_enable(drvdata);
@@ -840,10 +849,10 @@ static int tmc_enable_etr_sink_sysfs(struct coresight_device *csdev)
goto out;
if (drvdata->out_mode == TMC_ETR_OUT_MODE_MEM) {
- drvdata->mode = CS_MODE_SYSFS;
tmc_etr_enable_hw(drvdata);
}
+ drvdata->mode = CS_MODE_SYSFS;
drvdata->enable = true;
out:
spin_unlock_irqrestore(&drvdata->spinlock, flags);
@@ -922,7 +931,6 @@ static void tmc_disable_etr_sink(struct coresight_device *csdev)
goto out;
} else {
tmc_etr_disable_hw(drvdata);
- drvdata->mode = CS_MODE_DISABLED;
}
}
@@ -934,6 +942,7 @@ static void tmc_disable_etr_sink(struct coresight_device *csdev)
tmc_etr_byte_cntr_stop(drvdata->byte_cntr);
}
out:
+ drvdata->mode = CS_MODE_DISABLED;
mutex_unlock(&drvdata->mem_lock);
dev_info(drvdata->dev, "TMC-ETR disabled\n");
}
diff --git a/include/linux/qpnp/qpnp-adc.h b/include/linux/qpnp/qpnp-adc.h
index 308225b..05faa97 100644
--- a/include/linux/qpnp/qpnp-adc.h
+++ b/include/linux/qpnp/qpnp-adc.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2018, 2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -392,6 +392,8 @@ enum qpnp_adc_channel_scaling_param {
* btm parameters for SKUH
* %SCALE_QRD_SKUT1_BATT_THERM: Conversion to temperature(decidegC) based on
* btm parameters for SKUT1
+ * %SCALE_QRD_SKUE_BATT_THERM: Conversion to temperature(decidegC) based on
+ * btm parameters for SKUE
* %SCALE_PMI_CHG_TEMP: Conversion for PMI CHG temp
* %SCALE_BATT_THERM_TEMP: Conversion to temperature(decidegC) based on btm
* parameters.
@@ -424,6 +426,7 @@ enum qpnp_adc_scale_fn_type {
SCALE_QRD_SKUH_BATT_THERM,
SCALE_NCP_03WF683_THERM,
SCALE_QRD_SKUT1_BATT_THERM,
+ SCALE_QRD_SKUE_BATT_THERM,
SCALE_PMI_CHG_TEMP = 16,
SCALE_BATT_THERM_TEMP,
SCALE_CHRG_TEMP,
@@ -1687,6 +1690,23 @@ int32_t qpnp_adc_scale_qrd_skut1_batt_therm(struct qpnp_vadc_chip *dev,
const struct qpnp_vadc_chan_properties *chan_prop,
struct qpnp_vadc_result *chan_rslt);
/**
+ * qpnp_adc_scale_qrd_skue_batt_therm() - Scales the pre-calibrated digital
+ * output of an ADC to the ADC reference and compensates for the
+ * gain and offset. Returns the temperature in decidegC.
+ * @dev: Structure device for qpnp vadc
+ * @adc_code: pre-calibrated digital output of the ADC.
+ * @adc_prop: adc properties of the pm8xxx adc such as bit resolution,
+ * reference voltage.
+ * @chan_prop: individual channel properties to compensate the i/p scaling,
+ * slope and offset.
+ * @chan_rslt: physical result to be stored.
+ */
+int32_t qpnp_adc_scale_qrd_skue_batt_therm(struct qpnp_vadc_chip *dev,
+ int32_t adc_code,
+ const struct qpnp_adc_properties *adc_prop,
+ const struct qpnp_vadc_chan_properties *chan_prop,
+ struct qpnp_vadc_result *chan_rslt);
+/**
* qpnp_adc_scale_smb_batt_therm() - Scales the pre-calibrated digital output
* of an ADC to the ADC reference and compensates for the
* gain and offset. Returns the temperature in decidegC.
@@ -2244,6 +2264,12 @@ static inline int32_t qpnp_adc_scale_qrd_skut1_batt_therm(
const struct qpnp_vadc_chan_properties *chan_prop,
struct qpnp_vadc_result *chan_rslt)
{ return -ENXIO; }
+static inline int32_t qpnp_adc_scale_qrd_skue_batt_therm(
+ struct qpnp_vadc_chip *vdev, int32_t adc_code,
+ const struct qpnp_adc_properties *adc_prop,
+ const struct qpnp_vadc_chan_properties *chan_prop,
+ struct qpnp_vadc_result *chan_rslt)
+{ return -ENXIO; }
static inline int32_t qpnp_adc_scale_smb_batt_therm(struct qpnp_vadc_chip *vadc,
int32_t adc_code,
const struct qpnp_adc_properties *adc_prop,
diff --git a/net/rmnet_data/rmnet_map.h b/net/rmnet_data/rmnet_map.h
index 718140c..dbe07c6 100644
--- a/net/rmnet_data/rmnet_map.h
+++ b/net/rmnet_data/rmnet_map.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2013-2017, 2020 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -64,11 +64,11 @@ struct rmnet_map_ul_checksum_header_s {
unsigned short checksum_start_offset;
#if defined(__LITTLE_ENDIAN_BITFIELD)
unsigned short checksum_insert_offset:14;
- unsigned short udp_ip4_ind:1;
+ unsigned short udp_ind:1;
unsigned short cks_en:1;
#elif defined(__BIG_ENDIAN_BITFIELD)
unsigned short cks_en:1;
- unsigned short udp_ip4_ind:1;
+ unsigned short udp_ind:1;
unsigned short checksum_insert_offset:14;
#else
#error "Please fix <asm/byteorder.h>"
diff --git a/net/rmnet_data/rmnet_map_data.c b/net/rmnet_data/rmnet_map_data.c
index 3ad30cf..36573b6 100644
--- a/net/rmnet_data/rmnet_map_data.c
+++ b/net/rmnet_data/rmnet_map_data.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -625,9 +625,9 @@ static void rmnet_map_fill_ipv4_packet_ul_checksum_header
ul_header->checksum_insert_offset = skb->csum_offset;
ul_header->cks_en = 1;
if (ip4h->protocol == IPPROTO_UDP)
- ul_header->udp_ip4_ind = 1;
+ ul_header->udp_ind = 1;
else
- ul_header->udp_ip4_ind = 0;
+ ul_header->udp_ind = 0;
/* Changing checksum_insert_offset to network order */
hdr++;
*hdr = htons(*hdr);
@@ -638,13 +638,18 @@ static void rmnet_map_fill_ipv6_packet_ul_checksum_header
(void *iphdr, struct rmnet_map_ul_checksum_header_s *ul_header,
struct sk_buff *skb)
{
+ struct ipv6hdr *ip6h = (struct ipv6hdr *)iphdr;
unsigned short *hdr = (unsigned short *)ul_header;
ul_header->checksum_start_offset = htons((unsigned short)
(skb_transport_header(skb) - (unsigned char *)iphdr));
ul_header->checksum_insert_offset = skb->csum_offset;
ul_header->cks_en = 1;
- ul_header->udp_ip4_ind = 0;
+
+ if (ip6h->nexthdr == IPPROTO_UDP)
+ ul_header->udp_ind = 1;
+ else
+ ul_header->udp_ind = 0;
/* Changing checksum_insert_offset to network order */
hdr++;
*hdr = htons(*hdr);
@@ -747,7 +752,7 @@ int rmnet_map_checksum_uplink_packet(struct sk_buff *skb,
ul_header->checksum_start_offset = 0;
ul_header->checksum_insert_offset = 0;
ul_header->cks_en = 0;
- ul_header->udp_ip4_ind = 0;
+ ul_header->udp_ind = 0;
done:
return ret;
}